利用C51单片机晶体管制作加一定时器
简介:
先位选再段选
搞清楚哪个口是控制位选的哪个口是控制段选的
例如本例中的P0口是控制位选的,P2口是控制段选的
利用人眼的视觉暂留,延时不能太长,且重复操作
本文将利用动态显示显示1000-9999的加一显示器
代码如下
#include<reg51.h>
#include <intrins.h>//包含移位标准库函数头文件#define uint unsigned int
#define uchar unsigned char
#define unint unsigned int
int wx[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff};
uchar code duma[]= {0x3F, 0x06, 0x5B, 0x4F,
0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F,};
void delay(int time)
{int x,y;for(x=time;x>0;x–)for(y=56;y>0;y–);}
void display(int temp)
{int ge,shi,bai,qian;
ge=temp%10;
qian=temp/1000;
bai=(temp-qian1000)/100 ;
shi=(temp-qian1000-bai*100)/10;
P2 =0x1c;
P0 = duma[qian];
delay(10);
P2 =0x18;
P0=duma[bai];
delay(10);
P2 =0x14;
P0 =duma[shi];
delay(10);
P2=0x10;
P0 = duma[ge];
delay(10);
}
void main()
{int xx,num=1000;
while(1)
{if(num==10000)num=1000;
for(xx=20;xx>0;xx–)display(num);
num++;}
}