MSP430单片机实例14-LCD1602液晶显示字符
[复制链接]
任务要求
利用MSP30F247单片机驱动LCD1602液晶,使其显示两行字符:第一行显示“lao ma shi tu mcu”,第二行显示“msp430f247 study”
选取MSP430F247单片机的P2端口连接LCD1602的数据线D0~D7,P3.0,P3.1,P3.2分别连接LCD1602的使能EN端口,读写RW端口,寄存器RS端口,产生LCD1602所需要的时序。
程序设计
//main.c
#include "msp430f247.h"
#include "stdlib.h"
#include "string.h"
/*****************************************软件延时,主频1M*******************/
#define CPU_F1 ((double)1000000)
#define delay_us1M(x) __delay_cycles((long)(CPU_F1*(double)x/1000000.0))
#define delay_ms1M(x) __delay_cycles((long)(CPU_F1*(double)x/1000.0))
/****************************************************************************/
#define SET_RS P3OUT |= BIT2
#define RST_RS P3OUT &= ~BIT2
#define SET_RW P3OUT |= BIT1
#define RST_RW P3OUT &= ~BIT1
#define SET_E P3OUT |= BIT0
#define RST_E P3OUT &= ~BIT0
//
const unsigned char Table1[]={"lao ma shi tu mcu"};
const unsigned char Table2[]={"msp430f247 study"};
void write_com(unsigned char com);//写命令函数
void write_dat(unsigned char dat);//写数据函数
/************************************************
函数名称:主函数
函数功能:LCD1602液晶显示字符
入口参数:无
出口参数:无
描述:
************************************************/
main()
{
unsigned char i;
WDTCTL = WDTPW + WDTHOLD;//关看门狗
P2DIR=0xff;//端口初始化
P3DIR=BIT0+BIT1+BIT2;
RST_E;
write_com(0x38);//设置16*2显示,5*7点阵,8位数据接口
delay_ms1M(5);
write_com(0x01);//显示清屏
delay_ms1M(5);
write_com(0x0c);//显示开关,光标设置
delay_ms1M(5);
write_com(0x06);//显示开关,光标设置
delay_ms1M(5);
write_com(0x80);//数据指针设置,第一行显示
delay_ms1M(5);
for(i=0;i<sizeof(Table1);i++)
{
write_dat(Table1[i]);
}
write_com(0x80+0x40);//数据指针设置,第二行显示
delay_ms1M(5);
for(i=0;i<sizeof(Table2);i++)
{
write_dat(Table2[i]);
}
while(1)
{
}
}
void write_com(unsigned char com)
{
RST_RS;
RST_RW;
P2OUT=com;
SET_E;
delay_ms1M(2);
RST_E;
}
void write_dat(unsigned char dat)
{
SET_RS;
RST_RW;
P2OUT=dat;
SET_E;
delay_ms1M(2);
RST_E;
}
程序说明
程序首先对端口进行初始化,将单片机与液晶LCD1602相连的端口设置为输出端口,并对液晶进行初始化设置。在液晶的程序设计中,用了一些宏定义实现对液晶RS,RW,EN等引脚的高低电平的控制,其顺序是按照液晶显示时序设计的。
值得注意的是,当单片机将字符串输出给液晶显示器后,液晶显示器就不需要单片机对其进行动态刷新操作,这种显示类似于数码管的静态显示,可使单片机程序设计得以简化。
另外,液晶显示一般都是对字符串的输出,在很多情况下,比如A/D转换,数据处理等,结果都是数字,需要将这些数字转换成字符串。
|