课程设计论文基于AT89C51单片机的测温系统_第1页
课程设计论文基于AT89C51单片机的测温系统_第2页
课程设计论文基于AT89C51单片机的测温系统_第3页
课程设计论文基于AT89C51单片机的测温系统_第4页
课程设计论文基于AT89C51单片机的测温系统_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

1、目录引言-1设计目的-1设计背景-11 设计方案-21.1 度计软件设计流程图 -21.2 元器件的选取: -21.3 系统仿真图 -22 设计框图-32.1 硬件电路框图: -32.2 硬件电路概述: -32.3 显示电路 -32.4 温度传感器 ds18b20-43 软件设计-83.1 主程序 -83.2 读出温度子程序 -93.3 计算温度子程序 -103.4 显示数据刷新子程序 -103.5 1602 的液晶显示程序设计 -103.6 proteus程序设计 -114 总结与体会 -12参考文献 -13附录 1 -14附录 2 -15附录 3 -16 引言引言设计目的本文主要介绍了一个

2、基于 at89c51 单片机的测温系统,详细描述了利用数字温度传感器 ds18b20 开发测温系统的过程,重点对传感器在单片机喜爱的硬件连接,软件编程以及各模块系统流程进行了详尽分析,对各部分的电路也进行一一介绍,该系统可以方便的是实现温度采集和显示。可满足以下要求:(1) 能够测量的温度范围是-50c 到+110c。(2) 测量误差在0.5c 之内。(3) 在 proteus 软件上进行仿真,修改。设计背景随着时代的进步和发展,单片机技术已经普及到我们生活,工作,科研,各个领域,已经成为一种比较成熟的技术,本文将介绍一种基于单片机控制的数字温度计,本温度计属于简易温度计,只提供了温度的测量及

3、 lcd1602 液晶显示功能。本设计使用起来方便,具有精度高、量程宽、灵敏度高、体积小、功耗低等优点,适合我们日常生活和工农业生产中的温度测量,也可以当做温度处理模块嵌入其他系统中,作为其他主系统的辅助扩展。ds18b20 和 at89c51 结合实现最简温度检测系统,该系统结构简单,抗干扰能力强,适合与恶劣环境下进行现场温度测量,有广泛的应用前景。本设计首先是确定目标,然后是各个功能模块的设计,还在 proteus 软件上进行仿真,修改,仿真。本设计思路简洁明了,分块化模式使得程序灵活性大大增强。通过本次设计,是我们所学的知识得以实践的验证,对将来顺利走向工作岗位或者科研事业将发挥重要意义

4、。1 设计方案1.1 度计软件设计流程图温度计软件设计流程图见附录 1.1:温度计软件设计流程图1.2 元器件的选取:1.单片机芯片的选取:at89c51 单片机片内程序存储器采用闪存,使程序的写入更加方便,整个硬件电路的体积更小,管脚数目为 40 个。本课设中单片机芯片正是采用at89c51。2.温度传感器的选取: 采用 ds18b20 温度传感器。ds18b20 的内部 3 脚(或 8 脚)封装;使用特有的温度测量技术,将被测温度转换成数值信号;3.05.5v 的电源供电方式和寄生电源供电方式;rom 由 64 位二进制数字组成,共分为 8 个字节;ram 由9 个字节的高速暂存器和非易失

5、性电擦写 rom 组成。3.本设计显示电路采用 1602 液晶显示模块芯片。综上各方案所述,对此次课设的方案选定: 采用 at89c51 作为主控制系统; 1602 液晶显示模块芯片作为温度数据显示装置;而智能温度传感器 ds18b20 器件作为测温电路主要组成部分。至此,系统最终方案确定。1.3 系统仿真图系统仿真连线图见附录 2.1。连线比较简洁,简易温度计操作简单,可以直接用来上电读取温度。2 设计框图温度计电路设计总体设计方框图如图 2.1 所示,控制器采用单片机at89c51,温度传感器采用 ds18b20,用 1602 液晶显示屏以串口传送数据实现温度显示。2.1 硬件电路框图:晶

