//------------------------------51单片机头文件
#include<reg51.h>
//各数字的数码管段码(共阴)
unsigned char code DSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //数码管显示数组{0,1,2,3,4,5,6,7,8,9}
sbit CLK=P3^3; //时钟信号
sbit ST=P3^6; //启动信号,由低电平到高电平时间段复位 ,高电平到低电平时间段开始转换
sbit EOC=P3^5; //转换结束信号,当转换结束时会自动变成高电平
sbit OE=P3^4; //输出使能 ,当OE为高电平时开启输出端,OE为低电平时禁止输出
sbit W1=P2^4; //定义W1表示P2.4位,第一位数码管控制端, 为0时亮,为1时灭
sbit W2=P2^3; //定义W2表示P2.3位,第二位数码管控制端, 为0时亮,为1时灭
sbit W3=P2^2; //定义W3表示P2.2位,第三位数码管控制端, 为0时亮,为1时灭
sbit key=P3^7; //定义按键控制key为P3.7
//----------------------------1ms延时函数
void Delayms(unsigned char ms)
{
unsigned char i;
while(ms--)
for(i=0;i<120;i++);
}
//---------------------------显示转换结果(动态扫描模式)
void Display(unsigned int d)
{
d=d*1.0/256*5*40; //将数字量转换成模拟量的公式为5V*(d/256),采样电压值为电流值*100欧姆,所以要获得实际电流值,即为采样电压值*40倍 (n1:n2=4000:1)
W1=0; //第一个数码管亮
P0=DSY_CODE[d%10]; //显示第一个数码管的值 为P1的值除以10取余
Delayms(6); //延时5ms
W1=1; //第一个数码管灭
W2=0;
P0=DSY_CODE[d%100/10]; //显示第二个数码管的值 为P1的值除以100取余 再除以10取整
Delayms(6);
W2=1;
W3=0;
P0=DSY_CODE[d/100]; //显示第三个数码管的值 为P1的值除以100取整
Delayms(6);
W3=1;
}
//-------------------------------------------------主程序
void main()
{
TMOD=0x02; //16位定时器0工作模式设置为2
TH0=0x14; //设置定时器高8位初值为0x14
TL0=0x00; //设置定时器低8位初值为0x00
TR0=1; //开启定时器0开关
ET0=1; //开启定时器0中断开关
EA=1; //开启中断总开关
//---------------启动 A/D 转换
//---------开始按键-----
A: while(key==1); //等待按键按下
Delayms(1); //延时1ms
if(key==0) //延时1ms后按键还是按下了,说明按键确实按下了(按键消抖功能)
while(key==0); //当按键松开时,循环转换和显示
while(1)
{
ST=0;
ST=1;
ST=0;
while(EOC==0); //等待转换完成
OE=1; //开启输出端
Display(P1); //将输出到单片机P1端口上的数字信号在LED显示出来
OE=0; //关闭输出端
//------停止按键---------
if(key==0)
{
Delayms(1);
if(key==0) //延时1ms后按键还是按下了,说明按键确实按下了(按键消抖功能)
while(key==0); //当按键松开时
goto A;
}
}
}
//T0 定时器中断给 ADC0805 提供时钟信号
void Timer0_INT() interrupt 1
{
CLK=~CLK;
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
基于51单片机+ADC0809的20~200A大电流检测电路设计数码管显示(包含原理图、源程序及Proteus仿真文件)
资源推荐
资源详情
资源评论
收起资源包目录
基于51单片机+ADC0809的20~200A大电流检测电路设计数码管显示(包含原理图、源程序及Proteus仿真文件).rar (20个子文件)
基于51单片机+ADC0809的20~200A大电流检测电路设计数码管显示(包含原理图、源程序及Proteus仿真文件)
仿真
dadianliu.DSN 151KB
dadianliu.LST 5KB
dadianliu.PWI 742B
Last Loaded dadianliu.DBK 149KB
原理图
SCH.SchDoc 164KB
__Previews
SCH.SchDocPreview 127KB
程序
dadianliu_uvproj.bak 0B
dadianliu.lnp 53B
dadianliu.M51 8KB
STARTUP.OBJ 749B
dadianliu.hex 3KB
dadianliu 5KB
dadianliu.plg 4KB
STARTUP.A51 6KB
dadianliu.obj 4KB
dadianliu_uvopt.bak 55KB
STARTUP.LST 14KB
dadianliu.c 3KB
dadianliu.uvopt 55KB
dadianliu.uvproj 13KB
共 20 条
- 1
资源评论
- zzyyydss2022-04-22用户下载后在一定时间内未进行评价,系统默认好评。
- 安久七生2022-05-06用户下载后在一定时间内未进行评价,系统默认好评。
xiaofang3106
- 粉丝: 46
- 资源: 508
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 上市公司-股票性质数据-工具变量(民企、国企、央企)2003-2022年.dta
- 上市公司-股票性质数据-工具变量(民企、国企、央企)2003-2022年.xlsx
- Reeds+Shepp曲线算法讲解和实现.pdf
- 毕业设计基于SpringBoot+MyBatisPlus+MySQL+Vue的外卖配送信息系统源代码+数据库
- 词向量(Word Embeddings)是自然语言处理(NLP)领域的一种重要技术.txt
- Surfer,线性函数
- MyBatis 的动态 SQL 是其核心特性之一.txt
- 时代的sdddsddsddsd
- 基于哈希链表的简单人员信息管理系统
- 其他类别JdonFramework开源框架 v5.1 Build20071025-jdonframework-5.1.rar
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功