📄 51
字号:
#include <reg51.h> //头文件
#define uchar unsigned char
#define uint unsigned int
sbit sh_cp=P3^0; //595时钟端
sbit ds=P3^1; //595数据端
sbit st_cp=P3^2; //595锁存端
uchar tab[]={ //取码方式 阴码 逆向 逐列 16×16 十六进制
0x00,0x20,0x00,0x22,0x7f,0xec,0x20,0x00,0x10,0x20,0x00,0x22,0xff,0xaa,0x0a,0xaa,
0x0a,0xaa,0x0a,0xbf,0x4a,0xaa,0x8a,0xaa,0x7f,0xeb,0x00,0xa2,0x00,0x20,0x00,0x00,//请
};
void send(uchar dat595); //595发送8位扫描段码子程序
void delay(uint n); //延时子程序
void disp(void); //显示子程序
main() //主程序
{
while(1)
{
disp(); //只是显示
}
}
void send(uchar dat595) //595发送8位扫描段码子程序
{
uchar dat=dat595; //把要发送的数据给dat
uint i;
for(i=0;i<8;i++) //8位发送循环
{
dat<<=1; //数据左移一位至CY 即先发送高位
ds=CY; //数据送至595的数据端
sh_cp=0; //时钟产生高电平
sh_cp=1; //
}
}
void delay(uint n) //延时子程序
{
uint i,j;
for(i=0;i<n;i++)
for(j=0;j<100;j++);
}
void disp(void)
{
uchar i,row=0x08; //74138的编码初值08 第一行有效
for(i=0;i<16;i++) //16行循环有效
{
st_cp=0; //595锁存端无效
send(tab[2*i]); //上半屏
send(tab[2*i+1]); //下半屏
P1=row; //对应行输出
row++; //行号加1
st_cp=1; //595锁存数据
delay(1); //延时后刷屏
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -