点阵显示左移和不动程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
×点阵显示左移和不动程序
显示左移的程序(串行送数据)
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
#define SCAN P2 //行驱动接到P2
sbit SHCP=P1^0; //595 CLK
sbit STCP=P1^1; //595 STR
sbit DR=P1^2; //红色
sbit DG=P1^3; //绿色
sbit ENT=P1^4; //595 OE/G
uint word; //字模计数器
uchar move; //列指针
uchar line; //行指针
uchar speed=10; //设定移动速度
uchar BUF[12]; //缓存数组
uchar code disp[]; //字模数组
/********************装载一线点阵数据********************/ void loadline()
{
uchar s;
for(s=0;s<5;s++) //s为要显示的字数+1
{
BUF[2*s]=disp[word+32*s+2*line];
BUF[2*s+1]=disp[word+1+32*s+2*line];
}
}
/********************发送一线移动数据********************/ void sendline()
{
char s,p;
uchar inc,k,j;
if(move<8)
inc=0;
else inc=1;
for(s=0+inc;s<=7+inc;s++)
{
if(move<8)
j=move;
else j=move-8;
k=(BUF[s]<<j)|(BUF[s+1]>>(8-j)); //字模左边字节左移j位,右边字节右移j位,2者相或
for(p=0;p<8;p++)
{ DR=(k&0x80); //选择红色显示
SHCP=0; //595时钟信号,产生脉冲
SHCP=1;
k<<=1;
//左移一位
}
}
}
void main()
{
char s;
uint k;
uchar i,y=0;
move=0;
word=0;
ENT=0;
ENT=1; //清屏
while(1)
{
while(word<448) //(4+10)*32=448
{
while(move<16) //数据移位
{
for(i=0;i<speed;i++) //移动速度
{
for(line=0;line<16;line++) //行扫描
{
loadline(); //装载一线点阵数据
sendline(); //发送一线移动数据
SCAN=line; //显示第line行
STCP=1; //锁存为高,595锁存信号
STCP=0;
}
}
move++; //移动一步(一位)
}
move=0;
word=word+32; //下一个字
}
word=0;
}
}
uchar code disp[]={
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,/*前面四字位置空白显示*/
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
////////////////////////////////////////////////////////////////////////////////
/* (16 X 16 , 宋体)*/
0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0x00,0x01,0xFE,0xFF,0xFE,0xFF,
0xFE,0xFF,0xFD,0x7F,0xFB,0xBF,0xF
7,0xDF,0xEF,0xEF,0xDF,0xF7,0xBF,0xFB,0xFF,0xFF,/*"大",8*/
/* (16 X 16 , 宋体)*/
0xFE,0xFF,0xFE,0xFF,0x00,0x01,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0x80,0x03,0xFF,0xFF,
0xFF,0xFF,0xE0,0x0F,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xE0,0x0F,0xFF,0xFF,0xFF,0xFF,/*"吉",9*/
/* (16 X 16 , 宋体)*/
0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0x00,0x01,0xFE,0xFF,0xFE,0xFF,
0xFE,0xFF,0xFD,0x7F,0xFB,0xBF,0xF7,0xDF,0xEF,0xEF,0xDF,0xF7,0xBF,0xFB,0xFF,0xFF,/*"大",10*/
/* (16 X 16 , 宋体)*/
0xFF,0xFD,0xF8,0x7D,0xC3,0xFD,0xFB,0xED,0xFB,0xED,0x80,0x6D,0xFB,0xED,0xFB,0xED,
0xF1,0xED,0xEA,0xED,0xDB,0x6D,0xBB,0xAD,0xFB,0xFD,0xFB,0xF5,0xFB,0xF9,0xFF,0xFF,/*&q uot;利",11*/
/* (16 X 16 , 宋体)*/
0xEF,0xFF,0xF7,0x81,0x80,0xBF,0xDD,0xBF,0xEB,0xBF,0x00,0x81,0xF7,0xB7,0xF7,0xB7,
0x00,0xB7,0xF7,0xB7,0xE3,0xB7,0xD5,0xB7,0xB6,0xB7,0xE7,0xB7,0xF7,0xB7,0xFF,0xFF,/*&qu ot;新",12*/
/* (16 X 16 , 宋体)*/
0xF7,0xFF,0xF0,0x03,0xF7,0x7F,0xEF,0x7F,0xDF,0x7F,0xB0,0x07,0x77,0x7F,0xF7,0x7F,
0xF7,0x7F,0xF7,0x7F,0x00,0x00,0xFF,0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,0xFF,/*"年",13*/
/* (16 X 16 , 宋体)*/
0xEF,0xBF,0xEF,0xBF,0xEF,0xBF,0xC4,0x03,0xAB,0xBB,0x6D,0xBB,0xEF,0xBB,0xE8,0x00,