- #include"reg51.h"
- #include"intrins.h"
- #define uchar unsigned char
- #define uint unsigned int
- sfr WDT_CONTR = 0xC1; //看门狗寄存器
- sbit led0=P3^0; //LED灯0
- sbit led1=P3^1; //LED灯1
- sbit led2=P3^2; //LED灯2
- sbit led3=P3^3; //LED灯3
- uchar code nbr[36][4]={ //LED字库数据(只读数组)
- {
- 0x96, 0x66, 0x66, 0x69, },{//0
- 0xD9, 0x5D, 0xDD, 0xD0, },{//1
- 0x96, 0x5D, 0xB7, 0x70, },{//2
- 0x96, 0xE9, 0xEE, 0x69, },{//3
- 0xD9, 0x55, 0x0D, 0xDD, },{//4
- 0x07, 0x70, 0xE6, 0x69, },{//5
- 0x96, 0x71, 0x66, 0x69, },{//6
- 0x0E, 0xED, 0xDB, 0xBB, },{//7
- 0x96, 0x69, 0x96, 0x69, },{//8
- 0x96, 0x66, 0x8E, 0x69, },{//9
- 0x96, 0x66, 0x06, 0x66, },{//A
- 0x16, 0x61, 0x66, 0x9F, },{//B
- 0x96, 0x67, 0x76, 0x69, },{//C
- 0x34, 0x66, 0x66, 0x43, },{//D
- 0x07, 0x71, 0x77, 0x70, },{//E
- 0x07, 0x71, 0x77, 0x77, },{//F
- 0x96, 0x77, 0x46, 0x69, },{//G
- 0x66, 0x60, 0x66, 0x66, },{//H
- 0x0B, 0xBB, 0xBB, 0xB0, },{//I
- 0x0D, 0xDD, 0xD5, 0x5B, },{//J
- 0x65, 0x37, 0x73, 0x56, },{//K
- 0x77, 0x77, 0x77, 0x70, },{//L
- 0x60, 0x06, 0x66, 0x6F, },{//M
- 0xF6, 0x22, 0x44, 0x6F, },{//N
- 0xF9, 0x66, 0x66, 0x9F, },{//O
- 0x16, 0x61, 0x77, 0x77, },{//P
- 0x96, 0x66, 0x65, 0x9E, },{//Q
- 0x16, 0x61, 0x35, 0x66, },{//R
- 0x96, 0x79, 0xE6, 0x9F, },{//S
- 0x1B, 0xBB, 0xBB, 0xBF, },{//T
- 0x66, 0x66, 0x66, 0x09, },{//U
- 0x66, 0x66, 0x66, 0x69, },{//V
- 0x66, 0x66, 0x00, 0x6F, },{//W
- 0xF6, 0x99, 0x99, 0x6F, },{//X
- 0x66, 0x66, 0x99, 0x99, },{//Y
- 0x0E, 0xDD, 0xBB, 0x70 } //Z
-
- };
- void delay(){ //@6MHz 1毫秒延时程序
- unsigned char i, j;
- _nop_();
- _nop_();
- i = 6;
- j = 210;
- do
- {
- while (--j);
- } while (--i);
- }
- void set_led(uchar i){ //LED扫描图像
- uchar l=0;
- uchar k=0;
- led0=1;led1=1;led2=1;led3=1;
- delay();
- delay();
- for(l=0;l<4;l++){
- delay();
- k=(nbr[i][l]&0xF0)/0x10;
- led0=(k&0x01)/0x01;
- led1=(k&0x02)/0x02;
- led2=(k&0x04)/0x04;
- led3=(k&0x08)/0x08;
- delay();
- led0=1;led1=1;led2=1;led3=1;
- delay();
- k=nbr[i][l]&0x0F;
- led0=(k&0x01)/0x01;
- led1=(k&0x02)/0x02;
- led2=(k&0x04)/0x04;
- led3=(k&0x08)/0x08;
- delay();
- led0=1;led1=1;led2=1;led3=1;
-
-
-
-
- }
- led0=1;led1=1;led2=1;led3=1;
- delay();
- delay();
- }
- void main(){
- unsigned char n=0; //数字字母扫描
- unsigned char k=0; //显示延迟(循环次数)
- while(1){
- for(n=0;n<10;n++){
-
- for(k=0;k<60;k++){
- WDT_CONTR=0x33;
- set_led(n);
- }
- }
- }}
复制代码
|