本文主要是介绍基于51单片机数字电压表设计—LCD1602显示,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
基于51单片机数字电压表设计
(仿真+程序+原理图+PCB+设计报告)
功能介绍
具体功能:
1、 利用51单片机作为主控芯片,模拟量输入范围直流0v-5v;
2、模拟量经A/D(ADC0809)模数转换芯片,把模拟量转换为数字量输入到单片机的P0口;
3、由单片机控制LCD1602液晶显示模拟量输入的电压值;
演示视频:
基于51单片机数字电压表
//<程序名>:数字电压表 **//<功能>:使用LCD显示被检测电压,精度为0.05V,范围是0~5V。 **
#include"includes.h"
#define TIME0H 0x3C
#define TIME0L 0xB0
uchar uc_Clock=0; //定时器0中断计数
bit b_DATransform=0;
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<把电压显示在LCD上>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
void vShowVoltage(uint uiNumber)
{uchar ucaNumber[3],ucCount;if(uiNumber>999) uiNumber=999;ucaNumber[0]=uiNumber/100; //把计算数字的每个位存入数组。ucaNumber[1]=(uiNumber-100*(int)ucaNumber[0])/10; ucaNumber[2]=uiNumber-100*(int)ucaNumber[0]-10*ucaNumber[1];for(ucCount=0;ucCount<3;ucCount++){vShowOneChar(ucaNumber[ucCount]+48); //从首位到末位逐一输出。if(ucCount==0)vShowOneChar('.');}
}
//*************************************************************************************************
//* *
//* ********************************主函数****************************** *
//* *
//*************************************************************************************************
void main()
{TMOD=0x01; //定时器0,模式1。TH0=TIME0H;TL0=TIME0L;TR0=1; //启动定时器。ET0=1; //开定时器中断。EA=1; //开总中断vdInitialize();vWriteCMD(0x84); //写入显示起始地址(第一行第4个位置)vShowChar("voltage");vWriteCMD(0xC9); vShowChar("(V)");while(1){if(b_DATransform==1){b_DATransform=0;vWriteCMD(0xC4);vShowVoltage(uiADTransform());}}
}
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<定时器0中断函数>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
void t0() interrupt 1
{if(uc_Clock==0){uc_Clock=5;b_DATransform=1;}elseuc_Clock--;TH0=TIME0H; //恢复定时器0。TL0=TIME0L;
}
硬件设计
使用元器件:
单片机:AT89C51;
(注意:单片机是通用的,无论51还是52、无论stc还是at都一样,引脚功能都一样。程序也是一样的。)
晶振:11.0592;电位器:1K;
铝电解电容器:10uF
电阻:20Ω,22k;
瓷片电容器:30pF;
数转换芯片:ADC0809;
LCD1602; 导线:若干;
流程图:
设计资料
01 仿真图
本设计使用proteus7.8和proteus8.9两个版本设计,向下兼容,无需担心!具体如图!
02 原理图
本系统原理图采用Altium Designer19设计,具体如图!
03 程序
本设计使用软件keil4和keil5两个版本编程设计,无需担心!具体如图!
04 设计报告
七千字设计报告,具体如下!
05 设计资料
资料获取请关注同名公众号,全部资料包括仿真源文件 、程序(含注释)、AD原理图、pcb电路图、参考论文、流程图、元件清单等。具体内容如下,全网最全! !
资料获取请观看前面演示视频!
点赞分享一起学习成长。
这篇关于基于51单片机数字电压表设计—LCD1602显示的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!