6、振控制1602 显示器温度检测电路ds18b20 图2.1总体设计方框图2.2 硬件电路概述:本电路是由 at89c2051 单片机为控制核心,具有与 mcs-51 系列单片机完全兼容,程序加密等功能,带 2kb 字节可编程闪存,工作电压范围为 2.76v,全静态工作频率为 024mhz;显示电路由 1602 液晶显示模块芯片,可以进行多行显示;温度报警按键设为五个,可以显示华氏温度,调节高低报警温度;温度传感器电路主要由 ds18b20 测温器件构成,该器件主要功能有:采用单总线技术;每只 ds18b20 具有一个独立的不可修改的 64 位序列号;低压供电,电源范围为 35v;测温范围为-2

7、0+125,误差为0.5;复位电路是 10k电阻构成的上电自动复位。2.3 显示电路 本设计显示电路采用 1602 液晶显示模块芯片,该芯片可现实 16x2 个字符,比以前的七段数码管 led 显示器在显示字符的数量上要多得多。另外,由于1602 芯片编程比较简单,界面直观,因此更加易于使用者的操作和观测。1602a 芯片的接口信号说明如下表: 单片机芯片at89c51表2.1:1602a芯片的接口信号说明引脚号引脚名电平输入/输出作用1vss电源地2vcc电源(+5v)3vee对比调整电压4rs0/1输入0=输入指令1=输入数据5r/w0/1输入0=向 lcd 写入指令或数据1=从 lcd

8、读取数据4e1,下降沿(1到 0) 输入使能信号,1 时读取数据,下降沿时执行指令图2.2 液晶显示2.4 温度传感器 ds18b20ds18b20 温度传感器是美国 dallas 半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现 9-12 位的数字值读数方式。ds18b20 的性能特点如下:(1)独特的单线接口仅需要一个端口引脚进行通信,ds18b20在与微处理器连接时仅需要一条口线即可实现微处理器与ds18b20的双向通讯。(2)ds18b20 支持多点组网功能,多个 ds18b20 可以并联在惟一的三

9、线上,实现多点组网测温;(3)无须外部器件,全部传感元件及转换电路集成在形如一只三极管的集成电路内;(4)可通过数据线供电,电压范围为 3.0-5.5;(5)零待机功耗;(6)温度以9或12位数字,对应的可分辨温度分别为0.5、0.25、0.125和0.0625,可实现高精度测温;(7)用户可定义报警设置;(8)报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;(9)负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作;(10)测量结果直接输出数字温度信号,以一线总线串行传送给cpu,同时可传送crc校验码,具有极强的抗干扰纠错能力ds18b20 采用 3 脚 pr3

10、5 封装或 8 脚 soic 封装,其引脚排列及内部结构框图如图及测温原理图如下所示:图2.3 引脚排列预置斜率累加器比较低温度系数振荡器计数器 1温度寄存器tx预置=0高温度系数振荡器-0计数器 2t1加 1停止t2图2.4 ds18b20测温原理图64 位 rom 的结构开始 8 位是产品类型的编号,接着是每个器件的惟一的序号,共有 48 位,最后 8 位是前面 56 位的 crc 检验码,这也是多个 ds18b20 可以采用一线进行通信的原因。温度报警触发器 th 和 tl,可通过软件写入户报警上下限。ds18b20 温度传感器的内部存储器还包括一个高速暂存 ram 和一个非易失性的ds

11、18b20123gndi/ovcc可电擦除的 eeram。高速暂存 ram 的结构为 8 字节的存储器,结构如图 2.6 所示。图 2.6 高速暂存 ram(1) 、温度 lsb,温度 msb:字节包含测得的温度信息(2) 、第 3 和第 4 字节 th 和 tl 的拷贝,是易失的,每次上电复位时被刷新(3) 、最后 8 位是前面 56 位的 crc 检验码(4) 、第 5 个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。该字节各位的定义如图 2.7 所示。图 2.7 ds18b20 的字节定义ds18b20 工作时寄存器中的分辨率转换为相应精度的温度数值。低 5 位一直为 1,

