基于单片机实现的数字电压表毕业设计说明书.doc

上传人:仙人指路1688 文档编号:4148389 上传时间:2023-04-07 格式:DOC 页数:36 大小:302KB
返回 下载 相关 举报
基于单片机实现的数字电压表毕业设计说明书.doc_第1页
第1页 / 共36页
基于单片机实现的数字电压表毕业设计说明书.doc_第2页
第2页 / 共36页
基于单片机实现的数字电压表毕业设计说明书.doc_第3页
第3页 / 共36页
基于单片机实现的数字电压表毕业设计说明书.doc_第4页
第4页 / 共36页
基于单片机实现的数字电压表毕业设计说明书.doc_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《基于单片机实现的数字电压表毕业设计说明书.doc》由会员分享,可在线阅读,更多相关《基于单片机实现的数字电压表毕业设计说明书.doc(36页珍藏版)》请在三一办公上搜索。

1、信息职业技术学院毕业设计说明书(论文)设计(论文)题目: 基于单片机实现的 数字电压表 专 业: 通信技术 班 级: 学 号: 姓 名: 指导教师: 二八年十二月三十日信息职业技术学院毕业设计(论文)任务书学 生姓 名学号0班级通技06-2专业通信技术设计(或论文)题目基于单片机实现的数字电压表指导教师姓名职 称工作单位及所从事专业联系方式备 注助教高级工程师四有限公司设计内容:1设计一款基于单片机实现的直流数字电压表。2主要功能:(1)可测量050V直流电压,分辨率0.02V;(2)具有数码管或LCD显示电压值功能;(3)具有量程自动转换功能;(4)能实现多路信号的分时测量(可选项)。进度安

2、排:第5周:查询资料和制定方案;第79周:电路设计与仿真;第1011周:软件设计与仿真;第1215周:样机联调与撰写设计报告;第1617周:参加答辩。主要参考文献、资料(写清楚参考文献名称、作者、出版单位):1徐爱钧智能化测量控制仪表原理与设计(第二版)北京航空航天大学出版社,20042吴金戌,沈庆阳8051单片机实践与应用郭庭吉清华大学出版社,20023黄智伟全国大学生电子设计竞赛训练教程电子工业出版社,20044汪德彪MCS-51单片机原理及接口技术(第一版)电子工业出版社,2003审批意见教研室负责人:年 月 日备注:任务书由指导教师填写,一式二份。其中学生一份,指导教师一份。目录摘要1

3、第1章绪论2第2章方案设计32.1方案选择32.1.1量程转换方案设计32.1.2显示部分方案设计32.2方案论证4第3章硬件设计53.1单片机控制模块设计53.1.1时钟电路53.1.2复位电路53.2量程转换模块设计63.2.1电路选择63.2.2工作原理及换算关系63.3逐次逼近式A/D转换模块设计63.3.1ADC0808简介63.3.2A/D转换电路设计83.4显示模块设计93.4.1LCD显示模块93.4.2LCD1602的引脚功能93.4.3LCD1602的显示操作9第4章系统软件设计144.1主程序设计144.2A/D转换程序154.3中断服务程序15第5章系统仿真与调试165

4、.1分局部调试165.2整机调试165.3系统仿真17结论18致谢19参考文献20附录系统源程序21附录整机原理图31摘要电压表是测量仪器中不可缺少的设备,目前广泛应用的是采用专用集成电路实现的数字电压表。本系统以AT89C51单片机为核心,以逐次逼近式A/D转换器ADC0808、液晶显示器LCD1602为主体,设计了一款简易的数字电压表,能够测量050V的直流电压,最小分辨率为0.02V。关键词AT89C51单片机;电压测量;A/D转换;LCD1602液晶显示第1章绪论数字电压表的基本工作原理是利用A/D转换电路将待测的模拟信号转换成数字信号,通过相应换算后将测试结果以数字形式显示出来的一种

5、电压表。较之于一般的模拟电压表,数字电压表具有精度高、测量准确、读数直观、使用方便等优点。电压表的数字化测量,关键在于如何把随时连续变化的模拟量转化成数字量,完成这种转换的电路叫模数转换器(A/D)。数字电压表的核心部件就是A/D转换器,由于各种不同的A/D转换原理构成了各种不同类型的DVM。一般说来,A/D转换的方式可分为两类:积分式和逐次逼近式。积分式A/D转换器是先用积分器将输入的模拟电压转换成时间或频率,再将其数字化。根据转化的中间量不同,它又分为U-T(电压-时间)式和U-F(电压-频率)式两种。逐次逼近式A/D转换器分为比较式和斜坡电压式,根据不同的工作原理,比较式又分为逐次比较式

