|
1金钱
LED点阵显示的字总是闪,延时函数从2个机器周期开始一点点大,大到几十毫秒都是闪,请大神指点指点
#include<reg52.h>
#include<intrins.h>
sbit D = P3^4;
sbit PI = P3^5;
sbit H = P3^6;
void delay10us(void) //误差 -0.234375us
{
unsigned char a;
for(a=1;a>0;a--);
}
void delay20us(void) //误差 0us
{
unsigned char a,b;
for(b=1;b>0;b--)
for(a=7;a>0;a--);
}
void ys(unsigned int a)
{
while(a--);
}
void delay1ms(void) //误差 0us
{
unsigned char a,b,c;
for(c=1;c>0;c--)
for(b=1;b>0;b--)
for(a=1;a>0;a--);
}
void delay500ms(void) //误差 0us
{
unsigned char a,b,c;
for(c=23;c>0;c--)
for(b=152;b>0;b--)
for(a=70;a>0;a--);
}
void delay4us(void) //误差 -0.744791666667us
{
_nop_(); //if Keil,require use intrins.h
}
void hs595(unsigned char l2,unsigned char l1,unsigned char h2,unsigned char h1)
{
unsigned char a;
for(a=0;a<8;a++)
{
H = 0;
delay20us();
D = l2>>7;
l2<<=1;
delay20us();
H = 1;
delay20us();
}
for(a=0;a<8;a++)
{
H = 0;
delay20us();
D = l1>>7;
l1<<=1;
delay20us();
H = 1;
delay20us();
}
for(a=0;a<8;a++)
{
H = 0;
delay20us();
D = h2>>7;
h2<<=1;
delay20us();
H = 1;
delay20us();
}
for(a=0;a<8;a++)
{
H = 0;
delay20us();
D = h1>>7;
h1<<=1;
delay20us();
H = 1;
delay20us();
}
PI = 1;
delay20us();
PI = 0;
}
unsigned char code w[]=
{
0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,
};
unsigned char code hz1[]=
{
/*-- 文字: 普 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x40,0x44,0x54,0x64,0x45,0x7E,0x44,0x44,0x44,0x7E,0x45,0x64,0x54,0x44,0x40,0x00,
0x00,0x00,0x00,0xFF,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0xFF,0x00,0x00,0x00,0x00,
};
unsigned char code hz2[]=
{
/*-- 文字: 中 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0xF0,0x10,0x10,0x10,0x10,0xFF,0x10,0x10,0x10,0x10,0xF0,0x00,0x00,0x00,
0x00,0x00,0x0F,0x04,0x04,0x04,0x04,0xFF,0x04,0x04,0x04,0x04,0x0F,0x00,0x00,0x00,
};
void main()
{
unsigned char c,d;
while(1)
{
while(1)
{
for(c=0;c<16;c++)
{
hs595(~w[c+16],~w[c],hz1[16+c],hz1[c]);
// delay4us();
// delay20us();
//delay1ms();
delay1ms();delay1ms();delay1ms();
}
}
}
}
我知道答案
本帖寻求最佳答案回答被采纳后将获得系统奖励 10 金钱 , 目前已有 1人回答
|
|