在通常的情况下,我们所所用的显示器件多是数码管、液晶屏、OLED屏及TFT屏。但在公共场合要显示信息,就要有较大尺寸以便观察。
这里使用的是一种以MAX7219为处理芯片的8*8点阵显示模块,当然在级联的情况下它可显示更多的内容。
该点阵模块除电源引脚外,只有3个引脚,故占用引脚资源比较少。
在安装固件的情况下,利用其所配置的LINUX环境,可通过脚本的编写来实现该点阵模块的显示驱动。
实现串行信号模拟输出程序为:
function max7219_byte{
i=8
let s=$i
echo 0 >$cs_GPIO/value
while [ $s -gt 0 ]
do
let p=$dat/128
echo 0 > $clk_GPIO/value
if [ $p -eq 1 ] ; then
echo 1 > $din_GPIO/value
else
echo 0 > $din_GPIO/value
fi
let dat=$dat*2
let dat=$dat%256
let s=$i-1
let i=$s
echo 1 > $clk_GPIO/value
done
}
实现MAX7219向指定地址发送数据的函数为:
function write_max7219{
echo 0 > $cs_GPIO/value
let dat=$add1
max7219_byte
let dat=$dat1
max7219_byte
echo 1 > $cs_GPIO/value
}
实现点阵模块初始化的函数为:
function int_max7219{
add1=11
dat1=7
write_max7219
add1=12
dat1=1
write_max7219
add1=15
dat1=0
write_max7219
}
通过程序实现指定汉字“中”的显示程序为:
function look {
int_max7219
add1=1
dat1=0x8
write_max7219
add1=2
dat1=0x7F
write_max7219
add1=3
dat1=0x49
write_max7219
add1=4
dat1=0x49
write_max7219
add1=5
dat1=0x7F
write_max7219
add1=6
dat1=0x8
write_max7219
add1=7
dat1=0x8
write_max7219
add1=8
dat1=0x8
write_max7219
}
在运行程序后,其显示效果如图1所示。
图1 汉字显示效果
由于点阵模块的显示需要相应字库的支持,但在LINUX环境下无法直接以数据来构建字库,故可以将字库存放到文本文件中,然后在通过读取该文件来提取所用的字模数据。
在字模提取时,是通过读取整行内容,然后再按存储格式来截取相应的数据。
该方式下的显示程序如下:
图2 数字显示效果
图3 字符显示效果
VID_20230825_165013
|