简易数字钟的设计.doc
- 文档编号:8855122
- 上传时间:2023-05-15
- 格式:DOC
- 页数:19
- 大小:910.77KB
简易数字钟的设计.doc
《简易数字钟的设计.doc》由会员分享,可在线阅读,更多相关《简易数字钟的设计.doc(19页珍藏版)》请在冰点文库上搜索。
单片机课程设计
科信学院
课程设计说明书
(2012/2013学年第二学期)
课程名称:
单片机课程设计
题目:
简易数字钟课程设计
专业班级:
学生姓名:
学号:
指导教师:
苗敬利、王立国等
设计周数:
2周
设计成绩:
2013年06月27日
目录
目录
1设计任务描述 1
1.1设计题目:
简易数字钟的设计 1
1.2设计要求:
1
1.2.1设计目的 1
1.2.2基本要求 1
1.2.3元件清单 1
2设计方框图 2
2.1数字钟硬件部分示意图 2
2.2数字钟软件部分组成框图 3
2.2.1时间调整的程序流程 3
2.2.2时钟显示程序流程 4
3各部分模块介绍 5
3.1单片机AT89C52芯片分析 5
3.2晶振电路模块 6
3.3复位电路模块 6
3.4显示模块 7
3.5时间校对按键模块 8
4简易数字钟源程序 8
源程序 8
5数字钟源程序的仿真 12
5.1编译、连接 12
5.2仿真 12
5.3生成HEX文件 13
6数字钟硬件原理图 15
总原理图 15
小结 16
17
1设计任务描述
1.1设计题目:
简易数字钟的设计
1.2设计要求:
1.2.1设计目的
熟练使用Keil开发环境,具备编写单片机程序(汇编语言或C语言)的初步能力,通
过完成本课题的软硬件设计,使同学们了解单片机实例的整个开发流程。
1.2.2基本要求
⑴简要说明
⑵任务和要求
设计简易的数字钟,该数字钟满足以下要求:
设计一台以MCS-5为核心的简易数字钟。
四位数码管显示小时和分钟,中间那个点来区分小时和分钟;每秒用一个LED灯闪烁一下;四个按键,分别为:
选择键,加键,减键,确认键。
时间要精确,整点报时,声音间隔一秒,并且可以调整时间,调整位闪烁提示。
1.2.3元件清单如下:
元件名称
型号
数量
用途
元件名称
型号
数量
用途
单片机
AT89S51
1
控制核心
电阻
10KΩ
7
按键电路
晶振
12MHz
1
晶振电路
按键
4
电容
30pF
2
数码管
8段4位
4
显示电路
电解电容
30uF/10V
1
复位电路
电阻
330Ω
7
电阻
1kΩ
1
电阻
100Ω
1
蜂鸣器及其驱动电路
按键
200Ω
14
蜂鸣器
DC5V
1
电源
+5V/0.5A
1
提供+5V电源
三极管
9013
4
2设计方框图
2.1数字钟硬件部分示意图
该简易数字钟硬件部分主要由晶振、手动复位、单片机AT89C52、数码管显示、时间调整按键模块组成。
框图如下:
单片机
AT89S52
电源
复位电路
晶振电路
声音提示
数码管显示
按键电路
基于AT89S51单片机数字钟系统框图
图2.1数字钟硬件系统示意图
2.2数字钟软件部分组成框图
2.2.1时间调整的程序流程
Y
Y
N
INT1中断服务子程序
时钟分位调整
时钟分位+1
1小时到
时钟分位清零
返回
时钟小时位调整?
时钟小时+1
24小时到
时钟小时位清零
N
Y
图2.2时间调整程序流程框图
2.2.2时钟显示程序流程
T1中断服务子程序
重置T1定时初值
1秒到?
秒位+1
1分到?
分位+1、秒位清零
1小时到?
小时位+1、分位清零
24小时到?
小时位清零
返回
N
N
N
N
图2.324小时时钟
3各部分模块介绍
3.1单片机AT89C51芯片分析
AT89C51单片机引脚图如下:
图3.1AT89C51引脚图
该单片机是标准的40引脚双列直插式集成电路芯片,其各个引脚功能如下:
VCC:
+5V电源。
VSS:
接地。
RST:
复位信号。
当输入的复位信号延续两个周期以上的高电平时即为有效,用来完成单片机的初始化操作。
XTAL1和XTAL2:
外接晶体引线端。
当使用芯片内部时钟时,此二引线端用于外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。
PO口:
P0口作为一个8位漏极开路双向I/O口,当作输出口使用时,必须接上拉电阻才有高电平输出;当作输入口使用时,必须先向电路中的锁存器写入“1”,使FET截止,以避免锁存器为“0”时对引脚输入的干扰。
本次设计采用P0口作为数码管段选输出使用。
P2口:
内部有上拉电阻的8位I/O口,本次设计中作为数码管位选输出使用。
3.2晶振电路模块
在AT89C51芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,输出端为引脚XTAL2。
而在芯片内部,XTAL1和XTAL2之间跨接晶体振荡器和微调电容,从而构成一个稳定的自激振荡器。
时钟电路产生的振荡脉冲经过触发器进行二分频之后,才成为单片机的时钟脉冲信号。
图3.2晶振电路
3.3复位电路模块
单片机复位的条件是:
必须使RST/VPD或RST引脚加上两个机器周期(即24个振荡周期)的高电平。
例如,若时钟频率为12MHz,每个机器周期为1us,则只需要2us以上时间的高电平,在RST引脚出现高电平后的第二个机器周期执行复位。
单片机常见的复位如图所示。
电路为上电复位,它利用电容充电来实现的。
在接电瞬间,RESET端的电位与VCC相同,随着充电电流的减少,RESET的电位逐渐下降。
只要保证RESET为
高电平的时间大于两个机器周期,便能正常复位。
该电路除具有上电复位功能外,若要复
位,只需按图中的RESET键,此时电源VCC经电阻分压,在RESET端产生一个复位高
电平。
图3.3复位电路
3.4显示模块
考虑采用动态显示部分,用P0口作为数码管数据(段选),P2口作为数码管控制(位选)。
动态显示通常都是采用动态扫描的方法进行显示,即循环点亮每一个数码管,这样虽然在任意时刻都只有一位数码管被点亮,但由于人眼存在视觉暂留效应,只要每位数码管间隔时间足够短,就可以给人以通俗显示的感觉。
上面第一部分已提到,我们采用了50ms左右的时间间隔,并且是合理的。
6位数码管,实验室的硬件是共阴极的,故我们的数码表采用{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};
图3.4显示模块
3.5时间校对按键模块
本次设计要求了该简易数字钟必须具备时、分的调整功能。
故必须接入2个简单的按键(本设计设置问p1.4调时、p1.5调分,按键为实验箱单次脉冲按键模块),并且在软件部分必须引入这2个独立按键的子程序。
图3.5时间校对按键电路
4简易数字钟源程序
源程序
#include
unsignedcharcodedispcode[]={0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,0x00};
unsignedchardispbitcode[]={0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf,0x7f};
unsignedchardispbuf[8]={0,0,16,0,0,16,0,0};
unsignedchardispbitcnt;
unsignedcharsecond;
unsignedcharminite;
unsignedcharhour;
unsignedinttcnt;
unsignedcharmstcnt;
unsignedchari,j;
sbitP3_0=P3^0;
sbitP3_1=P3^1;
sbitP3_2=P3^2;
voidmain(void)
{
P2=0X00;
TMOD=0x02;
TH0=0x06;
TL0=0x06;
TR0=1;
ET0=1;
EA=1;
while
(1)
{
if(P3_0==0)
{
for(i=5;i!
=0;i--)
for(j=248;j!
=0;j--);
if(P3_0==0)
{
second++;
if(second==60)
{
econd=0;
}
dispbuf[0]=second%10;
dispbuf[1]=second/10;
while(P3_0==0);
}
}
if(P3_1==0)
{
for(i=5;i!
=0;i--)
for(j=248;j!
=0;j--);
if(P3_1==0)
{
minite++;
if(minite==60)
{
minite=0;
}
dispbuf[3]=minite%10;
dispbuf[4]=minite/10;
while(P3_1==0);
}
}
if(P3_2==0)
{
for(i=5;i!
=0;i--)
for(j=248;j!
=0;j--);
if(P3_2==0)
{
hour++;
if(hour==24)
{
hour=0;
}
dispbuf[6]=hour%10;
dispbuf[7]=hour/10;
while(P3_2==0);
}
}
}
}
voidt0(void)interrupt1using0
{
mstcnt++;
if(mstcnt==8)
{
mstcnt=0;
P0=dispcode[dispbuf[dispbitcnt]];
P2=dispbitcode[dispbitcnt];
dispbitcnt++;
if(dispbitcnt==8)
{
dispbitcnt=0;
}
}
tcnt++;
if(tcnt==4000)
{
tcnt=0;
second++;
if(second==60)
{
second=0;
minite++;
if(minite==60)
{
minite=0;
hour++;
if(hour==24)
{
hour=0;
}
}
}
dispbuf[0]=second%10;
dispbuf[1]=second/10;
dispbuf[3]=minite%10;
dispbuf[4]=minite/10;
dispbuf[6]=hour%10;
dispbuf[7]=hour/10;
}
}
5数字钟源程序的仿真
5.1仿真图
5.2编译、连接
将数字钟源程序输入到keil软件,建立工程项目,添加完成程序的编译、连接,通过后无错误。
如图所示:
图5.1编译、连接图
5.3仿真
生成HEX文件
利用keil将编译、连接无误的源程序生成hex文件,准备与protues联调进行仿真。
图6.2.1从keil里生成十六进制文件
6数字钟硬件原理图
6.1总原理图
图6.1数字钟硬件原理图
7课设感受
本次课程设计我们小组选择的课题是简易数字钟的设计。
主要的设计思路是运用5个单元模块的组合来实现符合设计要求的数字钟。
五大模块设置合理,各自发挥自己的作用,成为一个整体。
分模块来调试,最终实现。
通过这次课程设计,我学会了很多书本上学不到的知识,熟练掌握了Keil的开发环境,也加深了软件的使用。
这个课设从自己找相关软件、装软件、学软件再到仿真,充满许多艰辛,付出了很多汗水和时间,在同组人员互相鼓励,互相探讨,互相竞争的团队协作下,克服这探索道路上的种种困难,最后终于做成了一份完整的课程设计。
心里还是不免有一种成功后的喜悦之情。
总之,回顾这一次单片机原理及应用的课程设计,让人感慨颇多,既为这门学科知识之深奥、奇妙所吸引,更为那些设计出那些经典程序的前人所折服。
学习的道路是没有尽头的,也是艰辛的,但只要我们能够独立去思考、去想、去做,那么我们总能学到真正的实用知识。
课程设计
评语
课程设计
成绩
指导教师
(签字)
年月日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 简易 数字 设计