1.静态显示(循环操作)
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define initial 0xfe
sbit DU=P2^0;
sbit WE=P2^1;
sbit led0=P1^0;
sbit led1=P1^1;
sbit led2=P1^2;
sbit led3=P1^3;
sbit led4=P1^4;
sbit led5=P1^5;
sbit led6=P1^6;
sbit led7=P1^7;
sbit EN=P2^5;
sbit FM=P1^2;
sbit RST=P1^2;
uchar temp;
uchar num;
uint i;
uchar code dula[]={
0x3f,0x06,0x5b,
0x4f,0x66,0x6d,
0x7d,0x07,0x7f,
0x6f,0x77,0x7c,
0x39,0x5e,0x79,
0x71};
uchar code wela[]={
0xfe,0xfd,0xfb,
0xf7,0xef,0xdf,
0xbf,0x7f
};
void delay1s(void);
void main() {
temp=0xfe; //1111,1110
while(1) {
for(i=0;i<8;i++) {
P0=wela[i];
WE=1;
WE=0;
DU=1;
P0=dula[i];
DU=0;
delay1s();
}
}
}
void delay1s(void) //误差 0us
{
unsigned char a,b,c;
for(c=167;c>0;c--)
for(b=171;b>0;b--)
for(a=16;a>0;a--);
_nop_(); //if Keil,require use intrins.h
}
2.动态显示
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define initial 0xfe
sbit DU=P2^0;
sbit WE=P2^1;
sbit led0=P1^0;
sbit led1=P1^1;
sbit led2=P1^2;
sbit led3=P1^3;
sbit led4=P1^4;
sbit led5=P1^5;
sbit led6=P1^6;
sbit led7=P1^7;
sbit EN=P2^5; //P2.3 HL-1
sbit FM=P1^2; //LCD1602 插入1602后要初始化为0(关闭)
sbit RST=P1^2; //DS1302
uchar temp;
uchar num;
uint i;
uchar code dula[]={
0x3f,0x06,0x5b,
0x4f,0x66,0x6d,
0x7d,0x07,0x7f,
0x6f,0x77,0x7c,
0x39,0x5e,0x79,
0x71};
uchar code wela[]={
0xfe,0xfd,0xfb,
0xf7,0xef,0xdf,
0xbf,0x7f
};
void delay10ms(void);
void main() {
temp=0xfe; //1111,1110
while(1) {
for(i=0;i<8;i++) {
P0=wela[i];
WE=1;
WE=0;
DU=1;
P0=dula[i];
DU=0;
//P0=0xff;
delay10ms();
}
}
}
void delay10ms(void) //误差 0us
{
unsigned char a,b,c;
for(c=1;c>0;c--)
for(b=38;b>0;b--)
for(a=130;a>0;a--);
}