12、tm 是工作模式位,用于设置 ds18b20 在工作模式还是在测试模式,ds18b20 出厂时该位被设置为 0,用户不要去改动,r1 和 r0 决定温度转换的精度位数,来设置分辨率。ds18b20 的分辨率定义如表 2.2 所示表 2.2 分辨率设置表r0r1分辨率最大温度转移时间009 位96.75ms0110 位187.5ms1011 位375ms1112 位750ms由表 1 可见,ds18b20 温度转换的时间比较长,而且分辨率越高,所需要的温度 lsb温度 msbth 用户字节 1tl 用户字节 2配置寄存器保留保留保留crctmr1r011111温度数据转换时间越长。因此,在实际应

13、用中要将分辨率和转换时间权衡考虑。主机控制 ds18b20 完成温度转换过程是:每一次读写之前都要对 ds18b20 进行复位,即将数据总线下拉 500us,然后释放,ds18b20 收到信号后等待 16-60us左右,之后发出 60-240us 的存在低脉冲,主 cpu 收到此此信号表示复位成功;复位成功后发送一条 rom 指令,然后发送 ram 指令,这样才能对 ds18b20 进行预订的读写操作。表 2 rom 指令集指令约定代码功能读 rom33h读 ds18b20 中的编码符合 rom55h发出此命令后,接着发出 64 位 rom 编码,访问单线总线上与该编辑相对应的 ds18b20

14、 使之做出响应,为下一步对该 ds18b20的读写作准备搜索 rom0f0h用于确定挂接在同一总线上的 ds18b20 个数和识别 64 位 rom 地址,为操作各器件作准备跳过 rom0cch忽略 64 位 rom 地址,直接向 ds18b20 发送温度变换指令告警搜索命令0ech执行后,只有温度跳过设定值上限或下限的片子才能做出反应表 3 ram 指令集指令约定代码功能温度转换44h启动 ds18b20 进行温度转换读暂存器0beh读暂存器 9 个字节内容写暂存器4eh将数据写入暂存器的 th、tl 字节复制暂存器48h把暂存器的 th、tl 字节写到 e2ram 中重调 e2ram0b8

15、h把 e2ram 中的 th、tl 字节写到暂存器 th、tl 字节读供电方式0b4h启动 ds18b20 发送电源供电方式的信号给主 cpuds18b20 的测温原理:器件中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器 1;高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为减法计数器 2 的脉冲输入。器件中还有一个计数门,当计数门打开时,ds18b20 就对低温度系数振荡器产生的时钟脉冲进行计数进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将最低温所对应的一个基数分别置入减法计数器 1、温度寄存器中,计数器 1 和

16、温度寄存器被预置在最低温所对应的一个基数值。减法计数器 1 对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1 的预置值减到 0 时,温度寄存器的值将加 1,减法计数器 1 的预置将重新被装入,减法计数器 1 重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器计数到 0 时,停止温度寄存器的累加,此时温度寄存器中的数值就是所测温度值。其输出用于修正减法计数器的预置值,只要计数器门仍未关闭就重复上述过程,直到温度寄存器值大致被测温度值。3 软件设计整个系统是由硬件配合软件来实现的,在硬件确定后,编写的软件的功能也就基本定型了。所以软件的功能大致可分为两个部分:一是监控

17、,这也是系统的核心部分,二是执行部分,完成各个具体的功能。系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,显示数据刷新子程序等。3.1 主程序主程序的主要功能是负责温度的实时显示、读出并处理 ds18b20 的测量的当前温度值,温度测量每 1s 进行一次。这样可以在一秒之内测量一次被测温度,其程序流程见图 3.1 所示。图 3.1 主程序流程图初始化调用显示子程序1s 到?初次上电读出温度值温度计算处理显示数据刷新发温度转换开始命令nynyy发 ds18b20 复位命令发跳过 rom 命令发读取温度命令读取操作,crc 校验9 字节完?crc 校验正?确?移入温度暂

18、存器结束nny发 ds18b20 复位命令发跳过 rom 命令发温度转换开始命令 结束 图 3.2 读温度流程图主程序如下,它包含和编程的准备工作和调用子程序功能。这种模块化编成结构对于程序的移植再用提供了很大的方便。只要我们提供相应的子程序,系统就可以算作是完成了。下面我们重点分析几个比较重要的子程序编程:(1)ds18b20 复位子程序(初始化)这段程序算是必要的准备工作之一。(2)ds18b20 数据读取操作子程序其流程图如图 3.2 所示。(3)温度值 bcd 码处理子程序这部分比较重要,很核心,是处理数据的关键部分。它把各个数据位进行了分离,只要经过二-十进制转换子程序便可用于数据显

