|
本帖最后由 卢OK 于 2020-12-3 14:14 编辑
#include<reg52.h> //头文件
#define uc unsigned char //宏定义
#define ui unsigned int //宏定义
sbit LED=P3^3;//定义LED变量
uc fen,shi,miao,num; //无符号字符型变量
uc code tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};/*0,1,2,3,4,5,6,7,8,9,.*///共阴极编码
void delay(ui x)//1ms延时函数
{
ui i,j;
for(i=0;i<x;i++)
for(j=0;j<121;j++);
}
void display()//扫描显示函数,高位到低位
{
/*数码管小时显示*/
P0=tab[shi/10];//给小时的十位送形
P2=0xdf;//11011111 //位选
delay(1); //延时动态扫描
P2=0xff; //关闭位选
P0=(tab[shi%10])|0x80;//给第二位后加“点
P2=0xef;//11101111
delay(1);
P2=0xff;
/*数码管分钟显示*/
P0=tab[fen/10];
P2=0xf7;//11110111
delay(1);
P2=0xff;
P0=(tab[fen%10])|0x80;//给第四位后加“点”
P2=0xfb;//11111011
delay(1);
P2=0xff;
/*数码管秒钟显示*/
P0=tab[miao/10];
P2=0xfd;//11111101
delay(1);
P2=0xff;
P0=tab[miao%10];
P2=0xfe;//11111110
delay(1);
P2=0xff;
}
void init()//初始化函数
{
/*初始时间为 01:30 */
shi=1; //小时初始
fen=30; //分钟初始
/*定时器中断初始化设置*/
TMOD=0x01;//设置定时器为定时器0工作方式为1
TH0=(65536-50000)/256; //赋初值
TL0=(65536-50000)%256; //赋初值
EA=1; //开总中断
ET0=1; //开定时器0中断
TR0=1; //启动定时器0
}
void main()//主函数
{
init();//调用初始化函数
while(1) //大循环
{
display(); //调用数码管显示函数
LED=0; //让LED灯亮起
}
}
/*完整程序下载压缩包查看*/
|
评分
-
查看全部评分
|