- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PAGE 23
设计报告
万年历时钟的设计
班级: 09光电2班
专业: 光电子技术
姓名: 阮 军 峰
学号: 0906010234
完成日期:
2011年
设计目的:
掌握C51程序用于实践并实现相应的功能;
掌握时钟程序的使用方法;
掌握时间函数的使用方法;
掌握键盘的程序使用方法;
设计任务:
设计一个智能化万年历时钟电路,LED数码管作为电路的显示部分,按钮开关作为调时部分,通过与单片机连接数码管动态显示年、月、日、时、分、秒、星期、温度。并能准确计算闰年闰月的显示。
设计要求:
通过与单片机连接数码管动态显示年、月、日、时、分、秒、星期等功能,并能准确计算闰年闰月的显示,三个个按钮连接P3.0、P3.1、P3.2可以精确调整每一个时间数值,通过对所设计的万年历时钟电路进行实验测试,达到了动态显示时间,随时调整时间等技术指标。
系统方案设计:
1、系统总体设计:
1) 原理构成框图
本设计用STC89C51作为核心控制部分,外接晶振电路和74HC154,74LS138作为位选扩展电路,P3.0、 P3.1 、P3.2接三个个按钮作为时间调整部分,以两个17个数码管作为显示部分,P2口作为位选,P0口作为数据输出部分。具体框图如图1所示:
数码管数据输出部分单片机S
数码管数据输出部分
单片机
Stc89C51
按钮调整时间部分
按钮调整时间部分
温度采集部分
温度采集部分
三八译码器,4-16译码器扩展位选部分
三八译码器,4-16译码器扩展位选部分
晶振电路
晶振电路
图1 原理框图
开始
开始
清显示缓冲区
初始化定时计数器
赋时钟初值
开定时器
调整时间
数码管显示当前时钟值
定时中断
定时中断
赋初值
赋初值
定时器计时
定时器计时
秒加1判断是否到60秒N
秒加1
判断是否到60秒
N
分加1判断分是否到60分N
分加1
判断分是否到60分
N
Y
Y
时加1判断时是否到24时N
时加1
判断时是否到24时
N
Y
Y
判断天是否到32和星期是否到8
判断天是否到32和星期是否到8
天和星期加1
天和星期加1
N判断月是否到13月Y
N
判断月是否到13月
Y
N
Y
月加1
月加1
堆栈返回
堆栈返回
Y
Y
N年加1判断年是否到100年
N
年加1
判断年是否到100年
时单元清0
时单元清0
2) 主程序的设计
系统程序采用C语言按模块化方式进行设计,然后通过KeilC51L软件开发平台将程序转变成十六进制程序语言,得到HEX文件,接着使用Proteous进行仿真,其次,按照Proteous的仿真电路图,在Protel99SE中完成电路板的逻辑布局及布线。
3) 时间调整电路的设计
采用按键设计,独立式按键直接与单片机I/O口相连构成键盘,每个按键不会相互影响,按下模式可以选择 年 月 日 时 分 秒 星期。按下(+)(-)进行调试,程序如下:
while(1)
{
P3_0=1;
if(P3_0==0){
delay(10);
if(P3_0==0)//如果按键被按下
{
Kdelay();
if(P3_0==0)//确定按键按下
{
while(P3_0==0); // 等待按键放开
cursor++;
if(cursor=9){cursor=0;}//如果cursor大于9则cursor=0
if(P1_0==0){cursor=0;}
} }
}
P3_1=1;
if(P3_1==0){
delay(10);
if(P3_1==0) //如果按键被按下
{
Kdelay();
if(P3_1==0) //确定按键按下
{
if(cursor==1)
{
sec++;//如果cursor=1则按键按下秒数加一
if(sec==60)
sec=0;//如果秒数等于60秒则回到0开始
}
if(cursor==2)
{
min++;//如果cursor=2则按键按下分数加一
if(min==60)
您可能关注的文档
最近下载
- 浅析《诗经》婚恋诗中的水意象和其成因(初稿)(作者马雄雄).doc VIP
- 《白血病的护理》课件.ppt VIP
- 试论《诗经》婚恋诗中的水和树意象-毕业论文.doc VIP
- 常用电气元器件选用.ppt VIP
- 西安市高新区第三初级中学小升初数学初试试题及答案解析.docx VIP
- 常用电子元器件的选用与检测目录.pdf VIP
- 2025辐射安全与防护培训考试题库(含参考答案).docx VIP
- (2025)辐射安全与防护培训考试题库(含参考答案).docx VIP
- 20GWh锂电池项目环评环境影响报告表(新版环评).pdf
- 电力企业合规管理存在的问题及对策_20250128_120531.docx VIP
文档评论(0)