19、示。流程如图 3.4,图 3.3 所示。(4)bcd 码温度值刷新子程序流程图如图 3.5 所示。3.2 读出温度子程序读出温度子程序读出温度子程序的主要功能是读出 ram 中的 9 字节,在读出时需进行crc 校验,校验有错时不进行温度数据的改写。温度转换命令子程序流程图如图 3.3 所示:图 3.3 温度转换流程图图 3.4 温度流程图 图 3.5 示数据刷新流程图3.3 计算温度子程序计算温度子程序将 ram 中读取值进行 bcd 码的转换运算,并进行温度值正负的判定,其程序流程图如图 3.4 所示。3.4 显示数据刷新子程序显示数据刷新子程序主要是对显示缓冲器中的显示数据进行刷新操作,

20、当最高显示位为 0 时将符号显示位移入下一位。程序流程图如图 3.5 所示。3.5 1602 的液晶显示程序设计液晶显示流程如图 3.6 所示。温度值显示程序如下: 开始温度零下?温度值补码置“”标志计算小数位温度bcd 值 计算整数位温度bcd 值 结束置“+”标志ny温度数据移入显示寄存器十位数 0?百位数 0?十位数显示符号百位数不显示百位数显示数据 结束nnyy初始化 1602开 始延时调用子程序设置第一行显示位置与内容调用子程序设置第二行显示位置与内容图 3.6 1602 液晶显示流程图3.6 proteusproteus 程序设计本设计是在 proteus 环境下进行仿真的,仿真所

21、用到的器件有:单片机at89c51,ds1820 温度传感器,液晶显示器,一些电阻,电容等。仿真结果见附录 2:系统原理图。4 总结与体会 经过这一周的单片机课程设计,我们完成了数字温度计的设计,虽然还有很多不足与欠缺之处,但感觉自己还是取得了很大进步。从没有尝试读写这么长的程序,应该说这是自己学习单片机以来第一次具有现实意义的尝试吧!在本次设计的过程中,我发现很多的问题,虽然以前还做过这样的设计但这次设计真的让我长进了很多,单片机课程设计重点就在于软件算法的设计,需要有很巧妙的程序算法,虽然以前写过几次程序,但我觉的写好一个程序并不是一件简单的事,举个例子,以前写的那几次,数据加减时,我用的

22、都是bcd 码,这一次,我全部用的都是 16 进制的数直接加减,显示处理时在用除法去删分,感觉效果比较好,有好多的东西,只有我们去试着做了,才能真正的掌握,只学习理论有些东西是很难理解的,更谈不上掌握。从这次的课程设计中,我真真正正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,学习单机片机更是如此,程序只有在经常的写与读的过程中才能提高,这就是我在这次课程设计中的最大收获。通过这次对数字温度计的设计与制作,让我了解了设计电路的程序,也让我了解了关于数字温度计的原理与设计理念,要设计一个电路总要先用仿真仿真成功之后才实际接线的。但是最后的成品却不一定与仿真时完全一样

23、,因为,再实际接线中有着各种各样的条件制约着。而且,在仿真中无法成功的电路接法,在实际中因为芯片本身的特性而能够成功。所以,在设计时应考虑两者的差异,从中找出最适合的设计方法。 通过这次学习,让我对汇编语句有了更深的了解,也相信这对自己以后的工作学习都有很大意义。会以此为契机,不断开发自己创造能力,开发自己对软件硬件设计的兴趣,力争做一个身怀技能的人。 参考文献1肖看,李群芳. .单片机原理、接口及应用. .清华大学出版社,2010.92楼然苗. .单片机课程设计指导. .北京:北京航空航天大学出版社,20023阎石. .数字电子技术基础(第三版). . 北京:高等教育出版社,19894孙育才

24、主编.mcs-51 系列单片微型计算机及其应用.东南大学出版社5张毅刚单片机原理与应用设计m.电子工业出版社,2008 年设置堆栈指针将温度转换为 bcd 码发读存储器命令读温度数据复位 ds18b20发跳过 rom 命令显示缓冲区初始化更新数据缓冲区延时发温度转换命令复位 ds18b20 发跳过 rom 命令开始附录 1附录图 1.1 温度计软件设计流程图附录 2 附录图 2.1:proteus 仿真系统图附录图 2.2:proteus 仿真系统结果图附录 3简易温度计完整程序:(模块化设计) temp_zh equ 24h ;实测温度值存放单元 templ equ 25h temph eq

