51单片机做的数字电压表设计, 包含有word格式的可编辑的毕业论文和仿真等非常详细的资料.
毕业论文的目录
前 言 1
第一章 工作原理 2
1.1设计目标 2
1.1.1基本功能 2
1.1.2主要技术参数 2
1.2设计原理 2
第二章 硬件设计与原理 3
2.1 总设计框图 3
2.2 硬件设计分析 3
2.2.1 电源的设计 3
2.2.2 单片机最小系统 4
2.2.3 显示系统 10
2.2.4 模数转换 10
第三章 软件设计与分析 13
3.1 软件设计的组成 13
3.2 源程序 15
第四章 软件仿真 24
4.1 PROTEUS简介 24
4.2仿真图 26
4.3原理图 27
4.4 元件清单 28
总结 29
致 谢 30
参考文献 31
数字电压表的原理图和pcb工程文件:
数字电压表proteus仿真原理图:
数字电压表元件清单:
元件参数 元件序号 元件名称
1K RP1 电位器
5V J1 电源接口
10uF C1 铝电解电容器
12M Y1 晶振
20 R1 电阻
22K R7 电阻
22K R6 电阻
22K R9 电阻
22K R8 电阻
22K R5 电阻
22K R2 电阻
22K R3 电阻
22K R4 电阻
30pF C2 瓷片电容器
30pF C3 瓷片电容器
ADC0809 U2 模数转换芯片
AT89C51 U1 51单片机芯片
LCD1602 U3 液晶
1.1.1基本功能利用51单片机作为主控芯片,模拟量输入范围直流0v-5v。模拟量经A/D(ADC0809)模数转换芯片,把模拟量转换为数字量输入到单片机的P0口,再由单片机控制LCD1602液晶显示模拟量输入的电压值。
1.1.2主要技术参数 测量电压范围:0v至5v A/D转换器:ADC0809(8位模数转换器)。 显示方式: LCD1602液晶
1.2设计原理此次设计的是数字电压表,要求的电压范围是0~5v。系统设计主要包括四个部分:分别是电源模块、AD模数转换部分、51单片机最小系统部分、数码管显示部分。首先由单片机初始化ADC0809模数转换芯片和共阴数码管显示,当外接被测电压后,ADC0809将模拟电压信号转换为数字信号输入到单片机的I/O口,通过单片机处理后将电压的大小显示在LCD1602液晶上面。
单片机源程序:
- //<程序名>:数字电压表
- //<功能>:使用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);
- …………限于本文篇幅 余下代码请从51黑电子论坛下载附件…………
复制代码
所有资料下载:
51 digital voltmeter design.zip
(1.07 MB, 下载次数: 669)
|