单片机数码管动态显示程序

  • 格式:doc
  • 大小:30.00 KB
  • 文档页数:2

下载文档原格式

  / 7
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

//动态显示

#include

#include

#define uint unsigned int

#define uchar unsigned char

uchar aa,shi,fen,miao,shi1,shi2,fen1,fen2,miao1,miao2;

uchar code table[]={

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71};

void init();//初始化函数

void display(uchar shi1,uchar shi2,uchar fen1,uchar fen2,uchar miao1,uchar miao2);//显示函数void delay(uint z);//延时函数

void main()//主函数

{

init();

while(1)//等待中断,并不停地动态扫描,定时器的时间到了,则中断发生,然后时间数值变化一次,时间不到则不停动态扫描。

{

shi1=shi/10;//数值变化

shi2=shi%10;

fen1=fen/10;

fen2=fen%10;

miao1=miao/10;

miao2=miao%10;

display(shi1,shi2,fen1,fen2,miao1,miao2);//显示函数

}

}

void delay(uint z)//延时子函数

{ uint x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

void init()//初始化变量,开启中断

{ shi=0;

fen=0;

miao=0;

TMOD=0x01;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

EA=1;

ET0=1;

TR0=1;

}

void display(uchar shi1,uchar shi2,uchar fen1,uchar fen2,uchar miao1,uchar miao2)//显示子函数{

P2=0x02;//位选

P0=table[shi1];//段选

delay(1);

P2=0x03;

P0=table[shi2];

delay(1);

P2=0x04;

P0=table[fen1];

delay(1);

P2=0x05;

P0=table[fen2];

delay(1);

P2=0x06;

P0=table[miao1];

delay(1);

P2=0x07;

P0=table[miao2];

delay(1);

}

void T0_time() interrupt 1 //中断服务程序

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

aa++;

if(aa==20)//一秒钟

{

aa=0;

miao++;

if(miao==60)//秒钟

{

miao=0;

fen++;

if(fen==60)//分钟

{

fen=0;

shi++;

if(shi==24)//时钟

{

shi=0;

}

}

}

}

}