[学士论文]毕业设计(论文)-基于单片机实现的数字电压表.doc_第1页
[学士论文]毕业设计(论文)-基于单片机实现的数字电压表.doc_第2页
[学士论文]毕业设计(论文)-基于单片机实现的数字电压表.doc_第3页
[学士论文]毕业设计(论文)-基于单片机实现的数字电压表.doc_第4页
[学士论文]毕业设计(论文)-基于单片机实现的数字电压表.doc_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

毕业设计说明书(论文) 设计(论文)题目: 基于单片机实现的 数字电压表 专 业: 班 级: 学 号: 姓 名: 指导教师: 2010 年 3 月 1 日 重庆电子工程职业学院毕业设计(论文)任务书重庆电子工程职业学院毕业设计(论文)任务书 学 生 姓 名 学号 班级 专业 设计(或论文)题目基于单片机实现的数字电压表 指导教师姓名职 称 联系方式备 注 设计内容: 1设计一款基于单片机实现的直流数字电压表。 2主要功能: (1)可测量 050V 直流电压,分辨率 0.02V; (2)具有数码管或 LCD 显示电压值功能; (3)具有量程自动转换功能; (4)能实现多路信号的分时测量(可选项) 。 进度安排: 第 5 周:查询资料和制定方案; 第 79 周:电路设计与仿真; 第 1011 周:软件设计与仿真; 第 1215 周:样机联调与撰写设计报告; 第 1617 周:参加答辩。 主要参考文献、资料(写清楚参考文献名称、作者、出版单位): 1徐爱钧智能化测量控制仪表原理与设计(第二版) 北京航空航天大学出版社,2004 2吴金戌,沈庆阳8051 单片机实践与应用郭庭吉清华大学出版社,2002 3黄智伟全国大学生电子设计竞赛训练教程电子工业出版社,2004 4汪德彪MCS-51 单片机原理及接口技术(第一版) 电子工业出版社,2003 审 批 意 见 教研室负责人: 年 月 日 备注:任务书由指导教师填写,一式二份。其中学生一份,指导教师一份。 I 目 录 摘 要1 第 1 章 绪论2 第 2 章 方案设计3 2.1 方案选择.3 2.1.1 量程转换方案设计.3 2.1.2 显示部分方案设计.3 2.2 方案论证.4 第 3 章 硬件设计5 3.1 单片机控制模块设计.5 3.1.1 时钟电路.5 3.1.2 复位电路.5 3.2 量程转换模块设计.6 3.2.1 电路选择.6 3.2.2 工作原理及换算关系.6 3.3 逐次逼近式 A/D 转换模块设计.6 3.3.1 ADC0808 简介 .6 3.3.2 A/D 转换电路设计 .8 3.4 显示模块设计.9 3.4.1 LCD 显示模块 .9 3.4.2 LCD1602 的引脚功能 .9 3.4.3 LCD1602 的显示操作 .9 第 4 章 系统软件设计.14 4.1 主程序设计14 4.2 A/D 转换程序 15 4.3 中断服务程序15 第 5 章 系统仿真与调试.16 II 5.1 分局部调试16 5.2 整机调试16 5.3 系统仿真17 结 论.18 致 谢.19 参考文献.20 附录 系统源程序.21 附录 整机原理图.31 第 1 页 共 31 页 摘 要 电压表是测量仪器中不可缺少的设备,目前广泛应用的是采用专用集成电路实 现的数字电压表。本系统以 AT89C51 单片机为核心,以逐次逼近式 A/D 转换器 ADC0808、液晶显示器 LCD1602 为主体,设计了一款简易的数字电压表,能够测量 050V 的直流电压,最小分辨率为 0.02V。 关键词 AT89C51 单片机;电压测量;A/D 转换;LCD1602 液晶显示 第 2 页 共 31 页 第 1 章 绪论 数字电压表的基本工作原理是利用 A/D 转换电路将待测的模拟信号转换成数字 信号,通过相应换算后将测试结果以数字形式显示出来的一种电压表。较之于一般 的模拟电压表,数字电压表具有精度高、测量准确、读数直观、使用方便等优点。 电压表的数字化测量,关键在于如何把随时连续变化的模拟量转化成数字量, 完成这种转换的电路叫模数转换器(A/D) 。数字电压表的核心部件就是 A/D 转换器, 由于各种不同的 A/D 转换原理构成了各种不同类型的 DVM。一般说来,A/D 转换 的方式可分为两类:积分式和逐次逼近式。 积分式 A/D 转换器是先用积分器将输入的模拟电压转换成时间或频率,再将其 数字化。根据转化的中间量不同,它又分为 U-T(电压-时间)式和 U-F(电压-频率) 式两种。 逐次逼近式 A/D 转换器分为比较式和斜坡电压式,根据不同的工作原理,比较 式又分为逐次比较式及零平衡式等。斜坡电压式又分为线性斜坡式和阶梯斜坡式两 种。 在高精度数字电压表中,常采用由积分式和比较式相结合起来的复合式 A/D 转 换器。本设计以 AT89C51 单片机为核心,以逐次比较型 A/D 转换器 ADC0808、液 晶显示器 LCD1602 为主体,构造了一款简易的数字电压表,能够测量 1 路 050V 直流电压,最小分辨率 0.02V。 第 3 页 共 31 页 第 2 章 方案设计 实现数字电压表的方案较多,目前广泛采用的是基于 74 系列逻辑器件方案,本 设计将介绍基于单片机实现的方案。 74 系列逻辑器件方案采用双积分电路+液晶显示器+逻辑电路+定时采样电路+数 据处理实现,被测电压信号由信号输入端加到测量系统,进行预处理后送到后级电 路。 单片机系统方案此方案采用输入处理电路+ADC0808+AT89C51+液晶显示实现, 被测信号由 ADC0808 模拟输入端输入,单片机采集转换数据,将转换数据送出显示。 2.1 方案选择 2.1.1 量程转换方案设计 方案一:考虑到 ADC0808 的八路模拟量输入通道本质上也是模拟开关,因此 可以利用其八个模拟通道中的三个作为量程转换器,即根据通道对应的电压测量范 围确定对应的电压放大倍数设计对应的前置放大电路。 方案二:选用模拟开关芯片 4066 实现量程转换。4066 集成了 4 个模拟开关, 每一路开关都有一个控制端控制对应开关的通断。用单片机对控制端进行控制,实 现不同量程的转换。 方案三:利用手动开关实现量程转换。该方案可简化控制程序,减小系统开销, 缩短反应时间,不足之处在于操作麻烦。 终上所述:方案三所需元件少、成本低且易于实现,可选此方案。 2.1.2 显示部分方案设计 方案一:用液晶 LCD1602 来显示电压读数可进行片选,实现液晶的动态点亮。 因为只需一片液晶就可以完成现示工作,所以当单片机控制前两个控制端时,最高 位控制端应接地。用软件作为液晶的驱动显示,且具体译码由软件控制。 方案二:同方案一选用 ADC0808 进行片选,在译码驱动部分选用液晶 LCD1602,用软件译码。 第 4 页 共 31 页 终上所述:由于两个方案都可以实现同样的功能,但方案二设计简单、系统开 销小、反应速度较快,因此选择此方案。 2.2 方案论证 经过以上方案设计,决定采用如图 2-1 所示方案。 图 2-1 系统框图 第 5 页 共 31 页 第 3 章 硬件设计 3.1 单片机控制模块设计 单片机控制模块的作用是为控制各单元电路的运行并完成数据的换算或处理, 主要由单片机、时钟电路、复位电路组成。 3.1.1 时钟电路 单片机工作的时间基准是由时钟电路提供的,在单片机的 XTAL1 和 XYAL2 两 个管脚接一只晶振及两只电容就构成了单片机的时钟电路,电路中电容器和对 1 C 2 C 振荡频率有微调作用,通常取(3010)pF 石英晶体选择 6MHz 或 12MHz 都可以。时 钟电路如图 3-1 所示。 图 3-1 系统时钟电路 图 3-2 系统复位电路 3.1.2 复位电路 单片机的 RST 管脚为主机提供了一个外部复位信号输入口。复位信号是高电平 有效,高电平有效的持续时间为 2 个机器周期以上。单片机的复位方式可由手动复 位方式完成。电阻、电容器的参考值=10K、=10uF、=0.01uF。复位电路 1 R 1 C h C 如图 3-2 所示。 第 6 页 共 31 页 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 工作原理及换算关系 如上图通过电阻网络实现电压衰减测量的输入阻抗约为 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 转换器,它能把输入的模拟电压直接转 换为输出的数字代码,而不需要经过中间变量。主要由比较器、环形分配器、控制 门、寄存器与 D/A 转换器组成。 3.3.1 ADC0808 简介 1ADC0808 引脚功能 第 7 页 共 31 页 2 -1MSB 21 ADD B 24 ADD A 25 ADD C 23 VREF(+) 12 VREF(-) 16 IN3 1 IN4 2 IN5 3 IN6 4 IN7 5 START 6 2 -5 8 EOC 7 OUTPUT ENABLE 9 CLOCK 10 VCC 11 2 -2 20 GND 13 2 -7 14 2 -6 15 2 -8LSB 17 2 -4 18 2 -3 19 IN2 28 IN1 27 IN0 26 ALE 22 图 3-5 ADC0808 引脚图 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 上升为高电平时,表明内部 A/D 转换已完成。 2ADC0808 内部结构图 逐次逼近型 A/D 转换器 ADC0808 由八路模拟开关、地址锁存与译码器、比较器、 D/A 转换器、寄存器、控制电路和三态输出锁存器等组成。其内部结构如图 3-6 所 示。 第 8 页 共 31 页 图 3-6 ADC0808 内部结构 3.3.2 A/D 转换电路设计 集成摸数转换芯片 ADC0808 实现的 A/D 转换电路如图 3-7 所示,被测信号由 ADC0808 模拟输入端输入,完成 A/D 转换后送入单片机,经相应处理后送出显示。 图 3-7 ADC0808 与单片机的连接 第 9 页 共 31 页 3.4 显示模块设计 3.4.1 LCD 显示模块 LCD 显示器分为字段显示和字符显示两种。其中字段显示与 LED 显示相似, 只要送对应的信号到相应的管脚就能显示。字符显示是根据需要显示基本字符。本 设计采用的是字符型显示。 系统中采用 LCD1602 作为显示器件输出信息。与传统的 LED 数码管显示器件 相比,液晶显示模块具有体积小、功耗低、显示内容丰富等优点,而且不需要外加 驱动电路,现在液晶显示模块已经是单片机应用设计中最常用的显示器件了。 LCD1602 可以显示 2 行 16 个汉字。 3.4.2 LCD1602 的引脚功能 LCD1602 模块的引脚如图 3-8 所示,其引脚功能如下: RS:数据和指令选择控制端,RS=0 命令状态;RS=1 数据 R/W:读写控制线,R/W=0 写操作;R/W=1 读操作 A:背光控制正电源 K:背光控制地 E:数据读写操作控制位,E 线向 LCD 模块发送一个脉冲,LCD 模块与单片机 间将进行一次数据交换 DB0DB7:数据线,可以用 8 位连接,也可以只用高 4 位连接,节约单片机 资源。 VDD:电源端 VEE:亮度控制端(1-5V) VSS:接地端 图 3-8 LCD1602 模块 3.4.3 LCD1602 的显示操作 1四种基本操作 LCD 有四种基本操作,具体如表 3-1 所示。 VSS VDD VO RS R/W E DB0 DB1 DB2 DB3 DB4 DB5 DB6 DB7 A K LCD 模 块 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 第 10 页 共 31 页 表 3-1 LCD 与单片机之间有四种基本操作 (1)读状态字 执行读状态字操作,如表 3-1 满足 RS=0,R/W=1。根据管脚功能,当为有效电 平时,状态命令字可从 LCD 模块传输到数据总线。同时可以保持一段时间,从而实 现读状态字的功能。读状态字流程如图 3-9 所示。 图 3-9 读入状态字流程图 (2)命令字 表 3-2 所示为命令字,其主要介绍了指令名称、控制信号及控制代码。其指令 名称是指要实现的功能;控制代号是采用的十六进制的数值表示的。 1)清零操作是指输入某命令字后即能将整个屏幕显示的内容全部清除; 2)归 home 位:将光标送到初始位;其中的号为任意,高低电平均可; 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(点阵) RSR/W操作 00写命令操作(初始化,光标定位等) 01读状态操作(读忙标志位) 10写数据操作(要显示内容) 11读数据操作(可以把显示存储区中的数据反读出来) 第 11 页 共 31 页 7)CGRAM 地址设制:相当于一个数据库,可以在其中选择所需要的符号; 8)DDRAM 地址设制:显示定位; 9)读 BF 和 AC:B 为最高位忙的标志,F 为标志位; 10)写数据:将数据按要求写入到对应的单元; 11)读数据:读相应单元内的数据; 表 3-2 命令字 控制信号 控制代码 指令名称 RS RW D7 D6D5D4D3D2D1D0 清屏0000000001 归 HOME 位000000001* 输入方式设制00 0 00001I/DS 显示状态设制0000001DCB 无标画面滚动000001S/CRL* 功能设置00001DLNF* CGRAM 地址设制0001A5A4A3A2A1A0 DDRAM 地址设制001A6A5A4A3A2A1A0 读 BF 和 AC01 BF AC6AC5AC4AC3AC2AC1AC0 写数据10数 据 读数据11数 据 (3)写命令字 由表 3-2 可知当 RS=0,R/W=0 时,才可以通过单片机或用户指令把数据写到 LCD 模块,此时就对 LCD 进行调制。可采用查询方式:先读入状态字,再判断忙 标志位,最后写命令字。图 3-10 所示为写命令字的流程图。 第 12 页 共 31 页 图 3-10 写命令字流程图 1)定义光标位置 显示数据的某位,就是把显示数据写在相应的 DDRAM 地址中,DDRAM 地址 占 7 位。Set DDRAM address 命令如表 3-3 所示。光标定位,写入一个显示字符 后,DDRAM 地址会自动加 1 或减 1,加或减由输入方式设置。 表 3-3 Set DDRAM address 命令 RSR/WDB7DB6DB5DB4DB3DB2DB1DB0 001AC6AC5AC4AC3AC2AC1AC0 第 1 行 DDRAM 地址与第 2 行 DDRAM 地址并不连续,如表 3-4 所示。 表 3-4 DDRAM 地址 row12345141516 line180H81H82H83H84H8dH8eH8fH line20c0H0c1H0c2H0c3H0c4H0cdH0ceH0cfH 2)LCD 初始化 从通电开始延时,先经过判忙后再进行功能设置,过一段时间后可以设制显示 状态(如设制行、位或阵列)再经过延时清屏后才可以设置输入方式,具体实现过 程如图 3-11 所示。 第 13 页 共 31 页 图 3-11 LCD 初始化流程图 2LCD 显示程序设计 LCD 显示程序的设计一般先要确定 LCD 的初始化、光标定位、确定显示字符 后,显示流程如图 3-12 显示。 图 3-12 LCD 显示程序流程图 第 14 页 共 31 页 第 4 章 系统软件设计 根据需要,可将系统软件按照功能划分为 4 个模块,分别是主程序模块、A/D 转换模块、液晶显示模块、中断服务程序模块(改变显示的小数点位置),各模块的 功能关系如图 4-1 所示。编写系统软件时,可首先编写各模块的底层驱动程序,而 后是系统联机调试,编写上层主程序。 系统主程序 液晶管显示 A/D 转换 中断服务 . 图 4-1 系统软件框图 4.1 主程序设计 图 4-2 主程序流程图 第 15 页 共 31 页 主程序主要负责各个模块的初始化工作:设置定时器、寄存器的初值,启动 A/D 转换,读取转换结果,处理量程转换响应,控制液晶实时显示等,其流程图如 图 4-2 所示。 4.2 A/D 转换程序 A/D 转换程序的功能是采集数据,在整个系统设计中占有很高的地位。当系统 设置好后,单片机扫描转换结束管脚 P2.6 的输入电平状态,当输入为高电平则转换 完成,将转换的数值转换并显示输出。若输入为低电平,则继续扫描。程序流程图 如图 4-3 所示。 图 4-3 A/D 转换程序流程图 4.3 中断服务程序 中断服务程序的功能是为 ADC0808 提供时钟信号,当中断发生时将 AT89C51 单片机的 P2.4 管脚将输出信号取反,为 ADC0808 提供 12kHz 时钟信号。 第 16 页 共 31 页 第 5 章 系统仿真与调试 在进行电路的局部调试之后,我又进行了系统整机调试。首先为 ADC0808 接 上+12V 的电压,为其它芯片接上+5V 的工作电压。另外还要输入待测的模拟电压, 该电压从 200mV 以下的电压开始输起,依次增大,直到达到待测电压的上限 50V 为止,记录测量数据并分析系统性能。 5.1 分局部调试 1检查 ADC0808 是否工作 ADC0808 集成了三个控制端。如果某一控制端为高电平则对应的开关将接通。 为测量其是否工作,我们将它的三个控制端用导线引出分别接高低电平,发现测量 结果与理论分析结果一致,ADC0808 工作正常。 2各量程调节 这一步调试是建立在上述两步调试的基础上的。针对不同的档位,我们通过接 入不同待测的模拟量来调节电压。 5.2 整机调试 本系统的测试采用 Proteus 软件,系统在 Proteus 软件中仿真时使用的元件如表 5-1 所示。测试表明,系统运行正常,能准确将直流模拟信号的电压转换成数值显示, 并能精确到 5 位有效数字,达到了设计的要求。 表 5-1 元件名称及属性 序号元件名属性序号元件名属性 1AT89C51单片机7LM016LLCD1602 3CAP电容8ADC08088 位 A/D 转换器 4CAP-ELEC电解电容9PULLUP上拉电阻 5CRYSTAL晶振10SW-POT44 路模拟开关 6RES电阻1174LS02与非门 第 17 页 共 31 页 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 电压表测得值/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 转换 器所能达到的理论误差精度相比较接近,因此在一般的应用场合都可以满足要求。 第 18 页 共 31 页 结 论 本设计以 AT89C51 单片机为控制核心,通过集成摸数转换芯片 ADC0808 将被 测信号转换成数字信号,经单片机内部程序处理后,由液晶显示器 LCD1602 显示测 量结果。 仿真测试表明,系统性能良好,测量读数稳定易读、更新速度合理,直流电压 测量范围为 050V,最小分辨率为 0.02V,满足任务书指标要求。但是,该系统也 存在一定程度的不足,例如: 1、输入电压易发生干扰不稳定,且驱动能力可能存在不足,需在被测信号的输 入端加上一部分驱动电路,比如将量程转换电路改成带放大能力的自动量程转换电 路,将幅值较小的信号经适当放大后再测量,可显著提高精度; 2、输出量可用平均值算法来改善,使测量准确度更高。 3、若能将测量的电压值实时保存,使用时将更方便。 4、ADC0808 可实现对 8 个通道的输入信号轮流转换,本设计仅仅使用了其中 一个通道,造成了较大的资源浪费。若能对电路稍加改进,实现对多路信号的轮流 测量并自动保存相应结果,其应用价值将会更大。 第 19 页 共 31 页 致 谢 本文是在*老师的精心指导下完成的。在此向他表示衷心的感谢。感谢同学的 鼓励和帮助,让我顺利完成本次设计任务。通过短暂的毕业设计,从而提高了我的 理论水平,真正做到学有所用,虽然在其过程中我也遇到一些困难,但是从中我也 得到了很多的帮助,没有半途而废,没有灰心丧气,我都一一克服了,这些都是一 种收获,最让我感到高兴的是终于按质按量的完成了毕业设计。 感谢我的指导老师,他严谨细致、一丝不苟的作风一直是我工作、学习中的榜 样;他循循善诱的教导和不拘一格的思路给予我无尽启迪。本次毕业设计的每一个 细节都离不开您的细心指导。 感谢同学、朋友的帮助,在这里请接受我诚挚的谢意! 第 20 页 共 31 页 参考文献 1 徐爱钧智能化测量控制仪表原理与设计(第二版)北京:北京航空航天大 学出版社,2004 2 吴金戌,沈庆阳,郭庭吉8051 单片机实践与应用北京:清华大学出版社, 2002 3 黄智伟全国大学生电子设计竞赛训练教程北京:电子工业出版社,2004 4 汪德彪MCS-51 单片机原理及接口技术(第一版)北京:电子工业出版社, 2003 第 21 页 共 31 页 附录 系统源程序 COMEQU50H DATEQU51H RSEQUP2.1 ;LCD 寄存器选择信号 RWEQUP2.2 ;LCD 读/写选择信号 EEQUP2.3 ;LCD 使能信号 ORG0000H LJMPMAIN ORG000BH LJMPBT0 ;T0 中断入口 ORG0030H ;主程序初始化 MAIN:MOVSP,#60H LCALL INT MOV30H,#30H MOV31H,#0A5H MOV32H,#30H MOV33H,#30H MOV34H,#30H MOVR7,#30H LCALL N1 ;显示 Voltage=0.000 LCALL N2 ;定时器初始化程序 MOVTMOD,#00H MOVTH0,#00H MOVTL0,#00H SETBTR0 MOV24H,#03H MOVIE,#82H LP:MOVR7,#30H ;显示缓冲区首地址 LCALL DISPLY SJMPLP ;循环显示 ;定时器中断服务程序,读取 0809 第 0 通道的转换结果并转换为显示值 BT0:PUSH ACC PUSHPSW MOVPSW,#00H CLRTR0 MOVTH0,#00H MOVTL0,#00H 第 22 页 共 31 页 DEC24H MOVA,24H MOVA,P1 ANLA,#03H DECA ZLC0 DECA JZLC1 LC0:JNZRTN1 MOV24H,#03H MOVDPTR,#0F6FFH MOVA,#00H MOVXDPTR,A MOVR7,#0ccH DJNZR7,$ MOVXA,DPTR MOV40H,A MOVB,#05H ;A/D 转换结果化为显示值 MULAB ;(AD*5)/25 MOV30H,B ;AD*5 的高字节为整数部分 MOVB,#0AH MULAB ;AD*5 的低字节为/256 的结果,为小数 部分 MOV32H,B ;二进制小数换为 10 进制数 MOVB,#0AH MULAB MOV33H,B MOVB,#0AH MULAB MOV34H,B RTN1: SETBTR0 ORL30H,#30H MOV31H,#0A5H ORL32H,#30H ORL33H,#30H ORL34H,#30H MOV35H,#30H LJMPLCC LC1: JNZRTN2 MOV24H,#03H MOVDPTR,#0F6FFH MOVA, #00H MOVXDPTR,A MOVR7,#0ccH DJNZR7,$ MOVXA,DPTR 第 23 页 共 31 页 MOV40H,A MOVB,#05H ; A/D 转换结果显示值 MULAB ;(AD*5)/25 MOV30H,B ;AD*5 的高字节为整数部分 MOVB,#0AH MULAB ;AD*5 的低字节为/256 的结果,为小数 部分 MOV31H,B ;二进制小数换为 10 进制数 MOVB,#0AH MULAB MOV33H,B MOVB,#0AH MULAB MOV34H,B RTN2: SETBTR0 ORL30H,#30H ORL31H,#30H MOV32H,#0A5H ORL33H,#30H ORL34H,#30H MOV35H,#30H ;AJMPLCC LCC:NOP POPPSW POPACC RETI DISPLY: ;LCD 显示子程序 MOVCOM,#0CAH LCALL PR1 MOVR1,#05H MOVR0,#30H L:MOVDAT,R0 LCALL PR2 INCR0 DJNZR1,L RET ;逐字依次输入方式演示程序段 N1:MOVCOM,#01H LCALL PR1 MOVCOM,#06H LCALL PR1 MOVCOM,#0EH LCALL PR1 MOVDPTR,#TAB MOVR2,#8H WRIN1:MOVR3,#00H 第 24 页 共 31 页 WRIN: ;写入 MOVA,R3 MOVCA,A+DPTR MOVDAT,A LCALL PR2 INCR3 DJNZR2,WRIN RET N2:MOVCOM,#06H LCALL PR1 MOVCOM,#0C0H LCALL PR1 MOVDPTR,#TAB1 MOVR2,#9H SJMPWRIN1 TAB:DB“licaiyu“ TAB1:DB“VOLTAG = “ ;LCD 间接控制方式下的初始化子程序 INT: LCALL DELAY ;调用延时子程序 MOVCOM,#3CH ;设置工作方式 LCALL PR1 MOVCOM,#01H ;清屏 LCALL PR1 MOVCOM,#06H ;设置输入方式 LCALL PR1 MOVCOM,#080H ;设置显示方式 LCALL PR1 RET DELAY:MOVR6,#0FH ;延时 MOVR7,#00H DELAY1: NOP DJNZR7,DELAY1 DJNZR6,DELAY1 RET ;LCD 间接工致方式的驱动子程序 ;读 BF 和 AC 的值 PR0:PUSH ACC MOVP0,#0FFH ;P0 置位,准备读 CLRRS ;RS=0,选择指令寄存器 SETBRW ;RW=1,读 SETBE 第 25 页 共 31 页 ;片选,1 有效 LCALL DELAY MOVCOM,P0 ;读 BF 和 AC6-4 值 CLRE POPACC RET ;写指令代码子程序 PR1:PUSH ACC CLRRS ;指令寄存器 SETBRW PR11:MOV P0,#0FFH ;P0 置位,准备读 SETBE LCALL DELAY NOP MOVA,P0 CLRE JBACC.7,PR11 ;BF=1 CLRRW MOVP0,COM SETBE CLRE POPACC RET ;写显示数据程序 PR2:PUSH ACC CLRRS SETBRW PR21:MOV P0,#0FFH SETB E LCALL DELAY MOVA,P0 ;读 BF 和 AC6-4 CLRE JBACC.7,PR21 SETBRS CLRRW MOVP0,DAT ;写入数据高 4 位 SETBE CLRE POPACC RET ;读显示数据程序 PR3:PUSH ACC CLRRS SETBRW PR31:MOV P0,#0FFH ;P0 置位,准备读 第 26 页 共 31 页 SETBE LCALL DELAY MOVA,P0 ;读 BF 和 AC6-4 CLRE JBACC.7,PR31 SETBRS ;RS=1,选通数据寄存器 SETBRW MOVP0,#0FFH ;读数据 SETBE MOVDAT,P0 CLRE POPACC RET END ;单片机毕业设计程序:数字电压表的 设计 COMEQU50H DATEQU51H RSEQUP2.1 ;LCD 积存器选择信号 RWEQUP2.2 ;LCD 读/写选择信号 EEQUP2.3 ;LCD 使能信号 ORG0000H LJMPMAIN ORG000BH LJMPBT0 ;T0 中断入口 ORG0030H ;主程序初始化 MAIN:MOVSP,#60H LCALL INT MOV30H,#30H MOV31H,#0A5H MOV32H,#30H MOV33H,#30H MOV34H,#30H MOVR7,#30H LCALL N1 ;显示 Voltage=0.000 LCALL N2 ;定时器初始化程序 MOVTMOD,#00H MOVTH0,#00H MOVTL0,#00H SETBTR0 MOV24H,#03H MOVIE,#82H LP:MOVR7,#30H 第 27 页 共 31 页 ;显示缓冲区首地址 LCALL DISPLY SJMPLP ;循环显示 ;定时器中断服务程序,读取 0808 第 0 通道的转换结果并转换为显示值 BT0:PUSH ACC PUSHPSW MOVPSW,#00H CLRTR0 MOVTH0,#00H MOVTL0,#00H DEC24H MOVA,24H JNZRTN1 MOV24H,#03H MOVDPTR,#0F6FFH MOVA,#00H MOVXDPTR,A MOVR7,#0ccH DJNZR7,$ MOVXA,DPTR MOV40H,A RTN:MOV B,#05H ;A/D 转换结果化为显示值 MULAB ;(AD*5)/25 MOV30HB ;AD*5 的高字节为整数部分 MOVB,#0AH MULAB ;AD*5 的低字节为/256 的结果,为小数 部分 MOV32HB ;二进制小数换为 10 进制数 MOVB,#0AH MULAB MOV33H,B MOVB,#0AH MULAB MOV34H,B RTN1:SETBTR0 ORL30H,#30H MOV31H,#0A5H ORL32H,#30H ORL33H,#30H ORL34H,#30H MOV35H,#30H POPPSW POPACC RETI DISPLY: 第 28 页 共 31 页 ;LCD 显示子程序 MOVCOM,#0CAH LCALL PR1 MOVR1,#05H MOVR0,#30H L:MOVDAT,R0 LCALL PR2 INCR0 DJNZ R1, L RET ;逐字依次输入方式演示程序段 N1:MOVCOM,#01H LCALL PR1 MOVCOM,#06H LCALL PR1 MOVCOM,#0EH LCALL PR1 MOVDPTR,#TAB MOVR2,#8H WRIN1:MOVR3,#00H WRIN: ;写入 MOVA,R3 MOVCA,A+DPTR MOVDAT,A LCALL PR2 INCR3 JNZR2,WRIN RET N2:MOVCOM,#06H LCALL PR1 MOVCOM,#0C0H LCALL PR1 MOVDPTR,#TAB1 MOVR2,#9H SJMPWRIN1 TAB:DB“WANGHONG“ TAB1:DB“VOLTAG = “ ;LCD 间接控制方式下的初始化子程序 INT: LCALL DELAY ;调用延时子程序 MOVCOM,#3CH ;设置工作方式 LCALL PR1 MOVCOM,#01H ;清屏 LCALL PR1 MOVCOM,#06H ;设置输入方式 LCALL PR1 MOVCOM,#080H 第 29 页 共 31 页 ;设置显示方式 LCALL PR1 RET DELAY: MOV R6,#0FH ;延时 MOVR7,#00H DELAY1: NOP DJNZR7,DELAY1 DJNZR6,DELAY1 RET ;LCD 间接工致方式的驱动子程序 ;读 BF 和 AC 的值 PR0:PUSH ACC MOVP0,#0FFH ;P0 置位,准备读 CLRRS ;RS=0,选择指令寄存器 SETBRW ;RW=1,读 SETBE ;片选,1 有效 LCALL DELAY MOVCOM,P0 ;读 BF 和 AC6-4 值 CLRE POPACC RET ;写指令代码子程序 PR1:PUSH ACC CLRRS ;指令寄存器 SETBRW PR11:MOV P0,#0FFH ;P0 置位,准备读 SETBE LCALL DELAY NOP MOVA,P0 CLRE JBACC.7,PR11 ;BF=1 C

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论