电子时间设计.docx
- 文档编号:30522829
- 上传时间:2023-08-16
- 格式:DOCX
- 页数:15
- 大小:39.27KB
电子时间设计.docx
《电子时间设计.docx》由会员分享,可在线阅读,更多相关《电子时间设计.docx(15页珍藏版)》请在冰豆网上搜索。
电子时间设计
湖南工程学院
课程设计
课程名称单片机原理与应用
课题名称电子时钟设计
专业电子科学与技术
班级0802
学号08
姓名周笔锋
指导教师_李世军
2011年7月4日
湖南工程学院
课程设计任务书
课程名称单片机原理与应用
课题名称电子时钟设计
专业班级电科0802
学生姓名周笔锋
学号08
指导老师李世军
审批
任务书下达日期2011年6月27日
任务完成日期2011年7月24日
设计内容与设计要求
设计内容:
本课题以单片机为核心,利用其定时器和6位数码管,设计一个电子时钟。
要求有以下功能:
开机时,显示00:
00:
00的时间开始计时;
要求有秒,分,时的调节。
具有复位功能。
设计要求:
1)确定系统设计方案;
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)参考文献
附录
附录A系统原理图
附录B程序清单
评分表
进度安排
设计时间为两周
第一周
星期一、上午:
布置课题任务,讲课及课题介绍
下午:
借阅有关资料,总体方案讨论
星期二、确定总体设计方案
星期三、硬件模块方案设计
星期四、软件模块方案设计
星期五、各硬件模块设计
第二周
星期一、各硬件模块设计
星期二、各软件模块设计
星期三、各软件模块设计
星期四、写说明书
星期五、上午:
写说明书,整理资料
下午:
交设计资料,答辩
参考文献
[1]王迎旭.《单片机原理与应用》.机械工业出版社.2005.8
[2]李全利、迟荣强.《单片机原理及接口技术》.高等教育社.2004.1
[3]孙和平、杨宁、白晶.《单片微机原理与接口技术》[M].冶金工业出版社2003
目录
封面…………………………………………………………………1
课程设计任务书……………………………………………………1
目录…………………………………………………………………5
第1章课题要求,目的及原理框图………………………………6
1.1课题要求……………………………………………………6
1.2课题原理……………………………………………………6
1.3原理框图……………………………………………………6
第2章硬软件件设计说明…………………………………………7
2.1硬件说明……………………………………………………7
2.2软件说明……………………………………………………7
2.3流程图………………………………………………………8
第3章使用说明……………………………………………………8
第4章程序清单……………………………………………………9
第5章总结………………………………………………………14
第6章参考文献…………………………………………………14
第1章课题要求,目的及原理框图
1.1,课题要求
本课题以单片机为核心,利用其定时器和6位数码管,设计一个电子时钟。
要求有以下功能:
开机时,显示00:
00:
00的时间开始计时;
要求有秒,分,时的调节。
具有复位功能。
1.2,课题原理
根据单片机的中断计数功能设计电子时钟,在单片机板上,采用动态扫描方式,用数码管显示出来
1.3,原理框图
闹钟定时
暂停
电子
时钟
清零
图1,原理框图
第2章软硬件说明
2.1硬件说明
本系统硬件包括三个单稳态开关(用于数字钟对时),三个自锁开关(电源开关、闹钟定时与正常时间显示切换、闹钟开关)、PCB集成电路板一个、12MHz晶振一个,89C51单片机一个、蜂鸣器一个(闹钟报警)、电源接口两个个(电路供电)、四位一体八段数码管两个(显示时间)、1K排阻一个、发光二极管两个(电源指示灯、闹钟指示)。
2.2软件说明
程序用tab[]数组来定义共阴数码管的显示状态;
用定时器1来实现电子钟的走时;
用外部键盘扫描来实现电子钟的校准,查询方式如下:
定义电子钟的初始值为00:
00:
00。
2.3流程图
图2,程序流程图
第3章使用说明
本时钟为二十四小时制带有闹钟功能的电子表,可以校对时间和定闹钟,并可以开启和关闭闹钟。
各组件主要功能如下:
数码管:
主要是用来显示时钟正常时间和闹钟定时时间。
按键:
S1:
复位开关S2:
时间时位加一S3:
时间分位加一S4:
闹钟开关S5:
闹钟定时与正常时间显示切换
蜂鸣器(LS1):
闹铃报警
数码管:
D1:
闹钟开关指示D2:
电源指示
第4章程序清单
#include
#include
#defineuintunsignedint
#defineucharunsignedchar
sbitduan=P2^6;//段选
sbitwei=P2^7;//位选
sbittf=P3^4;
sbitts=P3^5;
sbitzd=P3^6;
sbitql=P3^7;
sbitfm=P2^3;
ucharnum1,num2,num3,tt,i,miao1,miao2,fen1,fen2,shi1,
shi2,z,temp,zt,num4,num5,fen11,fen22,shi11,shi22,xs;
ucharcodetable[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,0x00};//段码
voiddisplay(ucharmiao1,ucharmiao2,ucharfen1,ucharfen2,ucharshi1,ucharshi2);//显示
voiddelay(uintz);//用于显示的延时
voidinit();//初始化
voidmain()//主函数
{
init();
while
(1)
{
P3=0xfe;
temp=P3;
temp=temp&0xf0;
while(temp!
=0xf0)//键盘扫描
{
delay(5);
temp=P3;
temp=temp&0xf0;
while(temp!
=0xf0)
{
temp=P3;
switch(temp)
{
case0xee:
num1=0;num2=0;num3=0;break
case0xde:
zt=~zt;break;
case0xbe:
num2++;if(num2==60)num2=0;break;
case0x7e:
num3++;if(num3==24)num3=0;break;
}
while(temp!
=0xf0)
{
temp=P3;
temp=temp&0xf0;
}
}
}
if(tt==20)//电子钟的开始计数
{
tt=0;
if(zt==0)num1++;
if(num1==60){num1=0;num2++;}
if(num2==60){num2=0;num3++;}
}
P3=0xfd;
temp=P3;
temp=temp&0xf0;
while(temp!
=0xf0)
{
delay(5);
temp=P3;
temp=temp&0xf0;
while(temp!
=0xf0)
{
temp=P3;
switch(temp)
{
case0xed:
num4++;if(num4==60)num4=0;
break;
case0xdd:
break;
case0xbd:
xs++;if(xs==3)xs=0;
break;
case0x7d:
num5++;if(num5==24)num5=0;
break;
}
while(temp!
=0xf0)
{
temp=P3;
temp=temp&0xf0;
}
}
}
miao1=num1%10;//数值转换把数值在数码管上显示出来
miao2=num1/10;
fen1=num2%10;
fen2=num2/10;
shi1=num3%10;
shi2=num3/10;
fen11=num4%10;
fen22=num4/10;
shi11=num5%10;
shi22=num5/10;
if((num2==num4)&&(num3==num5))fm=0;
elsefm=1;
switch(xs)//用于选择显示电子钟还是定时
{
case0:
display(16,16,16,16,16,16);break;
case1:
display(0,0,fen11,fen22,shi11,shi22);break;
case2:
display(miao1,miao2,fen1,fen2,shi1,shi2);break;
}
}
}
voidDINSHI()interrupt1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
tt++;
}
voidinit()
{wei=0;
duan=0;
num1=0;
num2=0;
num3=0;
num4=1;
num5=1;
zt=0;
xs=2;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
voiddelay(uintz)
{
uintx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
voiddisplay(ucharmiao1,ucharmiao2,ucharfen1,ucharfen2,ucharshi1,ucharshi2)
{
duan=1;P0=table[miao1];duan=0;P0=0xff;
wei=1;P0=0xdf;wei=0;delay
(1);
duan=1;P0=table[miao2];duan=0;P0=0xff;
wei=1;P0=0xef;wei=0;delay
(1);
duan=1;P0=table[fen1];duan=0;P0=0xff;
wei=1;P0=0xf7;wei=0;delay
(1);
duan=1;P0=table[fen2];duan=0;P0=0xff;
wei=1;P0=0xfb;wei=0;delay
(1);
duan=1;P0=table[shi1];duan=0;P0=0xff;
wei=1;P0=0xfd;wei=0;delay
(1);
duan=1;P0=table[shi2];duan=0;P0=0xff;wei=1;P0=0xfe;wei=0;delay
(1);
}
第4章总结
由于很久没有接触单片机了,所以,对单片机的硬件不是很熟悉,这使我在编程时遇到很多麻烦,所以,我花了一部分时间去熟悉单片机PCB板,在程序编写过程中,遇到的问题主要有两个,一个是闹钟无法加入,另一个是数字钟不精确。
刚开始写的程序中显示部分只有一部分动态扫描,及正常时间的显示。
这时候的数字钟其实只是一个秒表,因为无法进行闹钟定时。
后来想到利用两组动态扫描程序,一组显示正常时间一组显示闹钟定时显示。
但当我将正常时间显示程序复制加上用作闹钟定时显示时发现切换到闹钟定时时显示的时间仍然在一秒一秒的增加跟正常时间显示一摸一样。
后来才知道闹钟定时所用的时分秒变量不能跟正常时间显示所用的变量相同。
后来,这个问题解决了,然而,闹钟的加入还依旧是一个问题,不过,经过我仔细的思考,一步一步的编程,这个问题也得到了解决
第5章参考文献
[1]王迎旭.《单片机原理与应用》.机械工业出版社.2005.8
[2]李全利、迟荣强.《单片机原理及接口技术》.高等教育社.2004.1
[3]孙和平、杨宁、白晶.《单片微机原理与接口技术》[M].冶金工业出版社2003
电气信息学院课程设计评分表
项目
评价
优
良
中
及格
差
设计方案合理性与创造性(10%)
开发板焊接及其调试完成情况*(10%)
硬件设计或软件编程完成情况(20%)
硬件测试或软件调试结果*(10%)
设计说明书质量(20%)
答辩情况(10%)
完成任务情况(10%)
独立工作能力(10%)
出勤情况(10%)
综合评分
指导教师签名:
________________
日期:
________________
注:
表中标*号项目是硬件制作或软件编程类课题必填内容;
此表装订在课程设计说明书的最后一页。
课程设计说明书装订顺序:
封面、任务书、目录、正文、评分表、附件(非16K大小的图纸及程序清单)。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子 时间 设计