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

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

  1. 1、本文档共17页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
单片机课程设计报告基于51单片机时钟LED显示

一 需求分析 本设计是基于51单片机时钟的LED显示,通过单片机产生计数功能,通过LED数码管显示,显示时间时、分、秒,并用按键进行时间调整,同时带有整点报时功能。 二 总体设计 1设计思路 通过51内部定时器产生时钟来进行准确计时,用独立键盘来实现时钟的可调,最后由LED数码管来显示。 2.器件选择 AT89C52 74LS138 8位共阴数码管 7407 MAX232 串行口九针插头 12M晶振 按键 电容 排阻 3.开发环境 KEIL Uvision4 4.下载工具 STC-ISP-V3.5 三 硬件电路分析 该硬件电路由显示电路、电源电路、信号处理电路、单片机最小系统、串口通信以及按键控制电路六部分构成。 该单片机开发板具备了电源、复位、时钟、键盘、显示等电路,可用于编程开发单片机的多种控制功能。 由于外部硬件电路已经确定,单片机各引脚已经连接好,其对应位也已经确定好,因此在进行程序设计前,要对AT89C52各引脚连接的电路以及所控制的电路进行分析,分析后确定了以下信息: (1)P0口连接数码管八段,通过写P0口来控制数码管显示的内容; (2)P1.0口控制着电路板上的绿色指示灯的亮灭,其中1为灭,0为亮; (3)P2口: P2.7~ P2.4分别连接K1~K4按键,编程时,需要通过读取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 Device 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打开待烧录的.HEX文件 ; 3)根据实际连接选择COM口,实际所用COM口可通过设备管理器查询得到; 4)冷启动。电路板断电后点击Download按钮,然后接通电路板电源,等待编程结束,成功下载到单片机内。 2.程序设计思路 本次要实现的功能是可调数字钟,分析后把程序分成五个子模块进行编写,其中五个子模块分别为时间处理子程序、显示子程序、整点报时子程序、按键扫描子程序以及中断子程序。 3.各模块实现的功能以及分析 (1)时间处理子程序 该模块中把秒设置为六十进制,分钟设置为六十进制,小时设置为二十四进制,同时实现秒分和分时之间的进位。 实验程序如下: void time_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的频率闪烁,由于调节时,只调时分秒的个位,十位一直显示即可。 显示时的程序流图如下: 而对于显示分的子程序,同显示时的程序一样,判断条件为adjust_key==2,在写P0口时,写

文档评论(0)

bokegood + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档