MSP-LAB实训-GPIO高级输出之1.4:8x8点阵显示

[复制链接]

7

主题

16

帖子

121

积分

慕课讲师

积分
121
楼主
查看: 2200回复: 1 发表于 2018-10-24 23:20:38   只看该作者
MSP-LAB实训-GPIO高级输出之1.4:8x8点阵显示
实验要求:
1、请在MSP-LAB系统设计驱动8x8点阵显示电路及其程序编制;
2、因为主处理器MSP430G2553最多提供24GPIO,所以本题仅要求实现一个8x8点阵显示。
题意分析及程序框架设计:
1、根据图1.4.1的原理图得知,四个8x8分别由POS1~POS16NEG1~NEG16连接和驱动;
2、根据8x8点阵芯片手册中描述的内部结构图(见图1.4.2)得知,POSx为高,NEGy为低时,则对应的(xy)位置的LED点亮,否则为熄灭状态;
3、因为8x8点阵的管脚都是共享的,因此,正确驱动点阵显示则必须使用例程1.3中的设计的扫描输出方法,即利用人类视觉暂留现象,在短时间内依次显示相应内容;
4、因为单片机的管脚显示,本题仅要求实现一个8x8点阵的显示,为了方便设计,我们仅使用P1P2分别对应连接POS1~POS8以及NEG1~NEG8,这样仅正确驱动左上角的点阵U4
5、程序框架设计要点:
(1) 扫描机制设计如下:
① NEG1~NEG8作为依次扫描控制线,即每一个单一时刻,NEG1~NEG8中仅一根线为低‘0’,其余都为高‘1’;
而当NEGx为‘0’时,这时候POS1~POS8中,若POSy为‘1’,则表明第x列第y行为点亮状态,否则为熄灭状态;
当在一个扫描周期内,依次控制NEG的不同列,扫描输出POS值,则实现了8x8的点阵内容显示;
为了避免闪烁感,我们设置扫描频率为50Hz,所以一个扫描周期为20ms,因此一列显示时间为20ms/8 = 2.5ms。程序中需要设计一个2.5msTimer中断来推动系统的扫描机制;
(2) 字库设计:
因为一个扫描周期内扫描输出八列POS值,每个POS值对应八个LED灯的状态,需要用一个unsigned char8bit对应表达。因此需要设计帧存为unsigned char FrameBuf[8]来表示;
如图1.4.3所示,我们以“中”“文”两个字为例,展现如何设计字库的方法,其中因为POS值为各列点亮LED的值,每个字符下面的值表明本列的显示的字库值,所以“中”字的字库为{0x00, 0x1C, 0x14, 0x7E, 0x14, 0x1C, 0x00, 0x00}
程序设计实现:
1、跟例程1.3原理相同,用Grace工具设置2.5msTimerA中断及其中断**程序、设置P1P2为输出;
2、修改中断**程序及其帧存全局变量如图1.4.4所示;
3、修改主程序如图1.4.5所示,本主程序为间歇显示“中”“文”两个字;本题仅显示两个字符,所以直接在主程序中填写帧存内容。真正单片机程序可以将所有要显示的字符生产一个二维数组的字符库。用索引的方式,查询所要显示的文字在字库中的内容,并填写到帧存中,即完成了某一个字符的显示。
实验效果:
1、连线图参见图1.4.6所示;
2、实验演示视频参见视频 “例程1.4.mp4”。链接:https://weibo.com/1404637705/GFrSVugnI

7

主题

16

帖子

121

积分

慕课讲师

积分
121
沙发
发表于 2018-10-25 09:11:45   只看该作者
课后练习:
1、请自行构建自己名字的字库,并依次显示;
2、请更改连接方式,使用P1P2P3端口,实现16x8的显示屏的驱动电路,并设计相应的显示驱动程序;
注:
1、为了节省GPIO管脚,可以采用MSP-LAB上的74HC595移位寄存器实现完整的16x16字符屏的驱动,用户可以自行构建GPIO驱动74HC595的接口代码,实现上述功能。
2、June老师拟将在SPI外设讲完之后,再来进行上述功能相关知识和程序的讲解,分为用SPI接口设计移位寄存器的驱动,和GPIO模拟方式驱动移位寄存器的方法。

快速回复 返回顶部 返回列表