本帖最后由 jinglixixi 于 2023-8-29 20:48 编辑
#申请原创# @21小跑堂
Milk-V Duo是一款基于算能 CV1800B芯片的MPU,它能够运行基于LINUX和RTOS的操作系统。Milk-V Duo为专业人士、工业OEM企业、物联网爱好者、业余爱好者、DIYers和创作者提供了一个可靠、低成本且极具功能的平台。 Milk-V Duo开发板的外观如图1和图2所示,在使用前需借助板载的TF卡座来连接装有固件的TF卡。 图1 开发板正面
‘
’ 图2开发板背面
在安装固件后,系统就可提供一个进行开发和测试的LINUX环境。
图3 进入系统后
1. 显示驱动 为了能快速地解决8*8点阵模块的显示驱动问题,这里是采用脚本编程的方式。 所用的8*8点阵模块是以MAX7219为功能处理芯片,从而将GPIO口所输出的串行信号转化并行信号来控制点阵模块。 点阵模块与开发板的具体连接关系为: DIN---GP6---gpio375 CS ---GP7---gpio374 CLK---GP8---gpio373
图4 所用引脚
将所用引脚配置为输出工作模式的程序为: din_GPIO=/sys/class/gpio/gpio375
cs_GPIO=/sys/class/gpio/gpio374
clk_GPIO=/sys/class/gpio/gpio373
if test -d $din_GPIO; then
echo "GPIO375 already exported"
else
echo 375 > /sys/class/gpio/export
echo 374 > /sys/class/gpio/export
echo 373 > /sys/class/gpio/export
fi
echo out > $din_GPIO/direction
echo out > $cs_GPIO/direction
echo out > $clk_GPIO/direction
实现串行信号模拟输出程序为: 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 {
# 0x8,0x7F,0x49,0x49,0x7F,0x8,0x8,0x8
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
}
在运行程序后,其显示效果如图5所示。
图5汉字显示效果
2. 字库构建及使用 由于此时的LINUX系统没有提供对数组的支持,因此给程序设计带来了较大的制约。 那如何来解决这个问题呢? 方法有2个,当数据量较小的情况下,可通过字符串截取的方式来解决;而在数据量较大的情况下,则可通过文本文件的读取来解决。
1)字符截取方式 在该处理方式下,是将多个数据以字符串的方式存放到一个变量中,例如: m="0x21,0x23" 然后使用指令echo ${m:0:4},即可获得第一项数据“0x21”。 若使用指令 echo ${m:5:4},则可获得第二项数据“0x23”。
2)文件读取方式 在该处理方式下,首先是创建一个文本文件test.txt,其内容如下: 123 456 789 然后编写一个脚本程序,其内容为: count=1
cat test.txt | while read line
do
echo "Line $count:$line"
let count=$count+1
done
这样在执行该脚本程序时,就可得到如下的输出结果,即数据文件中的数据就按行被提取出来。 Line 1: 123 Line 2: 456 Line 3: 789
3)混合处理方式
为便于更好地利用字模提取软件所输出的数据,可采用混合处理的方法来解决,即按行来从数据文件中读取数据,再以字符截取的方式来提取各项数据,即可达到使用二维数组的功效。 图6 提取结果
当我们以该处理方式来进行显示时,就可将字库中的内容循环地显示处理,相应的显示程序为:
所实现的显示效果如图7和图8所示,这样就完美地突破了数组的限制! 图7 数字显示效果
图8 字符显示效果
|