6、及零平衡式等。斜坡电压式又分为线性斜坡式和阶梯斜坡式两种。在高精度数字电压表中,常采用由积分式和比较式相结合起来的复合式A/D转换器。本设计以AT89C51单片机为核心,以逐次比较型A/D转换器ADC0808、液晶显示器LCD1602为主体,构造了一款简易的数字电压表,能够测量1路050V直流电压,最小分辨率0.02V。第2章方案设计实现数字电压表的方案较多,目前广泛采用的是基于74系列逻辑器件方案,本设计将介绍基于单片机实现的方案。74系列逻辑器件方案采用双积分电路+液晶显示器+逻辑电路+定时采样电路+数据处理实现,被测电压信号由信号输入端加到测量系统,进行预处理后送到后级电路。单片机系统方

7、案此方案采用输入处理电路+ADC0808+AT89C51+液晶显示实现,被测信号由ADC0808模拟输入端输入,单片机采集转换数据,将转换数据送出显示。2.1方案选择2.1.1量程转换方案设计方案一:考虑到ADC0808的八路模拟量输入通道本质上也是模拟开关,因此可以利用其八个模拟通道中的三个作为量程转换器,即根据通道对应的电压测量范围确定对应的电压放大倍数设计对应的前置放大电路。方案二:选用模拟开关芯片4066实现量程转换。4066集成了4个模拟开关,每一路开关都有一个控制端控制对应开关的通断。用单片机对控制端进行控制,实现不同量程的转换。方案三:利用手动开关实现量程转换。该方案可简化控制程

8、序,减小系统开销,缩短反应时间,不足之处在于操作麻烦。终上所述:方案三所需元件少、成本低且易于实现,可选此方案。2.1.2显示部分方案设计方案一:用液晶LCD1602来显示电压读数可进行片选,实现液晶的动态点亮。因为只需一片液晶就可以完成现示工作,所以当单片机控制前两个控制端时,最高位控制端应接地。用软件作为液晶的驱动显示,且具体译码由软件控制。方案二:同方案一选用ADC0808进行片选,在译码驱动部分选用液晶LCD1602,用软件译码。终上所述:由于两个方案都可以实现同样的功能,但方案二设计简单、系统开销小、反应速度较快,因此选择此方案。2.2方案论证经过以上方案设计,决定采用如图2-1所示

9、方案。图2-1系统框图第3章硬件设计3.1单片机控制模块设计单片机控制模块的作用是为控制各单元电路的运行并完成数据的换算或处理,主要由单片机、时钟电路、复位电路组成。3.1.1时钟电路单片机工作的时间基准是由时钟电路提供的,在单片机的XTAL1和XYAL2两个管脚接一只晶振及两只电容就构成了单片机的时钟电路,电路中电容器和对振荡频率有微调作用,通常取(3010)pF石英晶体选择6MHz或12MHz都可以。时钟电路如图3-1所示。 图3-1系统时钟电路 图3-2系统复位电路3.1.2复位电路单片机的RST管脚为主机提供了一个外部复位信号输入口。复位信号是高电平有效,高电平有效的持续时间为2个机器

10、周期以上。单片机的复位方式可由手动复位方式完成。电阻、电容器的参考值=10K、=10uF、=0.01uF。复位电路如图3-2所示。3.2量程转换模块设计3.2.1电路选择图3-3量程转换开关 图3-4衰减输入电路输入电路的作用是把不同量程的被测电压,规范到A/D转换器所要求的电压值。数字电压表所采用的是逐次逼近式A/D转换芯片ADC0808,它要求输入电压0-2V。本仪表设计的是0-50V电压,灵敏度高所以可以不加前置放大器,只需衰减器,如图所示9M、900K、90K、和10K电阻构成1/10、1/100、1/1000的衰减器。衰减输入电路可由开关来选择不同的衰减率,从而切换档位。3.2.2工

