MSP-LAB实训-GPIO高级输出之1.4:8x8点阵显示 实验要求: 1、请在MSP-LAB系统设计驱动8x8点阵显示电路及其程序编制; 2、因为主处理器MSP430G2553最多提供24个GPIO,所以本题仅要求实现一个8x8点阵显示。 题意分析及程序框架设计: 1、根据图1.4.1的原理图得知,四个8x8分别由POS1~POS16、NEG1~NEG16连接和驱动; 2、根据8x8点阵芯片手册中描述的内部结构图(见图1.4.2)得知,POSx为高,NEGy为低时,则对应的(x,y)位置的LED点亮,否则为熄灭状态; 3、因为8x8点阵的管脚都是共享的,因此,正确驱动点阵显示则必须使用例程1.3中的设计的扫描输出方法,即利用人类视觉暂留现象,在短时间内依次显示相应内容; 4、因为单片机的管脚显示,本题仅要求实现一个8x8点阵的显示,为了方便设计,我们仅使用P1、P2分别对应连接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.5ms的Timer中断来推动系统的扫描机制; (2) 字库设计: ① 因为一个扫描周期内扫描输出八列POS值,每个POS值对应八个LED灯的状态,需要用一个unsigned char的8bit对应表达。因此需要设计帧存为unsigned char FrameBuf[8]来表示; ② 如图1.4.3所示,我们以“中”“文”两个字为例,展现如何设计字库的方法,其中因为POS值为各列点亮LED的值,每个字符下面的值表明本列的显示的字库值,所以“中”字的字库为{0x00, 0x1C, 0x14, 0x7E, 0x14, 0x1C, 0x00, 0x00}; 程序设计实现: 1、跟例程1.3原理相同,用Grace工具设置2.5ms的TimerA中断及其中断**程序、设置P1、P2为输出; 2、修改中断**程序及其帧存全局变量如图1.4.4所示; 3、修改主程序如图1.4.5所示,本主程序为间歇显示“中”“文”两个字;本题仅显示两个字符,所以直接在主程序中填写帧存内容。真正单片机程序可以将所有要显示的字符生产一个二维数组的字符库。用索引的方式,查询所要显示的文字在字库中的内容,并填写到帧存中,即完成了某一个字符的显示。 实验效果: 1、连线图参见图1.4.6 所示;
|