网站大量收购独家精品文档,联系QQ:2885784924

MSP430单片机控制1602液晶显示.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MSP430单片机控制1602液晶显示

MSP430单片机控制1602液晶显示 字符型 LCD1602 通常有 14 条引脚线或 16 条引脚线的 LCD , 多出来的 2 条线是背光电 源线 VCC(15 脚 ) 和地线 GND(16 脚 ) , 其控制原理与 14 脚的 LCD 完全一样 , 引脚定义如下表 所示: 在这里要特别注意了:MSP430端口输出电压是3.3v的,不是5v的,所以2和15脚要另找5伏电压接上,否则虽然能显示但不清楚而且会出现乱码。 2脚相当于清晰度调节,一般接地就可以,但最好接上可变电阻调节一下。 下面是端口连接: 不多解释了,接上线就行了,下面是C语言程序: #include msp430x14x.h /* 必要操作:正确连接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;i10;i++) for(j=0;j20;j++); } void delay_1s(void) //延时程序 { int i,j; for(i=0;i10;i++) for(j=0;j1000;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;i16;i++) //发送数据第一行 { shj_1602(table0[i]); } zhl_1602(0xc0); for(i=0;i16;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(busy0x10==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); }

您可能关注的文档

文档评论(0)

cgtk187 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档