欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOC文档下载  

    毕业设计(论文)基于AT89C51单片机的电子时钟设计.doc

    • 资源ID:10319456       资源大小:1.04MB        全文页数:31页
    • 资源格式: DOC        下载积分:6
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要6
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    毕业设计(论文)基于AT89C51单片机的电子时钟设计.doc

    毕业设计(论文)题目: 基于AT89C51的电子时钟 专业: 应 用 电 子 技 术 班级: 学号: 08号 姓名: 指导老师: 成都电子机械高等专科学校二一一年六月论 文 摘 要 为了进一步了解51单片机的定时器,在此对AT89C51单片机在时钟计数上进行了研究;整个系统以AT89C51作为控制核心,用8155进行I/O口的扩展,用按键进行时间设置,用LCD对时间进行实时显示;对系统时间的设置是采用外中断INTO,并且用的是电平触发方式,闭合刀开关进入中断后,按动按键可以设置时间,设置结果在LCD上显示,设置完成,断开刀开关,系统又进行时间显示。系统可以设置两个闹钟参考值,将时间与闹钟时间进行比较,确定LED是否闪烁。关键词: AT89C51;8155;LCD;汇编;目 录第一章 绪论41.1本设计的要求:41.2 关于AT89C51单片机41.2.1 主要技术指标和特性41.2.2 外部引脚51.3 关于ADC0809转换器61.3.1 主要技术指标和特性61.3.2 内部结构和外部引脚61.3.3 工作时序与使用说明81.4关于8155I/O口扩展芯片91.5关于Pt100概述10第二章 系统设计122.1系统硬件设计122.1.1 设计思路122.1.2 具体设计电路图122.2系统软件设计142.2.1 设计思路142.2.2 主程序和中断子程序流程图152.2.3 标度转换子程序172.2.4 加热等级判断192.2.5 具体程序192.3仿真结果272.4总 结30参考文献30第一章 绪论1.1本设计的要求:(1) 电子钟功能,显示和设置时,分,秒(2) 可以设置2个闹钟点,到点时,相应发光二极管闪烁10秒停止(3) 所有键盘,显示都使用8155接口芯片1.2 关于AT89C51单片机AT89C51是一种带4K字节闪存可编程可擦除只读存储器(FPEROMFlash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。1.2.1 主要技术指标和特性u 与MCS-51 兼容 u 4K字节可编程闪烁存储器 u 寿命:1000写/擦循环 u 数据保留时间:10年 u 全静态工作:0Hz-24MHz u 三级程序存储器锁定 u 1288位内部RAM u 32可编程I/O线 u 两个16位定时器/计数器 u 5个中断源 u 可编程串行通道 u 低功耗的闲置和掉电模式 u 片内振荡器和时钟电路 1.2.2 外部引脚VCC:供电电压。 GND:接地。 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P0口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。 P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。 RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。 /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。 /EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。 1.3关于8155I/O口扩展芯片1.3.1 8155的管脚定义 RST:复位信号输入端,高电平有效。复位后,3个I/O口均为输入方式。 AD0AD7:三态的地址/数据总线。与单片机低8位地址/数据总线(P0口)相连。单片机与8155之间的地址、数据、命令与状态信息都是通过这个总线口传送的。 RD:读选通信号,控制对8155的读操作,低电平有效。 WR:写选通信号,控制对8155的写操作,低电平有效。 CE:片选信号线,低电平有效。 IO/M :8155的RAM存储器或I/O口选择线。当IO/M 0时,则选择8155的片内RAM,AD0AD7上地址为8155中RAM单元的地址(00HFFH);当IO/M 1时,选择 8155的I/O口,AD0AD7上的地址为8155 I/O口的地址。 ALE:地址锁存信号。8155内部设有地址锁存器,在ALE的下降沿将单片机P0口输出的低8位地址信息及 ,IO/ 的状态都锁存到8155内部锁存器。因此,P0口输出的低8位地址信号不需外接锁存器。 PA0PA7:8位通用I/O口,其输入、输出的流向可由程序控制。 PB0PB7:8位通用I/O口,功能同A口。 PC0PC5:有两个作用,既可作为通用的I/O口,也可作为PA口和PB口的控制信号线,这些可通过程序控制。 TIMER IN:定时/计数器脉冲输入端。 TIMER OUT:定时/计数器输出端。 VCC:5V电源。 1.3.2 8155的地址编码及工作方式 在单片机应用系统中,8155是按外部数据存储器统一编址的,为16位地址,其高8位由片选线 提供, CE0,选中该片。 当 CE0,IO/M 0时,选中8155片内RAM,这时8155只能作片外RAM使用,其RAM的低8位编址为00HFFH;当 CE0,IO/M 1时,选中8155的I/O口,其端口地址的低8位由AD7AD0确定,如表6-6所示。这时,A、B、C口的口地址低8位分别为01H、02H、03H(设地址无关位为0)。 表一 8155芯片的I/O口地址 A7A6A5A4A3A2A1A0选择I/O口000命令/状态寄存器 001A口010B口011C口100定时器低8位101定时器高6位及方式1.4 LCD概述LCD1602 已很普遍了,具体介绍我就不多说了,市面上字符液晶绝大多数是基于HD44780 液晶芯片的,控制原理是完全相同的,因此HD44780 写的控制程序可以很方便地应用于市面上大部分的字符型液晶。字符型LCD 通常有14 条引脚线或16 条引脚线的LCD,多出来的2 条线是背光电源线VCC(15 脚)和地线GND(16 脚),其控制原理与14 脚的LCD 完全一样,定义如下表所示:表二 字符型LCD 的引脚定义HD44780 内置了DDRAM、CGROM 和CGRAM。DDRAM 就是显示数据RAM,用来寄存待显示的字符代码。共80 个字节,其地址和屏幕的对应关系如下表:表三 地址和屏幕的对应关系表也就是说想要在LCD1602 屏幕的第一行第一列显示一个"A"字,就要向DDRAM 的00H 地址写入“A”字的代码就行了。但具体的写入是要按LCD 模块的指令格式来进行的,后面我会说到的。那么一行可有40 个地址呀?是的,在1602 中我们就用前16 个就行了。第二行也一样用前16 个地址。对应如下:表四DDRAM 地址与显示位置的对应关系基本操作时序:读状态 输入:RS=L,RW=H,E=H 输出:DB0DB7=状态字写指令 输入:RS=L,RW=L,E=下降沿脉冲,DB0DB7=指令码 输出:无读数据 输入:RS=H,RW=H,E=H 输出:DB0DB7=数据写数据 输入:RS=H,RW=L,E=下降沿脉冲,DB0DB7=数据 输出:无第二章 系统设计2.1系统硬件设计2.1.1 设计思路 用AT89C51的定时器0进行计时,每计时1秒就更新时间,并在LCD上显示。系统用8155对单片机进行了IO口扩展,扩展的IO口用来进行LCD显示和键盘设置。对主时间采用中断方式,对闹钟进行设置,其实质也只是更换了显示。2.1.2 具体设计电路图图一 硬件设计图 备注:整个系统大致分为4个模块模块一:复位模块该模块在系统跑飞的时候,对系统进行复位。模块二:LCD模块对各种信息进行显示模块三:键盘模块对时间进行设置模块四:闹钟模块判断实时时间与设定时间是否相等2.2系统软件设计2.2.1 设计思路整个程序由三部分组成主程序:主要进行初始化,对实时时间进行显示和参考时间进行设置等;外部中断程序:扫描按键,将按键值送入显缓等;定时中断程序:对时间计数单元进行实时更新;显示子程序:对信息进行实时显示;2.2.2流程图图二 主程序流程图一图三 定时中断流程图图四 外部中断子程序图五 显示子程序2.2.3 具体程序 ;*;定义引脚和RAM存储分配;*LED1 BIT P1.3 ;LED1控制脚LED2 BIT P1.4 ;LED2控制脚LCD_RS BIT P1.0 ;LCD控制线LCD_RW BIT P1.1LCD_E BIT P1.2T0CNT EQU 30HSECOND EQU 31H ;秒计数单元MINUTE EQU 32H ;分计数单元HOUR EQU 33H ;时计数单元DISP_BUF EQU 34H ;34H3BH为时间显示缓存SECOND1 EQU 3DH ;参考时间1计数单元MINUTE1 EQU 3EHHOUR1 EQU 3FHSETTIME1_BUF EQU 40H ;参考时间1的缓存地址SECOND2 EQU 49H ;参考时间2计数单元MINUTE2 EQU 4AHHOUR2 EQU 4BHSETTIME2_BUF EQU 4CH ;参考时间2的缓存地址DISP_FLG EQU 55H ;刷新显示标志,为1时刷新显示COVER_FLG EQU 56H ;将BCD转换成AS的标志位,在用键盘输入数值的时候要用到STIME EQU 57H ;LCD显示对象标志位WEI EQU 59H ;按键输入是,存储位置标志位CHANNEL EQU 60H ;设置时间结束标识位NZ_FLG1 EQU 61H ;与参考时间一相等标识位NZ_FLG2 EQU 62H ;与参考时间二相等标识位T1CONT EQU 63H ;LED1闪烁次数T2CONT EQU 64H ;LED2闪烁次数ORG 0000HLJMP MAINORG 0003HLJMP PINT0ORG 000BHLJMP IT0P;=;主程序;=ORG 1000HMAIN: MOV SP,#65H MOV IP,#01H MOV TCON,#01H;外部中断0为电平触发 MOV TMOD,#01H;定时器0用模式1 MOV TH0,#0BDH;延时20MS MOV TL0,#098H MOV IE,#83H ;开中断 MOV DISP_FLG,#01H CLR A MOV WEI,A MOV T0CNT,A MOV NZ_FLG1,A MOV NZ_FLG2,A MOV T1CONT,A MOV T2CONT,A MOV SECOND,A MOV STIME,A MOV COVER_FLG,A MOV CHANNEL,A MOV MINUTE,A MOV HOUR,A ;默认时间为00:00:00 MOV SECOND1,#02 ;默认闹钟点1为00:00:02 MOV MINUTE1,A MOV HOUR1,A MOV SECOND2,A ;默认闹钟点2为00:00:00 MOV MINUTE2,A MOV HOUR2,A SETB TR0 MAIN_LP:LCALL DISP ;调显示子程序 LCALL COMPARE ;将时间与闹钟值想比较 MOV A,NZ_FLG1 ;对闹钟一相等标识进行判断,以确定LED1是否闪烁 CJNE A,#01H,LPN CPL LED1 INC T1CONT MOV A,T1CONT CJNE A,#28,LPN MOV NZ_FLG1,#00H MOV T1CONT,#00H LPN: MOV A,NZ_FLG2 ;对闹钟二相等标识进行判断,以确定LED1是否闪烁 CJNE A,#01H,LPEN CPL LED2 INC T2CONT MOV A,T2CONT CJNE A,#28,LPEN MOV NZ_FLG2,#00H MOV T2CONT,#00H LPEN: MOV P3,#0FFH ;对显示对象按键进行扫描MOV A,P3ANL A,#01HCJNE A,#01H,K_PRESSMOV A,STIMECJNE A,#01H,NAO2 MOV R1,#SETTIME1_BUF ;若显示对象为闹钟1,则对其进行设置SJMP SKNAO2: CJNE A,#02H,MAIN_LP MOV R1,#SETTIME2_BUF ;若显示对象为闹钟2,则对其进行设置SK:MOV COVER_FLG,#01H MOV CHANNEL,#01HMOV WEI,#00HLOP:LCALL KEYDMOV A,CHANNELCJNE A,#00H,LOP ;闹钟时间是否设置完,没完,继续LCALL BCD_AS ;将设置到显缓中的值转换成二进制,存入计数单元,MOV COVER_FLG,#00H ;清除相应标志位MOV WEI,#00HMOV CHANNEL,#00HINC STIMEMOV A,STIMECJNE A,#03H,MAIN_LP MOV STIME,#00H SJMP MAIN_LPK_PRESS:LCALL KEY_PRG SJMP MAIN_LP;=;对时间设置中断子程序;=PINT0: PUSH ACC ;入栈保护 SETB RS0 MOV COVER_FLG,#01H ;显示时无需进行CONVERT转换 MOV WEI,#00H MOV A,#03H MOV DPTR,#7F00H MOVX DPTR,A MOV R1,#DISP_BUF ;设置按键值存入首地址 MOV STIME,#00H LCALL KEYD ;调用键盘设置子程序 LCALL BCD_AS ;将显缓的值转换到计数单元中 MOV COVER_FLG,#00H ;清除相关标志,和还原 MOV WEI,#00H CLR RS0 POP ACC RETI;*;按键次数决定显示内容;*KEY_PRG:MOV R5,#10 LCALL DELAY_MSMOV P3,#0FFHMOV A,P3ANL A,#01HJB ACC.0,CPINC STIMEMOV A,STIMECJNE A,#03H,CP MOV STIME,#00HCP: RET ;*;按键子程序;*KEYD:MOV A,#03H MOV DPTR,#7F00H MOVX DPTR,A MOV A,#00H ;粗扫描MOV DPTR,#7F01HMOVX DPTR,AMOV DPTR,#7F03HMOVX A,DPTRCPL AANL A,#07HJNZ KEYD1MOV A,R1PUSH ACCLCALL DISPPOP ACCMOV R1,AMOV A,STIMECJNE A,#00H,S1 SETB P3.2 ;判断P3.2口得电平状态来决定是否结束中断JB P3.2,K_END1SJMP KEYDS1:MOV A,CHANNEL CJNE A,#00H,KEYD SJMP K_END1 KEYD1: MOV R2,#0FEH ;设置扫描列码 KEYD2:MOV A,R2 MOV DPTR,#7F01HMOVX DPTR,AMOV DPTR,#7F03HMOVX A,DPTRCPL AANL A,#07HJNZ KEYD3 ;有键按下,就跳MOV A,R2 ;列码左移RL AMOV R2,ACJNE A,#0EFH,KEYD2LJMP KEYDK_END1:SJMP K_ENDKEYD_1:SJMP KEYDKEYD3:SWAP AMOV 58H,R2ANL 58H,#0FHORL A,58H ;行码,列码组成键值识别码MOV 58H,AMOV DPTR,#KEYTABMOV R4,#0FFH ;R4为键值计数器LOOP:INC R4CLR AMOVC A,A+DPTR ;查表求键值INC DPTRCJNE A,58H,LOOPMOV A,R4ADD A,#30HMOV R3,WEI ;对存储标志进行判断,以便将按键值存入对应的显缓中M2: MOV R3,WEI CJNE R3,#00H,M4CJNE A,#33H,COM0 COM0:JNC KEYD SJMP SXM4:CJNE R3,#01H,MM1 CJNE A,#35H,COM1 COM1:JNC KEYD SJMP SXMM1:CJNE R3,#02H,M5_1 INC R1 INC WEI MOV R3,WEIM5_1:CJNE R3,#03H,M9_1 CJNE A,#36H,COM3 COM3:JNC KEYD_1 SJMP SXM9_1:CJNE R3,#04H,MM2 SJMP SXMM2:CJNE R3,#05H,M5_2 INC R1 INC WEI MOV R3,WEIM5_2:CJNE R3,#06H,M9_2 CJNE A,#36H,COM4 COM4:JNC KEYD_1 SJMP SXM9_2:CJNE R3,#07H,CLXSX: MOV R1,A ;键值送显缓 KDL:MOV DPTR,#7F03H MOVX A,DPTR ;看按键是否松开ANL A,#07HCJNE A,#07H,KDLINC R1INC WEICJNE R1,#3CH,KDL1 ;显示地址是否显完 CLX:MOV R1,#34H ;显示完就重新开始 MOV WEI,#00H MOV CHANNEL,#00HKDL1:LJMP KEYDK_END:RETKEYTAB:DB 17H,1BH,1DH,1EH DB 27H,2BH,2DH,2EH DB 47H,4BH;= ;延时子程序;=DELAY_MS:MOV R4,#64HMDL: NOP NOP NOP NOP DJNZ R4,MDL DJNZ R5,DELAY_MS RET;=;T0中断处理程序;将每一秒的变化存入计数单元;=IT0P:PUSH PSW PUSH ACC MOV TH0,#0BDH MOV TL0,#098H MOV DISP_FLG,#00H INC T0CNT MOV A,T0CNT CJNE A,#50,IT0END MOV T0CNT,#00H INC SECOND MOV DISP_FLG,#01H MOV A,SECOND CJNE A,#60,IT0END MOV SECOND,#00H INC MINUTE MOV A,MINUTE CJNE A,#60,IT0END MOV MINUTE,#00H INC HOUR MOV A,HOUR CJNE A,#24,IT0END MOV HOUR,#00HIT0END:POP ACC POP PSW RETI;=;LCD显示子程序;=DISP:LCALL FUNSET ;对LCD进行初始化 NOPLCALL FUNSETNOPLCALL FUNSETNOP LCALL LCD_DELY LCALL DISPON LCALL LCD_DELY LCALL MANLCDMOV A,STIMECJNE A,#00H,DISPSET1 LCALL LCD_DELYLCALL LCD_DELYMOV R2,#80HLCALL WRLCDMOV R3,#0EHMOV DPTR,#CLOCK ;显示CLOCKLCALL DISP_CHRSJMP DISP_T;DISPSET1:CJNE A,#01H,DISPSET2;显示SETTIME1LCALL LCD_DELY LCALL LCD_DELY MOV R2,#84H LCALL WRLCDMOV R3,#09HMOV DPTR,#SETTIME1LCALL DISP_CHRSJMP DISP_T1DISPSET2:LCALL LCD_DELY ;显示SETTIME2LCALL LCD_DELY MOV R2,#84H LCALL WRLCDMOV R3,#09HMOV DPTR,#SETTIME2LCALL DISP_CHRSJMP DISP_T2DISP_END1:SJMP DISP_ENDDISP_T:MOV R1,#HOUR;显示CLOCK的时间 MOV R0,#DISP_BUF MOV A,COVER_FLG CJNE A,#00H,NC LCALL CONVERTNC: LCALL LCD_DELY MOV R2,#0C4H LCALL WRLCD MOV R0,#DISP_BUF MOV R3,#08H LCALL DISP_DAT SJMP DISP_ENDDISP_T1:MOV R1,#HOUR1 MOV R0,#SETTIME1_BUF;显示SETTIME1的时间 MOV A,COVER_FLG CJNE A,#00,NC1 LCALL CONVERTNC1: LCALL LCD_DELY MOV R2,#0C4H LCALL WRLCD MOV R0,#SETTIME1_BUF MOV R3,#08H LCALL DISP_DAT SJMP DISP_ENDDISP_T2:MOV R1,#HOUR2 ;显示SETTIME2的时间 MOV R0,#SETTIME2_BUF MOV A,COVER_FLG CJNE A,#00,NC2 LCALL CONVERTNC2: LCALL LCD_DELY MOV R2,#0C4H LCALL WRLCD MOV R0,#SETTIME2_BUF MOV R3,#08H LCALL DISP_DATDISP_END: RET;=;LCD驱动子程序;=;*;向LCD写入指令;入口:R2为输出数据;*WRLCD:CLR LCD_RS CLR LCD_RW SETB LCD_E LCALL E8155_B CLR LCD_E NOP RET;*;向LCD写入数据;入口:R2为输出数据;*WDLCD:SETB LCD_RS CLR LCD_RW SETB LCD_E LCALL E8155_B CLR LCD_E NOP RET ;*;读LCD状态;检测LCD是否忙;*LCD_DELY:MOV R5,#10 LCALL DELAY_MSRET;*;向LCD写入清屏指令;入口:R2为输出数据;*CLRLCD:MOV R2,#01H LCALL WRLCD RET;*;向LCD写入初始化指令,光标右移等;入口:R2为输出数据;*MANLCD:MOV R2,#06H LCALL WRLCD RET;*;向LCD写入初始化指令 ,开显示,无光标,无闪烁;入口:R2为输出数据;*DISPON:MOV R2,#0CH LCALL WRLCD RET ;*;向LCD写入初始化指令 ,设置8位数据口,2行显示,5*8点阵;入口:R2为输出数据;*FUNSET:MOV R2,#38H LCALL WRLCD RET ;*;向LCD写入数据 ,即要显示的固定字符;入口:DPTR为表的首址,R3为显示字符数;R2为输出数据暂存位置;*DISP_CHR:LCALL LCD_DELY LCALL LCD_DELY MOV A,#00H MOVC A,A+DPTR MOV R2,A LCALL WDLCD NOP INC DPTR DJNZ R3,DISP_CHR RET;*;向LCD写入数据 ,即要显示的动态时间;入口:R0缓冲区起始地址,R3为缓冲区长度;R2为输出数据暂存位置;*DISP_DAT:;LCALL WRLCDFD1: LCALL LCD_DELY LCALL LCD_DELY MOV A,R0 MOV R2,A LCALL WDLCD NOP NOP INC R0 DJNZ R3,FD1 RET;*;时间数据转换子程序;入口:R0缓冲区起始地址,;*CONVE

    注意事项

    本文(毕业设计(论文)基于AT89C51单片机的电子时钟设计.doc)为本站会员(土8路)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开