51单片机时钟实训报告 51单片机的电子时钟课程设计

时间:2023-08-03 23:09:56 文档下载 投诉 投稿

        时、分、秒计时器设计班级通信二班姓名(学号)吕为国()

        一、任务及要求用51单片机设计时、分、秒计时器,具体要求如下。

        1、具有时、分、秒计时功能和8位数码管显示功能,显示格式为:“时-分-秒”;

        2、用Proteus设计仿真电路进行结果仿真;

        3、4人组成设计小组完成,小组成员有明确分工,1人负责总体方案设计及报告撰写,2人负责功能模块函数设计,1人负责仿真电路设计及调试。

        4、完成程序设计、仿真电路设计、结果仿真。

        5、本实验要求设计一个数字计时器,可以完成0分00秒~23小时59分59秒的计时功能,并在控制电路的作用下有开机清零。

        6、指标要求:①.显示时、分、秒。②采用24小时制,小时计数器按“23翻00”规律计数。

        .③为了保证计时准确、稳定,由单片机的定时器来计时。

        7、设计要求:①画出电路原理图(或仿真电路图);②元器件及参数选择;③电路仿真与调试;④连接实物图,并调试;⑤写出报告,并做总结;

        二、设计方案

        1、总体设计方案(李文负责完成)(说明总体设计方案构思、程序模块构成、仿真电路构成等内容,不少于300字))。构思:实现时钟的设计,如果采用软件延时的方法来实现时钟,太耗cpu了,因此采用51单片机的内部硬件资源来实现时钟,因此采用定时器来定时,由于单片机的最大定时的时间为65.536ms;但是我们要定时1s,为了方便,我们则选用定时器0工作方式1且定时50ms,然后在中断20次则有了1s,有了1s就好办了,分,时就好办了,只要在1秒的基础上加就可以实现时钟了,有了时,分,秒就要显示了,由于时,分,秒都是两位,因此要把个位与十位分离,然后在分别在数码管上显示,这样就实现时钟的设计。

        程序模块:

        1、主函数:(调用初始化函数,调用显示函数)

        2、显示函数:(延时函数,数码管显示代码)

        3、中断服务函数:(时,分,秒的实现)仿真电路构成:数字钟的结构组成:1)晶体振荡器电路2)复位电路3)数码管使用非门驱动及数码管具体:52单片机的最小系统(52单片机,晶振电路(12MHz晶振,和30pF的无极性电容),复位电路(10k电阻,10uf极性电容,开关)),外加八位一体的数码管,数码管驱动电路;

        2、显示模块程序流程图(赵宝龙负责完成):(程序流程图及简单文字说明)(见附录);

        3、中断服务函数模块程序流程图(肖广负责完成):(程序流程图及简单文字说明)(见附录);

        4、主函数模块的设计(李文负责)(见附录);

        5、仿真电路设计(黄涛负责完成)(仿真电路图)

        三、程序代码:/*功能:用共阴的八位一体的数码管显示时间“小时-分钟-秒”位码接P2口;段码接P0口;使用定时器0定时1s,*/#include<reg51.h>//头文件#defineucharunsignedchar//宏定义#defineuintunsignedint//ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//共阴七段编码ucharsec,min,hour,count;//定义变量voiddelay(ucharx)//延时1ms的函数{ucharz,y;for(y=x;y>0;y--)for(z=124;z>0;z--);}voidinit(void)//初始化函数{TMOD=0X01;//定时器0工作在方式1TH0=0X3C;//装初值TL0=0XB0;EA=1;//开总中断ET0=1;//开定时器0中断TR0=1;//启动定时器0sec=0;//秒设初值min=0;//分设初值hour=0;//时设初值count=0;//计数设初值P0=0xff;//P2=0xff;//}voiddisplay()//显示函数{ucharsec1,sec2,min1,min2,hour1,hour2;//定义变量sec1=sec/10;//秒的十位sec2=sec%10;//秒的个位min1=min/10;//分的十位min2=min%10;//分的个位hour1=hour/10;//时的十位hour2=hour%10;//时的个位P2=0x80;//秒个位的位码P0=table[sec2];//秒个位的段码delay

        (5);P2=0x40;//秒十位的位码P0=table[sec1];//秒十位的段码delay

        (5);P2=0x20;//“-”的位码P0=0x40;//“-”的段码delay

        (5);P2=0x10;//分十位的位码P0=table[min1];//分十位的段码delay

        (5);P2=0x08;//分个位的位码P0=table[min2];//分个位的段码delay

        (5);P2=0x04;//“-”的位码P0=0x40;//“-”的段码delay

        (5);P2=0x02;//时个位的位码P0=table[hour2];//时个位的段码delay

        (5);P2=0x01;//时的十位的段码P0=table[hour1];//时的十位的段码delay

        (5);}voidmain(){init();//初始化函数while

        (1){display();//时间显示函数}}voidtime()interrupt1//中断服务函数{TH0=0X3C;//重装初值TL0=0XB0;if(count==20)//定时一秒{count=0;//计数清零if(sec==59)//秒计时到60秒{sec=0;//秒清零if(min==59)//分计时到60秒{min=0;//分清零if(hour==23)//小时计数到24{hour=0;//小时清零}elsehour++;//小时加一}elsemin++;//分加一}elsesec++;//秒加一}count++;//计数加一}

        五、设计总结单片机作为我们主要的专业课程之一,我觉得单片机课程设计很有必要,而且很有意义。在做的过程中能够发现很多的问题,只有自己亲身去做了就会遇到你在书上所没有的,并且你要一个又一个的解决,这个有点难,要找到自己的错误在哪里,这还真的难,有时候自己的错误自己很难的看出来,我就一个main写错了,我找了半天还没找问题在哪里,表面看是看不出的,因为我只是a与i对调了一下,害的我搞了半天才查出来,这个无形的,编译是不会出错,只是一个警告,但是下载单片机里就是不出现结果,改了之后就ok了,在写程序的时候大小写特别要注意的,还有程序的结构清楚明了,最后还是完成任务。在学习的过程中带着问题去学我发现效率很高,这是我做这次课程设计的一大收获。

        另外,要做好一个课程设计,就必须做到:在设计程序之前,对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源;要有一个清晰的思路和一个完整的的软件流程图;在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,在我们遇到问题时,我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题自己能解决了。发现、提出、分析、解决问题都会受益于我在以后的学习、工作和生活中。常有一些不如意,但毕竟这是时的个位与十位的分离;分的个位与十位的分离;秒的个位与十位的分离;定时器0工作在方式1;定时器0定时50ms初值的设定;数码管的位码;秒的个位段码;延时5ms;开中断;数码管的位码;秒的十位段码;延时5ms;开定时器0中断;数码管的位码;“-”段码;开启定时器0;延时5ms;数码管的位码;分的十位段码;初始化时,分,秒;延时5ms;延时5ms;数码管的位码;分的个位段码;初始化Count;延时5ms;数码管的位码;“-”段码;初始化单片机的P0,P2口;延时5ms;结束数码管的位码;分的十位段码;延时5ms;数码管的位码;分的个位段码;延时5ms;结束主函数的程序流程图:中断服务函数:中断入口开始显示初始化退出中断count加一时加一分加一秒加一yes小时清零yesyesnoyesCount=20?循环noCount清零;判断秒是否到60s?秒清零;判断分是否到60分钟?no分清零;判断时是否到23小时?no。

【51单片机时钟实训报告 51单片机的电子时钟课程设计】相关文章:

单片机实训报告范文优选分享 单片机实训报告书08-03

单片机实习报告六篇 单片机实训报告怎么写08-03

2023年单片机实训报告心得体会范文 单片机实训总结报告08-03

单片机交通灯实训报告完整版 单片机交通灯课程设计报告08-03

单片机秒表实训报告 单片机秒表实验总结08-03

单片机实训报告 单片机实训报告总结08-03

51单片机时钟实训报告 51单片机的电子时钟课程设计08-03

单片机原理及应用实训报告 单片机原理及应用实训报告,单片机I/O端口的应用08-03

单片机实训心得体会 单片机实训心得体会800字08-03

单片机实训报告范文精选 单片机实训报告内容及方法08-03

单片机实训总结范文 单片机实训总结100字08-03

金工实习报告 金工实习报告08-03

车工的实习报告 车工实训报告怎么写08-03