led1632汉字点阵显示.docx
《led1632汉字点阵显示.docx》由会员分享,可在线阅读,更多相关《led1632汉字点阵显示.docx(15页珍藏版)》请在冰点文库上搜索。
led1632汉字点阵显示
这是有别于网上普通的led汉字点阵显示程序,网上的汉字显示都是固定代码,固定字符循环显示,没有多大的变通性。
我的程序可以从汉字库中任意选取6个字循环显示,可以任意改变要显示的内容,程序的可改性很强,如果你要改为显示16*64的,那么只需要改变其中的几个数字就可以了。
要改变显示的内容,只需将我定义的数组中的值进行改变就可以了。
非常方便。
下载我的文档后如有问题或不清楚的请联系我,给我留言,我再帮你解决。
这是我帮同学做的毕业设计中很重要的一部分内容,请勿拷贝或随意传播。
谢谢
如有特别需要,请加QQ,我把仿真图或程序传给你。
下载文档后再留言
#include"reg52.h"
#include"intrins.h"
#include"zimo.h"
#defineucharunsignedchar
#defineuintunsignedint
#definedataP1
sbith_273=P2^0;
sbitl_273=P2^1;
sbite1=P2^2;
sbite2=P2^3;
//bitline——6个字的总扫描列数;startline——开始扫描字的起始列;Bdr——六个字定位bytedirection
ucharbitline=0,startline=0,Bdr=0;
ucharziwei[]={0,1,0,0,1,1};//显示的六个字的表代码
ucharcs_xunhuan=0;
voiddelay_us(unsignedcharus)
{
ucharcs_us;
for(;us>0;us--)
for(cs_us=0;cs_us<=2;cs_us++)
;
}
voidmove()
{
ucharci_m,buf1;
buf1=bitline;
startline=buf1%16;
Bdr=buf1/16;
for(ci_m=0;ci_m<16;ci_m++)
{
e1=0;
e2=1;
if(startline>=16)
{
startline=0;
if(Bdr<5)
Bdr++;
else
Bdr=0;
}
else
{
switch(Bdr)
{
case0:
P3=ci_m;
h_273=0;
data=hanzi[ziwei[0]*32+startline*2];
h_273=1;
h_273=0;
l_273=0;
data=hanzi[ziwei[0]*32+startline*2+1];
l_273=1;
l_273=0;
delay_us(5);
break;
case1:
P3=ci_m;
h_273=0;
data=hanzi[ziwei[1]*32+startline*2];
h_273=1;
h_273=0;
l_273=0;
data=hanzi[ziwei[1]*32+startline*2+1];
l_273=1;
l_273=0;
delay_us(5);
break;
case2:
P3=ci_m;
h_273=0;
data=hanzi[ziwei[2]*32+startline*2];
h_273=1;
h_273=0;
l_273=0;
data=hanzi[ziwei[2]*32+startline*2+1];
l_273=1;
l_273=0;
delay_us(5);
break;
case3:
P3=ci_m;
h_273=0;
data=hanzi[ziwei[3]*32+startline*2];
h_273=1;
h_273=0;
l_273=0;
data=hanzi[ziwei[3]*32+startline*2+1];
l_273=1;
l_273=0;
delay_us(5);
break;
case4:
P3=ci_m;
h_273=0;
data=hanzi[ziwei[4]*32+startline*2];
h_273=1;
h_273=0;
l_273=0;
data=hanzi[ziwei[4]*32+startline*2+1];
l_273=1;
l_273=0;
delay_us(5);
break;
case5:
P3=ci_m;
h_273=0;
data=hanzi[ziwei[5]*32+startline*2];
h_273=1;
h_273=0;
l_273=0;
data=hanzi[ziwei[5]*32+startline*2+1];
l_273=1;
l_273=0;
delay_us(5);
break;
default:
Bdr=0;
bitline=0;
break;
}
startline++;
}
}
for(ci_m=0;ci_m<16;ci_m++)
{
e1=1;
e2=0;
if(startline>=16)
{
startline=0;
if(Bdr<5)
Bdr++;
else
Bdr=0;
}
else
{
switch(Bdr)
{
case0:
P3=ci_m;
h_273=0;
data=hanzi[ziwei[0]*32+startline*2];
h_273=1;
h_273=0;
l_273=0;
data=hanzi[ziwei[0]*32+startline*2+1];
l_273=1;
l_273=0;
delay_us(5);
break;
case1:
P3=ci_m;
h_273=0;
data=hanzi[ziwei[1]*32+startline*2];
h_273=1;
h_273=0;
l_273=0;
data=hanzi[ziwei[1]*32+startline*2+1];
l_273=1;
l_273=0;
delay_us(5);
break;
case2:
P3=ci_m;
h_273=0;
data=hanzi[ziwei[2]*32+startline*2];
h_273=1;
h_273=0;
l_273=0;
data=hanzi[ziwei[2]*32+startline*2+1];
l_273=1;
l_273=0;
delay_us(5);
break;
case3:
P3=ci_m;
h_273=0;
data=hanzi[ziwei[3]*32+startline*2];
h_273=1;
h_273=0;
l_273=0;
data=hanzi[ziwei[3]*32+startline*2+1];
l_273=1;
l_273=0;
delay_us(5);
break;
case4:
P3=ci_m;
h_273=0;
data=hanzi[ziwei[4]*32+startline*2];
h_273=1;
h_273=0;
l_273=0;
data=hanzi[ziwei[4]*32+startline*2+1];
l_273=1;
l_273=0;
delay_us(5);
break;
case5:
P3=ci_m;
h_273=0;
data=hanzi[ziwei[5]*32+startline*2];
h_273=1;
h_273=0;
l_273=0;
data=hanzi[ziwei[5]*32+startline*2+1];
l_273=1;
l_273=0;
delay_us(5);
break;
default:
Bdr=0;
bitline=0;
break;
}
startline++;
}
}
}
voidinit()
{
P3=0x00;
data=0x00;
P2=0x00;
e1=1;
e2=1;
TMOD=0x01;
TR0=0;
EA=1;
ET0=1;
TH0=0xd8;
TL0=0xf0;
}
voidtimer0(void)interrupt1using0
{
TH0=0xd8;
TL0=0xf0;
if(cs_xunhuan>=20)
{
cs_xunhuan=0;
if(bitline<96)
bitline++;
elsebitline=0;
}
cs_xunhuan++;
move();
}
voidmain()
{
uintcs_xunhuan=0;
init();
TR0=1;
while
(1)
{
;
}
}
Zimo.h
unsignedcharcodehanzi[]=
{
/*--文字:
美--*/
/*--宋体12;此字体下对应的点阵为:
宽x高=16x16--*/
0x00,0x80,0x84,0x80,0x84,0x44,0x94,0x44,0x95,0x24,0x96,0x14,0x94,0x0C,0xFC,0x07,
0x94,0x0C,0x96,0x14,0x95,0x24,0x94,0x64,0x94,0xC4,0x84,0x44,0x80,0x00,0x00,0x00,
/*--文字:
玲--*/
/*--宋体12;此字体下对应的点阵为:
宽x高=16x16--*/
0x42,0x10,0x42,0x10,0xFE,0x0F,0x42,0x08,0x42,0x08,0x80,0x00,0x40,0x05,0x30,0x09,
0x0C,0x11,0x23,0x39,0xCC,0x65,0x10,0x03,0x20,0x01,0x40,0x00,0x40,0x00,0x00,0x00,
};
74154资料
线译码器74LS154引脚,参数,及功能介绍
--------------------------------------------------------------------------------
4线-16线译码器74LS154/54LS154引脚图,参数,及功能介绍
74ls154功能简介:
54/74154为4线-16线译码器,当选通端(G1、G2)均为低电平时,可将地址端(ABCD)的二进制编码在一个对应的输出端,以低电平译出。
如果将G1和G2中的一个作为数据输入端,由ABCD对输出寻址,74LS154还可作1线-16线数据分配器。
74LS154管脚图:
引脚功能介绍
A、B、C、D译码地址输入端(低电平有效)
G1、G2选通端(低电平有效)
0-15输出端(低电平有效)
74ls154真值表:
推荐工作条件
74ls154电气参数
极限值
电源电压:
7V
输入电压:
5.5V
工作环境温度
54154:
-55~125℃
74154:
0~70℃
贮存温度:
-65~150℃
74ls154芯片资料
2007-08-2020:
48
74ls138译码器
74ls139跟74ls138类似,区别在于139内部是2个独立的2-4译码器。
74ls154跟74LS138很类似,差别就在于,138是3-8译码器,154是4-16译码器。