单片机课程设计--电子时钟实验_可定时调闹钟_用LCD显示.docVIP

单片机课程设计--电子时钟实验_可定时调闹钟_用LCD显示.doc

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

单片机实验报告 姓名 学号 时间 2013.1.9 实验题目 电子数字钟 一、实验目的与要求 1. 电子数字钟必须具有显示年、月、日和显示时、分、秒的功能。(用LCD显示)。 2.具有按键时间校正功能。 3.具备设定闹钟和定时闹钟功能。 二、实验环境(硬件环境、软件环境) 1.硬件环境:单片机开发板一个,计算机一台,单片机主机电源线及与计算机的连接线各一条。 2.软件环境:软件Keil C51和软件Flash Magic。 三、实验电路(P2口输入、P1口输出实验原理图) 本次实验主要使用了开发板的4个板块,分别是单片机STC89C52(如图2所示)、矩阵键盘(如图2所示)、1206LCD显示器和蜂鸣器(如图3所示)。其中单片机芯片通过P0口把总线和矩阵键盘连接;通过P2.2和蜂鸣器间接相连,因为蜂鸣器所在的电路已经连芯片ULN2003,因此用一根杜邦线把P2.2和芯片ULN2003的第一个输入口IN1连起来。而键盘显示这一块,由于内部已经把键盘显示的电路和单片机芯片连接起来了,所以不需要借助杜邦线了。图1为实物连线图。 图1 实物连线图 图2 单片机机座和矩阵键盘 图3 蜂鸣器和1602液晶显示器 四、程序流程图 主要算法: 主函数中先定时中断初始化,利用定时器中断实现走时,调用LCD显示程序和按键处理子函数,再调用显示时间函数显示初始时间值。同时,在主函数中判断当前的小时和分钟值是否等于闹钟设定的时间,若等于则让蜂鸣器响。主函数算法的框图如图4所示。 按键处理函数算法:通过键盘扫描函数得到确定哪个键盘按下,得到键盘值,如果键0按下则暂停时钟走时;键1按下则在当前的光标所在的时间单元加1;键2按下则开闹钟;键3按下则实现当前的时间单元左移一位的功能;键4按下则在当前的光标所在的时间单元减1。 时间的年月日算法:通过定时器实现时钟的走时,秒满60,分钟加1;分满60,小时加1;小时满24,日加1;至于每个月的天数根据闰年和非闰年的表格确定当月天数。 图4 主函数算法框图 五、程序测试报告:(调试输入数据、结果数据或状态。) 1.输入:源代码1 输出结果: (1) 电子数字钟必须具有显示年、月、日和显示时、分、秒的功能。(用LCD显示) (2)具有按键时间校正功能。 (3)具备设定闹钟和定时闹钟功能。 六、体会:(碰到的问题、如何解决、有何体会。) 1.深入了解如何运用高级语言,此次实验运用C语言进行编程,使单片机开发板实现电子时钟的功能,对汇编语言和高级语言在实现单片机功能的特点也加深了认识。体会到C语言在编程时的灵活性和不用过多考虑硬件的方便。 2.该实验中主要用到几个板块,单片机控制,键盘运用,LCD显示,蜂鸣器。掌握了键盘的工作方式和扫描的特点,懂得运用C语言进行编程键盘扫描的程序;掌握LCD显示的几种功能指令,尽管LCD显示的程序较多,但是工作原理弄清楚后就清晰很多;掌握如何把硬件和软件联系起来,特别是控制定时闹钟蜂鸣器的程序,由于该片单片机开发板的蜂鸣器是和步进电机等电路连在一起的,所以需要把控制蜂鸣器的连接端口找到,并用指令“sbit BEEP=P2^2”进行定义#includereg52.h #includeintrins.h sbit BEEP=P2^2; //喇叭端口 sbit RS = P2^4; //定义端口 sbit RW = P2^5; sbit EN = P2^6; bit Al; //闹钟标志位 #define DataPort P0 #define KeyPort P1 #define uint unsigned int #define uchar unsigned char uchar table1[]={31,31,29,31,30,31,30,31,31,30,31,30,31}; //闰年 uchar table2[]={31,31,28,31,30,31,30,31,31,30,31,30,31}; //非闰年 uint i,j,k; uint n_hour,n_minu; //闹钟时,分 uint sec,minu,hour,day,mon; //秒,分,时,日,星期 uint count,key; unsigned long int year; //年 uchar hs,hg,mis,mig,ss,sg; uchar nhs,nhg,nms,nmg; uchar ms,mg,ds,dg; uchar yq,yb,ys,yg; uchar i

文档评论(0)

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

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

版权声明书
用户编号:7014141164000003

1亿VIP精品文档

相关文档