数码管1秒钟自动加1
下面是我编的一个程序,实现数码管在0至100之间,数码管以1秒的速度自动加1;程序如下:#include
unsigned char table[]= {//数码管数组显示内容
0x3f,
0x06,
0x5b,
0x4f,
0x66,
0x6d,
0x7d,
0x07,
0x7f,
0x6f
};
int shi,ge,bai,a;//定义变量
unsigned int temp=0;//给数码管赋初值
void timer1();//显示程序调用声明
void delay()//数码管位选定时约1MS
{
int i,j;
for(i=1;i>0;i--)
for(j=120;j>0;j--);
}
void main()
{
TMOD |= 0x10;//定时设置的打开
TMOD &= 0xdf;
TH1 = (65536-50000)/256;
TL1 = (65536-50000)&256;
ET1 = 1;
TR1 = 1;
while(1)//实现位选和段选的操作及调用
{
bai=temp/100;
shi = temp%100/10;
ge = temp%10;
timer1();
P0 = 0x00;
P1 = table[bai];
delay();
P0 = 0x01;
P1 = table[shi];
delay();
P0 = 0x02;
P1 = table[ge];
delay();
}
}
void timer1() //段选内容,实现1S自动加1功能
{
if(TF1==1)
{
TF1=0;
TH1 = (65536-50000)/256;
TL1 = (65536-50000)&256;
a++;
if(a==20)
{
a=0;
temp++;
if(temp==100)
temp=0;
}
}
}
当然,还是声明,我的开发板是由P0.1至P0.3控制位选的,由P1口控制段选内容的。
数码管自动加 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)