您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 单片机电子时钟设计大作业
《单片机原理与接口技术》大作业题目:《单片机电子时钟设计》专业:软件工程班级:软工146学号:8000114047学生姓名:荣麒南昌大学软件学院一.题目:单片机电子时钟时钟二.内容:设计一个数字时钟,显示范围为00:00:00~23:59:59。通过几个开关进行控制,其中开关K1用于切换时间设置(调节时钟)和时钟运行(正常运行)状态;开关K2用于切换修改时、分、秒数值;开关K3用于使相应数值加1调节;开关K4用于减1调节;开关K5用于设定闹钟,闹钟同样可以设定初值,并且设定好后到时间通过实验箱音频放出一段乐曲作为闹铃。选做增加项目:还可增加秒表功能(精确到0.01s)或年月日设定功能。三.要求:开关K3进行加1调节时,当加至最大值(时为24,分和秒均为60)时要能正常归零。开关K4进行减1调节时,当减至最小值00时,均能再回到从相应最大值(时为23,分、秒均为59)。闹钟乐曲自定。四.电路及功能说明:电路图如图所示:图A图B图C该数字钟是用一片AT89C51A单片机通过编程去驱动8个数码管实现的。通过6个开关控制,从上到下6个开关KEY1~KEY6的功能分别为:KEY1,切换至秒表;KEY2,调节时间,每调一次时加1;KEY3,调节时间,每调一次分加1;KEY4,从其它状态切换至时钟状态;KEY5,切换至闹钟设置状态,也可以对秒表清零;KEY6,秒表暂停.控制键分别与P1.0~P1.5口连接.其中:A.通过P2口和P3口去控制数码管的显示如图所示P2口接数码管的a——g端,是控制输出编码,P3口接数码管的1——8端,是控制动态扫描输出.B.从P0.0输出一个信号使二极管发光,二极管在设置的闹钟时间到了时候发光,若有乐曲可以去驱动扬声器实现。(图A是时钟运行状态,图B是闹钟运行状态,图C是秒表运行状态)功能说明:1.各个控制键的功能:可对时间进行校准调节(只能加1);按下设置键数字时钟进入闹钟设置状态,设置闹钟的时间;时加1、分加1键是在校准时间时或设置闹钟时间对小时数或分钟数调节而设置的;按下秒切换键就可以进入秒表模式,同时秒表也开始计时,按下秒表暂停、复位键就暂停、归零,如果要重新对秒计时则可以按秒表开始、复位;清零键可以对闹钟清零。2.AT89C51单片机,通过编写程序对数码显示进行控制。3.八个7段数码管显示时钟和秒表信号。五.实验程序流程图:1.主程序流程图:开始定时器及中断寄存器初使化是否设定参数执行显示程序执行时钟,秒表,闹钟设定程序NY2.中断程序流程图恢复初值保护tcount=100?tcount加1秒数值time1.second加1,tcount归零分数值time1.minute加1,time1.second归零,YNtime1.second=60?YNtime1.minute=60?时数值time1.hour加1,time1.minute归零YN时数值time1.hour归零time1.hour23?YN判断时间与闹钟时间是否相同执行闹钟程序P0.0=1闹钟程序是否执行完返回主程序YYNN2.秒表中断程序流程图:恢复初值保护ms100?秒计数器加1,10ms计数器归零,即sec++,ms=0sec60?10ms计数器加1分计数器加1,秒计数器归零,即minit++,sec=0.输出字码,中断结束,返回上级主程序YYNN3.按键程序流程图:第一图为时钟和闹钟的调节.程序初使化判断时加键thour是否按下,P1.2=0?判断标志flag是否为0,flag=0?输出闹钟时个位加1,alarms[6]++,延时Y判断分加键盘tminute是否按下,P1.1=0?输出时钟时个位加1,dat1[6]++,延时.Ydat1[6]9?输出时钟时十位加1,dat1[7]++,延时dat1[7]2?时十位归零,dat1[7]=0NNYYNNalarms[6]9?输出闹钟时十位加1,alarms[7]++,延时alarms[7]2?时十位归零,alarms[7]=0.YYNN判断标志flag是否为0,flag=0?输出时钟分个位加1,dat1[3]++,延时.dat1[3]9?输出时钟分十位加1,dat1[4]++,延时dat1[4]2?分十位归零,dat1[4]=0输出闹钟分个位加1,alarms[3]++,延时alarms[3]9?输出闹钟分十位加1,alarms[4]++,延时alarms[4]2?分十位归零,alarms[4]=0.YYYNYNNYYNN第二图为进入中断和清零判断分加键tminute是否按下,P1.1=0?N判断秒表miaobiao1是否按下,P1.0=0?进入秒表中断,执行秒表中断程序判断清零键miaobiao2是否按下,P1.3=0?清零所有的计数器,各个显示的字码返加上级主程序NYYN六.开发板的结构七.通过SST51实现开发板只读模式和程序烧写的切换打开SSTEasyIAP11F.exe程序,选择串口选择芯片型号和内部程序存储器选择PC串口,MCU晶振和波特率先选择确定在复位MCU通讯成功后窗口右上角显示芯片信息和版本信息点击DownloadSoftICE选项,将MCU中的BOOTLOADER监控程序替换为SoftICE监控程序选择确认更换打开KeilC51程序,新建一个工程保存在自己新建的文件夹中点击保存出现CPU选择对话框,选择SST系列的89X516RD2出现是否添加标准51初始代码对话框,选“否”工程建立之后新建源程序文件,点击”File”菜单下“New”选项保存在工程文件夹内,C程序文件后缀为“.C”,汇编程序文件后缀为“.ASM”在文本编辑区编写源程序并保存;在SourceGroup上右击选择“AddFilesToGroup…”选项添加源文件至工程选择编写好的源程序文件,点击Add添加所选文件点击编译按钮,编译工程进入目标板调试选项设置,点击“Project”菜单下“OptionsforTarget…”选项选择为硬件仿真功能点击Setting进入通讯参数设定菜单,去掉所有Cache选项。至此设置完毕,进入仿真调试阶段点击DEBUG下的“Start/StopDebugSession”选项进入DEBUG界面进入后可以看到信息栏中由显示连接成功信息。在此仿真界面可以进行单步、全速、断点等调试方式由SoftICE监控程序转换回SSTBoot-StrapLoader监控程序打开编辑器SUPERPRO程序进入SUPERPRO程序界面,单击“选择器件选项”进入器件选择对话框,在器件类型处选择“MCU/MPU”在查找处输入要器件名称,找到之后选择“确定”单击“装入文件”选项进入下载文件选择对话框,选择要下载的SoftICE监控程序,文件格式一般为“.hex”或“.bin”格式因为SST单片机的监控程序存储在Block1中,Block1的地址为10000h,故数据缓冲区起始地址改为“10000”,下载一般执行程序则直接默认具体步骤为:Erase=》Program=》Verify;打开SSTBOOT-STRAPLOADER软件工具,并按之前的步骤与单片机通讯连接成功。在界面的右下方IAPFunction菜单中有下载选项,选择“Download”选项下载程序进入了下载文件选择界面在文件查找对话框中找到要下载的用户程序,一般为.Hex或.bin格式文件选择好用户程序后,单击步骤二中的OK选项开始下载,界面最下面的状态栏显示下载进度,当显示为Done时表示程序下载已经完成,单片机上电执行用户程序了八.实验结果分析:此时钟设计是利用仿真软件进行仿真。基本上实现了要求的功能,该多功能数字钟实现的时钟显示、闹钟设置和秒表功能,校准时钟时只设计了时加键和分加键以及清零键,没有设置减分减时键。可发通过循环调节得到正确的调节数值。另外,要求有一段乐曲来作为闹钟,可这里只是用了一个二级管的发光来实现这个功能。若用一个扬声器和一个乐曲能够实现。九.程序代码:#includereg51.h#defineucharunsignedchar#defineuintunsignedint#definedelay_time3uchark,dat[]={0,0,0,0,0,0,0,0};uinttcount,t,u;uchardat1[]={0,0,0,0,0,0,0,0};uchardat2[]={0,0,0,0,0,0,0,0};ucharalarms[]={0,0,0,0,0,0,0,0};uchardis_bit[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};unsignedcharcodeSEG7[11]={0xC0,/*0*/0xF9,/*1*/0xA4,/*2*/0xB0,/*3*/0x99,/*4*/0x92,/*5*/0x82,/*6*/0xF8,/*7*/0x80,/*8*/0x90,/*9*/0xBF,/*-*/};sbitmiaobiao1=P1^0;sbittminute=P1^1;sbitthour=P1^2;sbitmiaobiao2=P1^3;sbitalarm=P1^4;sbitP0_0=P0^0;sbitP1_5=P1^5;sbitP1_6=P1^6;sbitP1_7=P1^7;ucharms=0;ucharflag=0;ucharsec=0;ucharminit=0;structtime{ucharsecond;ucharminute;ucharhour;}time1;ucharn,i;voiddelay(n){while(n--){for(i=120;i0;i--);}}voidmodify(void){EA=0;if(thour==0){if(flag==0){dat1[6]++;delay(180);if(dat1[6]9){dat1[6]=0;dat1[7]++;if(dat1[7]2){dat1[7]=0;}}}if(flag==1){alarms[6]++;delay(200);if(alarms[6]9){alarms[6]=0;alarms[7]++;if(alarms[7]2){alarms[7]=0;}}dat[6]=alarms[6];dat[7]=alarms[7];}}if(tminute==0){if(flag==0){dat1[3]++;delay(180);if(dat[3]=10){dat1[4]++;dat1[3]=0;if(dat1[4]5){dat1[4]=0;}}}if(flag==1){alarms[3]++;delay(200);if(alarms[3]9){alarms[4]++;alarms[3]=0;if(alarms[4]5){alarms[4]=0;}}dat[3]=alarms[3];dat[4]=alarms[4];}}if(miaobiao1==0){TR0=0;ET0=0;TR1=1;ET1=1;}if(miaobiao2==0){TR0=1;ET0=1;TR1=0;ET1=0;dat2[0]=0;dat2[1]=0;dat2[3]=0;dat2[4]=0;dat2[6]=0;dat2[7]=0;ms=0;sec=0;minit=0;}if(P1_5==0){TR0=0;ET0=0;TR1=0;ET1=0;}if(alarm==0){TR0=0;ET0=0;TR1=0;ET1=0;flag=1;dat[0]=0;dat[1]=0;dat[2]=10;dat[3]=0;dat[4]=0;dat[5]=10;dat[6]=0;dat[7]=0;}EA=1;}voidinit(void){TMOD=0x11;TH0=0xDB;TL0=0xFF;TH1=0xDB;TL1=0xFF;ET0=1;//10msET1=1;//TR1=1;TR0=1;tcount=0;ms=0;sec=0;minit=0;EA=1;}voidtest(void){for
本文标题:单片机电子时钟设计大作业
链接地址:https://www.777doc.com/doc-4150567 .html