单片机电子时钟课程设计.docx
- 文档编号:3480457
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:26
- 大小:365.91KB
单片机电子时钟课程设计.docx
《单片机电子时钟课程设计.docx》由会员分享,可在线阅读,更多相关《单片机电子时钟课程设计.docx(26页珍藏版)》请在冰豆网上搜索。
单片机电子时钟课程设计
单片机原理及应用课程设计
专业:
电气及其自动化
设计题目:
电子时钟
班级:
学生姓名:
学号:
指导教师:
分院院长:
教研室主任:
电气工程学院
单片机原理及
应用课程设计
班级:
姓名:
学号:
指导教师:
撰写日期:
一、课程设计任务书
1.课程设计项目
电子时钟(LED显示)
2.设计内容
1)以MCS-51系列单片机为核心器件组成电子时钟控制系统;
2)利用提供单元模块构成硬件系统。
3)系统程序编制与调试;
4)电路系统的综合调试;
5)撰写课程设计论文;
6)完成课程设计论文答辩。
3.设计要求
1)以STC10F04XE单片机为控制核心,用单片机内部定时器为时钟源,设计电子时钟,使用4位数码管显示时、分,后两位数码管(分)的闪烁显示秒。
2)显示格式为:
“XXXX
3)用4个功能键操作来进行对时。
可自行定义各键的功能,也可按下述方式定义K1~K4键的功能如下。
K1—功能键,每按下一次对应的LED闪烁。
K2—移位键,每按下一次向后移一位。
K3—加1键
K4—减1键。
4.参考资料
[1]李广弟,朱月秀,王秀山编著.单片机基础.北京:
北京航空航天大学出版社,2001
[2]何立民编著.MCS-51系列单片机应用系统设计系统配置与接口技术.北京:
北京航空航天大学出版社,1999
[3]蔡美琴等编著.MCS-51单片机系统及应用.北京:
高等教育出版社.1992
5.设计进度(2012年6月13日至2012年6月17日)
时间
设计内容
第1-2天
查阅资料,方案比较、设计与论证,理论分析与计算
第3-5天
硬件电路调试
第6-8天
系统调试
第9-10天
书写报告、答辩
6.设计地点
实验楼323微机实验室
目录
第一章课程设计要求与内容分析2
1.1课程设计要求2
1.1.1课程设计项目2
1.1.2设计内容2
1.1.3设计要求2
1.2课程设计要求分析3
第二章系统的硬件与软件4
2.1系统单元电路组成4
2.1.1STC12C5A08S2单片机引脚介绍4
2.2数码管显示工作原理7
2.374LS164原理说明8
第三章控制系统的分析10
单片机原理及应用课程设计总结13
参考文献14
附录15
绪论
电子钟是一种利用数字电路来显示秒、分、时的计时装置,与传统的机械钟相比,它具有走时准确、显示直观、无机械传动装置等优点,因而得到广泛应用。
随着人们生活环境的不断改善和美化,在许多场合可以看到数字电子钟。
电子钟亦称数显钟(数字显示钟),是一种用数字电路技术实现时、分、秒计时的装置,与机械时钟相比,直观性为其主要显著特点,且因非机械驱动,具有更长的使用寿命,相较石英钟的石英机芯驱动,更具准确性。
电子钟已成为人们日常生活中必不可少的必需品,广泛用于个人家庭以及车站、码头、剧院、办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大地方便。
相对于其他时钟类型,它的特点可归结为“两强一弱”:
比机械钟强在观时显著,比石英钟强在走时准确,但是它的弱点为显时较为单调。
目前,在国内,电子钟因LCD数字显示效用直接有效,所以大多运用在城市的主要营业场所,以及车站、码头等公共场所。
在对公共场所的电子钟设定的时候,使用者还可根据周边的气候、温度等对LCD屏进行设置。
同时,因为LCD的显示耗电量很省,所以能够保持持续的工作效果。
夜间在睡觉的时候,床头如果放个带投影功能的电子钟,可以不用起床,直接让时间显示在天花板上,非常直观与有效。
现在生产的大部分汽车中,车内前方仪表盘旁边一般也都自带电子钟功能,采取蓝色背景光板成像效果,非常清晰。
第一章课程设计要求与内容分析
1.1课程设计要求
1.1.1课程设计项目
电子时钟(LED显示)
1.1.2设计内容
1)以MCS-51系列单片机为核心器件组成电子时钟控制系统;
2)利用提供单元模块构成硬件系统。
3)系统程序编制与调试;
4)电路系统的综合调试;
5)撰写课程设计论文;
6)完成课程设计论文答辩。
1.1.3设计要求
1)以STC10F04XE单片机为控制核心,用单片机内部定时器为时钟源,设计电子时钟,使用4位数码管显示时、分,后两位数码管(分)的闪烁显示秒。
2)显示格式为:
“XXXX”
3)用4个功能键操作来进行对时。
可自行定义各键的功能,也可按下述方式定义K1~K4键的功能如下。
K1—功能键,每按下一次对应的LED闪烁。
K2—移位键,每按下一次向后移一位。
K3—加1键,K4—减1键。
1.2课程设计要求分析
利用单片机和数码管显示电路呈现出设计要求,4位数码管前两位显示小时00-23,后两位显示分钟00-60,1秒钟闪烁一次,闪烁60次为一分钟。
k1键是功能键调时间,k2键是移位键选择数码管,k3键是加数键,k4是减数键。
将程序下载到单片机内,给单片机上电,由于初始值设的是0x00,所以数码管显示0000,并且后两位数码管每一秒闪烁一下。
按下k1键数码管停止闪烁,按k2键移位选择数码管,按下k3、k4键校准时间。
第二章系统的硬件与软件
2.1系统单元电路组成
以STC12C5A08S2单片机为控制核心,用单片机内部定时器为时钟源,设计电子时钟,使用4位数码管显示时,分,前两位显示时,后两位显示分,用数码管闪烁来显示秒。
图2-1STC12C5A08S2单片机
2.1.1STC12C5A08S2单片机引脚介绍
1.电源引脚
(1)VCC(40脚):
+5V电源。
(2)VSS(20脚):
数字地。
2.时钟引脚
(1)XTAL1(19脚):
片内振荡器反相放大器和时钟发生器电路输入端。
用片内振荡器时,该脚接外部石英晶体和微调电容。
外接时钟源时,该脚接外部时钟振荡器的信号。
(2)XTAL2(18脚):
片内振荡器反相放大器的输出端。
当使用片内振荡器,该脚连接外部石英晶体和微调电容。
当使用外部时钟源时,本脚悬空。
图2-251单片机引脚图
3.控制引脚
(1)RST(RESET,9脚):
复位信号输入,在引脚加上持续时间大于2个机器周期的高电平,可使单片机复位。
正常工作,此脚电平应≤0.5V。
当看门狗定时器溢出输出时,该脚将输出长达96个时钟振荡周期的高电平,可用于系统复位。
(2)
/VPP(31脚)
:
引脚第一功能:
外部程序存储器访问允许控制端。
,单片机读片内程序存储器中的程序(如4KB),但PC值超出片内Flash地址范围时(如4KB为0FFFH),将自动转向读取片外程序存储器空间中的程序(如1000H-FFFFH)。
,只读取外部的程序存储器中的内容,读取的地址范围为0000H~FFFFH,片内的4KBFlash程序存储器不起作用。
VPP:
引脚第二功能,对片内Flash编程压。
(3)ALE/
(30脚)
ALE为CPU访问外部程序存储器或外部数据存储器提供地址锁存信号,将低8位地址锁存在片外的地址锁存器中。
此外,单片机正常运行时,ALE端一直有正脉冲信号输出,此频率为时钟振荡器频率fosc的1/6。
可用作外部定时或触发信号。
注意:
每当MCS-51访问外部RAM时(执行MOVX类指令),要丢失一个ALE脉冲。
(4)
(29脚):
片外程序存储器读选通信号,低电平有效。
4.并行I/O口引脚
(1)P0口:
8位,漏极开路的三态双向I/O口
当外扩存储器及I/O接口芯片时,P0口作为低8位地址总线及数据总线的分时复用端口,可驱动8个LS型TTL负载。
P0口也可用作通用的I/O口,此时具有如下特性:
(1)需外加上拉电阻。
(2)这时为准双向口。
作为通用I/O输入,应先向端口写1。
(2)P1口:
8位,准双向I/O口,具有内部上拉电阻。
准双向I/O口,作为通用I/O输入时,应先向端口锁存器写1。
P1口可驱动4个LS型TTL负载。
(3)P2口:
8位,准双向I/O口,具有内部上拉电阻。
当MCS-51扩展外部存储器及I/O口时,P2口作为高8位地址总线用,输出高8位地址。
P2口也可作为普通的I/O口使用。
当作为通用I/O输入时,应先向端口输出锁存器写1。
P2口可驱动4个LS型TTL负载。
(4)P3口:
8位,准双向I/O口,具有内部上拉电阻。
可作为通用的I/O口使用。
作为通用I/O输入,应先向端口输出锁存器写入1。
可驱动4个LS型TTL负载。
P3口还可提供第二功能。
第二功能定义见表1-1,应熟记。
表2-1第二功能定义
2.2数码管显示工作原理
显示:
采用共阳极LED的动态显示方式,用扩展74LS164的并行输出做段选,74LS164的CLK接P3.1(TXD),数据输入端接P3.0(RXD)。
P1.4~P1.7作位选。
如图2-3所示。
键盘:
如图2-4所示为键盘接口,采用线性键盘,P2.3,P2.2,P2.1,P2.0分别对应的K1-K4。
数码管是一种把多个LED显示段集成在一起的显示设备。
有两种类型,一种是共阳型,一种是共阴型。
本次实验采用的是共阳型,共阳型就是把多个LED显示段的阳极接在一起,又称为公共端。
而数码管显示方法可分为静态显示和动态显示两种。
本次实验采用的是动态显示。
动态显示的原理是,各个数码管的相同段连接在一起,共同占用8位段引管线;每位数码管的阳极连在一起组成公共端。
利用人眼的视觉暂留性,依次给出各个数码管公共端加有效信号,在此同时给出该数码管加有效的数据信号,当全段扫描速度大于视觉暂留速度时,显示就会清晰显示出来。
图2-3数码管显示原理图
图2-4键盘显示原理图
2.374LS164原理说明
如图2-5为74LS164的引脚图
8位移位寄存器(串行输入,并行输出),当清除端(clear)为低电平时,输出端均为低电平。
串行数据输入端(A,B)可控制数据。
当A,B任意一个为低电平,则禁止新数据输入,在时钟端(clock)脉冲上升沿作用下Q0为低电平。
当A,B有一个为高电平,则另一个就允许输入数据,并在clock上升沿作用下决定Q0的状态。
引出端符号:
CLOCK时钟输入端
CLEAR同步清除输入端(低电平有效)
A,B串行数据输入端
QA-QH输出端
逻辑及封装图:
(双列直插式封装)
图2-574LS164的引脚图
第三章控制系统的分析
本系统的软件系统都用到的函数主要有键盘扫描,主函数,显示函数,延时函数,计时函数,校正函数,数据分离函数等。
下面对部分模块作一个简单的介绍。
完整程序请参考附录1。
#include"reg51.h"
#include
typedefbitBOOL;//位变量//
typedefunsignedcharUINT8;//无符号8位整型变量//
typedefsignedcharINT8;//有符号8位整型变量//
typedefunsignedintUINT16;//无符号16位整型变量//
typedefsignedintINT16;//有符号16位整型变量//
typedefunsignedlongUINT32;//无符号32位整型变量//
typedefsignedlongINT32;//有符号32位整型变量//
typedeffloatFP32;//单精度浮点数(32位长度)//
typedefdoubleFP64;//双精度浮点数(64位长度)//
sbitKeyFunction=P2^0;
sbitKeyMove=P2^1;
sbitKeyAdd=P2^2;
sbitKeySub=P2^3;
bitSetFinish=0;//设置完成标志
bitSecFlag=0;//秒闪烁标
bitSecFlag1=0;
UINT8KeyfunFlag,MoveFlag,AddFlag,SubFlag,Set1Timer,Set2Timer,Set3Timer,Set4Timer;
UINT8codeLEDVal[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09};//0-9
UINT8datanum[5];
UINT8datanum1[5];
UINT16Time,GmsTimer;
UINT8Sec,Min,Hour;
UINT8disp_value;
voidDisp(UINT16disp_value);//////显示函数声明
voidDisp1(UINT16disp_value);////显示函数声明
voidBcd(UINT16bcd_value);///////分离函数声明
voidDelayMs(UINT16delay);//////延时函数声明
voidDispSet(UINT16disp_value);//设置显示函数声明
voidKeyScan();//////键盘扫描函数声明
函数名称:
计时函数
voidTimer0()interrupt1
{
UINT8count;
TH0=(65536-50000)/256;//50000
TL0=(65536-50000)%256;//50000
count++;
if(SetFinish==1)
{
Min=Min+Set2Timer*10+Set1Timer;
if(Min>=60)
{
Min=Min-60;
Hour++;
}
Hour=Hour+Set4Timer*10+Set3Timer;
if(Hour>=24)
{
Hour=Hour-24;
}
SetFinish=0;//读取完成,清除数据
}
if(count<=5)
{
SecFlag=1;//秒钟闪烁标志位
}
else
{
SecFlag=0;
if(count==20)
{
Sec++;
count=0;
if(Sec==60)
{
Min++;
Sec=0;
if(Min==60)
{
Hour++;
Min=0;
if(Hour==24)//24小时制
{
Hour=0;
}
}
}
}
}
Time=Hour*100+Min;
}
///////////////////////////
voidTimer1()interrupt3
{UINT8count1;
TH1=(65536-50000)/256;//50000
TL1=(65536-50000)%256;//50000
count1++;
if(count1<=5)
{
SecFlag1=1;//秒钟闪烁标志位
}
else
{
SecFlag1=0;
if(count1==20)
{count1=0;}
}
}
单片机原理及应用课程设计总结
经过为期一周的单片机课设,通进对两个软件学习和完成一个电子时钟设计并进行简单调试,我学到了很多东西!
课程设计是培养学生综合运用所学知识、发现、提出、分析和解决实际问题。
锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过,随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域,在生活中可以说得是无处不在。
因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。
在老师耐心的指导下,我们顺利完成了这次单片机课程设计课题中的电子时钟设计,虽然课设时遇到过这样或那样的问题,但是在自己和组员的不断努力下,我们最终顺利的完成了实验。
通过这次的设计使我认识到自己对单片机方面的知识知道的太少了,对于书本上的很多知识还不能灵活运用,尤其是对程序设计语句的理解和运用,不能够充分理解每个语句的具体含义,导致编程的程序过于复杂,使得需要的存储空间增大。
损耗了过多的内存资源。
简单的软件与硬件学习使我了解到了人生学习的真谛,课设虽然结束了,但学习还没结束,电子的世界将为我打开,只有继续以从中获得感受作为指导思想走下去,在不断前进中去提升自己,才能真正提升自己的能力。
总结人:
2013年6月10日
参考文献
[1]李广弟,朱月秀,王秀山编著.单片机基础.北京:
北京航空航天大学出版社,2001
[2]何立民编著.MCS-51系列单片机应用系统设计系统配置与接口技术.北京:
北京航空航天大学出版社,1999
[3]蔡美琴等编著.MCS-51单片机系统及应用.北京:
高等教育出版社.1992
[4]唐耀武著51单片机应用设计与实践.2013
附录
//========================================================
//函数名称:
//========================================================
#include"reg51.h"
#include
typedefbitBOOL;//位变量//
typedefunsignedcharUINT8;//无符号8位整型变量//
typedefsignedcharINT8;//有符号8位整型变量//
typedefunsignedintUINT16;//无符号16位整型变量//
typedefsignedintINT16;//有符号16位整型变量//
typedefunsignedlongUINT32;//无符号32位整型变量//
typedefsignedlongINT32;//有符号32位整型变量//
typedeffloatFP32;//单精度浮点数(32位长度)//
typedefdoubleFP64;//双精度浮点数(64位长度)//
sbitKeyFunction=P2^0;
sbitKeyMove=P2^1;
sbitKeyAdd=P2^2;
sbitKeySub=P2^3;
bitSetFinish=0;//设置完成标志
bitSecFlag=0;//秒闪烁标
bitSecFlag1=0;
UINT8KeyfunFlag,MoveFlag,AddFlag,SubFlag,Set1Timer,Set2Timer,Set3Timer,Set4Timer;
UINT8codeLEDVal[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09};//0-9
UINT8datanum[5];
UINT8datanum1[5];
UINT16Time,GmsTimer;
UINT8Sec,Min,Hour;
UINT8disp_value;
voidDisp(UINT16disp_value);
voidDisp1(UINT16disp_value);
voidBcd(UINT16bcd_value);
voidDelayMs(UINT16delay);
voidDispSet(UINT16disp_value);
voidKeyScan();
//========================================================
//函数名称:
显示函数
//========================================================
voidDisp(UINT16disp_value)
{
UINT8i;
Bcd(disp_value);
for(i=1;i<5;i++)
{
if((SecFlag==1)&&((i==1)|(i==2)))//第几个管闪烁
{
SBUF=0xff;
while(TI==0);
TI=0;}
else
{
SBUF=LEDVal[num[i]];
while(TI==0);
TI=0;}}}
///////////////////////////////
voidDisp1(UINT16disp_value)
{
{
UINT8i;
Bcd(disp_value);
for(i=1;i<5;i++)
{
if((SecFlag1==1)&&((i==1)|(i==2)))//第几个管闪烁
{
SBUF=0xff;
while(TI==0);
TI=0;
}
else
{
SBUF=LEDVal[num[i]];
while(TI==0);
TI=0;}}}}
//========================================================
//函数名称:
设置显示函数
//========================================================
voidDispSet(UINT16disp_value)
{
UINT8i;
Bcd(disp_value);
for(i=1;i<5;i++)
{
if((MoveFlag==i)&&(SecFlag1==1))
{SBUF=0xff;
while(TI==0);
TI=0;
}
else
{
SBUF=LEDVal[num[i]];
while(TI==0);
TI=0;}}}
//========================================================
//函数名称:
延时函数
//========================================================
voidDelayMs(UINT16delay)
{
UINT8j;
while(delay--)
{
for(j=125;j>0;j--)
{;}}}
//========================================================
//函数名称:
数据分离函数
//========================================================
voidBcd1(UINT16bcd_value)
{
num1[4]=bcd_value/1000;
num1[3]
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 电子 时钟 课程设计