数字式电子钟Word文档下载推荐.docx
《数字式电子钟Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数字式电子钟Word文档下载推荐.docx(16页珍藏版)》请在冰点文库上搜索。
![数字式电子钟Word文档下载推荐.docx](https://file1.bingdoc.com/fileroot1/2023-5/5/0577cc24-a670-4511-9c65-918af41bd975/0577cc24-a670-4511-9c65-918af41bd9751.gif)
................................................................................................4
2.3.2软件部分:
...............................................................................................................4
2.4键盘输入程序设计...........................................................................................................5
2.5显示程序设计...................................................................................................................6
参考文献.........................................................................................................................................7
第1章课程设计目的与要求
1.1课程设计目的
本课程的课程设计实际是测控技术及仪器专业学生学习完《单片机与接口技术》课程后,进行的一次全面的综合训练,其目的在于加深对单片机、单片机最小系统和单片机接口技术的认识、理解和应用,掌握单片机的应用技术。
1.2课程设计的预备知识
熟悉掌握单片机的原理及接口技术和相关的数字电路、模拟电路的知识。
1.3课程设计任务
以单片机为核心,利用时钟芯片DS1302作为实时时钟的存储,设计单片机最小系统,构成数字式电子钟,能够实现实时时钟的显示。
1.4课程设计要求
1,实现实时时钟的显示,12位显示分为年,月,日时,分,秒;
2,利用8279作为显示驱动器;
3,设计2位键盘,能够实现修改时钟参数;
4,设计单片机主程序,键盘输入程序,显示程序等;
5,尽可能降低成本;
6,课程设计字数4000字;
7,严禁相互抄袭;
1
第2章课程设计内容
2.1元件方案论证:
在我的设计中我利用:
(1)AT89C51作为核心部件,它将8031,8051等的ROM改为Flash使其具有改写和掉电不丢失数据的功能这保证了数字钟的工作可靠性。
(2)利用时钟芯片DS1302其特点:
连线简单,DS1302与单片机之间能简单地利用SPI同步步的方式进行通信。
仅需要三根信号线。
RES,I
_____
SCLK
即可。
显示功能较全,它能显示秒,分,时,月,日,年的信
息。
功耗底。
因此选用它最加。
(3)选用一片4-16译码器比选用两片3-8译码器性价比高,降低了成本。
首先利用AT89C51作为单片机的核心,通过CLK数据线,地址线与时钟芯片8279相连。
但由于P0口数据线与地址线复用的需要。
需用锁存器74LS373将地址低8位锁存起来。
然后再与8279相连。
这里用到了8279的SL0-SL3引脚。
并用一个4-16译码器74LS154相连。
获得一12位的显示器用于显示结果。
在8079的OUTA0-OUTB4端口接一驱动电路并用RL0,RL1作为两位键盘的输入端口。
其RL1作为自加1功能键,RL0作为循环选择键。
并以DS1302作为时钟芯片.图2.2-1是AT89C51与DS1302相连示意图.图2.1-2为总体框图.
10113029
39383736353433322122232425262728
图2.2-1
2
图2.2-2
2.3主程序设计主程序流程图:
3
(1)8279命令/状态口地址:
7FFFH
(2)键盘采用中断方式
(3)LED的段选码放在AT89C51内RAM的30H-3CH
(4)12个键值读出后放在40H-4CH单元中。
主程序:
MAIN:
MOVSP,#63H;
设栈底
MOVDPTR,#7FFFH;
指向命令/状态口MOVA,#0D1H;
清除命令
MOVX@DPTR,A;
送入命令字
WAIT:
MOVXA,@DPTR;
读入状态字
JBACC.7,WAIT;
等待清除
MOVA,#2AH;
置分频命令字MOVX@DPTR,A;
MOVIE,#84H;
开中断
LCALLDIR;
调用显示子程序
4
2.4键盘输入程序设计
在键盘输入部分我采用的是中断方式服务程序。
通过外部中断使CPU响应并执行相关功能。
从而达到修改显示器的显示内容。
由于设计要求中要求运用两位键盘来控制修改显示参数这一功能在KEY1子程序中实现。
实现过程如图2.3-2所示。
键盘输入中断程序流程图如图2.4-1所示。
键盘输入中断程序流程图
图2.4-1
软件部分:
键输入中断服务子程序如下:
KEY:
PUSHPSWPUSHA
MOVA,#40MOVDPTR,#7FFFHMOVX@DPTR,AMOVDPTR,#7FFEHMOVXA,@DPTRLJMPKEY1
KEYI:
MOVn,#11BMOVA,0
MOCR0,#29MOVH,1
图2.4-2FIFORAM命令字/状态口
/状态口
RAM的显示值地址的前一位地址H表高电平
5
;
保护现场;
设置读;
指向命令;
送入命令字;
读入键值;
转键值处理程序;
移位键移总次数;
存放在内;
CJNERL0,H,ST1;
判断移位键RL0是否需要修改
CJNERL1,H,ST2;
判断移位键RL1是否需要修改
LOOP:
NOP;
若RL0,RL1键不改则单片机继续查询
SJMPLOOP;
等待RL0或RL1的输入
ST1:
INCA
INCR0;
指向存放在内RAM的显示值地址的首地址
SJMP$;
等待移位键或自加1键的输入
CJNEn,A,ST;
1判断是否改完
ST2:
MOVB,A;
暂存A的内容
INCA;
在原值基础上加1
MOV@R0,A;
将修改值从新复给R0
MOVA,B;
送回原A值
RET
2.5显示程序设计
在次循环中通过对键入数值的修改使显示器得到预期的显示值。
工作流程图如图2.4-1。
图2.5-1
显示子程序如下:
DIR:
指向命令/状态口
MOVA,#90H;
写显示命令字
命令字送入
MOVR0,#30H;
段选码存放单元首址
6
MOVR7,#0CH;
置显示12位的初值
MOVDPTR,#7FFEH;
指向数据口地址
LOOP:
MOVA,@R0;
取显示数据
段选码送显示RAM
指向下一个段选码DJNZR7,LOOP;
12个段选码送完否
RET;
子程序返回
参考文献
[1]叶雨.单片机实用与实例.哈尔滨工业大学出版社,2003.4
[2]齐中英.单片机实用电路.北京:
中国科技大学版社,2004.2。
[3]张先.单片机实例500.高等教育出版社,1999.4
[4]徐祥.单片机应用.高等教育出版社2006.5
[5]黄合,陈华光.单片机应用举例..哈尔滨工业大学出版社2006.5
7
附录:
VoidDS1302Initial(void);
DS1302初始化(在C语言下).
{Uchards1302st;
;
ds1302的状态,0x55时不能进行初始化TIMERCLK=0;
将同步时钟SCLK置低
TIMERRST=0;
禁止对DS1302的读写访问
DS1302st=readDS1302(0x0c1);
读取DS1302的RAM1单元中的标志数据If(ds1302st!
=0x55);
判断标志数据不是0x55,则可以进行初始化{
WDT=~WDT;
writeDS1302(0x8e,0x00);
writeDS1302(0x82,0x00);
writeDS1302(0x84,0x16);
writeDS1302(0x86,0x19);
writeDS1302(0x88,0x09);
writeDS1302(0x8c,0x00);
writeDS1302(0x90,0x0a6);
writeDS1302(0x0c0,0x55);
化
writeDS1302(0x80,0x00);
}
ORG0040H
LJMPSTART
START:
;
MOVSP,#63H
MOVDPTR,#7FFFH
MOVA,#0D1H
MOVX@DPTR,A
MOVXA,@DPTR
JBACC.7,WAIT
MOVA,#2AH
MOVIE,#84H
LCALLDIR
MOVA,#90H
打开写保护;
预置分钟时间为00;
预置小时,24小时制,16;
预置日期19;
预置月份9;
预置年份2000;
写充电控制寄存器,10100110,I=1mA;
RAM1单元写入0x55,防止再次初始;
启动时钟进入主函数;
设栈底;
指向命令/状态口;
清除命令;
送入命令字;
读入状态字;
等待清除;
置分频命令字;
开中断;
调用显示子程序;
写显示命令字;
命令字送入8
段选码存放单元首址MOVR7,#0CH;
置显示12位的初值MOVDPTR,#7FFEH;
指向数据口地址LOOP:
段选码送显示RAMINCR0;
12个段选码送完否RET;
KEY:
;
键盘输入
PUSHPSW
PUSHA
MOVA,#40
MOVDPTR,#7FFEH
LJMPKEY1
KEYI:
MOVn,#11B
MOVA,0
MOCR0,#29;
MOVH,1
DJNZRL0,H,ST1
DJNZRL1,H,ST2
NOP
SJMPLOOP
INCR0
SJMP$
DJNZn,A,ST
MOVB,A
MOVA,B
MOV@R0,A
POPA
POPPSW
RETI
END
保护现场;
设置读FIFORAM命令字;
读入键值;
转键值处理程序;
移位键移总次数存放在内RAM的显示值地址的前一位地址;
H表高电平;
判断移位键RL0是否需要修改;
判断移位键RL1是否需要修改;
若RL0,RL1键不改则单片机继续查询;
等待RL0或RL1的输入;
指向存放在内RAM的显示值地址的首地址;
等待移位键或自加1键的输入;
1判断是否改完;
将原A值保护起来;
在原值基础上加1;
将修改值从新复给R09
总体设计图
10
11