📄 595驱动显示.c
字号:
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar code encode[]={0xc0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff};
uchar code bitset[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
#define _time0 1000
sbit ser=P0^0;
sbit sck=P0^1;
sbit rck=P0^2;
uchar point;
uchar ledbuff8[8],cnter8;
void initbuff8()
{
ledbuff8[0] = ledbuff8[1] = 0x0a;
ledbuff8[2] = 1;
ledbuff8[3] = 2;
ledbuff8[4] = 3;
ledbuff8[5] = 4;
ledbuff8[6] = 5;
ledbuff8[7] = 6;
point = 0;
point += bitset[3];
point += bitset[5];
}
void writ595(uchar num)
{
uchar i;
for( i=0 ; i<8 ; i++ )
{
sck = 0;
if( num&0x80 )
ser = 1;
else
ser = 0;
sck = 1;
num = num<<1;
}
}
void display8()
{
uchar t = encode[ledbuff8[cnter8]];
if( point&bitset[cnter8] )
t -= 0x80;
writ595( t );
//writ595(1<<cnter8);
writ595( bitset[cnter8] );
rck = 0;
_nop_() , _nop_();
rck = 1;
}
void main()
{
EA = 0 , SP = 0x60;
TH0 = (65536-_time0)/256;
TL0 = (65536-_time0)%256;
TMOD = 0x01;
TR0 = 1;
IE = 0x82;
cnter8 = 0;
while( 1 )
{
initbuff8();
}
}
void t0isr() using 2 interrupt 1
{
TR0 = 1;
TH0 = (65536-_time0)/256;
TL0 = (65536-_time0)%256;
cnter8 = (cnter8+1)&7;
display8();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -