|
发表于 2012-8-24 10:32:37
|
显示全部楼层
u8 code number[22] = //10段LED显示器件,10为全亮,1只亮一个,0为全灭
{
0xFF,0xFF, //0
0xFF,0xFE, //1
0xFF,0xFC, //2
0xFF,0xF8, //3
0xFF,0xF0, //4
0xFF,0xE0, //5
0xFF,0xC0, //6
0xFF,0x80, //7
0xFF,0x00, //8
0xFE,0x00, //9
0xFC,0x00, //10
};
u8 bdata Temp;
sbit D1 = Temp^7;
sbit D2 = Temp^6;
sbit D3 = Temp^5;
sbit D4 = Temp^4;
sbit D5 = Temp^3;
sbit D6 = Temp^2;
sbit D7 = Temp^1;
sbit D8 = Temp^0;
void HC595(u8 bullet)
{
u8 i,nTempH,nTempL;
u8 dis_buf[2];
nTempH = bullet/5;
nTempL = bullet%5;
if(nTempH > 0)
{
dis_buf[0] = number[2*nTempH];
dis_buf[1] = number[2*nTempH+1];
}
else if(nTempL > 0)
{
dis_buf[0] = number[2*nTempL];
dis_buf[1] = number[2*nTempL+1];
}
else
{
dis_buf[0] = number[0];
dis_buf[1] = number[1];
}
LAT = 0; //上升沿将数据输出,所以先拉低
for(i = 0;i<2;i++)
{
Temp = dis_buf[i];
SCLK = 0; DAT = D1; SCLK = 1;
SCLK = 0; DAT = D2; SCLK = 1;
SCLK = 0; DAT = D3; SCLK = 1;
SCLK = 0; DAT = D4; SCLK = 1;
SCLK = 0; DAT = D5; SCLK = 1;
SCLK = 0; DAT = D6; SCLK = 1;
SCLK = 0; DAT = D7; SCLK = 1;
SCLK = 0; DAT = D8; SCLK = 1;
}
LAT = 1; //上升沿时输出数据
}
我这个是送到10段灯条,你参照这个稍微改改就能用在数码管上了。 |
|