1、湖南工业大学 课 程 设 计 资 料 袋 电气与信息工程 学院 3 学年第 1 学期 课程名称 单片机 系统 课程设计 指导 教师 凌 云 职称 教 授 学生姓名 专业班级 测控 101 学号 题 目 数字钟 ( C51 版) 成 绩 起止日期 2012 年 12 月 10 日 2012 年 12 月 28 日 目 录 清 单 序号 材 料 名 称 资料数量 备 注 1 课程设计任务书 2 课程设计说明书 3 课程设计图纸 张 4 心得体会 5 6 2 湖南工业大学 课程设计任务书 2012 2013 学年第 1 学期 电气与信息工程 学院 测控技术与仪器 专业 101 班 课程名称: 单片机
2、 系统课程设计 设计题目: 数字钟( C51 版) 完成期限:自 2012 年 12 月 17 日至 2012 年 12 月 28 日共 2 周 内 容 及 任 务 1.1 矩形波 脉宽 与周期 测量 1.1.1 高电平脉冲宽度测量 : 测量 20Hz 矩形波(占空比不小于 20%) 高电平 脉冲宽度 , 测量 精度 1ms,在数码管中显示 测量 值。 1.1.2 矩形波周期测量 : 测量矩形波(频率范围 1 100Hz) 周期 , 测量 精度1ms,在数码管中显示 测量 值。 1.2 数字钟 设计 采用单片机内部的定时器设计 24小时制数字钟,数字钟 用 6位数码管显示,要求采用不多余 3
3、个按键实现对钟校时。 假设单片机外接晶体振荡器频率准确稳定时,保证数字钟没有计时误差。 1.3 在 Proteus 中仿真,分析仿真结果 1.4 用 C51 语言编写单片机程序 1.5 撰写课程设计说明书(课程设计报告) 进 度 安 排 起止日期 工作内容 2012.12.17-2012.12.21 讲述设计内容及基本原理,进行系统的设计 2012.12.24-2012.12.28 完成系统调试,课程设计的验收 主 要 参 考 资 料 1 欧伟明、何静 .单片机原理与应用系统设计 .电子工业出版社, 2009 年 2 刘苗 生、潘宗预 . 单片机测控系统设计 . 中国物质出版社, 2006 年
4、 3 单片机系统课程 设计说明书 数字钟( C51版) 起止日期: 2012 年 12 月 17 日 至 2012 年 12 月 28 日 学 生 姓 名 班级 学号 成绩 湖南工业大学电气与信息工程学院 2012 年 12 月 10 日 4 #include #define uint unsigned int #define uchar unsigned char sbit dula=P26; sbit wela=P27; sbit key0=P34; sbit key1=P35; sbit key2=P36; uchar code table= 0x3f,0x06,0x5b,0x4f, 0
5、x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x00,0x77,0x7c, 0x39,0x5e,0x79,0x71; char num,num1,num0,m,f,s,i,j,mshi,mge,fshi,fge,sshi,sge; void delay(uint z) uint x,y; for(x=z;x0;x-) for(y=110;y0;y-); 5 void displaym(uchar mshi,uchar mge) dula=1; P0=tablemshi; dula=0; P0=0xff; wela=1; P0=0xef; delay(2); dula=1; P0
6、=tablemge; dula=0; P0=0xff; wela=1; P0=0xdf; wela=0; delay(2); void displayf(uchar fshi,uchar fge) 6 dula=1; P0=tablefshi; dula=0; P0=0xff; wela=1; P0=0xfb; wela=0; delay(2); dula=1; P0=tablefge; dula=0; P0=0xff; wela=1; P0=0xf7; wela=0; delay(2); void displays(uchar sshi,uchar sge) dula=1; 7 P0=tab
7、lesshi; dula=0; P0=0xff; wela=1; P0=0xfe; wela=0; delay(2); dula=1; P0=tablesge; dula=0; P0=0xff; wela=1; P0=0xfd; wela=0; delay(2); void key() if(key0=0) 8 delay(10); if(key0=0) TR0=0; num1+; while(!key0) displaym(mshi,mge); displayf(fshi,fge); displays(sshi,sge); if(num1=1) displaym(mshi,mge); del
8、ay(5); for(num0=10;num00;num0-) displayf(fshi,fge); delay(5); displays(sshi,sge); delay(5); 9 if(num1=2) displayf(fshi,fge); delay(5); for(num0=10;num00;num0-) displaym(mshi,mge); delay(5); displays(sshi,sge); delay(5); if(num1=3) displays(sshi,sge); delay(5); for(num0=10;num00;num0-) 10 displaym(mshi,mge); delay(5); displayf(fshi,fge); delay(5); if(num1=1) if(key1=0) delay(5); if(key1=0) m+; if(m=60) m=0; while(!key1) displaym(mshi,mge); displayf(fshi,fge); displays(sshi,sge);