单片机数码管显示时间 |
您所在的位置:网站首页 › netflix软件专用加速器 › 单片机数码管显示时间 |
#include at89x51.h //头文件包含
#define uchar unsigned char //宏定义 #define uint unsigned int
#define ON 0 //定义0为打开 #define OFF 1 //定义1为关闭 #define LEDBus P0 //定义p1口为数码管段码口
sbit MIAO =P0^7; //秒点 sbit HOU_S=P2^7; //时十位位选 sbit HOU_G=P2^6; //时个位位选 sbit MIN_S=P2^5; //分十位位选 sbit MIN_G=P2^4; //分个位位选 sbit H_KEY=P1^0; //时调整键 sbit M_KEY=P1^1; //分调整键 bit SHAN; //闪烁标志位
uchar second,minute,hour; //定义秒、分、时寄存器
uchar code LEDTab[]={0xC0,0xF9,0xA4, //数码管段码表0--9 0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
void delay(uchar t); //延时函数 void init(); //初始化函数 void display(); //显示函数 void min_tiao(); //分调整函数 void hou_tiao(); //时调整函数 /*************************************** 函 数 名:main 功 能:主函数 说 明: 入口参数:无 返 回 值:无 ****************************************/ void main() { init(); //调用初始化函数 while(1) //主程序循环 { if(!H_KEY) hou_tiao(); //如果时调整键按下(为0),调用时调整函数 if(!M_KEY) min_tiao(); //如果分调整键按下(为0),调用分调整函数 display(); //调用显示函数 } } /*************************************** 函 数 名:init 功 能:初始化函数 说 明:初始化定时器及中断 入口参数:无 返 回 值:无 ***************************************/ void init() { TMOD=1;TH0=0X3C;TL0=0XB0; //定时器0模式1,50毫秒 ET0=1;TR0=1;EA=1; //开定时器0中断、启动定时器0、开总中断 } /*************************************** 函 数 名:display 功 能:显示函数 说 明: 入口参数:无 返 回 值:无 ***************************************/ void display() { LEDBus=LEDTab[minute%10]; //分个位送数码管显示 MIAO=SHAN; //秒点闪烁 MIN_G=ON; //打开分个位位选 delay(1); //显示1毫秒 MIN_G=OFF; //关闭分个位位选 LEDBus=LEDTab[minute/10]; //分十位送数码管显示 MIAO=SHAN; //秒点闪烁 MIN_S=ON; //打开分十位位选 delay(1); //显示1毫秒 MIN_S=OFF; //关闭分十位位选 LEDBus=LEDTab[hour%10]; //时个位送数码管显示 HOU_G=ON; //打开时个位位选 delay(1); //显示1毫秒 HOU_G=OFF; //关闭时个位位选 if(hour/10) //如果时十位为0,不显示十位数字 { LEDBus=LEDTab[hour/10]; //时十位送数码管显示 HOU_S=ON; //打开时十位位选 delay(1); //显示1毫秒 HOU_S=OFF; //关闭时十位位选 } } /***************************** |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |