📄 16x80.c
字号:
/******************************************
*P1为扫描数据,P3.2为扫描使能,P3.3为窜行移位使能,P3.4为锁存CP;
*P3.0为窜行数据入口,P3.1为窜行CP ;
*此数据为由单片机串行口发送;
*此程序为16x80点阵屏;
*完成时间:2010.10.06;
*付其业写;
**************************************************/
#include<reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar zimo; //被扫描数据记数器为:0~15
uchar yid; //移位记数器为:0~15
uchar zi; //汉字个数记数器
sbit G=P3^2; //扫描使能
sbit MR=P3^3; //串行移位使能
sbit STcp=P3^4; //串行锁存CP
uint BUFF[6]; //显存
/**********************汉字库**********************/
uchar code TAB1[]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//空格
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//空格
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//空格
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//空格
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//空格
0x00,0x80,0x00,0x80,0xFC,0x80,0x04,0xFC,0x45,0x04,0x46,0x48,0x28,0x40,0x28,0x40,
0x10,0x40,0x28,0x40,0x24,0xA0,0x44,0xA0,0x81,0x10,0x01,0x08,0x02,0x0E,0x0C,0x04,//欢
0x00,0x00,0x41,0x84,0x26,0x7E,0x14,0x44,0x04,0x44,0x04,0x44,0xF4,0x44,0x14,0xC4,
0x15,0x44,0x16,0x54,0x14,0x48,0x10,0x40,0x10,0x40,0x28,0x46,0x47,0xFC,0x00,0x00,//迎
0x11,0x00,0x11,0x00,0x11,0x00,0x23,0xFC,0x22,0x04,0x64,0x08,0xA8,0x40,0x20,0x40,
0x21,0x50,0x21,0x48,0x22,0x4C,0x24,0x44,0x20,0x40,0x20,0x40,0x21,0x40,0x20,0x80,//你
0x01,0x00,0x01,0x00,0x01,0x08,0x7F,0xFC,0x01,0x00,0x21,0x10,0x19,0x30,0x09,0x44,
0xFF,0xFE,0x03,0x80,0x05,0x40,0x09,0x30,0x31,0x1E,0xC1,0x04,0x01,0x00,0x01,0x00,//来
0x01,0x04,0x7F,0x84,0x08,0x04,0x10,0x24,0x22,0x24,0x41,0x24,0x7F,0xA4,0x08,0xA4,
0x0A,0x24,0x7F,0x24,0x08,0x24,0x08,0x24,0x08,0x04,0x0F,0x84,0xF8,0x14,0x00,0x08,//到
0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xF8,0x1C,0x1C,0x38,0x0C,0x70,0x00,0x70,0x00,
0x70,0x00,0x70,0x3F,0x70,0x1C,0x38,0x1C,0x1C,0x1C,0x0F,0xFC,0x00,0x00,0x00,0x00,//G
0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xF8,0x1C,0x0E,0x1C,0x0E,0x1C,0x0E,0x1C,0x1C,
0x1F,0xF8,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x7F,0x00,0x00,0x00,0x00,0x00,//P
0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFC,0x30,0x1C,0x30,0x04,0x38,0x00,0x1F,0x80,
0x03,0xF0,0x00,0x3C,0x20,0x0E,0x20,0x0E,0x38,0x0C,0x3F,0xF8,0x00,0x00,0x00,0x00,//S
0x08,0x08,0xFD,0xFC,0x10,0x88,0x10,0x88,0x20,0x88,0x20,0x88,0x7C,0x88,0xA7,0xFE,
0x24,0x88,0x24,0x88,0x24,0x88,0x25,0x08,0x3D,0x08,0x22,0x08,0x04,0x08,0x00,0x08,//研
0x02,0x00,0x01,0x00,0x7F,0xFE,0x44,0x42,0x88,0x34,0x12,0x10,0x02,0x20,0x3F,0xF0,
0x02,0x20,0x02,0x20,0x04,0x20,0x04,0x20,0x08,0x22,0x08,0x22,0x10,0x1E,0x60,0x00,//究
0x02,0x00,0x01,0x00,0x7F,0xFE,0x40,0x02,0x80,0x14,0x3F,0xF8,0x04,0x00,0x08,0x20,
0x1F,0xF0,0x01,0x10,0x01,0x00,0x1F,0xF0,0x01,0x00,0x01,0x08,0x7F,0xFC,0x00,0x00,//室
0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x0C,0x00,0x18,0x00,0x30,0x00,0x7F,0xF8,
0xFF,0xF8,0x7F,0xF8,0x30,0x00,0x18,0x00,0x0C,0x00,0x04,0x00,0x00,0x00,0x00,0x00,//
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x3C,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x3C,0x00,0x00,0x00,//.
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//空格
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//空格
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//空格
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//空格
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//空格
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 //空格
};
/*******************延时函数**********************/
void delay(uint t)
{
while(t--);
}
/**********************显存取数***********************************/
void qusu()
{
uint huan;
huan=TAB1[zimo*2+1+zi*32]|(TAB1[zimo*2+zi*32]<<8);
BUFF[0]=((huan>>15)&0x01)|(((huan>>14)&0x01)<<1)|(((huan>>13)&0x01)<<2)|(((huan>>12)&0x01)<<3)|(((huan>>11)&0x01)<<4)|(((huan>>10)&0x01)<<5)|(((huan>>9)&0x01)<<6)|(((huan>>8)&0x01)<<7)|(((huan>>7)&0x01)<<8)|(((huan>>6)&0x01)<<9)|(((huan>>5)&0x01)<<10)|(((huan>>4)&0x01)<<11)|(((huan>>3)&0x01)<<12)|(((huan>>2)&0x01)<<13)|(((huan>>1)&0x01)<<14)|((huan&0x01)<<15);
huan=TAB1[zimo*2+1+zi*32+32*1]|(TAB1[zimo*2+zi*32+32*1]<<8);
BUFF[1]=((huan>>15)&0x01)|(((huan>>14)&0x01)<<1)|(((huan>>13)&0x01)<<2)|(((huan>>12)&0x01)<<3)|(((huan>>11)&0x01)<<4)|(((huan>>10)&0x01)<<5)|(((huan>>9)&0x01)<<6)|(((huan>>8)&0x01)<<7)|(((huan>>7)&0x01)<<8)|(((huan>>6)&0x01)<<9)|(((huan>>5)&0x01)<<10)|(((huan>>4)&0x01)<<11)|(((huan>>3)&0x01)<<12)|(((huan>>2)&0x01)<<13)|(((huan>>1)&0x01)<<14)|((huan&0x01)<<15);
huan=TAB1[zimo*2+1+zi*32+32*2]|(TAB1[zimo*2+zi*32+32*2]<<8);
BUFF[2]=((huan>>15)&0x01)|(((huan>>14)&0x01)<<1)|(((huan>>13)&0x01)<<2)|(((huan>>12)&0x01)<<3)|(((huan>>11)&0x01)<<4)|(((huan>>10)&0x01)<<5)|(((huan>>9)&0x01)<<6)|(((huan>>8)&0x01)<<7)|(((huan>>7)&0x01)<<8)|(((huan>>6)&0x01)<<9)|(((huan>>5)&0x01)<<10)|(((huan>>4)&0x01)<<11)|(((huan>>3)&0x01)<<12)|(((huan>>2)&0x01)<<13)|(((huan>>1)&0x01)<<14)|((huan&0x01)<<15);
huan=TAB1[zimo*2+1+zi*32+32*3]|(TAB1[zimo*2+zi*32+32*3]<<8);
BUFF[3]=((huan>>15)&0x01)|(((huan>>14)&0x01)<<1)|(((huan>>13)&0x01)<<2)|(((huan>>12)&0x01)<<3)|(((huan>>11)&0x01)<<4)|(((huan>>10)&0x01)<<5)|(((huan>>9)&0x01)<<6)|(((huan>>8)&0x01)<<7)|(((huan>>7)&0x01)<<8)|(((huan>>6)&0x01)<<9)|(((huan>>5)&0x01)<<10)|(((huan>>4)&0x01)<<11)|(((huan>>3)&0x01)<<12)|(((huan>>2)&0x01)<<13)|(((huan>>1)&0x01)<<14)|((huan&0x01)<<15);
huan=TAB1[zimo*2+1+zi*32+32*4]|(TAB1[zimo*2+zi*32+32*4]<<8);
BUFF[4]=((huan>>15)&0x01)|(((huan>>14)&0x01)<<1)|(((huan>>13)&0x01)<<2)|(((huan>>12)&0x01)<<3)|(((huan>>11)&0x01)<<4)|(((huan>>10)&0x01)<<5)|(((huan>>9)&0x01)<<6)|(((huan>>8)&0x01)<<7)|(((huan>>7)&0x01)<<8)|(((huan>>6)&0x01)<<9)|(((huan>>5)&0x01)<<10)|(((huan>>4)&0x01)<<11)|(((huan>>3)&0x01)<<12)|(((huan>>2)&0x01)<<13)|(((huan>>1)&0x01)<<14)|((huan&0x01)<<15);
huan=TAB1[zimo*2+1+zi*32+32*5]|(TAB1[zimo*2+zi*32+32*5]<<8);
BUFF[5]=((huan>>15)&0x01)|(((huan>>14)&0x01)<<1)|(((huan>>13)&0x01)<<2)|(((huan>>12)&0x01)<<3)|(((huan>>11)&0x01)<<4)|(((huan>>10)&0x01)<<5)|(((huan>>9)&0x01)<<6)|(((huan>>8)&0x01)<<7)|(((huan>>7)&0x01)<<8)|(((huan>>6)&0x01)<<9)|(((huan>>5)&0x01)<<10)|(((huan>>4)&0x01)<<11)|(((huan>>3)&0x01)<<12)|(((huan>>2)&0x01)<<13)|(((huan>>1)&0x01)<<14)|((huan&0x01)<<15);
}
/******************串口发数****************************/
void fasu()
{
uint temp; //16位数据缓存
uchar temp1,temp2;//两个8位数据缓存
//--------------------------------------------
temp=(BUFF[0]>>yid)|(BUFF[1]<<(16-yid));
temp1=temp&0x00ff;
temp2=(temp&0xff00)>>8;
SBUF=~temp1;
while(TI==0);
TI=0;
SBUF=~temp2;
while(TI==0);
TI=0;
//--------------------------------------------
temp=(BUFF[1]>>yid)|(BUFF[2]<<(16-yid));
temp1=temp&0x00ff;
temp2=(temp&0xff00)>>8;
SBUF=~temp1;
while(TI==0);
TI=0;
SBUF=~temp2;
while(TI==0);
TI=0;
//-------------------------------------------
temp=(BUFF[2]>>yid)|(BUFF[3]<<(16-yid));
temp1=temp&0x00ff;
temp2=(temp&0xff00)>>8;
SBUF=~temp1;
while(TI==0);
TI=0;
SBUF=~temp2;
while(TI==0);
TI=0;
//-------------------------------------------
temp=(BUFF[3]>>yid)|(BUFF[4]<<(16-yid));
temp1=temp&0x00ff;
temp2=(temp&0xff00)>>8;
SBUF=~temp1;
while(TI==0);
TI=0;
SBUF=~temp2;
while(TI==0);
TI=0;
//-------------------------------------------
temp=(BUFF[4]>>yid)|(BUFF[5]<<(16-yid));
temp1=temp&0x00ff;
temp2=(temp&0xff00)>>8;
SBUF=~temp1;
while(TI==0);
TI=0;
SBUF=~temp2;
while(TI==0);
TI=0;
}
/******************数据输出函数********************************/
/*****************主函数*******************/
void main()
{
P0=0xff;//端口初使化
P1=0xff;//端口初使化
P2=0xff; //端口初使化
P3=0xff; //端口初使化
STcp=0; //端口初使化
yid=0; //移位记数器初使化
zi=0; //汉字记数器初使化
zimo=0;
SCON=0x00;
while(1)
{
uchar a,b,c,d;
zi=0;
for(a=0;a<16;a++) //(字的个数)
{
yid=0;
for(b=0;b<16;b++) //移位
{
for(c=0;c<4;c++) //静止时间
{
zimo=0;
for(d=0;d<16;d++)//扫描输出
{
qusu();
fasu();
STcp=0;
STcp=1;
STcp=0;
G=0;
P1=d;
zimo++;
}
}
yid++;
}
zi++;
}
}
delay(50000);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -