点阵程序自己写地.docx
- 文档编号:13416567
- 上传时间:2023-06-14
- 格式:DOCX
- 页数:21
- 大小:18.30KB
点阵程序自己写地.docx
《点阵程序自己写地.docx》由会员分享,可在线阅读,更多相关《点阵程序自己写地.docx(21页珍藏版)》请在冰点文库上搜索。
点阵程序自己写地
硬件简单介绍一下:
行驱动用154四线译码器加8550驱动,列用74hc595移位寄存器驱动。
#include
#defineucharunsignedchar
#defineuintunsignedint
#defineLINEP2//定义行线IO口,即74HC154控制端
#defineshudu12//字移动的速度
sbitDATA=P1^2;//74HC595数据端
sbitCLK=P1^0;//74HC595移位脉冲端
sbitCLKR=P1^1;//74HC595数据锁存端
ucharmove;//移动几位变量
ucharline;//行变量
uintword;//字节变量
ucharji,gai;//字节变量
ucharBUF[4];//4组缓存数组以便左移右移等功能动态更改数据
uchar codetable[]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*-- 文字:
笨 --*/
/*-- 宋体12; 此字体下对应的点阵为:
宽x高=16x16 --*/
0x00,0x08,0x7F,0xFC,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x08,0x3F,0xFC,
0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x04,0xFF,0xFE,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
/**********************下拉、下移数组************************/
uchar codetable1[]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*-- 文字:
蛋 --*/
/*-- 宋体12; 此字体下对应的点阵为:
宽x高=16x16 --*/
0x00,0x80,0x78,0x80,0x4B,0xFC,0x48,0x40,0x48,0x48,0x48,0x30,0x78,0xD2,0x4B,0x0A,
0x4F,0xF6,0x49,0x20,0x79,0x20,0x4A,0x20,0x02,0x22,0x04,0x22,0x08,0x1E,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
uchar codetable2[]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*-- 文字:
虫 --*/
/*-- 宋体12; 此字体下对应的点阵为:
宽x高=16x16 --*/
0x00,0x80,0x00,0x40,0x78,0x40,0x17,0xFE,0x10,0x00,0x13,0xF8,0x7A,0x08,0x12,0x08,
0x13,0xF8,0x10,0x40,0x12,0x50,0x1A,0x48,0x64,0x44,0x04,0x44,0x09,0x40,0x00,0x80,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
ucharcodetable3[]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*-- 文字:
傻 --*/
/*-- 宋体12; 此字体下对应的点阵为:
宽x高=16x16 --*/
0x09,0x00,0x09,0x80,0x11,0x04,0x13,0xFE,0x22,0x04,0x34,0x48,0x68,0x40,0xA2,0x50,
0x23,0x48,0x22,0x48,0x24,0x44,0x24,0x46,0x28,0x44,0x21,0x40,0x20,0x80,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
uchar codetable4[]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*-- 文字:
瓜 --*/
/*-- 宋体12; 此字体下对应的点阵为:
宽x高=16x16 --*/
0x10,0x20,0x08,0x28,0xFF,0x24,0x00,0x24,0x00,0x20,0x7F,0xFE,0x42,0x50,0x42,0x50,
0x7E,0x50,0x08,0x50,0x2C,0x50,0x2A,0x90,0x4A,0x92,0x89,0x12,0x2A,0x0E,0x10,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
ucharcodetable5[]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*-- 文字:
琼 --*/
/*-- 宋体12; 此字体下对应的点阵为:
宽x高=16x16 --*/
0x00,0x00,0x0F,0xF0,0x08,0x10,0x0F,0xF0,0x08,0x10,0x0F,0xF0,0x00,0x00,0xFF,0xFE,
0x01,0x00,0x09,0x00,0x09,0xF8,0x09,0x00,0x15,0x00,0x23,0x00,0x40,0xFE,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
uchar codetable6[]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*-- 文字:
你 --*/
/*-- 宋体12; 此字体下对应的点阵为:
宽x高=16x16 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x7F,0xFE,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
ucharcodetable7[]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*-- 文字:
是 --*/
/*-- 宋体12; 此字体下对应的点阵为:
宽x高=16x16 --*/
0x01,0x00,0x01,0x00,0x02,0x80,0x02,0x40,0x04,0x20,0x09,0x18,0x11,0x0E,0x61,0x04,
0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
ucharcodetable8[]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*-- 文字:
猪 --*/
/*-- 宋体12; 此字体下对应的点阵为:
宽x高=16x16 --*/
0x08,0x40,0x88,0x44,0x53,0xF4,0x20,0x48,0x50,0x50,0x97,0xFE,0x08,0x40,0x18,0x80,
0x29,0xFC,0x4B,0x04,0x8D,0x04,0x09,0xFC,0x09,0x04,0x11,0x04,0x51,0xFC,0x21,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
ucharcodetable9[]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*-- 文字:
婆 --*/
/*-- 宋体12; 此字体下对应的点阵为:
宽x高=16x16 --*/
0x40,0x40,0x23,0xFE,0x8A,0x44,0x4A,0x40,0x13,0xF8,0x15,0x10,0x64,0xA0,0x28,0x40,
0x30,0xB0,0x25,0x0C,0x7F,0xFE,0x08,0x20,0x04,0x40,0x03,0x80,0x0C,0x60,0x70,0x1C,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
ucharcodetable10[]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*-- 文字:
啊 --*/
/*-- 宋体12; 此字体下对应的点阵为:
宽x高=16x16 --*/
0x00,0x00,0xF7,0x7E,0x95,0x04,0x95,0x04,0x96,0x74,0x96,0x54,0x95,0x54,0x95,0x54,
0x95,0x54,0xF5,0x54,0x97,0x74,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x14,0x04,0x08,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
/*************************左覆盖数组************************/
ucharcodetable11[]={
0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00,
0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00
};
/*************************右覆盖数组************************/
ucharcodetable12[]={
0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,
0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00
};
/*****************延时子程序*************/
voiddelay(ucharz)
{
ucharx,y;
for(x=2;x>0;x--)
for(y=z;y>0;y--);
}
/**************74HC595送数子程序********/
voidsong(ucharz)//带参数函数
{
ucharnum,hang;//定义变量
hang=z;//将形参给变量
for(num=0;num<8;num++)//移动8次将数据发送完毕
{
if(hang&0x01==1)//将高7位屏蔽掉,保留最低位判断
DATA=1;//为1就将74HC595数据端置1
else
DATA=0;//否则给0
CLK=0;//上升沿送走数据
CLK=1;//高电平形成上升沿
hang>>=1;//将数移走一位
}
}
/**************************间断显示***************************/
voidjian() //字数要减半
{
while(word<32)//要显示多少字?
{
for(move=150;move>0;move--)//字间断显示的速度
{
ji=word;
for(line=0;line<16;line++)
{
song(~table[ji*2+1]);//先右半屏
song(~table[ji*2]);//再左半屏
ji++;//下一行
CLKR=1;//在74HC595处锁存起来
CLKR=0;
CLKR=1;
LINE=line;//打开列
delay(17);
}
}
word=ji;
}
}
voidshang()//字数减半
{
while(word<32)
{
for(move=20;move>0;move--)
{
ji=word;//将变量存起来
for(line=0;line<16;line++)
{
song(~table1[ji*2+1]);
song(~table1[ji*2]);
ji++;
CLKR=1;//在74HC595处锁存起来
CLKR=0;
CLKR=1;
LINE=line;
delay(5);
}
}
word+=1;//数组数增加一行,形成上移
}
}
voidxia()
{
while(word>1)
{
for(move=20;move>0;move--)
{
ji=word;//给倒数第2个字位置地址码给ji变量
for(line=0;line<16;line++)
{
song(~table2[ji*2+1]);//发右半屏数 注意这是数组1的代码
song(~table2[ji*2]);//发左半屏数
ji++;
CLKR=1;//在74HC595处锁存起来
CLKR=0;
CLKR=1;
LINE=line;
delay(5);
}
}
word-=1;//数组数减1一行,形成下移
}
}
voidyixian()
{
uchars;
for(s=0;s<2;s++)
{
BUF[s*2]=table3[word+(32*s)+(line*2)];//左半屏代码,line表示行数,word表示字数
BUF[s*2+1]=table3[word+(32*s+1)+(line*2)];//右半屏代码
}
}
voidyipai()
{
uchartemp,yi;
if(move<8)//处理移动次数小于8次的部分
{
yi=move;
temp=(BUF[1]<
song(~temp);//发送给74HC595
temp=(BUF[0]<
song(~temp);//发送给74HC595
}
else//处理移动次数小于8次以外的部分
{
yi=move-8;
temp=(BUF[2]<
song(~temp);//发送给74HC595
temp=(BUF[1]<
song(~temp);//发送给74HC595
}
}
voidzuo()
{
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 点阵 程序 自己