资源描述:
《基于51单片机的定时器设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、基于51单片机的定时器设计1.设计要求:以89C51单片机为核心,设计一个定时器,4位数码管显示,分别显示10分,分,10秒,秒。定时范围从1秒到59分59秒,由按键设置定时时间,按开始键后开始计时,每过一秒刷新一次计时时间,若计时时间到,停止计时,并在数码管上显示定时时间,同时LED灯闪烁,蜂鸣器响,提示时间到。2.仪器工作过程:a)通电或复位状态显示00.00;b)由按键设置定时时间;c)定时开始键按下后,开始定时,每一秒刷新一次计时时间;d)定时时间到,停止计时,4位数码管显示设定的时间,同时LED
2、灯闪烁,蜂鸣器响,提示时间到。3.硬件电路图:图1:单片机最小系统电路图2:数码管显示电路图3:按键、LED、蜂鸣器电路3.源程序:////////////////////////--基于51单片机的定时器程序设计--///////////////制作人:李上峰//班级:测控1004班//学号:201005010425//版本号:1.0.1//制作时间:2013.5.31//单位:西安石油大学//版权所有,转载请注明出处。//////////////////////////////////////////
3、///////////////////////////////////////////////////********************************************************************功能说明:1.四个独立按键控制各自的数码管,能独立的进行显示数码的更改;2.设置好定时时间后,按开始按键后,开始定时。3.到达定时时间后,数码管显示定时时间,同时LED灯闪烁,蜂鸣器报警。******************************************
4、*************************//*******************************************************************单片机资源分配说明:1.P1口对应四位数码管段选信号;2.P2.0~P2.4:对应按键KEY0~KEY4;3.P3.0~P3.3:对应四位数码管的位选通信号;(实际使用PNP三极管加强IO口的驱动能力)4.LED灯对应P3.4;蜂鸣器对应P3.5;*************************************
5、*******************************///头文件#include#include//类型重定义typedefunsignedcharINT8U;typedefunsignedintINT16U;//不带小数点的:0、1、2、3、4、5、6、7、8、9INT8Ucodetab1[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//带小数点的:0、1、2、3、4、5、6、7、8、9IN
6、T8Ucodetab2[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};////////////////////////////////////////////////////////////////////////////////////////////////////////////////////sbitKEY0=P2^0;//启动定时器按键sbitKEY1=P2^1;//调节第一个数码管数值按键sbitKEY2=P2^2;//调节第二个数
7、码管数值按键sbitKEY3=P2^3;//调节第三个数码管数值按键sbitKEY4=P2^4;//调节第四个数码管数值按键sbitSMG1=P3^0;//第一位数码管选通信号:“0”表示选通;sbitSMG2=P3^1;//第二位数码管选通信号:“0”表示选通;sbitSMG3=P3^2;//第三位数码管选通信号:“0”表示选通;sbitSMG4=P3^3;//第四位数码管选通信号:“0”表示选通;sbitLED=P3^4;//LED灯控制端sbitBUZ=P3^5;//蜂鸣器控制端//////////
8、///////////////////////////////////////////////////////////////////////////////////////////////////////////////////数码管数据显示子程序voiddisplay(INT8Uge,INT8Ushi,INT8Ubai,INT8Uqian);//按键检测子程序voidanjian(void);INT8Ucounter1=0