11、作原理及换算关系如上图通过电阻网络实现电压衰减测量的输入阻抗约为R4、R5、R6。1端、2端单独合上时,Vout的大小分别是:1脚单独合上Vout=Vin1;2脚单独合上Vout= Vin(R4+ R5+ R6)/(R3+ R4+ R5+ R6)。由上式可以看出,Vout在一定范围时电阻网络衰减程度越大其可输入电压Vin。量程调节,只要把R5,R6的参数选好然后,由开关1端、2断选择测量电压输出端即完成量程选定。3.3逐次逼近式A/D转换模块设计逐次逼近型A/D转换器属于直接型A/D转换器,它能把输入的模拟电压直接转换为输出的数字代码,而不需要经过中间变量。主要由比较器、环形分配器、控制门、寄

12、存器与D/A转换器组成。3.3.1ADC0808简介1ADC0808引脚功能图3-5ADC0808引脚图IN0IN7:8路模拟量输入。A、B、C:3位地址输入,2个地址输入端的不同组合选择八路模拟量输入。ALE:地址锁存启动信号,在ALE的上升沿,将A、B、C上的通道地址锁存到内部的地址锁存器。D0D7:八位数据输出线,A/D转换结果由这8根线传送给单片机。OE:允许输出信号。当OE=1时,即为高电平,允许输出锁存器输出数据。START:启动信号输入端,START为正脉冲,其上升沿清除ADC0808的内部的各寄存器,其下降沿启动A/D开始转换。EOC:转换完成信号,当EOC上升为高电平时,表明

13、内部A/D转换已完成。2ADC0808内部结构图逐次逼近型A/D转换器ADC0808由八路模拟开关、地址锁存与译码器、比较器、D/A转换器、寄存器、控制电路和三态输出锁存器等组成。其内部结构如图3-6所示。图3-6ADC0808内部结构3.3.2A/D转换电路设计集成摸数转换芯片ADC0808实现的A/D转换电路如图3-7所示,被测信号由ADC0808模拟输入端输入,完成A/D转换后送入单片机,经相应处理后送出显示。图3-7ADC0808与单片机的连接3.4显示模块设计3.4.1LCD显示模块LCD显示器分为字段显示和字符显示两种。其中字段显示与LED显示相似,只要送对应的信号到相应的管脚就能

14、显示。字符显示是根据需要显示基本字符。本设计采用的是字符型显示。系统中采用LCD1602作为显示器件输出信息。与传统的LED数码管显示器件相比,液晶显示模块具有体积小、功耗低、显示内容丰富等优点,而且不需要外加驱动电路,现在液晶显示模块已经是单片机应用设计中最常用的显示器件了。LCD1602可以显示2行16个汉字。3.4.2LCD1602的引脚功能LCD1602模块的引脚如图3-8所示,其引脚功能如下:RS:数据和指令选择控制端,RS=0命令状态;RS=1数据R/W:读写控制线,R/W=0写操作;R/W=1读操作A:背光控制正电源 K:背光控制地E:数据读写操作控制位,E线向LCD模块发送一个

15、脉冲,LCD模块与单片机间将进行一次数据交换DB0DB7:数据线,可以用8位连接,也可以只用高4位连接,节约单片机资源。VDD:电源端 VEE:亮度控制端(1-5V)VSS VDD VO RS R/W E DB0 DB1 DB2 DB3 DB4 DB5 DB6 DB7 A KLCD 模 块1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 VSS:接地端图3-8LCD1602模块3.4.3LCD1602的显示操作1四种基本操作LCD有四种基本操作,具体如表3-1所示。表3-1LCD与单片机之间有四种基本操作RSR/W操作00写命令操作(初始化,光标定位等)01读状态操

16、作(读忙标志位)10写数据操作(要显示内容)11读数据操作(可以把显示存储区中的数据反读出来)(1)读状态字执行读状态字操作,如表3-1满足RS=0,R/W=1。根据管脚功能,当为有效电平时,状态命令字可从LCD模块传输到数据总线。同时可以保持一段时间,从而实现读状态字的功能。读状态字流程如图3-9所示。图3-9读入状态字流程图(2)命令字表3-2所示为命令字,其主要介绍了指令名称、控制信号及控制代码。其指令名称是指要实现的功能;控制代号是采用的十六进制的数值表示的。1)清零操作是指输入某命令字后即能将整个屏幕显示的内容全部清除;2)归home位:将光标送到初始位;其中的号为任意,高低电平均可

