字符型 LCD1602 通常有 14 条引脚线或 16 条引脚线的 LCD , 多出来的 2 条线是背光电
源线 VCC(15 脚 ) 和地线 GND(16 脚 ) , 其控制原理与 14 脚的 LCD 完全一样 , 引脚定义如下表
所示:
在这里要特别注意了:MSP430端口输出电压是3.3v的,不是5v的,所以2和15脚要另找5伏电压接上,否则虽然能显示但不清楚而且会出现乱码。
2脚相当于清晰度调节,一般接地就可以,但最好接上可变电阻调节一下。
下面是端口连接:
不多解释了,接上线就行了,下面是C语言程序:
#include /* 必要操作:正确连接1602 */ #define uint unsigned int //定义常用数据类型替代码 #define uchar unsigned char #define dat P2OUT //定义LCD1602的数据口为P2 #define CLR_RS P1OUT&=~BIT0; //置零P1.0位,也就是置零RS #define SET_RS P1OUT|=BIT0; //置壹P1.0位,也就是置壹RS #define CLR_RW P1OUT&=~BIT1; //置零P1.1位,也就是置零RW #define SET_RW P1OUT|=BIT1; //置壹P1.1位,也就是置壹RW #define CLR_EN P1OUT&=~BIT2; //置零P1.2位,也就是置零EN #define SET_EN P1OUT|=BIT2; //置壹P1.2位,也就是置壹EN uchar busy; //1602判忙标志 void delay_1ms(void); //延时程序 void delay_1s(void); //延时程序 void display(void); //显示程序 void busy_1602(void); //液晶查忙程序 void shj_1602(uchar a); //液晶写数据程序 void init_1602(void); //液晶初始化 void zhl_1602(uchar a); //液晶写指令程序 void main(void) //主程序开始 { WDTCTL=WDTPW+WDTHOLD; P1DIR=0xff; P2DIR=0xff; while(1) { display(); //在大循环内调用显示函数,一直显示 } } void delay_1ms(void) //延时程序 { uchar i,j; for(i=0;i<10;i++) for(j=0;j<20;j++); } void delay_1s(void) //延时程序 { int i,j; for(i=0;i<10;i++) for(j=0;j<1000;j++); } void display(void) //液晶显示程序 { uchar i; //定义计数值 uchar table0[16]={"What do you want"}; //定义LCD1602显示2行的字符 uchar table1[16]={"I want you now.."}; init_1602(); //初始化1602 zhl_1602(0x80); //写指令 for(i=0;i<16;i++) //发送数据第一行 { shj_1602(table0[i]); } zhl_1602(0xc0); for(i=0;i<16;i++) //发送数据第二行 { shj_1602(table1[i]); } } void busy_1602(void) //查询忙碌标志信号程序 { do { CLR_EN; SET_RW; CLR_RS; SET_EN; busy=dat; CLR_EN; delay_1ms(); } while(busy&&0x10==1); } void zhl_1602(uchar a) //写指令到LCM程序 { busy_1602(); CLR_EN; CLR_RW; CLR_RS; SET_EN; dat=a; CLR_EN; } void shj_1602(uchar a) //写数据到LCM程序 { busy_1602(); CLR_EN; CLR_RW; SET_RS; SET_EN; dat=a; CLR_EN; } void init_1602(void) //启动LCM程序 { zhl_1602(0x38); zhl_1602(0x0c); zhl_1602(0x06); }
上一篇:在MSP430F1611上实现周期图谱分析及校正
下一篇:MSP430学习笔记——FLASH
推荐阅读最新更新时间:2024-11-13 13:26