ImageVerifierCode 换一换
格式:DOC , 页数:17 ,大小:197.50KB ,
资源ID:1010975      下载积分:20 文钱
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,省得不是一点点
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wenke99.com/d-1010975.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于51单片机时钟的LED显示单片机课程设计报告.doc)为本站会员(龙***)主动上传,文客久久仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文客久久(发送邮件至hr@wenke99.com或直接QQ联系客服),我们立即给予删除!

基于51单片机时钟的LED显示单片机课程设计报告.doc

1、单片机课程设计报告第 1 页 共 17 页一 需求分析本设计是基于51单片机时钟的LED显示,通过单片机产生计数功能,通过LED数码管显示,显示时间时、分、秒,并用按键进行时间调整,同时带有整点报时功能。二 总体设计1 设计思路通过51内部定时器产生时钟来进行准确计时,用独立键盘来实现时钟的可调,最后由LED 数码管来显示。2.器件选择AT89C52 74LS138 8 位共阴数码管 7407 MAX232 串行口九针插头12M 晶振 按键 电容 排阻3.开发环境KEIL Uvision4 4.下载工具STC-ISP-V3.5单片机课程设计报告第 2 页 共 17 页三 硬件电路分析该硬件电路

2、由显示电路、电源电路、信号处理电路、单片机最小系统、串口通信以及按键控制电路六部分构成。该单片机开发板具备了电源、复位、时钟、键盘、显示等电路,可用于编程开发单片机的多种控制功能。由于外部硬件电路已经确定,单片机各引脚已经连接好,其对应位也已经确定好,因此在进行程序设计前,要对AT89C52各引脚连接的电路以及所控制的电路进行分析,分析后确定了以下信息:(1)P0口连接数码管八段,通过写P0 口来控制数码管显示的内容;(2)P1.0口控制着电路板上的绿色指示灯的亮灭,其中1为灭,0为亮;(3)P2口:单片机课程设计报告第 3 页 共 17 页P2.7 P2.4分别连接K1K4按键,编程时,需要

3、通过读取P2.7 P2.4的值获取按键状态;P2.0 P2.2分别连接3-8译码器的A、B、C输入端,编程时需要写P2.0 P2.2口来实现控制六个数码管的显示;P2.3连接3-8译码器的使能端,编程时需要对P2.3写入0,;(4)单片机复位电路已经连接好,复位键可以直接使用,编程时无需编写复位程序;(5)振荡电路已连接好,其中晶振为12MHz,通过利用中断进行精确计时;四 软件设计1 进行软件设计前需要先学习下 KEIL Uvision4 和 STC-ISP-V3.5 两款软件的使用方法。关于KEIL Uvision4 软件使用时需要注意问题:1)新建工程后,会弹出一个“Select Dev

4、ice For Target”对话框,此时需要点开Atmel然后选择AT89C52,确定;2)在刚建的工程下,新建file,编好文件保存时在给文件命名是一定要带上扩展名“.c ”;3)编写好的C文件需要添加到当前Target下,编译前需要找到 “Option For Target”对话框进行设置,把晶振频率设置为12MHz,点击“output”,在“create HEX fi”前打上勾,生成十六进制的文件,以用于下载到单片机内。关于STC-ISP-V3.软件使用时需要注意的问题:1)选择单片机型号(STC89C52RC );2)选择Clear Buffer (清缓冲区),Open File打开

5、待烧录的.HEX 文件 ;3)根据实际连接选择COM口,实际所用COM口可通过设备管理器查询得到;4)冷启动。电路板断电后点击Download按钮,然后接通电路板电源,等单片机课程设计报告第 4 页 共 17 页待编程结束,成功下载到单片机内。2.程序设计思路本次要实现的功能是可调数字钟,分析后把程序分成五个子模块进行编写,其中五个子模块分别为时间处理子程序、显示子程序、整点报时子程序、按键扫描子程序以及中断子程序。3.各模块实现的功能以及分析(1)时间处理子程序该模块中把秒设置为六十进制,分钟设置为六十进制,小时设置为二十四进制,同时实现秒分和分时之间的进位。实验程序如下:void time

6、_dis( void) if(sec=60) /秒钟设为 60 进制 sec=0;min+;if( min=60) /分钟设为 60 进制 min=0;hour+;if(hour=24) /时钟设为 24 进制hour=0; (2)显示子程序该程序实现数码管的显示。除了正常计时显示还需要考虑上调节状态下数码管的显示情况,因此需要用到一系列的条件判断语句。调节按键没有按下时,数码管显示时钟,此状态下,时与分和分与秒之间的小数点以2Hz的频率闪烁;一旦调节按键按下,则相应的调节位以2Hz的频率闪烁,由于调节时,只调时分秒的个位,十位一直显示即可。单片机课程设计报告第 5 页 共 17 页显示时的程

7、序流图如下:开始Y0 选通,数码管时的十位显示,写 P0 口Y1 选通,数码管时的个位选通flash=0写 P0 口,数码管亮P0=0x00;数码管灭flash=0写 P0 口,小数点亮,P0 或上 0X80写 P0 口,小数点灭按下调节键K4,adjust_key=3Y NY N Y N而对于显示分的子程序,同显示时的程序一样,判断条件为adjust_key=2,在写P0口时,写的分的十位和个位;而对于显示秒的子程序,判断条件为adjust_key=1由于小数点不需要闪烁,因此,如果没有按键按下,则直接把秒的个位值写进P0 口即可,无需判断 flash。(3)整点报时子程序整点报时子程序通过