17、;3)输入方式:设光标移动方向并指定整体显示,是否移动。I/D=0:减量方式,S=1:移位方式,S=0:不移位;4)显示状态:D指设置整体显示开关;C指设置光标显示开关;B指设置光标的字符闪耀;5)光标画面滚动:R/L指右移或左移;S/C指移动总体或光标;6)功能设置:DL接口数位,L指显示行数,F显示字型;如DL=1:8位=0,4位N=1:2行=0:1行,G=1:510=0:57(点阵)7)CGRAM地址设制:相当于一个数据库,可以在其中选择所需要的符号;8)DDRAM地址设制:显示定位;9)读BF和AC:B为最高位忙的标志,F为标志位;10)写数据:将数据按要求写入到对应的单元;11)读数

18、据:读相应单元内的数据;表3-2命令字指令名称控制信号控制代码RSRWD7D6D5D4D3D2D1D0清屏0000000001归HOME位000000001*输入方式设制00000001I/DS显示状态设制0000001DCB无标画面滚动000001S/CRL*功能设置00001DLNF*CGRAM地址设制0001A5A4A3A2A1A0DDRAM地址设制001A6A5A4A3A2A1A0读BF和AC01BFAC6AC5AC4AC3AC2AC1AC0写数据10数 据读数据11数 据(3)写命令字由表3-2可知当RS=0,R/W=0时,才可以通过单片机或用户指令把数据写到LCD模块,此时就对LC

19、D进行调制。可采用查询方式:先读入状态字,再判断忙标志位,最后写命令字。图3-10所示为写命令字的流程图。图3-10写命令字流程图1)定义光标位置显示数据的某位,就是把显示数据写在相应的DDRAM地址中,DDRAM地址占7位。SetDDRAMaddress命令如表3-3所示。光标定位,写入一个显示字符后,DDRAM地址会自动加1或减1,加或减由输入方式设置。表3-3Set DDRAM address命令RSR/WDB7DB6DB5DB4DB3DB2DB1DB0001AC6AC5AC4AC3AC2AC1AC0第1行DDRAM地址与第2行DDRAM地址并不连续,如表3-4所示。表3-4DDRAM地

20、址row12345141516line180H81H82H83H84H8dH8eH8fHline20c0H0c1H0c2H0c3H0c4H0cdH0ceH0cfH2)LCD初始化从通电开始延时,先经过判忙后再进行功能设置,过一段时间后可以设制显示状态(如设制行、位或阵列)再经过延时清屏后才可以设置输入方式,具体实现过程如图3-11所示。图3-11LCD初始化流程图2LCD显示程序设计LCD显示程序的设计一般先要确定LCD的初始化、光标定位、确定显示字符后,显示流程如图3-12显示。图3-12LCD显示程序流程图第4章系统软件设计根据需要,可将系统软件按照功能划分为4个模块,分别是主程序模块、A

21、/D转换模块、液晶显示模块、中断服务程序模块(改变显示的小数点位置),各模块的功能关系如图4-1所示。编写系统软件时,可首先编写各模块的底层驱动程序,而后是系统联机调试,编写上层主程序。系统主程序液晶管显示A/D转换中断服务.图4-1系统软件框图4.1主程序设计图4-2主程序流程图主程序主要负责各个模块的初始化工作:设置定时器、寄存器的初值,启动A/D转换,读取转换结果,处理量程转换响应,控制液晶实时显示等,其流程图如图4-2所示。4.2A/D转换程序A/D转换程序的功能是采集数据,在整个系统设计中占有很高的地位。当系统设置好后,单片机扫描转换结束管脚P2.6的输入电平状态,当输入为高电平则转

22、换完成,将转换的数值转换并显示输出。若输入为低电平,则继续扫描。程序流程图如图4-3所示。图4-3A/D转换程序流程图4.3中断服务程序中断服务程序的功能是为ADC0808提供时钟信号,当中断发生时将AT89C51单片机的P2.4管脚将输出信号取反,为ADC0808提供12kHz时钟信号。第5章系统仿真与调试在进行电路的局部调试之后,我又进行了系统整机调试。首先为ADC0808接上+12V的电压,为其它芯片接上+5V的工作电压。另外还要输入待测的模拟电压,该电压从200mV以下的电压开始输起,依次增大,直到达到待测电压的上限50V为止,记录测量数据并分析系统性能。5.1分局部调试1检查ADC0

