基于51单片机数字电压表设计(Proteus仿真+Keil源码等)adc0809 附下载链接!
提供对应的Proteus仿真电路图Keil程序源码C语言等电子资料参考学习文末附全部资料的下载链接。01设计要求设计一个基于51单片机数字电压表的设计功能通过控制单片机实现adc0809模数转换数码管显示。02系统概述采用51单片机做为主控制器数码管显示电压。03Proteus仿真04示例代码voidmain(void){// 中断配置开启总中断EA开启定时器0中断ET0EA1;ET01;// TMOD0x02定时器0设为 8位自动重装模式(模式2)TMOD0x02;// 装载计数初值数值很小让定时器频繁中断产生高频方波TH00x01;TL00x01;// 启动定时器0开始计数TR01;// 主死循环持续采集ADC电压 数码管动态刷新while(1){// 1. 给ST引脚下降沿脉冲启动ADC0804模数转换ST0;ST1;ST0;// 2. 等待转换完成EOC为低代表转换中循环阻塞直到EOC变高while(!EOC);// 3. 拉高输出使能OEADC将8位转换结果输出到P1口OE1;// 读取P1口上的AD原始采样值(0~255)adcP1;// 4. AD值换算电压adc * 196.08 放大消除小数单位0.1mVtmpadc*196.08;// 拆分四位显示数字dat[3]千位 dat[2]百位 dat[1]十位 dat[0]个位dat[3]tmp/10000;// 提取千位带小数点位dat[2]tmp/1000%10;// 提取百位dat[1]tmp/100%10;// 提取十位dat[0]tmp/10%10;// 提取个位// 四位数码管动态扫描显示 // 点亮千位数码管 LED1段码0x80点亮小数点LED10;P0tab[dat[3]]0x80;Delay();// 保持点亮一小段时间视觉稳定LED11;// 关闭千位// 点亮百位数码管 LED2无小数点LED20;P0tab[dat[2]];Delay();LED21;// 点亮十位数码管 LED3LED30;P0tab[dat[1]];Delay();LED31;// 点亮个位数码管 LED4LED40;P0tab[dat[0]];Delay();LED41;}}注源码使用Keil4或Keil5打开仿真使用的是Proteus8.13及以上版本版本过低可能会打不开。05资料获取1项目完整资料获取链接下载链接2Keil、Proteus各个版本安装包 下载链接