- 1、本文档共20页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PAGE
PAGE \* MERGEFORMAT 20
一、设计目的:
在理论学习的基础上,通过完成一个涉及MCS-51单片机多种资源应用并具有综合功能的小系统目标板的设计与编程应用;
能够对电子电路、电子元器件、印制电路板等方面的知识进一步加深认识,在软件编程、排错调试、相关仪器设备的使用技能等方面得到较全面的锻炼和提高;
使学生增进对单片机的感性认识,加深对单片机理论方面的理解。使学生掌握单片机的内部功能模块的应用,如定时器/计数器、中断、片内外存贮器、I/O口、串行口通信等;
使学生了解和掌握单片机应用系统的软硬件设计过程、方法及实现,为以后设计和实现单片机应用系统打下良好基础。
二、设计功能说明
数字钟是采用数字电路实现对时,分,秒,数字显示的计时装置,由于数字集成电路的发展和石英晶体振荡器的广泛???用,使得数字钟的精度,远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表的报时功能。数字钟已成为人们日常生活中的必需品,本设计可实现如下功能:
1、使用实时时钟芯片写入及读取时间
2、用LCD显示,可显示年、月、日、时、分、秒、星期、农历日期、节日
3、选择蜂鸣器电路,实现两个闹钟设置和事件提示功能
4、实现时钟校正功能,12小时/24小时切换功能
5、显示当前时间为上午时间或下午时间
6、整点报时功能
按键功能如下:
1、对显示时间的设置
按键0:进入设置模式,实现秒(S)、分(M)、时(H)、年(Y)、月(m)、日(D)、星期(W)设置的切换,并在LCD右下角显示所设置的项目,当各项目设置完毕后,再按下按键0则返回主界面正常显示时间;
按键1:每按一次按键1,对所设置的时间加1,当设置的时间超过它的最大值时,该项自动为0,例如:当设置秒为59时,秒自动清零;
按键2:每按一次按键:2,对所设置的时间减1,当设置的时间小于0时,该项自动为它的最大值;
按键3:设置完成后的确认键并可按此键中途退出设置,时间按用户设置值正常计时;
按键7:实现时钟校正功能,12小时/24小时切换功能。
2、对闹钟的设置
按键4:进入闹钟1的设置,并在LCD右上方显示“CLOCK1”并通过按键0、1、2设置用户所需闹钟时间,完成闹钟1的设置后,通过按键0进入闹钟2的设置,并在LCD右上方显示“CLOCK2”,若无需设置闹钟2,则通过按键3退出闹钟设置,返回主界面正常显示时间;
按键5:设置闹钟是否开启,例如:当设置闹钟1为开启状态时,在LCD右上方显示“*CLOCK1”当闹钟,并在返回主界面后显示“C1”表示闹钟1开启;
三、整体设计思路
这部分主要介绍工作安排和整体设计的思想。工作过程规划如下:
对测试中的问题再调试
对程序编译,下板测试
编辑各个程序模块
完成
调试程序,进行修改
综合各程序完成整体程序
熟悉硬件 了解各引脚功能
完成整体电路图
认真学习C语言
分块设计各部分电路
将分块的电路组合
确定结构和思路
上电初始化
四、主程序流程图
显示时间初值
Y
Y
响铃
是否开启?
与闹钟时间相同?
N
不响
Y
报时
整点?
N
不响
N
Keyvalue=getkey()
N
进入时间设置
Y
Key=0?
N
Y
各设置项加一
Key=1?
N
Y
各设置项减一
Key=2?
N
Key=3?
Y
退出设置回到主界面继续计时
N
Key=4?
闹钟设置
Y
N
Y
关闭闹钟
闹钟已开启?
Y
Key=5?
N
开启闹钟,显示*
Y
Key=7?
12/24进制的转换
N
结束
五、电气原理图(见附图)
六、实验程序
1、键盘程序(Keyprocess)
键盘与848相连接,采用矩阵键盘的方式P2用于列扫描,P1用于行扫描,经过消抖及等待键释放的程序,将最终正确的结果置于getkey();程序实现如下:
#includeaduc848. KeyTemp;
}
void KeyDelay(unsigned int KeyJsTime)
{
unsigned char temp;
unsigned int JsKeyDelay;
for(JsKeyDelay=0;JsKeyDelayKeyJsTime;JsKeyDelay++)temp++;
}
2、Lcd程序(1602)
#include aduc848. flag;
}
void iic_nack()
{
MDE=1;
MDO = 1;
//IIC_Delay_us(2);
MCO = 1;
//IIC_Delay_u
文档评论(0)