版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2014 2015学年第1学期单片机C51课程设计课程设计报告题目:电子秒表设计专业:电气工程学院电子信息系姓名:江鑫瞿康保李阿龙李贺林超 刘浩班级:12级电子信息2班导师:王银花电气工程学院2014年11月29日任务书课题名称电子秒表设计指导教师(职称)王银花(讲师)执行时间20142015学年第1学期 第13周学生姓名学号承担任务江鑫1209121083设计实验方案瞿康保1209121084设计硬件电路李阿龙1209121085设计硬件主电路图李贺1209121086查找程序,调试和检验林超1209121087软件设计,编程和仿真刘浩1209121088测试数据,设计结果设计目的设计一个电
2、子秒表,与通用秒表功能类似,有启动,暂停、 复位等键。计时长长度为300秒,需显示百分秒设计要求利用STC89C52单片机上编程,利用定时计数器,来实现电 子秒表功能,秒计时精确到0.01秒,设计启动、暂停、清零 按钮。基于数字电子技术基础、模拟电子技术基础和电路原理有关知识, 对电子秒 表电路进行设计和制作。该电子秒表可以实现准确显示00.00 99.99制时间,手动调节时间,随时启动、清零、置时间等功能,使用方便,制作简单。本文针对电子秒表进行初步框架设计,并对多种方案进行了认真比较和验证, 在此基 础上,又进一步详细介绍了时间脉冲发生器、秒计数器、译码及驱动显示电路。 在总体电路图组装完
3、成以后,针对设计好的电路,用Multisim软件进行了仿真与调试,逐步解决设计过程中出现的一系列问题。在电路设计过程中,特意将选做部分即校时电路部分作为电路设计的主要内容。最后对应的电子秒表设计方案对制作好的电子秒表功能进行总体验证。关键词:数字电子技术;脉冲发生器;计数器电路;Multisim软件目录1. 设计要求5.2. 设计方案分析 5.2.1方案设计5.2.2背景知识介绍 6.2.2.1 单片机相关知识 6.221.1 运算器7.2.2.1.2 程序计数器PC72.2.1.3 令寄存器8.3. 硬件设计9.3.1单片机简介9.3.2电源电路9.3.3晶体振荡电路9.3.4复位电路9.3
4、.5显示电路1.03.6键盘电路1.04. 硬件主电路图设计 1.15. 软件设计125.1软件设计概述 1.25.2主程序流程图126. 测试数据及设计结果127. 调试中出现的错误及解决方法 137.1实验中遇到的问题及解决方法 1.37.2实验心得1.38. 程序 149. 参考文献211. 设计要求设计一个电子秒表,与通用秒表功能类似,有启动,暂停、复位等键。计时 长长度为300秒,需显示百分秒。2. 设计方案分析2.1方案设计数字电子秒表具有显示直观、读取方便、精度高等优点,在计时中广泛使用。 本设计用单片机组成数字电子秒表,力求结构简单、精度高为目标。本系统采用C51系列单片机为中
5、心器件,利用其定时器/计数器定时和记数 的原理,结合硬件电路如电源电路,晶振电路,复位电路,显示电路,以及一些 按键电路等来设计计时器,将软、硬件有机地结合起来。其中软件系统采用汇编 语言编写程序,硬件系统利用 PROTEUS强大的功能来实现,简单切易于观察, 在仿真中就可以观察到实际的工作状态。本设计利用STC89C52单片机的定时器/计数器定时和计数的原理,使其能 精确计时。利用中断系统使其能实现开始暂停的功能。根据要求知道秒表设计主 要实现的功能是计时和显示。因此设置了两个按键和LCD显示时间,两个按键分别是开始、停止和复位按键。利用这两个建来实现秒表的全部功能,而LCD则能显示最多4.
6、59.99秒的计时。电路原理图设计最基本的要求是正确性,其次 是布局合理,最后在正确性和布局合理的前提下力求美观。硬件电路图按照图 1.1进行设计。图2.1数字秒表硬件电路基本原理图本设计中,数码管显示的数据存放在内存单元 31H-33H中。其中31H存 放分钟变量,32H存放秒钟变量,33H存放10ms计数值,即存放毫秒位数据, 每一地址单元内均为十进制BCD码。由于采用软件动态扫描实现数据显示功能, 显示用十进制BCD码数据的对应段码存放在 ROM表中。显示时,先取出31H 33H某一地址中的数据,然后查得对应的显示位,并从P1 口输出,就能显示该地址单元的数据值。计时通过INT 1中断完
7、成,定时溢出中断周期为1ms,当一处中断后向CPUVCCPC C ADQPS. 1 AD LFfl.2/AD9PO. 3 . AD3PO_ 4 A.D4P0- 5/ADsFC S 2 冠PO_ 7 - AD 7 已直 P2_ 5/A13P2. 3/A112 AIGP2- 3 AS发出溢出中断请求,每发出一次中断请求就对毫秒计数单元进行加一,达到10次就对十毫秒位进行加一,依次类推,直到 4.59.99秒重新复位。再看按键的处理。这两个键可以采用中断的方法,也可以采用扫描的方法来 识别。复位键主要功能在于数值复位,对于时间的要求不是很严格。而开始和停 止键则是用于对时间的锁定,需要比较准确的控制
8、。因此可以对复位按键采取扫 描的方式。而对开始和停止键采用外部中断的方式。设计中包括硬件电路的设计和系统程序的设计。其硬件电路主要有主控制 器,显示电路和回零、启动、查看、停表电路等。主控制器采用单片机STC89C52, 显示电路米用LCD显示计时时间,两个按键均米用触点式按键。2.2背景知识介绍 2.2.1单片机相关知识本课题在选取单片机时,充分借鉴了许多成形产品使用单片机的经验,并根 据自己的实际情况,选择了 STC89S51。STC89C52单片机采用40引脚的双列直插封装方式。图1.2为引脚排列图, 40条引脚说明如下:王电源引脚Vss和Vcc Vss接地 Vcc正常操作时为+5伏电源
9、 外接晶振引脚XTAL1和XTAL2 XTAL1内部振荡电路反相放大器的输入端,是外接晶体的一个引脚。当采 用外部振荡器时,此引脚接地。 XTAL2内部振荡电路反相放大器的输出端。是外接晶体的另一端。当采用 外部振荡器时,此引脚接外部振荡源。T 2 / F L . 0T2EX/P1.二P1. 2F 1 - 4F1. 5 F1 .Fl. TRSTRXD. F3. OTXDZP3. LINTO/f3- 2INTI. F- TO/P3. 1T1. *3. 5 至?5. -SRD F3. 7图 2.2.1STC89C52单片机引脚图6VSS控制或与其它电源复用引脚 RST/VPD , ALE/ PRO
10、G , PSEN和EA/Vpp RST/VPD 当振荡器运行时,在此引脚上出现两个机器周期的高电平(由 低到高跳变),将使单片机复位在Vcc掉电期间,此引脚可接上备用电源,由VPD 向内部提供备用电源,以保持内部 RAM中的数据。 ALE/ PROG正常操作时为ALE功能(允许地址锁存)提供把地址的低字节 锁存到外部锁存器,ALE引脚以不变的频率(振荡器频率的1/6)周期性地发出 正脉冲信号。因此,它可用作对外输出的时钟,或用于定时目的。但要注意,每 当访问外部数据存储器时,将跳过一个 ALE脉冲,ALE端可以驱动(吸收或输 出电流)八个LSTTL电路。对于EPROM型单片机,在EPROM编程
11、期间,此 引脚接收编程脉冲(PROG功能) PSEN外部程序存储器读选通信号输出端,在从外部程序存储取指令(或数据)期间,PSEN在每个机器周期内两次有效。PSEN同样可以驱动八LSTTL 输入。 EA/Vpp、EA/Vpp为内部程序存储器和外部程序存储器选择端。当EA/Vpp 为高电平时,访问内部程序存储器,当 EA/Vpp为低电平时,贝U访问外部程序存 储器。对于EPROM型单片机,在EPROM编程期间,此引脚上加21伏EPROM 编程电源(Vpp)。输入/输出引脚 P0.0 - P0.7, P1.0 - P1.7, P2.0 - P2.7, P3.0 - P3.7。 P0 口( P0.0
12、 - P0.7)是一个8位漏极开路型双向I/O 口,在访问外部存储器 时,它是分时传送的低字节地址和数据总线, P0 口能以吸收电流的方式驱动八 个LSTTL负载。 P1 口( P1.0 - P1.7)是一个带有内部提升电阻的8位准双向I/O 口。能驱动(吸 收或输出电流)四个LSTTL负载。 P2 口( P2.0 - P2.7)是一个带有内部提升电阻的 8位准双向I/O 口,在访问 外部存储器时,它输出高8位地址。P2 口可以驱动(吸收或输出电流)四个LSTTL 负载。 P3 口( P3.0 - P3.7是一个带有内部提升电阻的8位准双向I/O 口。能驱动(吸 收或输出电流)四个LSTTL负
13、载。AT89C52具有以下标准功能:8k字节Flash, 256字节RAM,32位I/O 口 线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级 中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89C52可降至0Hz静 态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。 CPU是单片机的核心部件。它由运算器和控制器等部件组成。221.1 运算器运算器的功能是进行算术运算和逻辑运算。可以对半字节(4位)、单
14、字节等数据进行操作。例如能完成加、减、乘、除、力卩1、减1、BCD码十进制调整、 比较等算术运算和与、或、异或、求补、循环等逻辑操作,操作结果的状态信息 送至状态寄存器。89C52运算器还包含有一个布尔处理器,用来处理位操作。它是以进位标志 位C为累加器的,可执行置位、复位、取反、等于 1转移、等于0转移、等于1 转移且清0以及进位标志位与其他可寻址的位之间进行数据传送等位操作, 也能 使进位标志位与其他可移位寻址的位之间进行逻辑与、或操作。2.2.1.2 程序计数器PC程序计数器PC用来存放即将要执行的指令地址,共 16位,可对64K程序 存储器直接寻址。执行指令时,PC内容的低8位经P0
15、口输出,高8位经P2 口 输出。2.2.1.3 指令寄存器指令寄存器中存放指令代码。CPU执行指令时,由程序存储器中读取的指 令代码送入指令寄存器,经译码后由定时与控制电路发出相应的控制信号,完成指令功能。本设计采用ATMEL的AT89C52微处理器,主要基于以下几个因素: AT89C52为51内核,仿真调试的软硬件资源丰富。 性价比高,货源充足。 功耗低,功能强,灵活性咼。 DIP40封装,体积小,便于产品小型化。 为EEPROM程序存储介质,1000次以上擦写周期,便于编程调试。 工作电压范围宽:2.7V 6V,便于交直流供电。FINSYMBOLKX I1<?N1VssPxm Sii
16、ppk(ov)2VddPtrtier Supply (3古I Adjust4RSlji'lntmutianSelectJRMRw止 Wrih6EFnablt Signal7-14DUO-DB7t>aU Ixlx Lmu1$AJUippI, for l -HD BL (十)J6KPowin Sup|jk ftsr LLD HL IJ图2.2.2.11602的管脚功能3. 硬件设计本系统中,硬件电路主要有电源电路,晶振电路,复位电路,显示电路,以 及一些按键电路等。3.1单片机简介本系统设计采用C51系列单片机。ST89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能
17、 CM0S8位微处理器。该器件采用 ATMEL高密度非易失存储器制造技术制造, 与工业标准的MCS-51指令集和输出管脚相兼容由于将多功能 8位CPU和闪烁 存储器组合在单个芯片中,ST89C51是一种高效的微控制器。3.2电源电路电源电路是系统最基本的部分,任何电路都离不开电源部分,由于三端集成 稳压器件所组成的稳压电源线路简单,性能稳定,工作可靠,调整方便,已逐渐 取代分立元件,在生产中被广泛采用,由于是小系统,我们采用7809电源提供+5V稳压电压。3.3晶体振荡电路MCS-51单片机内部的振荡电路是一个高增益反相放大器,引线XTAL1和XTAL2分别为反向振荡放大器的输入及内部时钟工作
18、电路的输入和来自反向振 荡器的输出,该反向放大器可以配置为片内振荡器。这里,我们选用51单片机12MHZ的内部振荡方式,电路如下:电容器C1, C2起稳定振荡频率,快速起振的作用,C1和C2可在20-100PF之间取,这里取PSEN3.4复位电路2930RST持续一段高电平 RST持续一段时间的高电平,从而实现上电加开关复位的操作。这不仅能使单片机复位,12345678而且还能使P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7采用上电+按键复位电路,上电后,由于电容充电,使 时间。当单片机已在运行之中时,按下复位键也能使用使单片机的外围芯片也同时复位。当程序出现错误时,可以随时
19、使电路复位 电路图如下:尸WEZ ALE尸1 .OF=»1 .1F=* 13.5显示电路显示电路既可以选用液晶显示器,也可以选用数码管显示。我们采用的是数 码管显示电路。用2个共阳极LED显示,LED是七段式显示器,内部有7个条 形发光二极管和1个小圆点发光二极管组成,根据各管的亮暗组合成字符。在用数码管显示时,我们有静态和动态两种选择,静态显示程序简单,显示 稳定,但是占用端口比较多;动态显示所使用的端口比较少,可以节省单片机的I/O 口。在设计中,我们采用LED动态显示,用P0 口驱动显示。由于P0 口的输出级是开漏电路,用它驱动时需要外接上拉电阻才能输出高电平 电路图如下所示:
20、tt*图3.5显示电路93.6键盘电路在按键电路中,我们可以在I/O 口上直接接按键,或者通过I/O 口设计一个 键盘,然后通过键盘扫描程序判断是否有键按下等。键盘扫描电路节省I/O 口,但编程有些复杂,在这里,由于我们所用的按键较少,且系统是一个小系统,有 足够的I/O 口可以使用,为了使程序简化,我们采用按键电路,用部分P3 口做开关,P3.3为开始停止,P3.4为清零,用外部中断INT1开始,另外用软件法消 除抖动。电路图如下所示:P2.2/A10PSENALEEAP2.3/A11P2.4/A12P2.5/A13P2.6/A14232425262728P1.0P1.1P1.2P1.3P1
21、.4P1.5P1.6P1.7T89C51P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/TP3.6/WRP3.7/RD101112131415 4图3.6键盘电路4 .硬件主电路图设计用pretues画出其硬件主电路图如下:LCD1LM016C1T卜22PFU1I1 X1 CRYSTAL18C22981234567T匕22PF C3-HI1nF卜 XTAL1P0.0/AD0P0.1/AD1P0.2/AD2XTAL2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6RSTP0.7/AD7P2.0/A8P2.1/A9P2.2/A10PSENP2.3/A1
22、1ALEP2.4/A12EAP2.5/A13P2.6/A14P2.7/A15P1.0P3.0/RXDP1.1P3.1/TXDP1.2P3.2/INT0P1.3P3.3/INT1P1.5P3.5/T1P1 6P3 6/WRP1.7P3.7/RD19AT89C51R=15508 972345678910K图4硬件主电路5. 软件设计5.1软件设计概述在软件设计中,一般采用模块化的程序设计方法,它具有明显的优点。把一 个多功能的复杂的程序划分为若干个简单的、功能单一的程序模块,有利于程序 的设计和调试,有利于程序的优化和分工,提高了程序的阅读性和可靠性,使程 序的结构层次一目了然。应用系统的程序由包
23、含多个模块的主程序和各种子程序组成。各程序模块都 要完成一个明确的任务,实现某个具体的功能,在具体需要时调用相应的模块即 可。功能描述:用LCD1602液晶显示"秒表",显示时间为0.00.00-4.59.99秒, 每秒自动加1; 一个"开始""暂停"键,一个"清零"键。5.2主程序流程图这里采用顺序结构,通过对按键的扫描,判断要实现什么功能。如下所示:是图5.2主程序流程图6. 测试数据及设计结果按下INT1管脚的开关时,显示数据,如下图所示:LCD1C222pF C3CRYSTAL18X1XTAL1XTAL2R
24、STP0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD71nFALEEAP1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/TP3.6/WRP3.7/RDPRUST COUNT 2TIRE 00148SDE RWe d dddd d dd5 61图6.1 按下INT1管脚开关按下T0管脚的开关时
25、,数据清零:LCD1LM016LC122PFU1C2EZZ1X119XTAL122FC3CRYSTAL J*XTAL21nRSTALEEAP1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD98765 432 1
26、2345678 012321: : L re < LU71ne ee:eo:00:ooTHrwiD D DD D DD D9图6.2 按下T0管脚开关7. 调试中出现的错误及解决方法7.1实验中遇到的问题及解决方法问题:LCD显示模糊原因:VEE接高电平,LCD的对比度太低,从而无法正常显示数据 解决方法:将VEE接地,提高了 LCD的对比度,数据显示清晰。7.2实验心得复位等键。这次课程设计我们组的题目是设计一个电子秒表, 有启动,暂停、 计时最长长度为300秒,需显示百分秒。据说是相对简单的题目。分好组后我们每人都有分工,我的主要任务就是完成程序的查找,调试和检 验,基本算是前期工作
27、,所以刚开始我们一起查资料讨论方案。 在设计电路初期, 由于我们没有设计经验,通过查阅一些资料,我们的设计渐渐有了头绪,基本确 立设计方案和流程图。就是 LED显示屏驱动电路的设计是个比较头疼的问题。 经过查询大量的资料,我们很快确定了电路以及需要的器件,然后就是编程和仿 真,开始时也遇到了很多的问题,经过静下心来思考,和同学讨论,理清了思路, 慢慢修改,终于仿真成功了。通过这次设计,我学到了很多知识,将学习的理论知识通过实验融会贯通, 让我对它的理解更加深刻。由于这次课程设计不仅设计编程方面的知识,还涉及 了其它学科的知识,例如 PROTEUS等的基本知识。总之,通过这次课程设计, 不仅加深
28、了我对单片机理论方面的理解, 将理论更好的运用的实践方面,而且锻 炼了我们各方面的能力,培养了坚强的毅力和做事的耐心和细心,同时也认识到 在团队工作中需要有合作精神,我想这会为今后自己踏上工作岗位、 更好地融入 新的团队打下良好的基础。8. 程序;定义计时单元地址MINEQU31H;存放分钟变量SECEQU32H;存放秒钟变量DEDAEQU33H;存放10ms计数值按键端口状况值K1_NEQU34H;存放按键当前端口状况值K1_PEQU35H;存放按键上次端口状况值K1_CEQU37H;存放按键计数单元XEQU36H;LCD地址变量按键引脚定义K1EQUP3.3;按键1引脚定义K2EQUP3.
29、4;按键2引脚定义;LCD引脚定义RSEQUP3.5;LCD RS引脚定义RWEQUP3.6;LCD RW引脚定义EEQUP3.7;LCD RS引脚定义ORG0000H;程序由地址0开始执行JMPMAINORG0BH;定时器0中断地址设置JMP>T0_INT主程序MAIN:;开始MOVSP,#60H;堆栈指针指向60HCLRE;E=0,禁止读/写LCDACALL SET_LCD;调LCD控制子程序ACALL INIT;初始化变量MOV K1_P,#01HACALL INIT_TIMERACALL MEULOOP:ACALL CONVACALL LOOP1ACALL KEYJZ LOOPM
30、OV K1_P,K1_NACALL KEY0JMP LOOP初始变量清零子程序;按键上次端口设置1;调用初始化定时器;调用工作菜单子程序;时间计数处理;调用清零键子程序;判断是否有键按下;无键按下转LOOP;交换数据;调用按键功能子程序;跳LOOP处循环INIT:CLR AMOV K1_C,AMOV DEDA,AMOV SEC,AMOV MIN,A;初始变量清零;A清为零;K1_C初始为0;百分秒DEDA初始为0渺SEC初始为0;分MIN初始为0MOV K1_N,AMOV K1_P,ACLR TR0RET;K1_N初始为0;K1_P初始为0;启动中断;定时器初始化设置子程序INIT_TIMER
31、:MOV TMOD,#00000001BMOV IE, #10000010B;定时器初始化;定时器0模式1开通中断MOV TL0,#LOW(65536-10000);定时初值装入低位MOV TH0,#HIGH(65536-10000);定时初值装入高位RET;中断服务程序T0_INT:;定时器T0中断程序PUSH ACC;入栈保护MOV TL0,#LOW(65536-10000);重加载INCDEDAMOVA,DEDA;10ms计数值加1CJNEA,#100,TTMOVDEDA,#0INCSEC;秒加1MOVA,SECCJNEA,#60,TTINCMIN;分加1MOVSEC,#0MOV TH0
32、,#HIGH(65536-10000)MOVA,MINCJNEA,#05,TTMOVDEDA,#0MOVSEC,#0MOVMIN,#0TT: POPACCRETI;百、分、秒单元清0;出栈;中断程序返回;跳转主程序处CLRAMOVK1_N,AMOVC,K1RLCAORLK1_N,AMOVA,K1_NXRLA,K1_PRET;K1_N值送入A;有键按下,A中内容不为零;功能键子程序;K1键第一次按功能子程序KEY0:MOV A, K1_PJB ACC.0,KEY3INC K1_CMOV A, K1_CCJNE A,#01H,KEY1MOV DPTR,#MENU1MOV A,#1CALL LCD_
33、PRINTSETB TR0RET;K1键第二次按功能子程序KEY1:MOV A,K1_CCJNE A,#02H,KEY2MOV DPTR,#MENU2MOV A,#1CALL LCD_PRINT;K1_P值送入A;A的0位是1,转KEY3;K1_C 加 1;K1_C值送入A;K1键是否第一次按?;是,存入MENU1信息;设置第一行显示;调用显示字符子程序;启动中断;K1_C值送入A;K1键是否第二次按?;是,存入 MENU2信息;设置第一行显示;调用显示字符子程序;判断键是否按下子程序L00P1:JB K2,L OOP2;判清零键是否按下JMP MAINLOOP2: RET判断K1键是否按下K
34、EY:;A清零;A值送入K1_N;K1值送入C;同进位标志左移一位;两个位作逻辑OR运算CLR TRO;停止中断RET;;K1键第三次按功能子程序KEY2:MOVA, K1_C;K1_C值送入ACJNEA, #03H,KEY3;K1键是否第三次按?MOVDPTR,#MENU3;是,存入 MENU3信息MOVA, #1;设置第一行显示CALLLCD_PRINT;调用显示字符子程序SETBTR0;启动中断RET;K1键第四按功能子程序KEY3:MOVA,K1_C;K1_C值送入ACJNEA,#04H,KEY4;K1键是否第四次按?MOVDPTR,#MENU4;是,存入MENU4信息MOVA,#1;
35、设置第一行显示CALLLCD_PRINT;调用显示字符子程序CLRTR0;启动中断KEY4:RET;子程序返回 LCD显示一一;LCD控制子程序SET_LCD:;CLR EACALL INIT_LCD;初始化 LCDMOV R5,#10ACALL DELAYMOV DPTR,#LMESS1 ;指针指到显示消息 1MOV A,#1;显示在第一行ACALL LCD_PRINT;调用显示字符子程序MOV DPTR,#LMESS2 ;指针指到显示消息 2MOV A,#2ACALL LCD_PRINTRETLMESS1: DB "LMESS2:DB "TIME;LCD初始化子程序IN
36、IT_LCD:MOV A,#38HACALL WR_COMMACALL DELAY1MOV A,#0CHACALL WR_COMM;显示在第二行;调用显示字符子程序",0 ;LCD第一行显示消息",0 ;LCD第二行显示消息;设置8位、2行、5x7点阵;调用写指令子程序;调用延时子程序;开显示,光标不闪烁;调用写指令子程序ACALL DELAY1;调用延时子程序MOVA,#01H;清除LCD显示屏ACALL WR_COMM;调用写指令子程序ACALL DELAY1;调用延时子程序RET;写指令子程序WR_COMM:MOV P1,ACLR RS;RS=0,选择指令寄存器CLR
37、 RW;RW=0,选择写模式SETB E;E=1,允许读/写LCMACALL DELAY1;调用延时子程序CLR E;E=0,禁止读 /写 LCMRET;写数据子程序WR_DA TA:MOVP1,ASETB RS;RS=1,选择数据寄存器CLR RW;RW=0,选择写模式SETB E;E=1,允许读 /写 LCDACALL DE;调用延时子程序CLR E;E=0,禁止读 /写 LCDACALL DE;调用延时子程序RET;清除该行LCD的字符CLR_ LINE:MOVR0,#24CL1: MOV A,#''ACALL WR_DATADJNZR0,CL1RET;LCD存入工作菜单
38、MEU:MOV DPTR,#MENU0;存入工作菜单MOV A,#1;第一行CALL LCD_PRINTRET工作菜单MENU0:DB"SECOND-CLOCK 0 ",0MENU1:DB"BEGIN COUNT1 ",0MENU2:DB"PAUST COUNT2 ",0MENU3:DB"BEGIN COUNT3 ",0MENU4:DB"PAUST COUNT4 ",0;菜单显示子程序;一行、二行显示字符LCD_PRINT:CJNEA,#1, LINE2;判断是否为第一行LINE1:ACALLC
39、LR_LINE;清除该行字符数据MOVA, #80H;设置LCD的第一行地址ACALLWR_COMM;写入命令JMPFILLLINE2:ACALLCLR_LINE;清除该行字符数据MOVA,#0C0H;设置LCD的第二行地址ACALLWR_COMMFILL: CLR A;填入字符MOVCA,A+DPTR;由消息区取岀字符CJNEA,#0,LC1;判断是否为结束码RET;写入数据LC1: ACALL WR_DATAINC DPTR;指针加1JMP FILL;继续填入字符RET;转换数据子程CONV:;转换为ASCII码并显示MOVX,#5;设置位置ACALLSKOW_LINE2;显示数据INC
40、X>MOVA,#':'>MOVB,X>ACALLLCDP2>MOVA,MIN;加载分钟数据INC X;设置位置ACALL SK0W_LINE2;显示数据INC X;MOV A,#':'MOV B,X;ACALL LCDP2;MOVA,SEC;加载秒数数据INCX;设置位置ACALL SKOW_LINE2;显示数据INCX>MOVA,#':'>MOVB,X>CALLLCDP2>MOVA,DEDA;加载秒数数据INCX;设置位置ACALL SK0W_LINE2;显示数据RET;在LCD的第二行显示数字SKOW_LINE2:MOV B,#10;设置被除数DIV AB;结果A存商数,B存余数ADD A,#30H;A为十位数,转换为字符PUSH B;B放入堆栈暂存MOV B,X;设置LCD显示的位置ACALL LCDP2;由LCD显示出来POP B;出栈MOV A,B;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年长沙县考编语文面试题库及答案
- 2025年上海临港片区招聘笔试题及答案
- 2025年海州区辅警接线员笔试及答案
- 2025年靖县事业单位考试真题及答案
- 2025年唐山各地区事业单位考试及答案
- 2025年西安下半年事业编考试及答案
- 2025年音乐启蒙课教师招聘笔试及答案
- 2025年深圳证券金融科技类笔试及答案
- 2025年粮食局日常工作面试题库及答案
- 雨的四季课件博客
- 北京市东城区2025-2026学年高三上学期期末考试地理试卷
- 幽门螺杆菌对甲硝唑耐药的分子机制
- 2025高考新高考II卷英语口语真题试卷+解析及答案
- 孤残儿童护理员中级
- 职业技术学校教学质量评价标准
- 广西安瑞新材料科技有限公司FPC柔性线路板和新材料项目(重大变动)环境影响报告表
- 公私联动考核管理办法
- 国家中医药管理局《中医药事业发展“十五五”规划》全文
- TSG Z7001-2021特种设备检验机构核准规则
- 春夜喜雨教案课件
- 《无人机综合监管与航路规划》全套教学课件
评论
0/150
提交评论