25、u 26h temphc equ 29h ;正、负温度值标记 templc equ 2ah tempfc equ 2bh sit_x equ 2fh ;lcd 字符显示位置 rs equ p2.0 ;lcd 寄存器选择信号 rw equ p2.1 ;lcd 读写信号 en equ p2.2 ;lcd 允许信号 dq equ p3.3 ;ds18b20 数据信号 org 0000hmain: mov sp,#50h mov a,#00h mov r0,#20h ;将 20h2fh 单元清零 mov r1,#10hclear: mov r0,a inc r0 djnz r1,clear lcall

26、 set_lcdstart: lcall rst ;调用 18b20 复位子程序 lcall menu_ok;ds1820 存在,调用显示正确信息子程序 lcall temp_bj ;显示温度标记 jmp start2start2: lcall rst;调用 ds18b20 复位子程序 mov a,#0cch ;跳过 rom 匹配命令 lcall write mov a,#44h ;温度转换命令 lcall write lcall rst mov a,#0cch ;跳过 rom 匹配 lcall write mov a,#0beh ;读温度命令 lcall write lcall read;调

27、用 ds18b20 数据读取操作子程序 lcall convtemp;调用温度数据 bcd 码处理子程序 lcall dispbcd;调用温度数据显示子程序 lcall conv;调用 lcd 显示处理子程序 sjmp start2 ;循环;. 显示温度标记子程序 .temp_bj: mov a,#0cbh lcall wcom mov dptr,#bj1 ;指针指到显示消息 mov r1,#0 mov r0,#2bbjj1: mov a,r1 movc a,a+dptr lcall wdata inc r1 djnz r0,bbjj1 retbj1: db 00h,c;. 显示正确信息子程序

28、.menu_ok: mov dptr,#m_ok1 ;指针指到显示消息 mov a,#1 ;显示在第一行 lcall lcd_print mov dptr,#m_ok2 ;指针指到显示消息 mov a,#2 ;显示在第一行 lcall lcd_print retm_ok1: db 4090208315 ,0m_ok2: db temp: ,0;.ds18b20 复位子程序(初始化).rst: setb dq nop clr dq mov r0,#6bh ;主机发出延时复位低脉冲 mov r1,#04htsr1: djnz r0,$ mov r0,#6bh djnz r1,tsr1 setb d

29、q ;拉高数据线 nop nop noptsr5: mov r0,#06bhtsr6: djnz r0,$ ; 时序要求延时一段时间tsr7: setb dq ret;. 将自定义字符写入 lcd 的 cgram 中.store_data: mov a,#40h lcall wcom mov r2,#08h mov dptr,#d_data mov r3,#00hs_data: mov a,r3 movc a,a+dptr lcall wdata ;写入数据 inc r3 djnz r2,s_data retd_data: db 0ch,12h,12h,0ch,00h,00h,00h,00h;

30、. ds18b20 数据写入操作子程序.write: mov r2,#8 ;一共 8 位数据 clr cwr1: clr dq ;开始写入 ds18b20 总线要处于复位(低)状态 mov r3,#07 djnz r3,$ ;总线复位保持 16 微妙以上 rrc a ;把一个字节 data 分成 8 个 bit 环移给 c mov dq,c ;写入一位 mov r3,#3ch djnz r3,$ ;等待 100 微妙 setb dq ;重新释放总线 nop djnz r2,wr1 ;写入下一位 setb dq ret;. ds18b20 数据读取操作子程序 .read: mov r4,#4 ;

31、将温度低位、高位、th、tl 从 ds18b20 中读出 mov r1,#templ ;存入 25h、26h、27h、28h 单元re00: mov r2,#8re01: clr cy setb dq nop nop clr dq ;读前总线保持为低 nop nop nop setb dq ;开始读总线释放 mov r3,#09 ;延时 18 微妙 djnz r3,$ mov c,dq ;从 ds18b20 总线读得一位 mov r3,#3ch djnz r3,$ ;等待 100 微妙 rrc a ;把读得的位值环移给 a djnz r2,re01 ;读下一位 mov r1,a inc r1

