基于52单片机电子时钟的设计论文(纯汇编语言编写) 联系客服

发布时间 : 星期日 文章基于52单片机电子时钟的设计论文(纯汇编语言编写)更新完毕开始阅读5d18cfa3767f5acfa1c7cdf9

参考文献

[1]何立民,单片机初级教程—单片机基础[M],北京航空航天大学出版社,2015.9. [2]何立民,单片机实验与实践教程2[M],北京航空航天大学出版社,2002.1. [3]张永枫,单片机应用实用教程[M],西安电子科技大学出版社,2005.2. [4]楼然苗,单片机课程设计指导[M],北京航空航天大学出版社,2014.1. [5]丁向荣,单片微机原理与接口技术[M],电子工业出版社,2012.6.

[6]徐爱钧,Keil C51单片机高级语言应用编程技术[M],电子工业出版社,2015.9. [7]杨欣,实例解读51单片机完全学习与应用[M],电子工业出版社,2011.4. [8] 王迎旭,单片机原理及及应用[M].机械工业出版社,2001.

[9] 周航慈,单片机应用程序设计技术[M].北京航空航天大学出版社,2002. [10] 谢宜仁,单片机实用技术问答[M].人民邮电出版社,2002.

16

附 录

源程序清单:

;初始化

P_Lcd equ P0 ;液晶lcd数据总线 pq equ p1 ;按键接口 pf bit p2.0 ; led bit p2.1 ;led lcdrs bit p2.5 ;lcdrs=1 lcdrw bit p2.6 lcde bit p2.7 ;lcdep sclk bit p3.5 ; io bit p3.6 ; rst bit p3.7 ; IsSheZhi bit 30h ; BJ bit 31h ; QH bit 32h ; bs bit 33h ; cxbs bit 34h ; sec equ 50h min equ 51h hour equ 52h day equ 53h week equ 54h month equ 55h year equ 56h

KeyCode equ 57h ; jiepai equ 58h ; chuzhi equ 59h ; shengshu equ 5ah ; DspBuf equ 60h ; dspba equ 70h ;org 0h

ljmp main org 00bh ljmp sub1 org 01bh

ljmp sub2 org 30h

蜂鸣器接口 灯指示接口

选择数据寄存器,lcdrs=0选择指令寄存器

进行读操作,lcdrw=0进行写操作 由1-->0 时,液晶模块执行命令 时钟芯片时钟线引脚 时钟芯片数据传输线引脚 时钟芯片复位线引脚 设置状态标示位 比较标示位 切换标示位 报时功能标示位 执行报时标志位 按键1功能子程序序号存储地址 存放报时声音的节拍常数 报时开始秒时间常数 存放报时声数

当前时间拆字后存储首地址 闹钟时间首地址 17

;lcdrw=1;主程序

main:

clr IsSheZhi clr QH setb BJ setb bs setb cxbs

mov KeyCode,#00h mov sp ,#30h

mov year,#16h ; mov month,#06h mov week,#4h mov day,#30h mov hour,#00h mov min,#00h mov sec,#00h

mov DspBuf-1,#0h mov DspBuf-2,#02h

mov jiepai,#80h ; mov chuzhi,#00h ; mov dspba+0,#00h ; mov dspba+1,#09h mov dspba+2,#0h mov dspba+3,#0h mov TH0,#0ffh mov TL0,#0ffh mov TH1,#0ffh mov TL1,#0ffh mov IE,#8aH mov TMOD,#11h setb pf

acall lcd_init ; lcall word ; lcall set1302 ;DS1302mainloop:

jb IsSheZhi, SheZhi ; lcall get1302 ; lcall chaizi

lcall display ;SheZhi:

jb BJ,xq ; lcall bijiao ;xq:

为当前时间赋初值 设置节拍常数

设置1秒时开始报时 为闹钟时间赋初值 调LCM的初始化程序

把自创字符写入CGRAM的子程序 初始化 判断是否处于设置状态,处于设置状态则跳转调读时间子程序 调显示子程序,显示当前时间与温度 判断闹钟功能是否开启,未开启则跳转 调比较子程序,比较当前时间与闹钟时间 18

lcall anjian ;按键扫描 jb bs,bs_1

lcall zhengshi ;判断当前时间是否是整时,即能否报时 bs_1:

jb cxbs,cx_1

lcall baoshi ;执行报时功能 cx_1:

sjmp mainloop

;液晶显示初始化设定

lcd_init:

mov a,#01h ; acall LcdWrCmd

mov a,#10 ;10ms acall delay

mov a,#38h ;用5*7的字型) acall LcdWrCmd mov a,#10 acall delay mov a,#0ch ; acall LcdWrCmd mov a,#10 acall delay mov a,#06h ; acall LcdWrCmd mov a,#10 acall delay ret

;LCM命令嵌入

LcdWrCmd: clr LCDRW clr LCDRS mov P_Lcd, A mov a,#6 acall delay setb LcdE clr LcdE ret

;LCM数据输入

清除LCD的显示内容(清屏) 延时 显示模式设置(使用8位数据,显示两行,使显示开及光标设置(显示器开,光标关,字符不闪烁)显示光标移动设置(字符不动,光标自动右移) 19