欢迎来到天天文库
浏览记录
ID:46254631
大小:70.26 KB
页数:22页
时间:2019-11-22
《浅谈带闹钟的智能电子时钟单片机课程设计》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、微处理器综合设计实践报告题目:智能电子时钟的设计院系:专业:年级姓名:学号:指导老师:一、课程设计目的:综合应用所学的微处理器原理,汇编语言及相关硬件知识,设计一个具有一定功能的电路。熟练掌握仿真器和编程器的使用。二、课程设计要求:在面包板上搭建好硬件电路。以单片机为核心器件,组成一个电子时钟系统。系统显示用4位7段LED显示器,显示当前时间的小时和分。能够通过按键实现对当前时间的调整,系统时间到整点后能够通过蜂鸣器报时,时间为Is;能通过按键设置闹钟时间,闹钟时间到后,通过蜂鸣器报时。三、系统组成与工作原理:1、电路原理图2、工作原理(1)设计原理及思路木课程设计要求以AT89C52单片
2、机为核心器件,组成一个电子时钟系统。我们可以利用单片机自带的定时器功能来进行定时,再通过一些软件编程来构造出一个时钟,同时也可以利用软件的编程来实现所要求的其他功能。通过四个按键开关来控制电子时钟的工作模式。KEY1、KEY2分别对应时钟的调时和调分。KEY3可以设置闹钟,进入闹钟模式后,KEY1、KEY2将转变成闹钟的调时和调分键。此外,当按下KEY4就可以进入秒表模式,进入秒表模式以后,KEY1可以控制秒表的开始于暂停,KEY2可以对秒表清零,再次按下KEY4键便退出秒表模式。程序运行时主程序一直在循环查询各按键的状态,并将当前时间与闹钟设定时间不断进行比较,如果时间相同则响铃,同时通
3、过动态显示的方式将相应的时间显示在数码管显示器上。与此同时,整个过程中时钟的时间都是由单片机的定时器进行计时的。单片机的P0口负责输岀段码,P2・0~P2.3对应四个数码管的位选端,分别为数码管1号、2号、3号、4号(由右至左编号);P1.0对应蜂鸣器;P2・4~P2・7对应四个按键4、3、2、1(由上至下编号)。各个分电路:a.蜂鸣器电路当P1.0为低电平吋,三极管导通,蜂鸣器开始工作b.上电复位电路在通电瞬间,电容C通过电阻R20充电,RST端岀现正脉冲,用以复位。只要接通电源就完成了系统的复位初始化。c.振荡电路此处晶振为12MHz,提供单片机的时钟频率。晶振频率越咼,单片机运行速度
4、越快。a.数码管显示电路P0口连接上拉电阻(排阻),用万用表测试得数码管为共阳极。当123〜120口输岀低电平时,三极管导通,所对应的数码管显示;因为共阳极,所以P0口为低电平的端口所对应的段码显示。e・按键电路当按键没有按下时,P2・4、P2・7为高电平,若按下则变低电平。(2)所用存储单元31H—时钟分的个位3AH——时钟分的个位的段码32H——时钟分的十位3BH——吋钟分的十位的段码33H——时钟时的个位3CH——吋钟吋的个位的段码3411——时钟时的十位3DI1——时钟时的十位的段码41H——闹钟分的个位4AH——闹钟分的个位的段码42H——闹钟分的十位4BH——闹钟分的十位的段码
5、43H—闹钟时的个位4CH——闹钟时的个位的段码44H——闹钟时的十位4DH——闹钟时的个位的段码51『54H分别存放着秒表模式下1~4号管要显示的数字5AH~5DH分别存放着秒表模式下广4号管要显示的数字的段码其中,1号管一一秒的十分位2号管——秒的个位3号管一一秒的十位4号管一一分的个位R7的初值为20,控制定吋器T0的中断次数,T0中断1次定吋50ms,20次定吋Is;R0用来记录秒;(3)总流程图YesYes回1^31^1叵]No(4)“当前时间调时”子程序流程图NoYesE^lNoE^lYesNo㈢NoYesNoYesI—IYes㈢3No1—1㈢Yesr^iNoYesNor^i(
6、8)“秒表”子程序流程图r^iL^lr^ir^i□(9)“数码管显示”子程序流程图ii四、总结因为平时对于电路设计这方而的训练比较少,电路也是自己最薄弱的地方。因此,在第一天拿到器件以后完全没有方向,不知道从哪里开始设计。后来通过自己上网搜索资料,逐渐摸索出了思路,最终完成了电路的设计。电路设计完之后,在面包板上搭建也让我犯了难。什么器件应该放在哪个位置,这么放插孔够不够用,这么放连线方不方便成了我一直头疼的问题。后来通过观察上一届学长的面包板和同学的讨论,终于搭好了板子。但是因为对于面包板不熟悉,搭小灯泡时,把它的两个引脚插在了联通的两个孔里,导致小灯泡一直不亮;插按键的时候也是,没有搞
7、清楚按键和面包板的构造,把按键的两边引脚都插在联通的一排里,导致后而在验证的时候出现了数码管一直不亮的问题,后来经过老师的指导,解决了这个问题。软件的编写可能是最困难的一个部分了。虽然之前有做过单片机实验,写过代码,但是,实验的代码非常简短,实现的功能很简单。这次因为要实现很多功能,一开始我想偷懒,直接写了代码。这样就导致了我的思路不成熟,运行下来有很多地方都是错误的。因此我才意识到,直接写代码是不可能的,要先画流程图理
此文档下载收益归作者所有