基于单片机的数码电子时钟设计内容摘要:

中断响应 小时 变量增 1 小时变量增至 24№ 小时、分、秒变量清零 返回 中断。 正常显示 N N Y Y 12 定时器 0 中断流程图 如图 34 图 34 开始 重装定时器初值 中断计数增 1 中断次数到 20 次。 中断计数清零秒变量增 1 秒变量增到 60。 分变量增 1 秒变量清零 分变量增到 60。 小时变量增 1 分变量清零 小时变量增到 24。 小时、分、秒变量清零,中断计数清零 N Y N Y N Y N Y 13 C 语言程序源代码 //功能:基于单片机的数码电子时钟控制程序,晶振 12MHZ include define uchar unsigned char void delay()。 //延时函数声明 void display()。 //显示内容处理函数声明 unsigned char second,minute,hour,msec。 //分别定义秒变量,分变量,小时变量 ,50ms 计数变量 //主函数 void main() { hour=0。 //变量初始化 minute=0。 second=0。 TMOD=0x01。 TH0=0x3c。 TL0=0xb0。 EA=1。 // 开放中断总允许位 ET0=1。 //开放定时器 0 中断允许位 TR0=1。 //启动定时器 T0 EX0=1。 //开放外部中断 0 中断允许位 IT0=1。 //设置外部中断 0 为下降沿触发 EX1=1。 //开放外部中断 1 中断允许位 IT1=1。 //设置外部中断 1 为下降沿触发 while(1) { display()。 } //调用显示函数 } //延时函数 void delay() { uchar i, j。 for(i=10。 i0。 i) for(j=248。 j0。 j)。 } //定时计数器 0 中断函数 void INT_T0() interrupt 1 { TH0=0x3c。 TL0=0xb0。 msec++。 14 if(msec==20) //中断次数到 20 次吗 ? { second++。 //是,秒变量加 1 msec=0。 //1s 计数到, 50ms 计数变量清零 if(second==60) //到 60s 吗 ? { minute++。 //是,分变量加 1 second=0。 //秒变量清零 if(minute==60) //到 60min 吗 ? { hour++。 //是,小时变量加 1 minute=0。 //分变量清零 if(hour==24) //到 24h 吗 ? { hour=0。 //是,小时变量清零 minute=0。 //分变量清零 second=0。 //秒变量清零 } } } } } // 显示内容处理函数 void display() { uchar led[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40}。 //设置数码 09 和字符码 P0=0xff。 //P0 口做输入 while(1) { P2=0x7f。 // 选中 控制的数码管 P0=led[second%10]。 //显示秒个位 delay()。 P2=0xbf。 // 选中 控制的数码管 P0=led[second/10]。 //显示秒十位 delay()。 P2=0xdf。 // 选中 控制的数码管 P0=led[10]。 //显示分隔符 delay()。 P2=0xef。 // 选中 控制的数码管 P0=led[minute%10]。 //显示 分个位 delay()。 P2=0xf7。 // 选中 控制的数码管 P0=led[minute/10]。 //显示 分十位 15 delay()。 P2=0xfb。 // 选中 控制的数码管 P0=led[10]。 //显示分隔符 delay()。 P2=0xfd。 // 选中 控制的数码管 P0=led[hour%10]。 //显示小时个位 delay()。 P2=0xfe。 // 选中 控制的数码管 P0=led[hour/10]。 //显示小时十位 delay()。 } } //外 部中断 0 中断函数 调分钟 void INT_0() interrupt 0 { minute++。 if(minute==60) {minute=0。 hour++。 } } //外部中断 1 中断函数 调小时 void INT_1() interrupt 2 { hour++。 if(hour==24) {hour=0。 } } 16 第 4 章 软件仿真 程序软件仿真 如图 41 图 41 硬件电路仿真 正常显示仿真 如图 42 图 42 17 调分仿真 如图 4 44 图 43 图 44 18 调小时仿真 如图 4 46 图 45 图 46 19 第 5 章 心得体会 首先作为一个团队,团结精神最重要。 团结是使整个团队的凝聚力。 在完成项目时,需要小组所有成员的共同努力,只凭个人的力量是无法完成的。 其次 是个人分工。 每个人的能力不同,我们根据每个人的实际情况具体分工。 力求其在指定时间内完成任务,这样才能保证任务顺利完成。 我们深刻地感受单片机不单是一门文化课程,更是一门科学技术。 单片机课程设计则是人生课程,我们学到了很多课堂上无法学到的东西。 从新奇好玩到失败后的痛苦无助,从失败中爬起,哪怕再失败,也永不放弃。 这就是单片机课程设计教会我们的最宝贵的知识。 经过这次单片机课程设计实验,让我获得了很多知识,进一步加深了我对AT89C51 单片机的掌握,另外也巩固了我的编程思想和焊接技术。 本次的 基于单片机的数码电子 时钟设计,让我充分发挥了对所学知识的理解和设计的书面 表达能力。 这为今后自己进一步深化学习,积累了一定的宝贵经验。 撰写报告的过程是对专业知识的学习过程,它使我运用已有的专业基础知识,对其进行设计,分析和解决一个理论问题或实际问题,把知识转化为能力的实际训练。 本次的课程设计,让我发现理论必须用于实践,否则只是一张白纸。 此外 只有理论水平提高了,才能更好的运用于实践。 另外,本次课程设计也考验了我的认真的态度。 只有做事拥有认真的态度与科学的方法,才能成功。 我认为课程设计非常有必要,因为它能让我们主动去寻找遇到问题的解决方法,同时也是对我们严谨认真工作态度的考验与锻炼,为以后我们进入社会参加工作是一个很好的培训和历练。 我在这一次数 码 电子 时 钟的设计过程中,很是受益匪浅。 通过对自己在大学二 年时间里所学的知识的回顾,并充分发挥对所学知识的理解和对毕业设计的思考及书面表达能力,最终完成了。 这为自己今后进一步深化学习,积累了一定宝贵的经验。 撰写论文的过程也是专业知识的学习过程,它使我运用已有的专业基础知识,对其进行设计,分析和解决一个理论问 题或实际问题,为能 把知识转化力的实际训练。 培养了我运用所学知识解决实际问题的能力。 通过这次课程设计我发现,只有理论水平提高了;才能够将课本知识与实践相整合,理 论知识服务于教学实践,以增强自己的动手能力。 这个实验十分有意义我获得很深刻的经验。 通过这次课程设计,我们知道了理论和实际的距离,也知道了理论和实际想结合的重要性 , 也从中得知了很多书本上无法得知的知识。 我们的学习不但要立足于书本,以解决理论和实际教学中 的实际问题为目的,。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。