单片机数码管显示时间

您所在的位置:网站首页 netflix软件专用加速器 单片机数码管显示时间

单片机数码管显示时间

#单片机数码管显示时间| 来源: 网络整理| 查看: 265

#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