51单片机 16X192点阵程序动态显示汉字 教程(附仿真文件+源代码)
网友投稿
最近有小伙伴给我留言说希望我能写一篇汉子动态程序显示的文章,他想学习这方面的知识,我就抽空用仿真软件做了一个,鉴于项目比较简单,我就不过多的描述了,有问题请及时留言。
下面进入正题:
51单片机 16X192点阵程序动态显示任意汉字
程序参考源代码如下:
#include<AT89X52.H>
sbit ST=P3^5;
sbit E1=P3^4;
sbit MR=P3^7;
char cashe[12];
char code wd[12][16]={
{0xFF,0xC0,0xFE,0xFE,0xFE,0xFE,0x80,0xFE,0xFD,0xFD,0xFB,0xF7,0xEF,0xDF,0x3F,0xFF},
{0xFF,0x03,0xFF,0xFF,0xFF,0xFF,0x01,0x7F,0x7F,0x7F,0x7F,0x7F,0x7D,0x7D,0x81,0xFF},/*"无",0*/
/* (16 X 16 , 宋体 )*/
{0xDF,0xDF,0xDF,0xCF,0x57,0x58,0x5F,0xDF,0xDE,0xDE,0xDE,0xDD,0xDD,0xDB,0xDB,0xD7},
{0x7F,0x6F,0x73,0x77,0x7F,0x01,0x5F,0x5F,0xDF,0xDF,0xDF,0xDF,0xDD,0xDD,0xE1,0xFF},/*"忧",1*/
/* (16 X 16 , 宋体 )*/
{0xFE,0xFE,0xFE,0xC0,0xDE,0xDE,0xC0,0xDE,0xDE,0xDE,0xC0,0xDE,0xFE,0xFE,0xFF,0xFF},
{0xFF,0xFF,0xFF,0x07,0xF7,0xF7,0x07,0xF7,0xF7,0xF7,0x07,0xF7,0xFD,0xFD,0x01,0xFF},/*"电",2*/
/* (16 X 16 , 宋体 )*/
{0xFF,0xC0,0xFF,0xFF,0xFF,0xFE,0xFE,0xFE,0x00,0xFE,0xFE,0xFE,0xFE,0xFE,0xFA,0xFD},
{0xFF,0x0F,0xDF,0xBF,0x7F,0xFF,0xFF,0xFB,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},/*"子",3*/
/* (16 X 16 , 宋体 )*/
{0xFF,0x83,0xBB,0xAB,0xAA,0xAA,0xA9,0xAB,0xAB,0xAA,0xEE,0xD7,0xDB,0xBB,0x7F,0xFF},
{0x7F,0x3F,0x7F,0x01,0xFD,0xFD,0xBD,0xBD,0x5D,0xED,0x05,0xED,0xFD,0xFD,0xEB,0xF7},/*"购",4*/
/* (16 X 16 , 宋体 )*/
{0xEF,0xEF,0xAF,0xAE,0x82,0xAD,0x6B,0xEB,0xE6,0xCD,0x2B,0xEF,0xEE,0xED,0xEB,0xFF},
{0x7F,0x7F,0x7F,0x03,0xAB,0xAB,0x6B,0x6B,0xDB,0xDB,0xBB,0x7B,0xFB,0xFB,0xD7,0xEF},/*"物",5*/
/* (16 X 16 , 宋体 )*/
};
void del(int i)//============================//延时程序
{while(i--);}
aline() ////=======================发送一行的显示程序
{
char i=0;
TI=0;
for(i=0;i<12;i++)
{SBUF=cashe[i];while(~TI);TI=0;} //将缓存中的信息转存入595的存储器中,到此不显示
}
main()
{
int m=0,n=0;
TI=0;
SM0=0;
SM1=0;
E1=0;
while(1)
for(m=0;m<16;m++) //共有16行 循环16次显示这16行 串行的595送出行的数据
{ //由74hc154选中要显示的行
for(n=0;n<12;n++) //这个for循环用来向缓存数组中装载要显示的内容
{cashe[11-n]=wd[n][m];} //将第m个字的第n行信息装载 ,因为595串接 数据第一个进去的会在最后一个595中,最后进去的会在第一个595中
aline(); //将缓存中的一行信息载入595缓存中
ST=0;ST=1; //595产生上升沿 输出595锁存的数据
P2=m; //选中要显示的行输出数据
del(100);//延时一段时间,以造成视觉暂存效应
}
}
最后,如果有什么意见或者建议欢迎您留言给我,让我们共同学习一起进步,如果需要 程序完整源代码,请在下方留言或者私信我,看到后会第一时间回复。
如果喜欢我的文章请点赞转发加关注啊,谢谢!
单片机入门-旋转屏,用16个LED灯显示16个汉字
所谓的旋转显示屏,是在电路中只有一列发光二极管,通过电动机带动发光二极管转动,当这列发光二极管转到不同位置,用单片机控制相应的发光二极管点亮和熄灭,由于人眼的视觉暂留现象形成图形或文字,达到悬浮在空中神奇梦幻般的效果。
神奇梦幻般的效果
下面本文就带您一起DIY一个属于自己的LED旋转显示屏。
由于显示屏是靠转动的发光二极管的残留影像显示信息的,整个电路所需的发光二极管的数量很少,本电路共使用16只发光二极管,所以电路原理图非常简单,几乎和流水灯电路无异,很适合手工制作。
旋转屏仿真原理图
原理图为:单片机最小系统-供电电路、复位电路、振荡电路,16个发光二极管接到P1口和P3口,霍尔接到P2.0。单片机P1、P3为推挽输出,驱动发光二极管;P2.0为上拉输入,用来测速。
旋转屏实物图
但由于整个电路板处于高速旋转状态,所以我们首先要解决两问题:一是如何给运动的系统供电、二是如何保证显示信息稳定显示;给运动的系统供电,常用的供电方式有三种:电池供电、电刷供电、无线感应供电。
旋转屏拆分图
高速旋转电机选用电磁炉散热风扇电机,这个电机转速快、稳定、静音、控制简单。
旋转电机——电磁炉散热风扇
搭好硬件电路,就可以搞软件了,软件定义P2.0为霍尔输入。
霍尔检测I/O定义P2.0
由霍尔测得速度来调整扫描速度,到达显示宽度不变的效果,霍尔也起到检测起点的作用,当检测到起点是发光二极管就开始扫描,这样就能在固定位置显示内容。下面的延时函数是用来控制扫描速度的,在电机转速不变的情况下,延时越大字体越宽,反之亦然。
很简单的程序
字体取模时要根据电路连接、发光二极管的布置选择取模方式:横向取模、纵向取模、字节倒序等一系列选项。
字体取模软件——取模
把取模好的数据表导入程序,编译,烧录就完成了。就是这么简单!!!
字体的数据
经验分享:确定二极管位置时,电机轴心位置到板子最下边缘的距离不要超过电机轴心到最近一个发光二极管的距离,不然转起来板子会和发光二极管有重合,影响亮度;要用同种颜色发光二极管,那样效果会更好,显示内容清晰。二极管尽量离电机轴心远一些,可以做成发光二极管在两侧,竖着排放效果更好。要尽量降低成品重量,二极管什么的能用贴片的就用贴片。
旋转屏效果图
相关问答
单片机 控制的16*16点阵 显示 汉字,不知道为什么会出现字体镜像?16X16点阵是双字节数据。(1)显示程序不变,把点阵字符数据镜像:把D15与D0、D14与D1、D13与D2、D12与D3。。。对调。如:12E8H=00010...
单片机 字模提取v22怎么使用?单片机字模提取v22是一款功能强大的工具,可以帮助用户方便地提取单片机字模。使用时,首先安装好软件,并连接好单片机,然后打开软件选择需要提取的字体文件,...
C51 单片机 中,如何把一int型形参中的数值 显示 在1602液晶屏上?在C51单片机中,要将一个int型形参中的数值显示在1602液晶屏上,可以通过以下步骤进行操作:1.首先,连接好C51单片机和1602液晶屏。确保液晶屏的VCC(正电源)...
用isp的串口助手给 单片机 发程序,文本模式和HEX模式有什么区别?你好,HEX模式是将要发送的数据按照16进制格式进行发送;而你单片机的接收是用的16进制接收的,所以你发送也得按照16进制进行!你好,HEX模式是将要发送的数据按...
led 文字 屏控制方式?LED文字屏控制方式主要分为两种:串口控制和无线控制。串口控制需要通过串口通信协议将数据发送到LED屏控制器,控制器再将数据解析并输出到LED屏幕上。无线控...
Proteus7 AT89C51 单片机 OLED屏幕怎么设置?要设置Proteus7AT89C51单片机连接OLED屏幕,首先需要将OLED屏幕连接到单片机的合适引脚上,并在Proteus7软件中选择正确的OLED模拟器组件。然后必须编写C语言...
单片机 蜂鸣器除了那种调的声音,还能发出人说话的声音吗?单片机蜂鸣器一般用于发出简单的音调和警报声,不能直接用于模拟人的语音。然而,通过与单片机的组合使用,可以实现类似人说话的声音。具体实现方法是,在单片...
显示 器是如何显示内容的,例如在屏幕中间显示你好,是怎么来的?这要分什么样的显示器,1.如果电脑显示器,直接在操作系统的应用文件,比如windos下的word文件内的指定位置敲入你好即可。2.如果是工业用的文本显示器或触摸屏,...
单片机 C语言的宏定义有什么作用?跟单片机没关系,这是C语言的东西-------------#是C语言里的预处理命令,编译器在编译代码之前,会预先处理这部分内容,#define就是宏定义,对于#define的...
单片机 开发板如何使用?如果是购买的开发板,那么就会有配套的资料光盘,学习的步骤则是1、先看清开发板的原理图,也就是板子上面都有哪些可用的模块2、在资料光盘内寻找到说明文件...