基于51单片机的数字电压表设计
一、硬件设计
1. 原理图设计
主控芯片:STC89C52RC;
显示模块:使用4 PIN OLED模块;
ADC模块:使用ADC0809,8 位 A/D转换器;
2. PCB设计
二、软件设计
1. 51单片机程序设计
#include<reg51.h>
#include "lcd1602.h"
#define uint unsigned int
#define uchar unsigned char
uint volt = 0; // 电压值测定值
uchar *p ="0123456789";
sbit CLK=P1^3; // 时钟信号
sbit START=P1^4; // 转换启动开关
sbit EOC=P1^5; // 转换结束标志
sbit OE=P1^6; // 输出使能
void ADC()
{
EA=1; // 开中断
START=0;
START=1;
START=0; // ad开始转换
while(EOC==0); // 等待转换结束
OE=1; // 输出使能
EA=0; // 关中断
volt=P2;
volt=volt*196;
OE=0;
}
void main()
{
init_lcd1602();
EA=1; // 开总中断
TMOD=0x01; // 设定定时计数工作方式
// 为定时器初赋值
TH0=0XFF;
TL0=0XB4;
ET0=1; // 开定时器0中断
TR0=1; // 开启定时器0
while(1)
{
ADC();
writeCmd(0x80);
writeDataWithString("VOLTAGE: ", 9);
writeData(p[volt/10000]);//输出整数位
writeData('.');
writeData(p[volt/1000%10]);
writeData(p[volt/100%10]);
writeData('V');
}
}
void timer() interrupt 1
{
// 初值重置
TH0=0XFF;
TL0=0XF0;
CLK=~CLK;
}
2. Proteus仿真
完整资料下载(包含原理图、PCB图、51单片机程序、Proteus仿真工程)
weixin_44360180: 非常感谢!
神色自若: 源码无法下载,需要上传者(分享文件的人)绑定手机号后才能下载。 博主能换个百度或阿里的网盘吗?
RKK24: 大大,XML文件里的ConnectThread报错是怎么回事呀?
lin6a6: 感谢感谢
少平冲冲冲: 解压密码可以发一下吗