发布时间 : 星期日 文章基于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