首页 理论教育 单片机开发入门:6.4寸16×16点阵汉字显示程序设计

单片机开发入门:6.4寸16×16点阵汉字显示程序设计

时间:2023-10-23 理论教育 版权反馈
【摘要】:④ 循环16次即可完成显示“手”字。图6-30 实际的16×32点阵显示“手机”字后的效果图图6-31 引脚逻辑状态配置图采用74HC595驱动LED点阵显示汉字,电路设计依据驱动点阵行和列的连接方式,并决定程序中字模的提取格式。

单片机开发入门:6.4寸16×16点阵汉字显示程序设计

1.程序设计

汉字显示电路可参考两个汉字的点阵驱动电路,因为是用4个8×8点阵组成了一个16×16点阵,因此每个汉字有16行和16列,显示两个汉字需要8个8×8点阵。又因为两个汉字是水平显示,可以让单片机来分时驱动行信号即两个汉字的行线是共用的,只需要控制32个列线的4个74HC595即可。显示程序如下:

978-7-111-43463-4-Chapter06-91.jpg

978-7-111-43463-4-Chapter06-92.jpg

图6-28 字模提取软件界面

978-7-111-43463-4-Chapter06-93.jpg

978-7-111-43463-4-Chapter06-94.jpg

74HC595写数据时,应先写第二个参数,这个操作就是控制输出汉字的点阵数据的。即先写的参数bs输出到x1~x8,后写的参数输出到x9~x16。这与取模工具中的纵向取模是一致的。具体程序如下:

978-7-111-43463-4-Chapter06-95.jpg

978-7-111-43463-4-Chapter06-96.jpg

2.程序说明

1)“手机”两个汉字的字模数组可通过取字模软件获得,纵向取模,16×16点阵。

2)两个汉字共有32个列驱动信号(图中标注为1~16,21~36),又因为两个16×16点阵共用16行的行扫描驱动,行扫描接口图中标示为x1~x16,加上汉字又是纵向取模的,因此先送出每个汉字第一列的驱动信号,然后再送出2B的行信号,列信号采用级联的方式。具体步骤为如下:

① 调用函数dat595(0x00,0x40)依次送出第1个汉字“手”字的第1列信号的2个字节0x40,0x00;这时字节0x40对应行信号x1~x8,字节0x00对应行信号x9~x16,因为这2B中只有一位为高电平,所以可以在仿真图上看到第1列只有一个发光二极管被点亮(就是x7这一位为高的结果,x7为高,对应字节0x40中的D6位)。

② 调用suocun()子函数,锁存74HC595上面的数据。(www.xing528.com)

③ 调用shuchu()子函数,输出74HC595上面的数据。

④ 循环16次即可完成显示“手”字。

⑤ 再把“机”字的16×16点阵字模依次送出,由于显示的速度很快,加上人眼的视觉残留作用,我们看到的就是完整的“手机”两个字。

3.仿真及显示效果图

把字模提取软件提取的“手机”两个字的字模加到程序中,编译生成.hex文件,然后加载到单片机中运行得到如图6-29所示的仿真结果。

978-7-111-43463-4-Chapter06-97.jpg

图6-29 组合的16×32点阵显示“手机”字后的效果图

仿真后合成一个画面如图6-30所示。由于Proteus仿真时显示引脚的电平信号,合成图可能会有红绿小点闪烁,我们可以在“System”菜单下点击“Set Anima-tion Options...”子菜单打开“An-imated Circuits Configuration”对话框,然后将“Animation Options”选项下面的“Show Logic State of Pins?”复选框去掉选中来改变设置。其设置如图6-31所示。改变设置以后,重新仿真运行,就会看到比较洁净的显示效果。

978-7-111-43463-4-Chapter06-98.jpg

图6-30 实际的16×32点阵显示“手机”字后的效果图

978-7-111-43463-4-Chapter06-99.jpg

图6-31 引脚逻辑状态配置图

采用74HC595驱动LED点阵显示汉字,电路设计依据驱动点阵行和列的连接方式,并决定程序中字模的提取格式。在本项目中,汉字显示方式采用动态扫描显示技术,读者可以在此程序的基础上,改为行列控制,使汉字在显示过程中进行左右或上下移动。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