编号:30
基于51单片机的数字电压表(ADC0809)
功能描述:
本设计由51单片机最小系统+ADC0809模块+八路路模拟量输入模块+12864显示模块
1、主控制器是89C52单片机
2、ADC0809模数转换器进行A/D转换,读取电压八路数据,电压检测范围0-5V 精度(8位)
3、利用八个个电位器模拟, 模拟量输入,
3、12864液晶屏显示八路通道的电压值
Proteus7.8以上版本均可使用
视频演示链接:
30、基于51单片机的数字电压表(ADC0809)
仿真图:
程序源码:
#include "reg52.h"
#include "AMPIRE12864.h"
#include "delay.h"
#include "ADC0809.h"
void main(void)
{
unsigned char adc0,adc1,adc2,adc3,adc4,adc5,adc6,adc7;
unsigned int Voltage0 = 0.0;
unsigned int Voltage1 = 0.0;
unsigned int Voltage2 = 0.0;
unsigned int Voltage3 = 0.0;
unsigned int Voltage4 = 0.0;
unsigned int Voltage5 = 0.0;
unsigned int Voltage6 = 0.0;
unsigned int Voltage7 = 0.0;
delay_ms(100);
AMPIRE12864_Init(); //AMPIRE12864初始化
AMPIRE12864_Clear();
Timer0Init(); //2毫秒@11.0592MHz
while(1)
{
adc0 = ADC0809_GetAD(0); //通道0 A/D转换 范围0-255
adc1 = ADC0809_GetAD(1); //通道1 A/D转换 范围0-255
adc2 = ADC0809_GetAD(2); //通道2 A/D转换 范围0-255
adc3 = ADC0809_GetAD(3); //通道3 A/D转换 范围0-255
adc4 = ADC0809_GetAD(4); //通道4 A/D转换 范围0-255
adc5 = ADC0809_GetAD(5); //通道0 A/D转换 范围0-255
adc6 = ADC0809_GetAD(6); //通道0 A/D转换 范围0-255
adc7 = ADC0809_GetAD(7); //通道0 A/D转换 范围0-255
Voltage0 = (long)adc0 * 500/255; //电压值扩大一百倍 方便显示
Voltage1 = (long)adc1 * 500/255; //电压值扩大一百倍 方便显示
Voltage2 = (long)adc2 * 500/255; //电压值扩大一百倍 方便显示
Voltage3 = (long)adc3 * 500/255; //电压值扩大一百倍 方便显示
Voltage4 = (long)adc4 * 500/255; //电压值扩大一百倍 方便显示
Voltage5 = (long)adc5 * 500/255; //电压值扩大一百倍 方便显示
Voltage6 = (long)adc6 * 500/255; //电压值扩大一百倍 方便显示
Voltage7 = (long)adc7 * 500/255; //电压值扩大话俦?方便显示
AMPIRE12864_String_16X8(1,0,0,Char_Logo[14]); //显示V
AMPIRE12864_String_16X8(1,8,0,Char_Logo[0]); //显示V
AMPIRE12864_String_16X8(1,16,0,Char_Logo[13]); //:
AMPIRE12864_String_16X8(1,24,0,Char_Logo[Voltage0%1000/100]); //显示个位
AMPIRE12864_String_16X8(1,32,0,Char_Logo[12]); //显示小数点
AMPIRE12864_String_16X8(1,40,0,Char_Logo[Voltage0%1000%100/10]); //显示小数点后两位
AMPIRE12864_String_16X8(1,48,0,Char_Logo[Voltage0%1000%100%10]);
AMPIRE12864_String_16X8(1,64,0,Char_Logo[14]); //显示V
AMPIRE12864_String_16X8(1,64+8,0,Char_Logo[1]); //显示V
AMPIRE12864_String_16X8(1,64+16,0,Char_Logo[13]); //:
AMPIRE12864_String_16X8(1,64+24,0,Char_Logo[Voltage1%1000/100]); //显示个位
AMPIRE12864_String_16X8(1,64+32,0,Char_Logo[12]); //显示小数点
AMPIRE12864_String_16X8(1,64+40,0,Char_Logo[Voltage1%1000%100/10]); //显示小数点后两位
AMPIRE12864_String_16X8(1,64+48,0,Char_Logo[Voltage1%1000%100%10]);
AMPIRE12864_String_16X8(1,0,2,Char_Logo[14]); //显示V
AMPIRE12864_String_16X8(1,8,2,Char_Logo[2]); //显示V
AMPIRE12864_String_16X8(1,16,2,Char_Logo[13]); //:
AMPIRE12864_String_16X8(1,24,2,Char_Logo[Voltage2%1000/100]); //显示个位
AMPIRE12864_String_16X8(1,32,2,Char_Logo[12]); //显示小数点
AMPIRE12864_String_16X8(1,40,2,Char_Logo[Voltage2%1000%100/10]); //显示小数点后两位
AMPIRE12864_String_16X8(1,48,2,Char_Logo[Voltage2%1000%100%10]);
AMPIRE12864_String_16X8(1,64,2,Char_Logo[14]); //显示V
AMPIRE12864_String_16X8(1,64+8,2,Char_Logo[3]); //显示V
AMPIRE12864_String_16X8(1,64+16,2,Char_Logo[13]); //:
AMPIRE12864_String_16X8(1,64+24,2,Char_Logo[Voltage3%1000/100]); //显示个位
AMPIRE12864_String_16X8(1,64+32,2,Char_Logo[12]); //显示小数点
AMPIRE12864_String_16X8(1,64+40,2,Char_Logo[Voltage3%1000%100/10]); //显示小数点后两位
AMPIRE12864_String_16X8(1,64+48,2,Char_Logo[Voltage3%1000%100%10]);
AMPIRE12864_String_16X8(1,0,4,Char_Logo[14]); //显示V
AMPIRE12864_String_16X8(1,8,4,Char_Logo[4]); //显示V
AMPIRE12864_String_16X8(1,16,4,Char_Logo[13]); //:
AMPIRE12864_String_16X8(1,24,4,Char_Logo[Voltage4%1000/100]); //显示个位
AMPIRE12864_String_16X8(1,32,4,Char_Logo[12]); //显示小数点
AMPIRE12864_String_16X8(1,40,4,Char_Logo[Voltage4%1000%100/10]); //显示小数点后两位
AMPIRE12864_String_16X8(1,48,4,Char_Logo[Voltage4%1000%100%10]);
AMPIRE12864_String_16X8(1,64,4,Char_Logo[14]); //显示V
AMPIRE12864_String_16X8(1,64+8,4,Char_Logo[5]); //显示V
AMPIRE12864_String_16X8(1,64+16,4,Char_Logo[13]); //:
AMPIRE12864_String_16X8(1,64+24,4,Char_Logo[Voltage5%1000/100]); //显示个位
AMPIRE12864_String_16X8(1,64+32,4,Char_Logo[12]); //显示小数点
AMPIRE12864_String_16X8(1,64+40,4,Char_Logo[Voltage5%1000%100/10]); //显示小数点后两位
AMPIRE12864_String_16X8(1,64+48,4,Char_Logo[Voltage5%1000%100%10]);
AMPIRE12864_String_16X8(1,0,6,Char_Logo[14]); //显示V
AMPIRE12864_String_16X8(1,8,6,Char_Logo[6]); //显示V
AMPIRE12864_String_16X8(1,16,6,Char_Logo[13]); //:
AMPIRE12864_String_16X8(1,24,6,Char_Logo[Voltage6%1000/100]); //显示个位
AMPIRE12864_String_16X8(1,32,6,Char_Logo[12]); //显示小数点
AMPIRE12864_String_16X8(1,40,6,Char_Logo[Voltage6%1000%100/10]); //显示小数点后两位
AMPIRE12864_String_16X8(1,48,6,Char_Logo[Voltage6%1000%100%10]);
AMPIRE12864_String_16X8(1,64,6,Char_Logo[14]); //显示V
AMPIRE12864_String_16X8(1,64+8,6,Char_Logo[7]); //显示V
AMPIRE12864_String_16X8(1,64+16,6,Char_Logo[13]); //:
AMPIRE12864_String_16X8(1,64+24,6,Char_Logo[Voltage7%1000/100]); //显示个位
AMPIRE12864_String_16X8(1,64+32,6,Char_Logo[12]); //显示小数点
AMPIRE12864_String_16X8(1,64+40,6,Char_Logo[Voltage7%1000%100/10]); //显示小数点后两位
AMPIRE12864_String_16X8(1,64+48,6,Char_Logo[Voltage7%1000%100%10]);
}
}
软件免费下载地址:
1、Proteus仿真软件
文件内容:Proteus7.8安装包、Proteus8.6安装包、Proteus.8.10安装包、Proteus Professional 8.11 SP0安装包
链接:https://pan.baidu.com/s/11LNUZ9BJXWvXf1C4dPc3_w
提取码:2756
2、KEIL4 C51软件安装包
链接:https://pan.baidu.com/s/1CTZBqDsPsyIbjCIjI_birA
提取码:sy2a
文件下载:
https://pan.baidu.com/s/1HWxphbZtDhBBfrJZuScazA?pwd=u7cg