基于MSP430驱动键盘显示电路<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
来源:鄂州职业大学 作者:陈新建 发布日期:<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />2008-7-22
关键词: MSP430,键盘,LED
摘要 主要介绍了TI公司的新型的16位超低功耗MSP430F22X系列单片机的结构、特性和功能及液晶显示器LCD的发光原理和类型,讨论了该系列单片机与LED及键盘的人机接口电路的设计方案和相应的软件程序的实现方法,最后给出它在实际电路中应用实例。
引言
在当今的各种实时自动控制和智能化仪器仪表中,人机交互是不可缺少的一部分。一般而言,人机交互是由系统配置的外部设备来完成,但其实现方式有两种:一种是由MCU力口驱动芯片实现,如键盘显示控制芯片SK5279A,串行数据传输数码显示驱动芯片MAX7219等等,这时显然MCU没有LED的驱动功能。另一种就是MCU本身具有驱动功能,它通过数据总线与控制信号直接采用存储器访问形式或I/O设备访问形式控制键盘和LED实现人机对话。这里的MCU主要有世界各大单片机生产厂商开发的各种单片机,其中TI公司的MSP430系列因其许多独特的特性引起许多研究人员的特别关注,在国内外的发展应用正逐步走向成熟。
MSP430
引脚图
MSP430F2274 的封装形式有两种,分别为38-Pin SSOP 封装和40-Pin QFN 封装,其引脚图如
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />
MSP430
头文件
MSP430 系列单片机的每一种型号都有大量的片内外围模块,而这些模块都通过大量的控制寄存
器来控制,每一个寄存器有它对应的物理地址,对它们的使用实质上是直接操作(读写)这些物理
地址。但大量的寄存器很难记住他们对应的物理地址,MSP430 的IAR 调试环境(安装路径下的INC
下)提供了各种系列的标准头文件,这些文件已经定义好了个寄存器的相应物理地址,只要在程序
中使用寄存器名以及寄存器的控制位名即可。如在端口P1.0 输出高电平,用下列程序即可实现:
(1)汇编程序
MOV.B #01H, &22H
MOV.B #01H, &21H
也可以使用下列语句
#include "msp430x44x.h"
MOV.B #BIT0, &P1DIR
MOV.B #BIT0, &P1OUT
(2)C 语言程序
#include "msp430x22x4.h"
P1DIR |= 0x01
P1OUT |= 0x01
第一段P1DIR 的地址为22H,P1OUT 的地址为21H,则两句执行后得到结果。第二段程序开始
包涵了头文件msp430x22x4.h,在后面的两句中就可以直接使用寄存器名,还有BIT0 也在头文件中
定义了#define BIT0 (0x0001),所以这两条语句与第一段的语句实质上是一样的。
第二段为C 语言程序,寄存器定义同样在头文件msp430x22x4.h 中。msp430x22x4.h 可在安装软件的INC 子目录中查找。
软件设计
硬件连接电路图为例,编写了键盘控制及显示程序,程序在IAR Embedded Workbench编译通过。全部主程序包括详细的发射和接收子程序,及初始化和等待键盘输入转换、显示等等,值得注意的是发射与接收的控制要适当。
该程序是用汇编编写的。程序实现的是等待按键输入,读取键值,最后进行键值处理和显示的功能。
检测是否有键按下是通过KEY是否有高电平信号。平时,KEY为低电平,当有键按下时为高电平,它发送一个脉冲给单片机MSP430F22X,当单片机检测到该信号时,判断按键的功能,从而进行相应的处理。
操作及程序
(1)要求:连接LED 短接器。
(2)实验连接
(3)程序:
NAME main
PUBLIC main
;-----------------------------------------------------------------------------
; MSP430F22x 中断向量表
;-----------------------------------------------------------------------------
ORG 0FFFEh
DC16 main
;------------------------------------------------------------------------------
RSEG CODE ;程序开始
;------------------------------------------------------------------------------
#include "msp430x22x4.h"
int main( void )
{
int i,j;
WDTCTL=WDTPW+WDTHOLD;
BCSCTL1 =CALBC1_1MHZ;
DCOCTL =CALBC1_1MHZ;
P4OUT |=0X00;
P4DIR |=0XFF;
P3OUT |=0XFF; //P3口全都输出高电平;
P3DIR |=0XFF; //所有数码管显示数字8;
while(1)
{
for(i=1;i<=1000;i++)
{
for(j=1;j<=100;j++)
{P4OUT=0XC0; //显示数字0;
P3OUT=0X01;}
}
for(i=1;i<=1000;i++)
{
for(j=1;j<=100;j++)
{P4OUT=0XF9; //显示数字1;
P3OUT=0X02;}
}
for(i=1;i<=1000;i++)
{
for(j=1;j<=100;j++)
{P4OUT=0XA4; //显示数字2;
P3OUT=0X04;}
}
for(i=1;i<=1000;i++)
{
for(j=1;j<=100;j++)
{P4OUT=0XB0; //显示数字3;
P3OUT=0X08;}
}
for(i=1;i<=1000;i++)
{
for(j=1;j<=100;j++)
{P4OUT=0X99; //显示数字4;
P3OUT=0X10;}
}
for(i=1;i<=1000;i++)
{
for(j=1;j<=100;j++)
{P4OUT=0X92; //显示数字5;
P3OUT=0X20;}
}
for(i=1;i<=1000;i++)
{
for(j=1;j<=100;j++)
{P4OUT=0X82; //显示数字6;
P3OUT=0X40;}
}
for(i=1;i<=1000;i++)
{
for(j=1;j<=100;j++)
{P4OUT=0XF8; //显示数字7;
P3OUT=0X80;}
}
}
}
显示电路
系统的显示电路采用的是简单的LED显示方式,这样的能满足该系统的要求,也可以降低系统的成本
该显示电路直接与单片机的数据I/O口进行链接,由于MSP430F22X具有丰富的I/O口资源,这样采用并行的接口方式非常容易,减小了系统的复杂度,也可以增加系统的可靠性。
PX.0—Px.6是用来显示数据的位码的,PX.0—Px.6是用来显示数据的段码的,
在此应该注意
如果用9013或者9014(都为NPN管)用它来驱动放大的话LED灯的话它显示的比较暗,
本人在此实验中多次试验,将9014(NPN管)的E极和C极互换接它显示的比较亮,或将电阻短路同样亮,
所以在此我推荐:如果用共阳极大LED数码管的话最好用9015(PNP管)
键盘输入电路
键盘电路主要是用来输入数据的,从而实现人机互交。该系统的键盘设计上采用扫描方式实现4×4的矩阵键盘。
<?xml:namespace prefix = w ns = "urn:schemas-microsoft-com:office:word" />
用户160522 2008-8-13 09:30