C52单片机电子时钟电路设计 课程设计.docx
- 文档编号:10894675
- 上传时间:2023-02-23
- 格式:DOCX
- 页数:21
- 大小:1.04MB
C52单片机电子时钟电路设计 课程设计.docx
《C52单片机电子时钟电路设计 课程设计.docx》由会员分享,可在线阅读,更多相关《C52单片机电子时钟电路设计 课程设计.docx(21页珍藏版)》请在冰豆网上搜索。
C52单片机电子时钟电路设计课程设计
C52单片机电子时钟电路设计课程设计
单片机原理及应用课程设计
题目:
C52单片机电子时钟电路设计
姓名:
陶鹏鹏
专业:
电子科学与技术
班级:
121班
指导教师:
高海涛
安徽科技学院数理学院
摘要
电子钟是一种利用数字电路来显示秒、分、时的计时装置,与传统的机械钟相比,它具有走时准确、显示直观、无机械传动装置等优点,因而得到广泛应用。
随着人们生活环境的不断改善和美化,在许多场合都用到电子时钟。
现在高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟、石英钟、石英表都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调试,数字式电子钟用集成电路计时时,译码代替机械式传动,用数码管显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时、分、秒显示时间的功能,还可以进行时,分和秒的校对,片选的灵活性好。
本课程设计就是用一块89C52单片机和共阴极数码管显示屏及其他元器件设计出一个电子时钟。
用单片机的定时器来产生时钟信号,通过扫描几个按键来控制时钟。
把这几个模块的程序及原理图设计好后组合在一起就成了一个电子时钟。
关键词:
89C52单片机;共阴极数码管;定时器;石英晶体振荡器;
1、基于单片机的电子时钟电路设
1.1设计任务与要求
1.1.1设计目的:
(1)学习输出口的使用方法;
(2)学习定时/计数器的使用;
(3)学习中断的使用;
1.1.2设计要求:
电路的基本功能应包括数码显示时间、可以手动调节时间、定时闹铃等,制作出实物并调试演示成功。
1.2方案设计
方案:
该系统采用52系列单片机AT89C52作为控制核心,该系统可以完成运算控制、信号识别以及显示功能的实现。
由于用了单片机,使其技术比较成熟,应用起来方便、简单并且单片机周围的辅助电路也比较少,便于控制和实现。
整个系统具有极其灵活的可编程性,能方便地对系统进行功能的扩张和更改。
AT89C52单片机特点如下:
(1)单片机按照工业控制要求设计,抵抗工业噪声干扰优于一般的CPU,程序指令和数据都可以写在ROM里,许多信号通道都在同一芯片,因此可靠性高,易扩充。
(2)单片机有一般电脑所必须的器件,如三态双向总线,串并行的输入及输出引脚,可扩充为各种规模的微电脑系统。
(3)控制功能强:
单片机指令除了输入输出指令,逻辑判断指令外还有更丰富的条件分支跳跃指令。
图1.1时钟电路结构设计总框图
2、单片机应用系统简介
2.1AT89C52单片机的功能结构
如下图所示,单片机是属于三总线结构,89C52单片机功能方框图。
图2.1单片机内部结构框
2.2单片机的引脚定义及功能
图2.1双列直插式引脚分布
引脚功能:
VCC——工作电源+5V。
GND——电源地。
ALE/PROG——访问外部存储器时作为低8位地址锁存控制信号;在对EPROM编程时作为编程脉冲输入;在不访问外部存储器和非EPROM编程状态下,该脚输出频率为1/6单片机晶振频率的方波信号,该信号,可作为时钟脉冲,但在访问数据存储器时会丢失一个脉冲。
PSEN——外部程序存储器读选通信号。
EA/VPP——访问程序存储器控制信号。
当EA为低电平时,只读外部存储器,当EA为高电平时则先读内部程序存储器,再读外部程序存储器;这个引脚在编程时接编程电压VPP。
RST——复位信号,对系统复位信号要>2T。
XTAL1——片内振荡电路输入端。
XTAL2——片内振荡电路输出端。
P0-P3——输入输出端口。
2.3定时/计数器
2.3.1定时/计数器结构
图2.2定时/计数器结构
89C52单片机内部设有两个16位定时/计数器,简称为定时器0(T0)和定时器1(T1)。
定时器/计数器的结构如图2.2所示:
TMOD——方式控制寄存器,用于设定定时/计数器的工作方式
TCON——定时器控制寄存器,用于启动定时/计数器
IE——中断允许控制寄存器:
定时/计数器是微机的中断源
2.3.2工作原理
89C52系列单片机内部定时/计数器的工作原理可用图2.3来说明。
图2.3定时/计数器的工作原理
定时/计数功能选择:
当C/T=0时,为定时器功能,此时,C与A相连(计数脉冲为机器周期);当C/T=1时,为计数功能,此时,C与B相连(计数脉冲从P3.4或P3.5口输入)。
定时/计数器设置:
定时/计数器设置由工作方式控制寄存器(TMOD)、定时控制寄存器(TCON)以及中断允许寄存器(IE)共同完成。
2.4键盘接口技术
键盘分两类:
独立连接多键盘和矩阵式键盘,如图2.4所示。
图2.4独立式键盘
独立式按键结构独立式按键结构的键盘是最简单的键盘电路,每个键独立接入一根输入线。
这种键盘的优点是结构简单、使用十分方便,目前这种结构的键盘应用还相当普遍,这种键盘的缺点是随着键数数量的增加所占用的I/O口线也增加。
独立式按键结构的键盘在没有键按下时,数据输入线均为高电平,当有键按下时,与之对应的数据线将变成低电平。
因此可用位指令判别是否有键按下。
2.5复位操作
复位操作是单片机的初始化操作,单片机在进入运行前和在运行过程中程序出错或操作失误使系统不能正常运行时,需要进行复位操作。
复位操作后,程序将从0000H开始重新执行。
除此之外,复位操作还使单片机的ALE和PSEN引脚信号在复位期间变为无效状态。
单片机对复位信号的要求:
一是复位信号为高电平,二是复位信号有效持续时间不少于24个振荡脉冲(两个机器周期)以上。
在这里特别要提醒的是,在一个应用系统中,如果有几片单片机同时工作,在程序上有连接关系,系统复位时,应确保每一片单片机同时复位。
复位信号由单片机的RST引脚输入,复位操作有上电自动复位、按键复位和外部脉冲复位三种方式。
随着单片机技术的发展,目前有些单片机内部带有看门狗电路,当程序进行出错或进入了无休止循环时,看门狗电路将利用软件强行使系统复位。
2.6显示控制模块
图2.5八位共阴数码管显示
为了节省I/O口,采用动态显示的方法,用两片74HC573,用作段锁存和位锁存器。
3、硬件电路设计
3.1电子时钟的电路图
图3.1电子时钟电路原理图
3.2单元电路设计
3.2.1晶振、复位电路模块
图3.2晶振、复位电路图
晶振电路:
采用12Mhz的晶振,22pF的电容。
当MCS-5l系列单片机的复位引脚RST(全称RESET)出现2个机器周期以上的高电平时,单片机就执行复位操作。
如果RST持续为高电平,单片机就处于循环复位状态。
根据应用的要求,复位操作通常有两种基本形式:
上电复位和上电或开关复位。
上电复位要求接通电源后,自动实现复位操作。
上电后,保持RST一段高电平时间。
3.2.2键盘控制模块
图3.2键盘控制电路图
根据题目要求,只需要6个按键(如图3.2),选用独立按键模式。
这6个键的功能分别为:
KEY1:
时钟时位加键,每按一次时位的时间值加1;
KEY2:
时钟时位减键,每按一次时位的时间值减1;
KEY3:
时钟分位加键,每按一次分位的时间值加1;
KEY4:
时钟分位减键,每按一次分位的时间值减1;
KEY5:
时钟秒位加键,每按一次秒位的时间值加1;
KEY6:
时钟秒位减键,每按一次秒位的时间值减1;
3.2.3蜂鸣器电路模块
图3.3蜂鸣器电路模块
喇叭一脚与单片机的P1.1脚相连,一脚接地。
如图3.3所示。
3.2.4显示器电路模块
4、软件设计
4.1系统主程序设计
初始化程序:
设置单片机的定时器0工作在模式1(16位定时器),对定时器0赋初值,开启总中断和定时器中断,定时器开始计时,可计时24小时,为节省I/O口,用动态扫描的方法,用两片74HC573分别控制段选通和位选通,将时间显示到共阴极数码管上,计时完成后重新开始计时,蜂鸣器电路可通过P1^1口在整点时发声报时。
4.2主程序清单
根据硬件电路的连接以及我们要实现的功能,编写出了如下的C程序,该程序能够实现我们设计所需要的功能,具体的程序代码如下:
#include
unsignedcharfrq;
sbitH_KEY_ADD=P3^2;//定义按键输入端口
sbitH_KEY_DEC=P3^3;
sbitM_KEY_ADD=P3^4;
sbitM_KEY_DEC=P3^5;
sbitS_KEY_ADD=P3^6;
sbitS_KEY_DEC=P3^7;
#defineDataPortP0//定义数据端口程序中遇到DataPort则用P0替换
sbitLATCH1=P2^2;//定义锁存使能端口段锁存
sbitLATCH2=P2^3;//位锁存
sbitBeep=P1^1;//定义喇叭端口
bitBeepFlag;
unsignedcharcodedofly_DuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//显示段码值0~9
unsignedcharcodedofly_WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//分别对应相应的数码管点亮,即位码
unsignedcharTempData[8];//存储显示值的全局变量
unsignedcharh,m,s;
bitUpdateTimeFlag;
voidDelayUs2x(unsignedchart);//函数声明
voidDelayMs(unsignedchart);
voidDisplay(unsignedcharFirstBit,unsignedcharNum);
voidInit_Timer0(void);
voidBeep_OFF(void);
voidBeep_ON(void);
voidDisplay_Data_Operation(void);
voidmain(void)
{
unsignedcharnum=0;
H_KEY_ADD=1;//按键输入端口电平置高
H_KEY_DEC=1;
M_KEY_ADD=1;//按键输入端口电平置高
M_KEY_DEC=1;
S_KEY_ADD=1;//按键输入端口电平置高
S_KEY_DEC=1;
Init_Timer0();
while
(1)//主循环
{
if(!
H_KEY_ADD)//如果检测到低电平,说明按键按下
{
DelayMs(10);//延时去抖,一般10-20ms
if(!
H_KEY_ADD)//再次确认按键是否按下,没有按下则退出
{
while(!
H_KEY_ADD);//如果确认按下按键等待按键释放,没有释放则一直执行数码管扫描,防止闪烁
{
if(h<23)//加操作
h++;
}
}
}
if(!
H_KEY_DEC)//如果检测到低电平,说明按键按下
{
DelayMs(10);//延时去抖,一般10-20ms
if(!
H_KEY_DEC)//再次确认按键是否按下,没有按下则退出
{
while(!
H_KEY_DEC);//如果确认按下按键等待按键释放,没有释放则一直执行数码管扫描,防止闪烁
{
if(h>0)//减操作
h--;
}
}
}
if(!
M_KEY_ADD)//如果检测到低电平,说明按键按下
{
DelayMs(10);//延时去抖,一般10-20ms
if(!
M_KEY_ADD)//再次确认按键是否按下,没有按下则退出
{
while(!
M_KEY_ADD);//如果确认按下按键等待按键释放,没有释放则一直执行数码管扫描,防止闪烁
{
if(m<59)//加操作
m++;
}
}
}
if(!
M_KEY_DEC)//如果检测到低电平,说明按键按下
{
DelayMs(10);//延时去抖,一般10-20ms
if(!
M_KEY_DEC)//再次确认按键是否按下,没有按下则退出
{
while(!
M_KEY_DEC);//如果确认按下按键等待按键释放,没有释放则一直执行数码管扫描,防止闪烁
{
if(m>0)//减操作
m--;
}
}
}
if(!
S_KEY_ADD)//如果检测到低电平,说明按键按下
{
DelayMs(10);//延时去抖,一般10-20ms
if(!
S_KEY_ADD)//再次确认按键是否按下,没有按下则退出
{
while(!
S_KEY_ADD);//如果确认按下按键等待按键释放,没有释放则一直执行数码管扫描,防止闪烁
{
if(s<59)//加操作
s++;
}
}
}
if(!
S_KEY_DEC)//如果检测到低电平,说明按键按下
{
DelayMs(10);//延时去抖,一般10-20ms
if(!
S_KEY_DEC)//再次确认按键是否按下,没有按下则退出
{
while(!
S_KEY_DEC);//如果确认按下按键等待按键释放,没有释放则一直执行数码管扫描,防止闪烁
{
if(s>0)//减操作
s--;
}
}
}
TempData[0]=dofly_DuanMa[h/10];//分解显示信息,如要显示68,则68/10=668%10=8
TempData[1]=dofly_DuanMa[h%10];
TempData[2]=0x40;//显示一横
TempData[3]=dofly_DuanMa[m/10];
TempData[4]=dofly_DuanMa[m%10];
TempData[5]=0x40;
TempData[6]=dofly_DuanMa[s/10];
TempData[7]=dofly_DuanMa[s%10];
//Display(0,8);//显示全部8位
//主循环中添加其他需要一直工作的程序
if(BeepFlag==1)
{
BeepFlag=0;
DelayMs(500);//延时1ms,累加频率值
frq++;
}
}
}
/*------------------------------------------------
uS延时函数,含有输入参数unsignedchart,无返回值
unsignedchar是定义无符号字符变量,其值的范围是
0~255这里使用晶振12M,精确延时请使用汇编,大致延时
长度如下T=tx2+5uS
------------------------------------------------*/
voidDelayUs2x(unsignedchart)
{
while(--t);
}
/*------------------------------------------------
mS延时函数,含有输入参数unsignedchart,无返回值
unsignedchar是定义无符号字符变量,其值的范围是
0~255这里使用晶振12M,精确延时请使用汇编
------------------------------------------------*/
voidDelayMs(unsignedchart)
{
while(t--)
{
//大致延时1mS
DelayUs2x(245);
DelayUs2x(245);
}
}
/*------------------------------------------------
显示函数,用于动态扫描数码管
输入参数FirstBit表示需要显示的第一位,如赋值2表示从第三个数码管开始显示
如输入0表示从第一个显示。
Num表示需要显示的位数,如需要显示99两位数值则该值输入2
------------------------------------------------*/
voidDisplay(unsignedcharFirstBit,unsignedcharNum)
{
staticunsignedchari=0;
DataPort=0;//清空数据,防止有交替重影
LATCH1=1;//段锁存
LATCH1=0;
DataPort=dofly_WeiMa[i+FirstBit];//取位码
LATCH2=1;//位锁存
LATCH2=0;
DataPort=TempData[i];//取显示数据,段码
LATCH1=1;//段锁存
LATCH1=0;
i++;
if(i==Num)
i=0;
}
/*------------------------------------------------
定时器初始化子程序
------------------------------------------------*/
voidInit_Timer0(void)
{
TMOD|=0x01;//使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响
EA=1;//总中断打开
ET0=1;//定时器中断打开
TR0=1;//定时器开关打开
}
/*------------------------------------------------
定时器中断子程序
------------------------------------------------*/
voidTimer0_isr(void)interrupt1
{staticunsignedintt;
TH0=(65536-2000)/256;//重新赋值2ms
TL0=(65536-2000)%256;
Display(0,8);
t++;
if(500==t)
{
t=0;
s++;
if(60==s)
{
s=0;
m++;
if(60==m)
{
m=0;
h++;
if(24==h)
{
h=0;
}
}
}
}
{
if(s==0)
{
if(m==0)
{
BeepFlag=1;
Beep=!
Beep;
}
}
}
}
4.3系统仿真与调试
设计中分4个模块,测试的步骤如下:
(1)上电后,数码管显示00—00—00,之后秒钟自动增加。
(2)整点时蜂鸣器发声报时。
(3)按下KEY1,KEY3,KEY5,可分别看到数码管时位,分位,秒位时间数值的加值变化。
(4)按下KEY2,KEY4,KEY6,可分别看到数码管时位,分位,秒位时间数值的减值变化。
5、结论与心得
在此次单片机课程设计过程中,我经历了缺乏实践经验的失落,也经历了仿真成功而热情高涨。
特别是Proteus仿真软件的使用,经历了从陌生到熟悉的过程,从头开始学起,对着芯片原理进行仿真画图,刚刚开始时候感觉到有些难下手,因为是英文版的软件,很多东西都看不太明白,查找元件都是通过自己一个个来寻找的,才把仿真图画了出来,然后把写好的程序导入芯片,进行仿真。
可是一开始没有搞清楚电路的内部结构,仿真也一直不成功。
后来通过不断的调试,不断的修改,当看到程序正常运行的那一刻,心里真是特别的激动。
生活就是这样,汗水预示着结果,也见证着收获。
劳动是人类生存生活永恒不变的话题。
虽然这只是一次的较简单的课程制作,可是平心而论,也耗费了我不少的心血。
对我而言,知识上的收获重要,精神上的丰收更加可喜。
让我知道了学无止境的道理。
通过这次课程设计,我体会到了知识的重要性,在今后的学习中,我会更加努力。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C52单片机电子时钟电路设计 课程设计 C52 单片机 电子 时钟 电路设计