资源描述
定时器实验
摘要:近年来随着计算机在社会领域的渗透和大规模集成电路的发展,单片机的应用正在不断地走向深入,由于它具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,因此特别适合于与控制有关的系统,越来越广泛地应用于自动控制,智能化仪器,仪表,数据采集,军工产品以及家用电器等各个领域,单片机往往是作为一个核心部件来使用,在根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。
本次做的定时器是以单片机(89S51)为核心,结合相关的元器件(LED数码显示器、蜂鸣器和电平转化器等),再配以相应的软件,达到制作简易定时器的目的,文章的核心主要从硬件设计和软件编程两个大的方面。硬件电路设计主要包括中央处理单元电路、数码显示电路、串口电路等几部分组成,软件用C语言来实现。
关键词:89S51 LED数码显示器 蜂鸣器 串口电路 定时
一设计内容及要求
将按键定义为设置键、上翻键、下翻键、开始/取消键。数码管显当前设置时间与正在计时时间。可通过按键在1-99秒之间设置,按开始键启动计时,计时完成后驱动蜂鸣器发声提示。
二 硬件设计
2.1硬件电路图
硬件电路如上图1-1所示
2.2 89S51芯片介绍
89S51方框图如图1-2所示
芯片引脚如上图1-3所示
P3口第二功能如下表1-1所示
2.3蜂鸣器驱动电路介绍
蜂鸣器驱动电路如上图1-4所示
2.4串口电路介绍
串口电路如上图1-5所示
2.5晶振电路介绍
选用石英晶体振荡器,此电路在加电大约延迟10ms后振荡器起振,在XATL2引脚产生幅度为3V左右的正弦波时钟信号,其振荡频率主要有石英晶振的频率决定的。在电路中两个电容C1,C2的作用有两个:一是帮助振荡器起振;二是对振荡器的频率进行微调。
晶振电路如上图1-6所示
2.6数码管电路介绍
发光二极管LED是一种通电后能发光的半导体器件,其导电性质与普通二极管类似。LED数码显示器就是由发光二极管组合而成的1种新型显示器件。在单片机系统中应用非常普遍。
数码管电路如上图1-7所示
三软件设计
3.1程序流程图
程序流程图如上图3-1所示
3.2程序清单
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit gw=P1^4; //数码管各位位选
sbit sw=P1^5; //十位位选
sbit SPEAK=P1^6; //定义蜂鸣器
uchar num,num1,tt,shi,ge,t; //tt为设定值,t为当前计数值
uchar code table[]={
0x88,0x9F,0xA4,0x85,
0x93,0xC1,0xC0,0x8F,
0x80,0x81,0x82,0xC8,
0xE8,0xA1,0x86,0x8E}; //数码管显示段码
void delay(uint z); //延时子函数声明
void play(uchar aa); //数码管显示子函数声明
void SPK_Test( void ); //蜂鸣器控制子函数
void Init(); //初始化子函数声明
void KeyScanf(void); // 键盘扫描
void main()
{
Init(); //初始化
for(num1=60;num1>0;num1--)
play(tt);
t=tt;
while(1)
{
KeyScanf();
while(t==0)
{
TR0=0; //定时时间到停止定时器工作
SPK_Test();
t=60;
break;
}
play(t); //显示当前剩余定时时间
}
}
/**********************************************************
*名称:void Init()
*功能:初始化定时器0等
***********************************************************/
void Init()
{
EA=1; //开总中断
ET0=1; //开定时器0中断
tt=60; //设定默认定时时间 (一分钟 )
num=20;
TMOD=0x01; //设置定时器0为工作方式1
TH0=(65536-50000)/256; //定时器0设定50ms定时初值
TL0=(65536-50000)%256;
SPEAK=0;
}
/*******************************************
函数名:按键扫描
描 述:
*******************************************/
void KeyScanf(void)
{
if((P1&0x0f)!=0x0f) //检查按键
{
delay(20);
if((P1&0x0f)!=0x0f) //检查按键
{
delay(20);
if(!(P1&0x01))
while(1)
{ TR0=0;
play(tt);
if(!(P1&0x02))
{
tt++;
play(tt);
}
else if(!(P1&0x04))
{
tt--;
play(tt);
}
if(!(P1&0x08))
{
TR0=1;
t=tt;
break;
}
}
if((TR0==1)&&(!(P1&0x08)))
{
if(!(P1&0x08))
{
TR0=0; //停止
delay(20);
}
}
if((TR0==0)&&(!(P1&0x08)))
{
{
TR0=1; //启动
delay(20);
}
}
}
}
}
/**************************************************************
*名称: Delay_NS()
*功能: 长软件1ms延时
***************************************************************/
void delay(uint ms)
{
uchar i;
while(ms--) //ms毫秒软件延时
{
for(i = 63;i > 1;i--);
}
}
/************************************************************
函数名称:定时器0中断服务子程序
功能: 重装初并重启定时器值,
定时中断满20次(1s) , 计数减1
************************************************************/
void time0() interrupt 1 //定时器0中断子函数
{
if(num>0)
{
num--;
}
else if(num==0)
{
t--;
num=20;
}
TH0=(65536-50000)/256; //重装定时器初值
TL0=(65536-50000)%256;
ET0=1;
TR0=1; //重新启动T0
}
/**************************************************************
*名称: void play(uchar)
*功能: LED数码管显示0-F字符,
同时控制2个数码管显示对应的十六进制数
***************************************************************/
void play(uchar aa) //数码管显示子函数
{
shi=aa/10;
ge=aa%10;
P0=table[ge];
gw=0;
delay(20); // 延时 显示
gw=1;
P0=table[shi];
sw=0;
delay(20); // 延时 显示
sw=1;
}
/*******************************************
函数名:SPK_test()
描 述: 蜂鸣器控制
*******************************************/
void SPK_Test( void )
{
unsigned int i = 0;
unsigned char j,k,m = 34;
for(j = 0;j < 8;j ++)
{
m -=1;
for(i = 0;i < 2000;i ++ )
{
SPEAK = ~SPEAK;
for(k = m;k > 1;k--);
}
delay(15);
}SPEAK =0;
}
四设计心得
通过两周的学习和调试过程,终于完成了基于单片机的定时器的设计,并且完成了预期的目标。此次课程设计是我踏入了单片机应用领域的第一步。我学到了很东西,丰富了自己的经验,巩固、加深和扩大单片机应用的知识面,提高了综合及灵活运用所学知识解决实际问题的能力,能够用AT89S51开发设计具有一定功能的单片机控制系统,进行软、硬件设计及调试。
在软件调试过程中有也有许多的不足之处:例如编写调试程序有点不足。希望能够在以后的不断深入学习中能够弥补自己的不足之处。
在此感谢各位老师及同学们的帮助!
五参考资料
1. 李鸿.单片机原理及应用[M] .长沙:湖南大学出版社,2005.
2. 南京伟福实业有限公司.LAB6000U(USB接口)单片机/微控制器仿真实验系统[EB/OL] .http://www.wave-
3. 胡汉才.单片机原理及其应用[M] .北京:清华大学出版社,2004.
4. 何立民.单片机应用技术选编[M] .北京:北京航空航天大学出版社,2006.
5. 何立民.单片机应用文集1-8[M] .北京:北京航空航天大学出版社,2000.
展开阅读全文