六位共阴数码管显示时钟程序
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
dula=1;
P0=table[h%10]; //显示个位
dula=0;
delay(1);
wela=1;
P0=0xfd; //DS2点亮
wela=0;
P0=0xff; //消隐
dula=1;
P0=0x80; //显示'.'
dula=0;
delay(1);
}
/************初始化************/
TL0=(65536-50000)%256;
}
P0=table[s/10]; //显示十位
dula=0;
delay(1);
wela=1;
P0=0xdf; //DS6点亮
wela=0;
P0=0xff; //消隐
dula=1;
P0=table[s%10]; //显示个位
dula=0;
delay(1);
}
/******************************************************************
void DisplayHour(uchar h)
{
wela=1;
P0=0xfe; //DS1点亮
wela=0;
P0=0xff; //消隐
dula=1;
P0=table[h/10]; //显示十位
dula=0;
delay(1);
wela=1;
P0=0xfd; //DS2点亮
wela=0;
P0=0xff; //消隐
minute++; //分钟计数变量加1
}
if(minute==60)
{
minute=0; //如果分钟计满60,将分钟计数变量清0
hour++; //小时计数变量加1
}
if(hour==24)
{
hour=0; //如果小时计满24,将小时计数变量清0
}
TH0=(65536-50000)/256; //定时器重新赋初值
void interserve() interrupt 1 //using Time0
{
int_time++;
if(int_time==1)//控制速度
{
int_time=0; //中断计数变量清0
second++; //秒计数变量加1
}
if(second==60)
{
second=0; //如果秒计满60,将秒计数变量清0
函数功能:显示分钟的子程序
入口参数:m
********************************************************************/
void DisplayMinute(uchar m)
{
wela=1;
P0=0xfb; //DS3点亮
wela=0;
P0=0xff; //消隐
void main()
{
init();
while(1)
{
DisplaySecond(second); //调用秒显示子程序
delay(1);
DisplayMinute(minute); //调用分钟显示子程序
delay(1);
DisplayHour(hour); //调用小时显示子程序
delay(1);
void delay(uint z) //延时函数,延时约1ms
{
uchar x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
/******************************************************************
函数功能:显示秒的子程序
second=0; //秒计数变量初始化
minute=0; //分钟计数变量初始化
hour=0; //小时计数变量初始化
}
/******************************************************************
函数功能:主函数
********************************************************************/
}
}பைடு நூலகம்
/******************************************************************
函数功能:定时器T0的中断服务子程序
********************************************************************/
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
uchar int_time ; //中断次数计数变量
uchar second; //秒计数变量
uchar minute; //分钟计数变量
uchar hour; //小时计数变量
wela=0;
P0=0xff; //消隐
dula=1;
P0=0x80; //显示'.'
dula=0;
delay(1);
}
/******************************************************************
函数功能:显示小时的子程序
入口参数:h
********************************************************************/
入口参数:s
********************************************************************/
void DisplaySecond(uchar s)
{
wela=1;
P0=0xef; //DS5点亮
wela=0;
P0=0xff; //消隐
dula=1;
dula=1;
P0=table[m/10]; //显示十位
dula=0;
delay(1);
wela=1;
P0=0xf7; //DS4点亮
wela=0;
P0=0xff; //消隐
dula=1;
P0=table[m%10]; //显示个位
dula=0;
delay(1);
wela=1;
P0=0xf7; //DS4点亮
void init()
{
TMOD=0x01; //使用定时器T0
EA=1; //开中断总允许
ET0=1; //允许T0中断
TH0=(65536-50000)/256; //定时器高八位赋初值
TL0=(65536-50000)%256; //定时器低八位赋初值
TR0=1;
int_time=0; //中断计数变量初始化
#include<reg52.h> //包含51单片机寄存器定义的头文件
#define uchar unsigned char
#define uint unsigned int
sbit dula=P2^6;
sbit wela=P2^7;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
P0=table[h%10]; //显示个位
dula=0;
delay(1);
wela=1;
P0=0xfd; //DS2点亮
wela=0;
P0=0xff; //消隐
dula=1;
P0=0x80; //显示'.'
dula=0;
delay(1);
}
/************初始化************/
TL0=(65536-50000)%256;
}
P0=table[s/10]; //显示十位
dula=0;
delay(1);
wela=1;
P0=0xdf; //DS6点亮
wela=0;
P0=0xff; //消隐
dula=1;
P0=table[s%10]; //显示个位
dula=0;
delay(1);
}
/******************************************************************
void DisplayHour(uchar h)
{
wela=1;
P0=0xfe; //DS1点亮
wela=0;
P0=0xff; //消隐
dula=1;
P0=table[h/10]; //显示十位
dula=0;
delay(1);
wela=1;
P0=0xfd; //DS2点亮
wela=0;
P0=0xff; //消隐
minute++; //分钟计数变量加1
}
if(minute==60)
{
minute=0; //如果分钟计满60,将分钟计数变量清0
hour++; //小时计数变量加1
}
if(hour==24)
{
hour=0; //如果小时计满24,将小时计数变量清0
}
TH0=(65536-50000)/256; //定时器重新赋初值
void interserve() interrupt 1 //using Time0
{
int_time++;
if(int_time==1)//控制速度
{
int_time=0; //中断计数变量清0
second++; //秒计数变量加1
}
if(second==60)
{
second=0; //如果秒计满60,将秒计数变量清0
函数功能:显示分钟的子程序
入口参数:m
********************************************************************/
void DisplayMinute(uchar m)
{
wela=1;
P0=0xfb; //DS3点亮
wela=0;
P0=0xff; //消隐
void main()
{
init();
while(1)
{
DisplaySecond(second); //调用秒显示子程序
delay(1);
DisplayMinute(minute); //调用分钟显示子程序
delay(1);
DisplayHour(hour); //调用小时显示子程序
delay(1);
void delay(uint z) //延时函数,延时约1ms
{
uchar x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
/******************************************************************
函数功能:显示秒的子程序
second=0; //秒计数变量初始化
minute=0; //分钟计数变量初始化
hour=0; //小时计数变量初始化
}
/******************************************************************
函数功能:主函数
********************************************************************/
}
}பைடு நூலகம்
/******************************************************************
函数功能:定时器T0的中断服务子程序
********************************************************************/
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
uchar int_time ; //中断次数计数变量
uchar second; //秒计数变量
uchar minute; //分钟计数变量
uchar hour; //小时计数变量
wela=0;
P0=0xff; //消隐
dula=1;
P0=0x80; //显示'.'
dula=0;
delay(1);
}
/******************************************************************
函数功能:显示小时的子程序
入口参数:h
********************************************************************/
入口参数:s
********************************************************************/
void DisplaySecond(uchar s)
{
wela=1;
P0=0xef; //DS5点亮
wela=0;
P0=0xff; //消隐
dula=1;
dula=1;
P0=table[m/10]; //显示十位
dula=0;
delay(1);
wela=1;
P0=0xf7; //DS4点亮
wela=0;
P0=0xff; //消隐
dula=1;
P0=table[m%10]; //显示个位
dula=0;
delay(1);
wela=1;
P0=0xf7; //DS4点亮
void init()
{
TMOD=0x01; //使用定时器T0
EA=1; //开中断总允许
ET0=1; //允许T0中断
TH0=(65536-50000)/256; //定时器高八位赋初值
TL0=(65536-50000)%256; //定时器低八位赋初值
TR0=1;
int_time=0; //中断计数变量初始化
#include<reg52.h> //包含51单片机寄存器定义的头文件
#define uchar unsigned char
#define uint unsigned int
sbit dula=P2^6;
sbit wela=P2^7;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,