32、djnz r4,re00 ret;. 温度值 bcd 码处理子程序 .convtemp: mov a,temph ;判温度是否零下 anl a,#08h jz tempc1 ;温度零上转 clr c mov a,templ ;二进制数求补(双字节) cpl a ;取反加 1 add a,#01h mov templ,a mov a,temph cpl a addc a,#00h mov temph,a mov temphc,#0bh;负温度标志 mov tempfc,#0bh sjmp tempc11tempc1: mov temphc,#0ah ;正温度标志 mov tempfc,#0aht

33、empc11: mov a,temphc swap a mov temphc,a mov a,templ anl a,#0fh ;乘 0.0625 mov dptr,#tempdottab movc a,a+dptr mov templc,a ;templc low=小数部分 bcd mov a,templ ;整数部分 anl a,#0f0h ;取出高四位 swap a mov templ,a mov a,temph ;取出低四位 anl a,#0fh swap a orl a,templ ;重新组合 mov temp_zh,a lcall hex2bcd1 mov templ,a anl a

34、,#0f0h swap a orl a,temphc ;temphc low = 十位数 bcd mov temphc,a mov a,templ anl a,#0fh swap a ;templc hi = 个位数 bcd orl a,templc mov templc,a mov a,r4 jz tempc12 anl a,#0fh swap a mov r4,a mov a,temphc ;temphc hi = 百位数 bcd anl a,#0fh orl a,r4 mov temphc,atempc12: ret;. 二-十进制转换子程序 .hex2bcd1: mov b,#064h

35、 div ab mov r4,a mov a,#0ah xch a,b div ab swap a orl a,b rettempdottab: db 00h,00h,01h,01h,02h,03h,03h,04h ; 小数部分码表 db 05h,05h,06h,06h,07h,08h,08h,09h;. lcd 显示子程序 .show_dig2h: mov b,#100 div ab add a,#30h push b mov b,sit_x lcall lcdp2 pop b mov a,#0ah xch a,b div ab add a,#30h inc sit_x push b mov

36、 b,sit_x lcall lcdp2 pop b inc sit_x mov a,b mov b,sit_x add a,#30h lcall lcdp2 retshow_dig2l: mov b,#100 div ab mov a,#0ah xch a,b div ab add a,#30h push b mov b,sit_x lcall lcdp2 pop b inc sit_x mov a,b mov b,sit_x add a,#30h lcall lcdp2 ret;. 显示区 bcd 码温度值刷新子程序.dispbcd: mov a,templc anl a,#0fh mov

37、 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 ;百位 ret;. lcd 显示数据处理子程序.conv: mov a,73h ;加载百位数据 mov sit_x,#6 ;设置位置 cjne a,#1,conv1 jmp conv2conv1: cjne a,#0bh,conv11 mov a,#- ;-号显示 jmp conv111conv11: mov a,#0 ;+号

38、不显示conv111: mov b,sit_x lcall lcdp2 jmp conv3conv2: lcall show_dig2 ;显示数据conv3: inc sit_x mov a,72h ;十位 lcall show_dig2 inc sit_x mov a,71h ;个位 lcall show_dig2 inc sit_x mov a,#. mov b,sit_x lcall lcdp2 mov a,70h ;加载小数点位 inc sit_x ;设置显示位置 lcall show_dig2 ;显示数据 ret;. 第二行显示数字子程序.show_dig2:add a,#30h mov b,sit_x lcall lcdp2 ret;. 第二行显示数字子程序 .lcdp2: push acc mov a,b ;设置显示地址 add a,#0c0h ;设置 lcd 的第二行地址 lcall wcom ;写入命令 pop acc ;由堆栈取出 a lcall wdata ;写入数据 ret;. 对 lcd 做初始化设置及测试.set_lcd: clr en lcall init_lcd ;初始化 lcd lcall store_data ;将自定义字符存入 lcd 的 cgram ret;. lcd 初始化 .init_lcd: mov a,#38h ;2 行显示,字

温馨提示

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

最新文档

评论

0/150

提交评论