23、808是否工作ADC0808集成了三个控制端。如果某一控制端为高电平则对应的开关将接通。为测量其是否工作,我们将它的三个控制端用导线引出分别接高低电平,发现测量结果与理论分析结果一致,ADC0808工作正常。2各量程调节这一步调试是建立在上述两步调试的基础上的。针对不同的档位,我们通过接入不同待测的模拟量来调节电压。5.2整机调试本系统的测试采用Proteus软件,系统在Proteus软件中仿真时使用的元件如表5-1所示。测试表明,系统运行正常,能准确将直流模拟信号的电压转换成数值显示,并能精确到5位有效数字,达到了设计的要求。表5-1元件名称及属性序号元件名属性序号元件名属性1AT89C51

24、单片机7LM016LLCD16023CAP电容8ADC08088位A/D转换器4CAP-ELEC电解电容9PULLUP上拉电阻5CRYSTAL晶振10SW-POT44路模拟开关6RES电阻1174LS02与非门5.3系统仿真采用Keil编译器进行源程序编译及仿真调试,调好程序后将目标程序导入Proteus进行软硬件调试,基于单片机实现的数字电压表测试值见表5-2所示。表5-2测试值与真实值电压表测得值/V0.000.3320.390.5070.9961.2501.5032.0002.480绝对误差/V0.00+0.02+0.01+0.02+0.01+0.01+0.03+0.00+0.01电压表

25、测得值/V4.9805.079.9612.5015.0319.9229.8839.8449.80绝对误差/V+0.00+0.02+0.01+0.01+0.02+0.02+0.02+0.03+0.02从表中可以看出,电压表测得值误差均在0.02V以内,这与采用8位A/D转换器所能达到的理论误差精度相比较接近,因此在一般的应用场合都可以满足要求。结论本设计以AT89C51单片机为控制核心,通过集成摸数转换芯片ADC0808将被测信号转换成数字信号,经单片机内部程序处理后,由液晶显示器LCD1602显示测量结果。仿真测试表明,系统性能良好,测量读数稳定易读、更新速度合理,直流电压测量范围为050V,

26、最小分辨率为0.02V,满足任务书指标要求。但是,该系统也存在一定程度的不足,例如:1、输入电压易发生干扰不稳定,且驱动能力可能存在不足,需在被测信号的输入端加上一部分驱动电路,比如将量程转换电路改成带放大能力的自动量程转换电路,将幅值较小的信号经适当放大后再测量,可显著提高精度;2、输出量可用平均值算法来改善,使测量准确度更高。3、若能将测量的电压值实时保存,使用时将更方便。4、ADC0808可实现对8个通道的输入信号轮流转换,本设计仅仅使用了其中一个通道,造成了较大的资源浪费。若能对电路稍加改进,实现对多路信号的轮流测量并自动保存相应结果,其应用价值将会更大。致谢本文是在杨柳老师的精心指导

27、下完成的。在此向他表示衷心的感谢。感谢同学的鼓励和帮助,让我顺利完成本次设计任务。通过短暂的毕业设计,从而提高了我的理论水平,真正做到学有所用,虽然在其过程中我也遇到一些困难,但是从中我也得到了很多的帮助,没有半途而废,没有灰心丧气,我都一一克服了,这些都是一种收获,最让我感到高兴的是终于按质按量的完成了毕业设计。感谢我的指导老师,他严谨细致、一丝不苟的作风一直是我工作、学习中的榜样;他循循善诱的教导和不拘一格的思路给予我无尽启迪。本次毕业设计的每一个细节都离不开您的细心指导。感谢同学、朋友的帮助,在这里请接受我诚挚的谢意!参考文献1徐爱钧智能化测量控制仪表原理与设计(第二版)北京:北京航空航

28、天大学出版社,20042吴金戌,沈庆阳,郭庭吉8051单片机实践与应用北京:清华大学出版社,20023黄智伟全国大学生电子设计竞赛训练教程北京:电子工业出版社,20044汪德彪MCS-51单片机原理及接口技术(第一版)北京:电子工业出版社,2003附录系统源程序COMEQU50HDATEQU51HRSEQUP2.1;LCD寄存器选择信号RWEQUP2.2;LCD读/写选择信号EEQUP2.3;LCD使能信号ORG0000HLJMPMAINORG000BHLJMPBT0;T0中断入口ORG0030H;主程序初始化MAIN:MOVSP,#60HLCALL INTMOV30H,#30HMOV31H,