8、P2.7口控制,当K1(P2.7 )按下时,通过变量baoshi_flag记录按键的状态,按键有0、1两个状态,0状态对应整点报时功能关,1状态对应着整点报时功能开,在分和秒都为0时,则报时,此时绿灯灭一下。该段程序程序流图如下:单片机课程设计报告第 6 页 共 17 页开始K1(P2.7)按下baoshi_flag=baoshi_flag;baoshi_flag=1TL0=0xb0;工作方式设置:TMOD=0x01。中断服务子程序如下:timer(void) interrupt 1 using 0 /利用定时器 0 方式 1,50ms 中断一次,设置定时初值TR0=0;TH0=0x3c;TL

9、0=0xb0;TMOD=0x01;if(t9) t+;elset=0;flash=flash; /flash 以 2Hz 的频率变化if(con=0)if(mstcnt19)mstcnt+;elsemstcnt=0;sec+; /1 秒计时,秒加TR0=1; /开定时器单片机课程设计报告第 8 页 共 17 页注意的问题:在中断子程序末尾一定要记得开定时器。(6)主程序主程序中打开定时器,设置定时初值以及定时器的工作方式,然后利用while (1)语句,反复执行各个子程序即可。主程序如下:void main(void) P2=0xff; /初始化 p2 口,全设为 1 TMOD = 0x01;

10、 /time0 为定时器,方式 1TH0=0x3c; /预置计数初值TL0=0xb0;EA=1; ET0=1; TR0=1; en=0;while (1) keyscan(); /按键扫描time_dis(); /时间处理display(); /显示时间 baoshi(); /整点报时 单片机课程设计报告第 9 页 共 17 页五 收获与总结通过为期一周的单片机课程设计,收获很大。首先,以前在学习单片机的时候,老师所讲的全是汇编语言,而此次课程设计我用的是C语言,因此自己课下通过看相关单片机教学视频以及教学资料学习了基于51单片机的C语言程序的编写以及相关软件KEIL Uvision4、STC

11、-ISP-V3.5的使用,通过自己反复实践编程下载,现在可以熟练使用这两款软件进行单片机开发。其次,通过此次单片机课程设计,更加深入掌握了51单片机的结构和原理,51单片机内部定时系统的开启和设置、中断调用和如何使用单片机内部时钟实现精确计时以及如何对单片机的双向口进行读写操作等。除此之外,也更加深入理解了数码管动态扫描显示原理。最后,通过连续几天来不断地编程下载和调试,自己形成了一定的编程思维。起初,自己先是从网上搜集资料,通过对一系列的单片机C语言程序的研究,掌握到了基本的编程思路以及了解到要实现相关的功能应该采取何种操作。然后,根据自己的单片机课程设计数字钟的设计需求,先是实现基本的计时

12、显示功能,这就需要编写好时间处理子程序、中断程序以及显示子程序,编写好后进行编译调试,无错误无警告后下载到开发板上,观察板子的显示情况,然后再根据具体情况具体的对程序进行改动。记得一开始自己把程序下载到板子上时,只显示不计数,然后自己就在想可能哪错了,能显示说明显示子程序没问题,问题出在时间处理子程序和中断子程序,最后检查出自己忘了打开定时器导致数字钟不计数,因此修改后编译下载,正确显示并计数。当基本功能实现后,就开始考虑调节时间功能。调时需要扫描按键,因此编写按键扫描子程序。首先得对各按键功能进行定义,然后再编写程序。开始我用了三个按键分别控制时分秒的加,最后一个按键则为确认键,这时我发现有

13、点资源浪费,四个按键全用了确只能加不能减,考虑到实际数字钟用一个键控制调节位,一个按键加,一个按键减,因此重新编写按键子程序。最后一个闲置的按键则用来实现了整点报时功能的控制。当把自己想实现的功能都实现后,接下来要做的单片机课程设计报告第 10 页 共 17 页就是完善程序,改善显示效果。在调节时让相应的位闪烁,并且按键按下后数码管上的显示不闪烁等等,其实完善程序也是一个相当艰难而且漫长的过程,调节位闪烁与不闪烁需要改动的地方很多。比如,我在调节状态时,定时器已经关了,此时2Hz 变化的变量flash 不会变了,那么要想闪烁我就必须把定时器打开,但定时器打开后调节时时钟状态还在变化,秒个位一直

14、在加一,因此我就又添了一个变量con ,调节状态下,把 con置1,恢复时间状态后把 con清0,而sec自加前判断一下con 标志位是否为 0决定是否自加,这样就即可以实现调节位闪烁,同时sec不再自加。此次课程设计虽然单调但也充满了无穷的乐趣。在编程的过程中,出现过不少问题,有时出现好几十个错误,但是有时这好几十个错误竟会是少一个大括号或是大括号放错了位置引起的,把大括号放对后,0个错误。因此,只要自己按着思路一步步编是不会出现太多错误的,这个时候自己一定要有耐心,耐心的根据错误位置及错误提示仔细的检查,不断地修改不断地编译,再修改再编译。这个过程中,使得自己以后编程中对于C中一些常见的错误也能准确快速地修改了。

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。