单片机课程设计论文电子时钟设计.docx
- 文档编号:7863024
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:17
- 大小:119.81KB
单片机课程设计论文电子时钟设计.docx
《单片机课程设计论文电子时钟设计.docx》由会员分享,可在线阅读,更多相关《单片机课程设计论文电子时钟设计.docx(17页珍藏版)》请在冰豆网上搜索。
单片机课程设计论文电子时钟设计
单片机课程设计
个性化电子时钟设计
学院:
07电子信息工程
班级:
电子
(1)班
姓名:
李青倩20070714036
组员:
陈教敏20070714003
冯建峰20070714018
李知兰20070714040
指导老师:
李京兵
目录
摘要2
一、电子时钟2
1.1电子时钟简介2
1.2电子时钟的基本特点2
1.3电子时钟的原理3
二、单片机识的相关知识3
2.1单片机简介3
2.2单片机的发展史3
1.4位单片机3
2.8位单片机3
3.16位单片机4
4.32位单片机4
5.64位单片机4
2.3单片机的特点4
2.4AT89C51单片机介绍5
三、控制系统的硬件设计7
3.1单片机型号的选择7
3.2数码管显示工作原理7
3.374LS373介绍8
3.4整个电路原理图9
四、控制系统的软件设计9
4.1程序清单9
4.2仿真结果15
五、心得16
六、参考文献17
摘要
单片计算机即单片微型计算机。
由RAM,ROM,CPU构成,定时,计数和多种接口于一体的微控制器。
它体积小,成本低,功能强,广泛应用于智能产业和工业自动化上。
而51系列单片机是各单片机中最为典型和最有代表性的一种。
这次课程设计通过对它的学习,应用,从而达到学习、设计、开发软、硬的能力。
本设计主要设计了一个基于AT89C51单片机的电子时钟。
在数码管通过一个控制键转换来显示相应的时间和日期。
并通过多个控制键用来实现时间和日期的调节。
应用keil软件实现单片机电子时钟系统的程序设计,用Proteus的ISIS软件实现仿真。
该方法仿真效果真实、准确,节省了硬件资源。
关键字:
单片机时钟键盘控制
一、电子时钟
1.1电子时钟简介
1957年,Ventura发明了世界上第一个电子表,从而奠定了电子时钟的基础,电子时钟开始迅速发展起来。
现代的电子时钟是基于单片机的一种计时工具,采用延时程序产生一定的时间中断,用于一秒的定义,通过计数方式进行满六十秒分钟进一,满六十分小时进一,满二十四小时小时清零。
从而达到计时的功能,是人民日常生活补课缺少的工具。
1.2电子时钟的基本特点
现在高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟、石英钟、石英表都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调试,数字式电子钟用集成电路计时,译码代替机械式传动,用LED显示器代替指针显示进而显示时间和日期,减小了误差,这种表具有时、分、秒显示时间的功能和年月日显示日期的功能,还可以进行校对,片选的灵活性好。
1.3电子时钟的原理
该电子时钟由AT89C51,74LS373,BUTTON,数码管等构成,采用晶振电路作为驱动电路,由延时程序和循环程序产生的一秒定时,达到时分秒的计时,六十秒为一分钟,六十分钟为一小时,满二十四小时为一天,满三十天(闰年二月满二十九天,平年二月满二十八天)为一个月,满十二个月为一年。
电路中的键控1实现“年”和“分”的调节,键控2实现“月”和“时”的调节,键控3实现“日”和“分”的调节。
每按一次就加一。
二、单片机识的相关知识
2.1单片机简介
单片机全称为单片机微型计算机(SingleChipMicrosoftcomputer)。
从应用领域来看,单片机主要用来控制,所以又称为微控制器(MicrocontrollerUnit)或嵌入式控制器。
单片机是将计算机的基本部件微型化并集成在一块芯片上的微型计算机。
2.2单片机的发展史
1.4位单片机
1975年,美国德克萨斯仪器公司首次推出4位单片机TMS-1000;此后,各个计算机公司竞相推出四位单片机。
日本松下公司的MN1400系列,美国洛克威尔公司的PPS/1系列等。
四位单片机的主要应用领域有:
PC机的输入装置,电池充电器,运动器材,带液晶显示的音/视频产品控制器,一般家用电器的控制及遥控器,电子玩具,钟表,计算器,多功能电话等。
2.8位单片机
1972年,美国Intel公司首先推出8位微处理器8008,并于1976年9月率先推出MCS-48系列单片机。
在这以后,8位单片机纷纷面市。
例如,莫斯特克和仙童公司合作生产的3870系列,摩托罗拉公司生产的6801系列等。
随着集成电路工艺水平的提高,一些高性能的8位单片机相继问世。
例如,1978年摩托罗拉公司的MC6801系列及齐洛格公司的Z8系列,1979年NEC公司的UPD78XX系列。
这类单片机的寻址能力达64KB,片内ROM容量达4--8KB,片内除带有并行I\O口外,还有串行I\O口,甚至还有A\D转化器功能。
8位单片机由于功能强,被广泛用于自动化装置、智能仪器仪表、智能接口、过程控制、通信、家用电器等各个领域。
3.16位单片机
1983年以后,集成电路的集成度可达几十万只管/片,各系列16位单片机纷纷面市。
这一阶段的代表产品有1983年Intel公司推出的MCS-96系列,1987年Intel推出了80C96,美国国家半导体公司推出的HPC16040,NEC公司推出的783XX系列等。
16位单片机主要用于工业控制,智能仪器仪表,便携式设备等场合。
4.32位单片机
随着高新技术只智能机器人,光盘驱动器,激光打印机,图像与数据实时处理,复杂实时控制,网络服务器等领域的应用与发展,20世纪80年代末推出了32位单片机,如Motorlora公司的MC683XX系列,Intel的80960系列,以及近年来流行的ARM系列单片机。
32位单片机是单片机的发展趋势,随着技术的发展及开发成本和产品价格的下降,将会与8位单片机并驾齐驱。
5.64位单片机
近年来,64位单片机在引擎控制,智能机器人,磁盘控制,语音图像通信,算法密集的实时控制场合已有应用,如英国Inmos公司的TransputerT800是高性能的64位单片机。
2.3单片机的特点
1.单片机的存储器ROM和RAM时严格区分的。
ROM称为程序存储器,只存放程序,固定常数,及数据表格。
RAM则为数据存储器,用作工作区及存放用户数据。
2.采用面向控制的指令系统。
为满足控制需要,单片机有更强的逻辑控制能力,特别是单片机具有很强的位处理能力。
3.单片机的I/O口通常时多功能的。
由于单片机芯片上引脚数目有限,为了解决实际引脚数和需要的信号线的矛盾,采用了引脚功能复用的方法,引脚处于何种功能,可由指令来设置或由机器状态来区分。
4.单片机的外部扩展能力很强。
在内部的各种功能部件不能满足应用的需求时,均可在外部进行扩展,与许多通用的微机接口芯片兼容,给应用系统设计带来了很大的方便。
2.4AT89C51单片机介绍
VCC:
电源;GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
图1AT89C51单片机
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下表所示:
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2/INT0(外部中断0)
P3.3/INT1(外部中断1)
P3.4T0(记时器0外部输入)
P3.5T1(记时器1外部输入)
P3.6/WR(外部数据存储器写选通)
P3.7/RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
三、控制系统的硬件设计
3.1单片机型号的选择
通过对多种单片机性能的分析,最终认为89C51是最理想的电子时钟开发芯片。
89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的89C51是一种高效微控制器,而且它与MCS-51兼容,且具有4K字节可编程闪烁存储器和1000写/擦循环,数据保留时间为10年等特点,是最好的选择。
3.2数码管显示工作原理
数码管是一种把多个LED显示段集成在一起的显示设备。
有两种类型,一种是共阳型,一种是共阴型。
共阳型就是把多个LED显示段的阳极接在一起,又称为公共端。
共阴型就是把多个LED显示段的阴极接在一起,即为公共商。
阳极即为二极管的正极,又称为正极,阴极即为二极管的负极,又称为负极。
通常的数码管又分为8段,即8个LED显示段,这是为工程应用方便如设计的,分别为A、B、C、D、E、F、G、DP,其中DP是小数点位段。
而多位数码管,除某一位的公共端会连接在一起,不同位的数码管的相同端也会连接在一起。
即,所有的A段都会连在一起,其它的段也是如此,这是实际最常用的用法。
数码管显示方法可分为静态显示和动态显示两种。
静态显示就是数码管的8段输入及其公共端电平一直有效。
动态显示的原理是,各个数码管的相同段连接在一起,共同占用8位段引管线;每位数码管的阳极连在一起组成公共端。
利用人眼的视觉暂留性,依次给出各个数码管公共端加有效信号,在此同时给出该数码管加有效的数据信号,当全段扫描速度大于视觉暂留速度时,显示就会清晰显示出来。
图2共阴数码管
3.374LS373介绍:
373为三态输出的八D透明锁存器,373的输出端O0~O7可直接与总线相连。
当三态允许控制端OE为低电平时,O0~O7为正常逻辑状态,可用来驱动负载或总 线。
当OE为高电平时,O0~O7呈高阻态,即不驱动总线,也不为总线的负载,锁存器内部的逻辑操作不受影响。
当锁存允许端LE为高电平时,O随数据D而变。
当LE为低电平时,O被锁存在已建立的数据电平。
当LE端施密特触发器的输入滞后作用,使交流和直流噪声抗扰度被改善400mV。
引出端符号:
D0~D7数据输入端;OE三态允许控制端(低电平有效;LE锁存允许端;O0~O7输出端
图374LS373
3.4整个电路原理图
图4系统电路原理图
四、控制系统的软件设计
4.1程序清单
#include
#include
sbitP20=P2^0;/****定义端口****/
sbitkhour=P3^0;
sbitkmin=P3^1;
sbitknian=P3^2;
sbittiaonian=P3^3;
sbitspeaker=P3^7;
intj=-1;/*****定义变量,j用以控制扫描********/
bitflag=0,leap=0;/*****定义flag控制时分秒和年月日的显示,leap判断是否为闰年***/
charsecshi=0,secge=0,minshi=0,minge=0,hourshi=0,hourge=0;
chardayshi=0,dayge=0,monthshi=0,monthge=0,yearshi=0,yearge=0;
unsignedintnum=0,sec=0,min=0,hour=0;/****设置初始时间为00时0分0秒****/
unsignedintday=1,month=1,year=10;/****设置初始日期为2010年1月1日****/
charsaomiao[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
/****扫描数组,控制位选******/
charshijian[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
/*******共阴数码管的0,1,2,3,4,5,6,7,8,9********/
voiddelay(unsignedintz)/*******延时子程序******/
{unsignedintx,y;
for(x=z;x>0;x--)
for(y=10;y>0;y--);
}
voidtimer()interrupt1/*********定时器中断0********/
{
TH0=(65535-5000)/256;/******重新装入初值*****/
TL0=(65535-5000)%256;
num++;
j++;
if((year%4==0&&year%100!
=0)||(year%400==0))/*******判断是否为闰年******/
leap=1;/*******闰年,使leap=1******/
else
leap=0;/*******平年,使leap=0******/
if(num==150)/*****实验微调得num=150时大概为1s******/
{num=0;
sec++;/****秒自动加1*****/
}
if(sec==60)
{
sec=0;
min++;/****60s时,分自动加1,秒归0*****/
}
if(min==60)
{
min=0;
hour++;/****60分时,小时自动加1,分归0*****/
}
if(hour==24)
{
hour=0;
min=0;
sec=0;
day++;/****24时,天自动加1,时分秒归0*****/
}
/*************************************************************************************************************************************************************************月份的判断,平年时的2月和闰年时的2月,以及30天和31天的判断**************************************************************************************************************************************************************if((leap==1&&month==2&&day==30)||(leap==0&&month==2&&day==29))
{
day=1;
month++;/*****2月28天或29天时月自加1*****/
}
if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
{
if(day==32)
{
day=1;
month++;/*****月为31天达到时月自动加1*****/
}
}
if(month==4||month==6||month==9||month==11)
{
if(day==31)
{
day=1;
month++;/*****月为30天达到时月自动加1*****/
}
}
if(month==13)
{
year++;
month=1;/*********新的一年的开始**********/
}
secge=sec%10;
secshi=sec/10;
minge=min%10;
minshi=min/10;
hourge=hour%10;
hourshi=hour/10;
dayge=day%10;
dayshi=day/10;
monthge=month%10;
monthshi=month/10;
yearge=year%10;
yearshi=year/10;
P1=saomiao[j];/*******数码管的位选设置*********/
if(flag==1)/*******flag=1,显示年月日*******/
{
if(P1==0x80)P2=shijian[dayge];
if(P1==0x40)P2=shijian[dayshi];
if(P1==0x20)P2=0xbf;/******年与月之间的分隔符“—”的显示*****/
if(P1==0x10)P2=shijian[monthge];
if(P1==0x08)P2=shijian[monthshi];
if(P1==0x04)P2=0xbf;/******月与天之间的分隔符“—”的显示*****/
if(P1==0x02)P2=shijian[yearge];
if(P1==0x01)P2=shijian[yearshi];
}
else/*******flag=0,显示时分秒*******/
{
if(P1==0x80)P2=shijian[secge];
if(P1==0x40)P2=shijian[secshi];
if(P1==0x20)P2=0xbf;
if(P1==0x10)P2=shijian[minge];//xianshi
if(P1==0x08)P2=shijian[minshi];
if(P1==0x04)P2=0xbf;
if(P1==0x02&&hour<24)P2=shijian[hourge];/*****显示小时0~23*****/
if(P1==0x01&&hour<24)P2=shijian[hourshi];
}
if(j==7)
{
j=-1;
}
}
voidtimer1()interrupt0
/*************************************************************************************************************************************************************外部中断0,设置标志flag,按键未按下,flag=0,显示时分秒,按键按下,flag=1,显示年月日*************************************************************************************************************************************************************/
{
flag=!
flag;/******按下knian按钮****flag=1,x显示年月日*******/
}
voidcontrol()/*******时分的调整子程序********/
{
if(flag==0)/****显示时分秒的情况下做时分的调整******/
{if(kmin==0)
{
min++;
while(kmin==0);
if(min==60)
min=0;
}
if(khour==0)
{
hour++;
//sec=0xc0;
while(khour==0);
if(hour>23)
hour=0;
}
}
if(flag==1)/********显示年月日的情况下做年月日的调整**********/
{
if(kmin==0)
{
day++;
while(kmin==0);
}
if(khour==0)
{
month++;
while(khour==0);
if(month>12)
month=1;
}
if(tiaonian==0&&speaker==1)
{
year++;
while(tiaonian==0);
}
}
}
voidbaoshi()/******整点报时子程序********/
{
if(min==0&&sec<10)/*****整点闹钟响,响10秒*
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计 论文 电子 时钟 设计
![提示](https://static.bdocx.com/images/bang_tan.gif)