电子时钟课程设计7.doc

上传人:文库蛋蛋多 文档编号:3989218 上传时间:2023-03-30 格式:DOC 页数:14 大小:146.50KB
返回 下载 相关 举报
电子时钟课程设计7.doc_第1页
第1页 / 共14页
电子时钟课程设计7.doc_第2页
第2页 / 共14页
电子时钟课程设计7.doc_第3页
第3页 / 共14页
电子时钟课程设计7.doc_第4页
第4页 / 共14页
电子时钟课程设计7.doc_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《电子时钟课程设计7.doc》由会员分享,可在线阅读,更多相关《电子时钟课程设计7.doc(14页珍藏版)》请在三一办公上搜索。

1、湖南工程学院课 程 设 计课程名称 单片机原理与应用 课题名称 电子时钟设计 专 业 班 级 学 号 姓 名 指导教师_ 李XX 2012年5月 5日湖南工程学院课 程 设 计 任 务 书课程名称 单片机原理与应用 课 题 电子时钟设计 专业班级 学生姓名 学 号 指导老师 李 XX 审 批 任务书下达日期 2011年 5 月 5 日 任务完成日期 2011年 5月 20 日设计内容与设计要求设计内容:本课题以单片机为核心,利用其定时器和6位数码管,设计一个电子时钟。要求有以下功能:1、 开机时,显示00:00:00的时间开始计时;2、 要求有秒,分,时的调节。3、 具有复位功能。设计要求:1

2、)确定系统设计方案; 2)进行系统的硬件设计;3)完成必要的参数计算与元器件选择;4)完成应用程序设计;5)进行单元电路及应用程序的调试;6)写出使用说明书主 要 设 计 条 件1、MCS-51单片机实验操作台1台;2、PC机及单片机调试软件;3、单片机应用系统板1套;4、制作工具1套;5、系统设计所需的元器件。 说 明 书 格 式1. 课程设计任务书2. 目录3. 说明书内容1)课题的设计要求、目的、意义2)系统总体方案选择与说明3)系统结构框图与工作原理4)各单元硬件设计说明及计算方法5)软件设计与说明(包括流程图)6)调试结果与必要的调试说明7)使用说明8)程序清单9)总结10)参考文献

3、附录附录A 系统原理图附录B 程序清单评分表进 度 安 排设计时间为两周第一周星期一、上午:布置课题任务,讲课及课题介绍 下午:借阅有关资料,总体方案讨论星期二、确定总体设计方案星期三、硬件模块方案设计星期四、软件模块方案设计星期五、各硬件模块设计第二周星期一、各硬件模块设计星期二、各软件模块设计星期三、各软件模块设计星期四、写说明书星期五、上午:写说明书,整理资料下午:交设计资料,答辩参 考 文 献1付家才单片机控制工程实践技术.北京:化学工业出版社,20042孙育才,王荣兴,孙化芳.新型AT89S52系列单片机及其应用.北京:清华大学出版社,20 电气信息学院课程设计评分表项 目评 价优良

4、中及格差设计方案合理性与创造性(10%)开发板焊接及其调试完成情况*(10%)硬件设计或软件编程完成情况(20%)硬件测试或软件调试结果*(10%)设计说明书质量(20%)答辩情况(10%)完成任务情况(10%)独立工作能力(10%)出勤情况(10%)综 合 评 分 指导教师签名:_ 日 期:_ 注:表中标*号项目是硬件制作或软件编程类课题必填内容; 此表装订在课程设计说明书的最后一页。课程设计说明书装订顺序:封面、任务书、目录、正文、评分表、附件(非16K大小的图纸及程序清单)。 以下为课程设计的指导书(程序及电路图全有)程序部分:/*按下设置键对应的位(时分秒)闪烁,再按下数字键即可设置时

5、间,设置好后按确定退出程序可在整点提示,无闹钟设置*/#include reg51.h /包含51单片机头文件#define uchar unsigned char#define uint unsigned intsbit Buzzer=P27;/定义喇叭接口,用于报时uint sec;/秒 寄存器uint min=0;/分 寄存器uint hour=0;/小时 寄存器uint tcnt;/计数器值uint cursor=0;uchar a=0xff;uchar tempkey,num,numclear;uchar code Seg=0x3f,0x06,0x5b,0x4f,0x66,0x6d,

6、0x7d,0x07,0x7f,0x6f;/数码管显示0-9的对应P0输出的16进制代码uint code tab34=1,2,3,4, 5,6,7,8, 9,0,S,Q ; /矩阵(3行4列)表示0到F的16个键值void delay(uint t)/延时函数 uint i; while(t-) for (i=0;i0;i-) for(j=248;j0;j-);void display(uchar L9,uchar L10,uchar L11,uchar L12,uchar L13,uchar L14)/数码管显示函数,L9-L14分别为1-6个数码管显示的值 即:时分秒 /P2=0xFF;

