本文包含原理图、PCB、源代码、封装库、中英文PDF等资源
您需要 登录 才可以下载或查看,没有账号?注册会员
×
·这是一个LED使用的例子,使用四位LED显示一个数。
·T1用于动态扫描,时间以稳定显示为准。本程序已经实物调过了。
·下面是源程序及一些说明 更多源码及教程请到http://www.bqmcu.com.cn
#include
#include
#define LedDataOut P2 //数据口
#define LedBitOut P3 //LED位选口
unsigned char code table[]={0x3f,0x06,0x5b,0x4f, //用于数码管显示的码表
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c, //分别表示字符:0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F
0x39,0x5e,0x79,0x71};
unsigned char code LEDbit[]={0x10,0x20,0x40,0x80};
unsigned char LEDBUF[4]; //这个数组用于记录要显示的数据
unsigned int LEDcount=0;
void initTimer(void) //定时器初始化
{
TMOD=0x00;
TH1=0xd1;
TL1=0x10;
}
void timer1(void) interrupt 3 //T1定时器中断,用于LED显示的动态扫描
{
LedDataOut=~table[LEDBUF[LEDcount]]; //送字段
LedBitOut=~LEDbit[LEDcount]; //送字位
if(LEDcount<4) LEDcount++; //共显四位
else LEDcount=0;
TH1=0xd1; //重载初值
TL1=0x10;
}
void main(void){
unsigned int AdValue=0;
unsigned int i=0;
unsigned int j=0;
initTimer();
TR0=1;
ET0=1;
TR1=1;
ET1=1;
EA=1;
AdValue=9999;
while(1){ //下面是将一个数各位分离出来存入到数组LEDBUF中
LEDBUF[3]=AdValue%10; //取余得最高位
AdValue=AdValue/10;
LEDBUF[2]=AdValue%10;
AdValue=AdValue/10;
LEDBUF[1]=AdValue%10;
AdValue=AdValue/10;
LEDBUF[0]=AdValue%10;
AdValue=AdValue/10;
for(j=0;j<32700;j++) _nop_(); //这个只是为了延时,
if(i<9999) i++;
else i=0;
AdValue=i;
}
}
·下面是仿真实例
·下面是整个实例的下载(Proturs中是仿真文件)
2007622225558175.rar |
|