msp430g2553+1602显示

2019-07-15 15:44发布

用1602加msp430g2553显示:
当用p1发送数据时,可以显示;但是用p2发送数据时,却不可以显示,但是要用p1的端子采集模拟量,
为什么 换了端子就不可以显示了
代码如下:
#include<msp430.h>
#define uint unsigned int //定义常用数据类型替代码
#define uchar unsigned char
#define dat P2OUT //定义LCD1602的数据口为P2
#define CLR_RS P1OUT&=~BIT0; //置零P2.0位,也就是置零RS
#define SET_RS P1OUT|=BIT0; //置壹P2.0位,也就是置壹RS
#define CLR_RW P1OUT&=~BIT1; //置零P2.1位,也就是置零RW
#define SET_RW P1OUT|=BIT1; //置壹P2.1位,也就是置壹RW
#define CLR_EN P1OUT&=~BIT2; //置零P2.2位,也就是置零EN
#define SET_EN P1OUT|=BIT2; //置壹P2.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);
}
zhl_1602(0xc0);
for(i=0;i<16;i++) //发送数据第二行
{
shj_1602(table1);
}
}
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);
}

file:///D:/下载/应用/QQ聊天记录/1558691620/Image/C2C/Image1/F85954759440F58A10A0479269250B67.jpg


3D4A5A746530D23A5F6ECDEFD3E781D1.jpg
F85954759440F58A10A0479269250B67.jpg
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。