×
单片机 > 单片机程序设计 > 详情

51单片机:6位数码管动态显示,从600000开始,每0.5秒加1

发布时间:2024-06-18 发布时间:
|

原理图

##//源码


#include

#include

#define uint unsigned long

#define uchar unsigned char

sbit N1 = P1^0;

sbit N2 = P1^1;

sbit N3 = P1^2;

sbit N4 = P1^3;

sbit N5 = P1^4;

sbit N6 = P1^5;

uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};


uint num;

int a,t1=0;


void delayms(uint xms) //延时函数

{

uint i,j;

for(i=xms;i>0;i--)

for(j=10;j>0;j--);

}

void display(uint num)

{

N1=0;

P0=table[(num%1000000)/100000];

delayms(1);

P0=0XFF;

N1=1;


N2=0;

P0=table[(num%100000)/10000];

delayms(1);

P0=0XFF;

N2=1;


N3=0;

P0=table[(num%10000)/1000];

delayms(1);

P0=0XFF;

N3=1;


N4=0;

P0=table[(num%1000)/100];

delayms(1);

P0=0XFF;

N4=1;


N5=0;

P0=table[(num%100)/10];

delayms(1);

P0=0XFF;

N5=1;


N6=0;

P0=table[num%10];

delayms(1);

P0=0XFF;

N6=1;


}


void TimeAdd() interrupt 1

{


TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

t1++;

if(t1==10) //20*50==1秒10*50=0.5秒

{

t1=0;

num++;

}

}





void main()

{

TMOD=0X01; // 定时器 初始化

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

EA=1; //中断总开关

ET0=1; //开定时器0 中断

TR0=1; //启动定时器0

num=600000; //初始值

while(1)

{

display(num);

}


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
异常和中断处理简介