29、#0A5HMOV32H,#30HMOV33H,#30HMOV34H,#30HMOVR7,#30HLCALLN1;显示Voltage=0.000LCALLN2;定时器初始化程序MOVTMOD,#00HMOVTH0,#00HMOVTL0,#00HSETBTR0MOV24H,#03HMOVIE,#82HLP:MOVR7,#30H;显示缓冲区首地址LCALLDISPLYSJMPLP;循环显示;定时器中断服务程序,读取0809第0通道的转换结果并转换为显示值BT0:PUSHACCPUSHPSWMOVPSW,#00HCLRTR0MOVTH0,#00HMOVTL0,#00HDEC24HMOVA,24HMOV

30、A,P1ANLA,#03HDECAZLC0DECAJZLC1LC0:JNZRTN1MOV24H,#03HMOVDPTR,#0F6FFHMOVA,#00HMOVXDPTR,AMOVR7,#0ccHDJNZR7,$MOVXA,DPTRMOV40H,AMOVB,#05H;A/D转换结果化为显示值MULAB;(AD*5)/25MOV30H,B;AD*5的高字节为整数部分MOVB,#0AHMULAB;AD*5的低字节为/256的结果,为小数部分MOV32H,B;二进制小数换为10进制数MOVB,#0AHMULABMOV33H,BMOVB,#0AHMULABMOV34H,BRTN1: SETBTR0ORL

31、30H,#30HMOV31H,#0A5HORL32H,#30HORL33H,#30HORL34H,#30HMOV35H,#30HLJMPLCCLC1: JNZRTN2MOV24H,#03HMOVDPTR,#0F6FFHMOVA, #00HMOVXDPTR,AMOVR7,#0ccHDJNZR7,$MOVXA,DPTRMOV40H,AMOVB,#05H; A/D转换结果显示值MULAB;(AD*5)/25MOV30H,B;AD*5的高字节为整数部分MOVB,#0AHMULAB;AD*5的低字节为/256的结果,为小数部分MOV31H,B;二进制小数换为10进制数MOVB,#0AHMULABMOV3

32、3H,BMOVB,#0AHMULABMOV34H,BRTN2: SETBTR0ORL30H,#30HORL31H,#30HMOV32H,#0A5HORL33H,#30HORL34H,#30HMOV35H,#30H;AJMPLCCLCC:NOPPOPPSWPOPACCRETIDISPLY:;LCD显示子程序MOVCOM,#0CAHLCALLPR1MOVR1,#05HMOVR0,#30HL:MOVDAT,R0LCALLPR2INCR0DJNZR1,LRET;逐字依次输入方式演示程序段N1:MOVCOM,#01HLCALLPR1MOVCOM,#06HLCALLPR1MOVCOM,#0EHLCALLP

33、R1MOVDPTR,#TABMOVR2,#8HWRIN1:MOVR3,#00HWRIN:;写入MOVA,R3MOVCA,A+DPTRMOVDAT,ALCALLPR2INCR3DJNZR2,WRINRETN2:MOVCOM,#06HLCALLPR1MOVCOM,#0C0HLCALLPR1MOVDPTR,#TAB1MOVR2,#9HSJMPWRIN1TAB:DBlicaiyuTAB1:DBVOLTAG = ;LCD间接控制方式下的初始化子程序INT:LCALLDELAY;调用延时子程序MOVCOM,#3CH;设置工作方式LCALLPR1MOVCOM,#01H;清屏LCALLPR1MOVCOM,#0

34、6H;设置输入方式LCALLPR1MOVCOM,#080H;设置显示方式LCALLPR1RETDELAY:MOVR6,#0FH;延时MOVR7,#00HDELAY1: NOPDJNZR7,DELAY1DJNZR6,DELAY1RET;LCD间接工致方式的驱动子程序;读BF和AC的值PR0:PUSHACCMOVP0,#0FFH;P0置位,准备读CLRRS;RS=0,选择指令寄存器SETBRW;RW=1,读SETBE;片选,1有效LCALLDELAYMOVCOM,P0;读BF和AC6-4值CLREPOPACCRET;写指令代码子程序PR1:PUSHACCCLRRS;指令寄存器SETBRWPR11:

35、MOVP0,#0FFH;P0置位,准备读SETBELCALLDELAYNOPMOVA,P0CLREJBACC.7,PR11;BF=1CLRRWMOVP0,COMSETBECLREPOPACCRET;写显示数据程序PR2:PUSHACCCLRRSSETBRWPR21:MOVP0,#0FFHSETB ELCALLDELAYMOVA,P0;读BF和AC6-4CLREJBACC.7,PR21SETBRSCLRRWMOVP0,DAT;写入数据高4位SETBECLREPOPACCRET;读显示数据程序PR3:PUSHACCCLRRSSETBRWPR31:MOVP0,#0FFH;P0置位,准备读SETBEL

36、CALLDELAYMOVA,P0;读BF和AC6-4CLREJBACC.7,PR31SETBRS;RS=1,选通数据寄存器SETBRWMOVP0,#0FFH;读数据SETBEMOVDAT,P0CLREPOPACCRETEND;单片机毕业设计程序:数字电压表的设计COMEQU50HDATEQU51HRSEQUP2.1;LCD积存器选择信号RWEQUP2.2;LCD读/写选择信号EEQUP2.3;LCD使能信号ORG0000HLJMPMAINORG000BHLJMPBT0;T0中断入口ORG0030H;主程序初始化MAIN:MOVSP,#60HLCALL INTMOV30H,#30HMOV31H,

37、#0A5HMOV32H,#30HMOV33H,#30HMOV34H,#30HMOVR7,#30HLCALLN1;显示Voltage=0.000LCALLN2;定时器初始化程序MOVTMOD,#00HMOVTH0,#00HMOVTL0,#00HSETBTR0MOV24H,#03HMOVIE,#82HLP:MOVR7,#30H;显示缓冲区首地址LCALLDISPLYSJMPLP;循环显示;定时器中断服务程序,读取0808第0通道的转换结果并转换为显示值BT0:PUSHACCPUSHPSWMOVPSW,#00HCLRTR0MOVTH0,#00HMOVTL0,#00HDEC24HMOVA,24HJNZ

38、RTN1MOV24H,#03HMOVDPTR,#0F6FFHMOVA,#00HMOVXDPTR,AMOVR7,#0ccHDJNZR7,$MOVXA,DPTRMOV40H,ARTN:MOVB,#05H;A/D转换结果化为显示值MULAB;(AD*5)/25MOV30HB;AD*5的高字节为整数部分MOVB,#0AHMULAB;AD*5的低字节为/256的结果,为小数部分MOV32HB;二进制小数换为10进制数MOVB,#0AHMULABMOV33H,BMOVB,#0AHMULABMOV34H,BRTN1:SETBTR0ORL30H,#30HMOV31H,#0A5HORL32H,#30HORL33

39、H,#30HORL34H,#30HMOV35H,#30HPOPPSWPOPACCRETI DISPLY:;LCD显示子程序MOVCOM,#0CAHLCALLPR1MOVR1,#05HMOVR0,#30HL:MOVDAT,R0LCALLPR2INCR0DJNZ R1, LRET;逐字依次输入方式演示程序段N1:MOVCOM,#01HLCALLPR1MOVCOM,#06HLCALLPR1MOVCOM,#0EHLCALLPR1MOVDPTR,#TABMOVR2,#8HWRIN1:MOVR3,#00HWRIN:;写入MOVA,R3MOVCA,A+DPTRMOVDAT,ALCALLPR2INCR3JNZ

40、R2,WRINRETN2:MOVCOM,#06HLCALLPR1MOVCOM,#0C0HLCALLPR1MOVDPTR,#TAB1MOVR2,#9HSJMPWRIN1TAB:DBWANGHONGTAB1:DBVOLTAG = ;LCD间接控制方式下的初始化子程序INT:LCALLDELAY;调用延时子程序MOVCOM,#3CH;设置工作方式LCALLPR1MOVCOM,#01H;清屏LCALLPR1MOVCOM,#06H;设置输入方式LCALLPR1MOVCOM,#080H;设置显示方式LCALLPR1RETDELAY: MOVR6,#0FH;延时MOVR7,#00HDELAY1: NOPDJNZR7,DELAY1DJNZR6,DELAY1RET;LCD间接工致方式的驱动子程序;读BF和AC的值PR0:PUSHACCMOVP0,#0FFH;P0置位,准备读CLRRS;RS=0,选择指令寄存器SETBRW;RW=1,读SETBE;片选,1有效LCALLDELAYMOVCOM,P0;读BF和AC6-4值CLREPOPACCRET;写指令代码子程序PR1:PUSHACC

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号