7、if(cursor=3)P1=0x7F|a;P0=L9;delay(1);elseP1=0x7F;P0=L9;delay(1); /hour if(cursor=3)P1=0xBF|a;P0=L10;delay(1);elseP1=0xBF;P0=L10;delay(1); /hour if(cursor=2)P1=0xDF|a;P0=L11;delay(1);elseP1=0xDF;P0=L11;delay(1); /min if(cursor=2)P1=0xEF|a;P0=L12;delay(1);elseP1=0xEF;P0=L12;delay(1); /min if(cursor=1)

8、P1=0xF7|a;P0=L13;delay(1);elseP1=0xF7;P0=L13;delay(1); /sec if(cursor=1)P1=0xFB|a;P0=L14;delay(1);elseP1=0xFB;P0=L14;delay(1); /sec char kbscan() /键盘扫描函数,若有按键函数将返回键值 unsigned char hang,lie,key;if(P3!=0x0f)/0x0f=0000 1111,此处扫描是否有按键按下delay(5);/延时用于按键消抖if(P3!=0x0f)switch(P3&0x0f)/分析按键“列”值(矩阵键盘有行列之分)cas

9、e 0x0e:lie=0;break;/0x0e=0000 1110case 0x0d:lie=1;break;/0x0d=0000 1101case 0x0b:lie=2;break;/0x0b=0000 1011case 7:lie=3;break;P3=0xf0;P3=0xf0;switch(P3&0xf0)/分析按键“行”值case 0xe0:hang=0;break;/0xe0=1110 0000case 0xd0:hang=1;break;/0xd0=1101 0000case 0xb0:hang=2;break;/0xb0=1011 0000P3=0x0f;while(P3!=0

10、x0f);/等待按键松开key=tabhanglie;elsekey=0;return (key);/键值返回给函数 void SetTime1() /此定时器增加数码管动态闪烁 /-定时器用1 TMOD |= 0x20; /使用模式1,16位定时器,使用|符号可以在使用多个定时器时不受影响 TH1 =(65536-50000)/256;/50毫秒TL1 =(65536-50000)%256; /给定初值,这里使用定时器最大值从0开始计数一直到65535溢出 EA=1; /总中断打开 ET1=1; /定时器中断打开 TR1=1; /定时器开关打开 main() unsigned char te

11、mp,str32; TMOD=0x02; /设置模式为定时器T0的模式2 (8位自动重装计数初值的计数值) TH0=0x06; /设置计数器初值高位,靠TH0存储重装的计数值X0=256-250=6 TL0=0x06; /设置计数器初值低位 TR0=1; /启动T0 ET0=1; /开启定时器T0中断允许 EA=1; /开启中断总控制 P3=0x0f; /给P3口付初值0x0f=0000 1111,以便按键扫描num = 0;Buzzer=0; /关闭蜂鸣器 while(1) if(min=0&sec3)cursor=0;TR0 =1;TR1 = 0;/cursor=1-3分别为设置秒、分、时

12、3种状态 if(cursor=0&temp = Q)min=0;sec=0;hour=0;/非设置状态下按下“确定、复位”键清零时间if(temp = Q)/判断按键为“确定”键:在设置时间状态下按下此键为确定设置完毕delay(1); if(temp = Q)for( numclear =0;numclear=60 ) min =0; if(hour=24 ) hour = 0; cursor = 0;TR0 = 1;TR1 = 0;if(cursor !=0 & temp!=S & temp !=0)/设置状态下改变时间delay(1); if(cursor !=0 & temp!=S &

13、 temp!=0) TR0 = 0;if(cursor=1)sec=temp-48;str+num = sec;sec = strnum-1*10+sec;SetTime1();if(cursor=2)min=temp-48;str+num = min;min = strnum-1*10+min;SetTime1();if(cursor=3)hour=temp-48;str+num = hour;hour = strnum-1*10+hour;SetTime1(); display(Seghour/10,Seghour%10,Segmin/10,Segmin%10,Segsec/10,Segs

14、ec%10); /显示时间到数码管上 void t0(void)interrupt 1 using 0 /t0的中断程序,用于时间运作 tcnt+; if(tcnt=4000)/定时器的定时计数,4000次250us为1秒 tcnt=0; a=a; sec+; if(sec=60) sec=0; min+; if(min=60) min=0; hour+; if(hour=24) hour=0; void Time_1() interrupt 3 using 1/中断处理函数,用于在设置时间时数码管闪烁 static unsigned int n=0; n+;if(n=500) n=0; a=a; 电路图(protus仿真图):

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号