📄 8031.c
字号:
/*点阵显示汉字程串口输出字符数据,P2口输出行扫描信号,P1_0输出595锁存信号。
由于595接在LED阴极所以取模时要反白处理*/
#include <reg51.H>
sbit P10=P1^0;
unsigned char code hanzi[][32]={ //二维数据
{0x08,0x00,0x08,0x03,0xC8,0x78,0x7F,0x48,0x48,0x4A,0x5C,0x4A,0x6C,0x4A,0x4A,0x4A,0x4A,0x4B,0xC9,0x5A,0x48,0x2A,0x08,0x09,0x08,0x09,0x88,0x08,0x68,0x08,0x08,0x08},/*"柳",0*/
{0x04,0x0A,0x04,0x12,0xE4,0x3F,0x04,0x02,0xC4,0x1F,0x5F,0x12,0xC4,0x1F,0x44,0x12,0xC4,0x1F,0x44,0x1A,0xF4,0x7F,0x44,0x08,0x84,0x09,0x84,0x08,0x04,0x0A,0x04,0x04},/*"博",1*/
};
unsigned char code sw[16]={0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07}; /*16行段码*/
unsigned char e;
void delay(); /*延时*/
void out_rxd(unsigned char *d); /*串口发送*/
/*主函数*/
void main()
{unsigned char i; //i是从字模数组里向后取数据时的计数器,用以改变显示文字的内容.
SCON=0x00; //初始化串口为工作方式0(同步通信方式,TxD输出同步脉冲)
while(1) //重复循环显示
{
for(i=1;i<=31;i+=2)
{
P10=0;
out_rxd(&hanzi[0][i]); //从串口输出第1个字的第一字节。
out_rxd(&hanzi[0][i-1]); //从串口输出第1个字的第二字节。
out_rxd(&hanzi[1][i]); //从串口输出第2个字的第一字节。
out_rxd(&hanzi[1][i-1]); //从串口输出第2个字的第二字节。
P10=1;//锁存为高,595锁存信号
P2=0x10;
P2=sw[e]; //输出行信号
delay(); //延时,等待一段时间,让这列显示的内容在人眼内产生“视觉暂留”现象。*/
e++; //行加一
if(e==16)
e=0;
}
}
}
void out_rxd(unsigned char *d) /*从串口发送数据*/
{
SBUF=*d;
while(TI==0); //等待发送完毕
TI=0;
}
/*延时子程序*/
void delay()
{unsigned char n;
for(n=1000;n>0;n--)
{;}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -