基于单片机的数字温度计的设计 课程设计.doc_第1页
基于单片机的数字温度计的设计 课程设计.doc_第2页
基于单片机的数字温度计的设计 课程设计.doc_第3页
基于单片机的数字温度计的设计 课程设计.doc_第4页
基于单片机的数字温度计的设计 课程设计.doc_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

太原理工大学矿业工程学院课程设计报告 基于基于 51 单片机的数字温度计的设计单片机的数字温度计的设计 摘摘 要要 本设计主要介绍了一个基于 at89c51 单片机的测温系统,详细描述了利用数字温度 传感器 ds18b20 开发测温系统的过程,重点对传感器在单片机下的硬件连接,软件编程 以及各模块系统流程进行了详尽分析,对各部分的电路也一一进行了介绍,该系统可以方 便的实现温度采集和显示,它使用起来相当方便,具有精度高、量程宽、灵敏度高、体 积小、功耗低等优点,适合于我们日常生活和工、农业生产中的温度测量,也可以当作 温度处理模块嵌入其它系统中,作为其他主系统的辅助扩展。ds18b20 与 at89c51 结合 实现最简温度检测系统,该系统结构简单,抗干扰能力强,适合于恶劣环境下进行现场 温度测量,有广泛的应用前景。 关键词:单片机;数字温度传感器;最简温度检测系统; 目录 目录 1 绪论 1 1.1 选题的目的和意义 1 1.1.1 选题的目的 .1 1.1.2 选题的意义 .1 2 数字温度计的设计方案1 2.1 设计方案的确立及论证 1 2.2 系统器件选择.2 2.2.1 单片机的选择 2 2.2.2 温度传感器的选择 .2 3 系统硬件电路的设计 4 3.1 温度检测电路4 3.2 显示电路5 4 系统软件的设计 6 4.1 概述 6 4.1.1 温度数据的计算处理方法 7 4.2 主程序模块 7 4.3 读温度值模块 8 4.4 中断模块 9 4.5 数码管驱动模块 .10 5 实验仪器及元件清单11 6 心得体会 12 致谢 14 参考文献 15 附录:源程序 .16 太原理工大学矿业工程学院课程设计报告 第 1 页 1 绪论 1.1 选题的目的和意义 1.1.1 选题的目的 利用单片机 at89s51 和温度传感器 ds18b20 设计一个设计温度计,能够测量-55 128之间的温度值,用液晶屏直接显示,测量精度为 1。通过这次设计能够更加了 解数字温度计的工作原理和熟悉单片机的发展和应用,巩固所学的知识。 1.1.2 选题的意义 随着单片机技术的不断发展,单片机在日用电子产品中的应用越来越广泛,温度传 感器 ds18b20 具有性能稳定、灵敏度高、抗干扰能力强、使用方便等优点,广泛应用于 冰箱、空调器、粮仓等日常生活中温度的测量和控制。 又随着电子技术的发展,人们的生活日趋数字化,多功能的数字温度计可以给我们的生 活带来很大的方便;支持“一线总线”接口的温度传感器简化了数字温度计的设计,降 低了成本;以美国 maxim/dallas 半导体公司的单总线温度传感器 ds18b20 为核心,以 atmel 公司的 at89s51 为控制器设计的 ds18b20 温度控制器结构简单、测温准确、具有 一定控制功能的智能温度控制器。 本课题研究的重要意义在于生产过程中随着科技的不断发展,现代社会对各种信息参数 的准确度和精确度的要求都有了几何级的增长,而如何准确而又迅速的获得这些参数, 就需要受制于现代信息基础的发展水平。在三大信息信息采集(即传感器技术)、信息 传输(通信技术)和信息处理(计算机技术)中,传感器属于信息技术的前沿尖端产品, 尤其是数字温度传感器技术,在我国各领域已经应用的非常广泛可以说是渗透到社会的 每一个领域,与人民的生活和环境的温度息息相关。 太原理工大学矿业工程学院课程设计报告 第 2 页 2 数字温度计的设计方案 2.1 设计方案的确立及论证 基本功能要求: (1)温度测量范围:-55128 度 (2)测量精度:1 度 (3)能够运用 protues 仿真 2.2 系统器件选择 2.2.1 单片机的选择 对于单片机的选择,可以考虑使用8031与8051系列,由于8031没有内部 ram,系统又需要大量内存存储数据,因而不适用。at89c51 是美国 atmel 公司 生产的低功耗,高性能 cmos8 位单片机,片内含 4kbytes 的可编程的 flash 只读程序存储器,兼容标准 8051 指令系统及引脚。它集 flash 程序存储器既可 在线编程(isp) ,也可用传统方法进行编程,所以低价位 at89c51单片机可为提 供许多高性价比的应用场合,可灵活应用于各种控制领域,对于简单的测温系统 已经足够。单片机at89c51 具有低电压供电和体积小等特点,四个端口只需要两 个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用 二节电池供电。 2.2.2 温度传感器的选择 ds18b20 简单介绍: dallas 最新单线数字温度传感器ds18b20是一种新型的“一线器件”,其体积更小、 更适用于多种场合、且适用电压更宽、更经济。dallas 半导体公司的数字化温度传感器 ds18b20是世界上第一片支持“一线总线”接口的温度传感器。温度测量范围为- 55+125 摄氏度,可编程为9位12 位转换精度,测温分辨率可达0.0625摄氏度,分辨 率设定参数以及用户设定的报警温度存储在eeprom 中,掉电后依然保存。被测温度用符 号扩展的16位数字量方式串行输出;其工作电源既可以在远端引入,也可以采用寄生电 太原理工大学矿业工程学院课程设计报告 第 3 页 源方式产生;多个ds18b20可以并联到3 根或2 根线上,cpu只需一根端口线就能与诸多 ds18b20 通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。因此用它来 组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十 分方便。 ds18b20 的性能特点如下: 独特的单线接口方式,ds18b20在与微处理器连接时仅需要一条口线即可实现微处 理器与ds18b20的双向通讯 ds18b20支持多点组网功能,多个ds18b20可以并联在唯一的三线上,实现组网多 点测温 ds18b20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只 三极管的集成电路内 适应电压范围更宽,电压范围:3.05.5v,在寄生电源方式下可由数据线供电 测温范围55128,精度为1 零待机功耗 测量结果直接输出数字信号,以“一线总线”穿行传送给cpu,同时可传送crc校 验位,具有极强的抗干扰纠错能力 负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作 以上特点使ds18b20非常适用与多点、远距离温度检测系统。 ds18b20内部结构主要由四部分组成:64位光刻rom、温度传感器、非挥发的温度报 警触发器th和tl、配置寄存器。ds18b20的管脚排列、各种封装形式如图 4.2 所示,dq 为数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源下,也可以向器件提 供电源;gnd为地信号;vdd为可选择的vdd引脚。当工作于寄生电源时,此引脚必须接地。 太原理工大学矿业工程学院课程设计报告 第 4 页 传感器电路图 3 系统硬件电路的设计 本设计由 ds18b20 温度传感器芯片测量当前的温度并将转换后的结果送入单片机。 然后通过 a89c51 单片机驱动两位共阳极 8 段 led 数码管显示测量温度值。如附录中本设 计硬件电路图所示,本电路主要有 ds18b20 温度传感器芯片,两位共阳极数码管, at89c51 单片机及相应外围电路组成。其中 ds18b20 采用“一线制”与单片机相连。 3.1 温度检测电路 ds18b20 最大的特点是单总线数据传输方式,ds18b20 的数据 i/o 均由同一条线来 完成。ds18b20 的电源供电方式有 2 种: 外部供电方式和寄生电源方式。工作于寄生电 源方式时, vdd 和 gnd 均接地, 他在需要远程温度探测和空间受限的场合特别有用, 原 理是当 1 w ire 总线的信号线 dq 为高电平时, 窃取信号能量给 ds18b20 供电, 同时一 部分能量给内部电容充电, 当 dq 为低电平时释放能量为 ds18b20 供电。但寄生电源方 式需要强上拉电路, 软件控制变得复杂(特别是在完成温度转换和拷贝数据到 e2prom 时) , 同时芯片的性能也有所降低。外部电源供电方式是 ds18b20 最佳的工作方式,工作稳定 可靠,抗干扰能力强,而且电路也比较简单,可以开发出稳定可靠的多点温度监控系统。 因此本设计采用外部供电方式。如下图所示: 温度传感器 ds18b20 的测量范围为-55+125,在-10+85时精度为 0.5。因为本设计只用于测量环境温度,所以只显示 0+85。 ds18b20 4.7k +5v +5v 太原理工大学矿业工程学院课程设计报告 第 5 页 本设计采用液晶动态显示,电路如下图所示: 显示部分电路 4 系统软件的设计 4.1 概述 整个系统的功能是由硬件电路配合软件来实现的,当硬件基本定型后,软件的功能 也就基本定下来了。从软件的功能不同可分为两大类:一是监控软件(主程序),它是 整个控制系统的核心,专门用来协调各执行模块和操作者的关系。二是执行软件(子程 序),它是用来完成各种实质性的功能如测量、计算、显示、通讯等。每一个执行软件 也就是一个小的功能执行模块。这里将各执行模块一一列出,并为每一个执行模块进行 功能定义和接口定义。各执行模块规划好后,就可以规划监控程序了。首先要根据系统 的总体功能选择一种最合适的监控程序结构,然后根据实时性的要求,合理地安排监控 软件和各执行模块之间地调度关系。 太原理工大学矿业工程学院课程设计报告 第 6 页 4.1.1 温度数据的计算处理方法 从 ds18b20 读取出的二进制值必须转换成十进制值,才能用于字符的显示。ds18b20 的转换精度为 912 位,为了提高精度采用 12 位。在采用 12 位转换精度时,温度寄存 器里的值是以 0.0625 为步进的,即温度值为寄存器里的二进制值乘以 0.0625,就是实 际的十进制温度值。 通过观察表 4-1 可以发现,一个十进制与二进制间有很明显的关系,就是把二进制 的高字节的低半字节和低字节的高半字节组成一字节,这个字节的二进制化为十进制后, 就是温度值的百、十、个位字节,所以二进制值范围是 0f,转换成十进制小数就是 0.0625 的倍数(015 倍)。这样需要 4 位的数码管来表示小数部分。实际应用不必这 么高的精度,采用 1 位数码管来显示小数,可以精确到 0.1。 表 4.1 二进制与十进制的近似对应关系表 4.2 主程序模块 主程序需要调用 2 个子程序,分别为: 温度设定、驱动数码管把实时温度值送出在 led 数码管显示 主程序流程图: 图图 1 1 主程序流程图主程序流程图 太原理工大学矿业工程学院课程设计报告 第 7 页 4.3 读温度值模块 读温度值模块需要调用 4 个子程序,分别为: ds18b20 初始化子程序:让单片机知道 ds18b20 在总线上且已准备好操 作 ds18b20 写字节子程序:对 ds18b20 发出命令 ds18b20 读字节子程序:读取 ds18b20 存储器的数据 延时子程序:对 ds18b20 操作时的时序控制 (1). 读温度值模块流程图: 图图 2 2 读温度值子程序流程图读温度值子程序流程图 (2). ds18b20 初始化子程序流程图: 太原理工大学矿业工程学院课程设计报告 第 8 页 图图 3 3 ds18b20ds18b20 初始化子程序流程图初始化子程序流程图 (3). ds18b20 写字节和读字节子程序流程图: 图图 4 4 ds18b20ds18b20 写字节子程序流程图写字节子程序流程图 图图 5 5 ds18b20ds18b20 读字节子程序流程图读字节子程序流程图 4.4 中断模块 中断采用 t0 方式 1,初始值定时为 50ms。 中断模块需调用两个子程序: 读温度值子程序:定时读取温度值,实时更新温度值 记录温度值子程序:定时记录温度值,供查询使用 把这两个子程序放在中断的原因是,不会因为调整报警温度或查询历史温度值而停 止更新温度值和记录温度值。 中断模块流程图: 太原理工大学矿业工程学院课程设计报告 第 9 页 图图 6 6 中断模块流程图中断模块流程图 入口 关段选 p0 置高 关位选 开位选 p0 清零 开段选 送段码 送位码关段选 关段选 关段选 关段选 延时 关段选 关段选 关段选 返回 关段选 关段选 关段选 图图 7 7 数码管驱动模块流程图数码管驱动模块流程图 5 实验仪器及元件清单 器件名称规格型号数量 单片机ats89c511 太原理工大学矿业工程学院课程设计报告 第 10 页 温度传感器ds18b201 6 心得体会 该基于 ds18b20 的多点温度测量系统具有硬件结构简单、易于制作、价格低廉、测 量值精确和易于操作等许多优点。实际应用中可根据具体情况进行更多点的扩展和对多 点进行控制。随着现代信息技术的飞速发展和传统工业改造的逐步实现,基于 ds18b20 的多点温度测量系统已经广泛应用于控制、化工等诸多领域。总之,本次课程设计顺利 完成,基本达到了课程设计的要求。 本文在深入分析多点智能测温系统的工作原理基础上,完成了该系统设计和调试任 务,并且系统的性能误差达到了任务书的要求,使之能达到现场运行水平。 总结这一星期以来的工作,得到以下结论: 1.针对现有测温系统的特点,提出了一套应用数字式温度传感器 ds81b20 组建温度 测控网络新型方案,该方案的突出特点是系统的数字化、快速化及其经济实用性。 2.以单总线为基本结构,采用 atmel 公司的 at89s51 单片机为总线命令,实现与 dsl8b20 的总线接口,并提供具体电路设计。 3.软件编程采用模块化、结构化设计,易于修改和维护。 由于时间和精力的限制,对后续的研究还应在以下方面逐步完善: 1.应用软件的完善。温度采集方面,一次命令全部单总线上的 ds18b20 进行温度转 换,减少系统所需时间。 2.进一步完善系统的可靠性。由于实际经验的欠缺,设计上难免有考虑不周之处。 当某一个传感器出现故障时,虽然系统能发现该测温点故障,但是更换传感器时涉及到 其序列号的修改和应用程序的修改,这些还需要在今后应用时加以完善。 太原理工大学矿业工程学院课程设计报告 第 11 页 3.可以增加控制部分,以后在该部分进行 pid 算法控制,以提高控制精度。 总之 ,本论文在新型数字温度测控系统方面做了一定的研究工作。该系统初步完成了温度测 控方案的预定目标,为今后实现数字化与网络化的温度测控系统工程提供了一种参考。 社会经济效益分析 本温度测控系统可以产生的社会经济效益是显而易见的。在工农业许多场合,温度 测量和控制对生产起着非常重要的作用,通过温度测控,可以更好的提高工农业生产的 产量和效率。 本设计利用数字化的温度传感器作为载体,以 at89s51 单片机为控制核心,通过对 所测量的温度值进行控制和数据上传,将数字信息上传给上位机进行进一步的处理,从 而可以实现这套系统的商品化和技术服务的稳定性。这套系统可以产生的功能强大,扩 展温度传感器端口后,可以同时对多个传感器进行测量和控制,并且只需添加 ds18b20 的初始化程序和与本设计两点测控类似的程序即可以实现,所以程序修改上也比较方便。 本系统可以实现产品的专业化和工厂化大生产,应用领域广泛,例如,可以对小区 内的供暖系统进行多点温度监控,实时处理 ds18b20 温度传感器上传的数据;可以在对 温度要求比较严格的车间内进行多点温度测控,以保持室内的精准温度;可以在化学反 应炉内安装本系统,使化学反应可以在精确的温度条件下进行等等。 在课程设计的整个过程中,我遇到了许多意想不到的困难,如自己设计电路,进行 软件编译等等。不仅如此,很多从未遇见过的问题和现象困扰着我,比如在调试的过程 中,时常出现问题,但每次经过仔细反复查找,终于可以将这些问题针对性的找到并进 行合理的改正,确保其正常实现对应的功能,在自己处理难题的过程中,真正学到了很 多新的知识。 太原理工大学矿业工程学院课程设计报告 第 12 页 致谢 在本次课程设计即将完成之际,我要感谢同班同学,没有他们的帮助和提供资料, 没有他们的鼓励和加油,这次毕业设计就不会如此的顺利进行。当然,不积跬步何以至 千里,这一切也归功于各位任课老师的认真负责,使我能够很好的掌握和运用专业知识, 并在设计中得以体现。 诚挚的感谢我的指导老师陈琦老师。她在忙碌的教学工作中挤出时间来审查、修改 我的论文,告诉我应该注意的细节问题,细心的给我指出错误并为我指点迷津,帮助我 开拓研究思路,精心点拨、热忱鼓励,她严谨细致、一丝不苟的作风一直是我生活、学 习中的榜样。在接下来的一年里,我会加倍努力,不辜负老师们的悉心教导,弥补自己 在学习生活中的不足,完善知识体系,争取能够更加熟练地运用在课堂上学到的知识, 提高自己的成绩,给自己一份满意的答卷。 最后,向所有关心我的亲人、师长和朋友们表示深深的谢意。 参考文献 (1)徐玮. c51 单片机高效入门(第 2 版). 北京:机械工业出版社,2010. (2)龙脉工作室,刘鲲,孙春亮(修订版). 北京:人们邮电出版社,2010. 太原理工大学矿业工程学院课程设计报告 第 13 页 附录:源程序 数字温度仪 ds18b20 的汇编语言程序 temp_zh data 24h ;实时温度值存放单元 templ data 25h ; temph data 26h ; temp_th data 27h ;高温报警值存放单元 temp_tl data 28h ;低温报警值存放单元 temphc data 29h ; templc data 2ah k1 equ p1.4 k2 equ p1.5 k3 equ p1.6 k4 equ p1.7 beep equ p3.6 relay equ p3.7 lcd_x equ 2fh ;lcd 地址变量 lcd_rs equ p2.0 lcd_rw equ p2.1 太原理工大学矿业工程学院课程设计报告 第 14 页 lcd_en equ p2.2 flag1 equ 20h.0 ;ds18b20 是否存在标记 key_ud equ 20h.1 ;设定 key 的 up 与 down 标记 date_line equ p3.3 ;= org 0000h jmp main main: mov sp,#60h mov a,#00h mov r0,#20h / ;将 20h-2fh 单元清零 mov r1,#10h clear: mov r0,a inc r0 djnz r1,clear call set_lcd call re_18b20 start: call reset ;18b20 复位子程序 jnb flag1,start1 ;ds1820 不存在 call menu_ok call read_e2 call temp_bj ;显示温度标记 jmp start2 start1: call menu_error call temp_bj ;显示温度标记 jmp $ start2: call reset jnb flag1,start1 ;ds1820 不存在 mov a,#0cch ; 跳过 rom 匹配 call write mov a,#44h ; 发出温度转换命令 call write 太原理工大学矿业工程学院课程设计报告 第 15 页 call reset mov a,#0cch ; 跳过 rom 匹配 call write mov a,#0beh ; 发出读温度命令 call write call read call convtemp call dispbcd call conv call temp_comp call proc_key ; 键扫描 sjmpstart2 ;- proc_key: jb k1,proc_k1 ; 按键 k1 处理 call beep_bl jnb k1,$ mov dptr,#m_alax1 mov a,#1 call lcd_print call look_alarm jb k3,$ call beep_bl jmp proc_k2 proc_k1: ; 按键 k2 处理 jb k2,proc_end call beep_bl jnb k2,$ mov dptr,#reset_a1 mov a,#1 call lcd_print call set_alarm call re_18b20 ;将设定的 th,tl 值写入 ds18b20 内 call write_e2 proc_k2: 太原理工大学矿业工程学院课程设计报告 第 16 页 call menu_ok call temp_bj proc_end: ret ;= ;设定报警值 th、tl ;= set_alarm: ;call reset_alarm call look_alarm as0: jb k1,as00 call beep_bl jnb k1,$ cpl 20h.1 ;up/down 标记 as00: jb 20h.1,asz01 ;20h.1=1,up jmp asj01 ;20h.1=0,down asz01: jb k2,asz02 ;th 值调整(增加) call beep_bl inc temp_th mov a,temp_th cjne a,#120,asz011 mov temp_th,#0 asz011: call look_alarm mov r5,#10 call delay jmp asz01 asz02: jb k3,asz03 ;tl 值调整(增加) call beep_bl inc temp_tl mov a,temp_tl cjne a,#99,asz021 mov temp_tl,#00h asz021: call look_alarm ; 太原理工大学矿业工程学院课程设计报告 第 17 页 mov r5,#10 call delay jmp asz02 asz03: jb k4,as0 ;确定调整 ok call beep_bl jnb k4,$ ret asj01: jb k2,asj02 ;th 值调整 (减少) call beep_bl dec temp_th mov a,temp_th cjne a,#0ffh,asj011 jmp asj022 asj011: call look_alarm mov r5,#10 call delay jmp as0 asj02: jb k3,asj03 ;tl 值调整(减少) call beep_bl dec temp_tl mov a,temp_tl cjne a,#0ffh,asj021 jmp asj022 asj021: call look_alarm ; mov r5,#10 call delay jmp as0 asj022: cpl 20h.1 jmp asz01 asj03: jmp asz03 ret 太原理工大学矿业工程学院课程设计报告 第 18 页 reset_alarm: mov dptr,#reset_a1 ;指针指到显示信息区 mov a,#1 ;显示在第一行 call lcd_print ret reset_a1: db “reset alert code“ ;= ;实际温度值与标记温度值比较子程序 ;= temp_comp: mov a,temp_th subb a,temp_zh ;减数被减数,则 jc chuli1 ;借位标志位 c=1,转 mov a,temp_zh subb a,temp_tl ;减数被减数,则 jc chuli2 ;借位标志位 c=1,转 mov dptr,#bj5 call temp_bj3 clr relay ;继电器吸合 ret chuli1: mov dptr,#bj3 call temp_bj3 setb relay ;继电器关闭 call beep_bl ret chuli2: mov dptr,#bj4 call temp_bj3 call beep_bl ret ;- temp_bj3: mov a,#0ceh call wcom 太原理工大学矿业工程学院课程设计报告 第 19 页 mov r1,#0 mov r0,#2 bbjj3: mov a,r1 movc a,a+dptr call wdata inc r1 djnz r0,bbjj3 ret bj3: db “h“ bj4: db “ bcd div ab ;b= a % 100 mov r4,a ;r7 = 百位数 mov a,#0ah xch a,b div ab ;b = a % b swap a orl a,b 太原理工大学矿业工程学院课程设计报告 第 26 页 ret ;- ; 小数部分码表 ;- tempdottab: db 00h,00h,01h,01h,02h,03h,03h,04h db 05h,05h,06h,06h,07h,08h,08h,09h ;= look_alarm: mov dptr,#m_alax2 ;指针指到显示信息区 mov a,#2 ;显示在第二行 call lcd_print mov a,#0c6h call temp_bj1 mov a,temp_th ;加载 th 数据 mov lcd_x,#3 ;设置位置 call show_dig2h ;显示数据 mov a,#0ceh call temp_bj1 mov a,temp_tl ;加载 tl 数据 mov lcd_x,#12 ;设置位置 call show_dig2l ;显示数据 ret ;- m_alax1: db “ look alert code“,0 m_alax2: db “th: tl: “,0 ;- temp_bj1: call wcom mov dptr,#bj2 ;指针指到显示信息区 mov r1,#0 太原理工大学矿业工程学院课程设计报告 第 27 页 mov r0,#2 bbjj2: mov a,r1 movc a,a+dptr call wdata inc r1 djnz r0,bbjj2 ret bj2: db 00h,“c“ ;- show_dig2h: ;在 lcd 的第二行显示数字 mov b,#100 div ab add a,#30h push b mov b,lcd_x call lcdp2 pop b mov a,#0ah xch a,b div ab add a,#30h inc lcd_x push b mov b,lcd_x call lcdp2 pop b inc lcd_x mov a,b mov b,lcd_x add a,#30h call lcdp2 ret 太原理工大学矿业工程学院课程设计报告 第 28 页 show_dig2l: ;在 lcd 的第二行显示数字 mov b,#100 div ab mov a,#0ah xch a,b div ab add a,#30h push b mov b,lcd_x call lcdp2 pop b inc lcd_x mov a,b mov b,lcd_x add a,#30h call lcdp2 ret ;- ;显示区 bcd 码温度值刷新子程序 ;- dispbcd: mov a,templc anl a,#0fh mov 70h,a ;小数位 mov a,templc swap a anl a,#0fh mov 71h,a ;个位 mov a,temphc anl a,#0fh mov 72h,a ;十位 mov a,temphc swap a anl a,#0fh mov 73h,a ;百位 mov a,temphc 太原理工大学矿业工程学院课程设计报告 第 29 页 anl a,#0f0h cjne a,#010h,dispbcd0 sjmp dispbcd2 dispbcd0: mov a,temphc anl a,#0fh jnz dispbcd2 ;十位数是 0 mov a,temphc swap a anl a,#0fh mov 73h,#0ah ;符号位不显示 mov 72h,a ;十位数显示符号 dispbcd2: ret ;= ; lcd 1602 显示子程序 ;= conv: mov a,73h ;加载百位数据 mov lcd_x,#6 ;设置位置 cjne a,#1,conv1 jmp conv2 conv1: mov a,#“ “ mov b,lcd_x call lcdp2 jmp conv3 conv2: call show_dig2 ;显示数据 conv3: inc lcd_x ; mov a,72h ;十位 call show_dig2 inc lcd_x mov a,71h ;个位 call show_dig2 inc lcd_x mov a,#. mov b,lcd_x 太原理工大学矿业工程学院课程设计报告 第 30 页 call lcdp2 mov a,70h ;加载小数点位 inc lcd_x ;设置位置 call show_dig2 ;显示数据 ret ;- show_dig2: ;在 lcd 的第二行显示数字 add a,#30h mov b,lcd_x call lcdp2 ret ;- lcdp2: ;在 lcd 的第二行显示字符 push acc ; mov a,b ;设置显示地址 add a,#0c0h ;设置 lcd 的第二行地址 call wcom ;写入命令 pop acc ;由堆栈取出 a call wdata ;写入数据 ret ;- set_lcd: ;对 lcd 做初始化设置及测试 clr lcd_en call init_lcd ;初始化 lcd call store_data ;将自定义字符存入 lcd 的 cgram ret init_lcd: ;8 位 i/o 控制 lcd 接口初始化 mov a,#38h ;双列显示,字形 5*7 点阵 call wcom call delay1 mov a,#38h call wcom call delay1 太原理工大学矿业工程学院课程设计报告 第 31 页 mov a,#38h call wcom call delay1 mov a,#0ch ;开显示,显示光标,光标不闪烁 call wcom call delay1 mov a,#01h ;清除 lcd 显示屏 call wcom call delay1 ret ;= clr_line1: ;清除 lcd 的第一行字符 mov a,#80h ;设置 lcd 的第一行地址 call

温馨提示

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

评论

0/150

提交评论