|
我用的是给外部供电的。
1602的3口接个可调电阻,调对比度。大概是2K左右的。
下面是偶的程序
#include<msp430x22x4.h>
#define set_rs P3OUT|=BIT0;
#define clr_rs P3OUT&=~BIT0;
#define set_rw P3OUT|=BIT1;
#define clr_rw P3OUT&=~BIT1;
#define set_en P3OUT|=BIT2;
#define clr_en P3OUT&=~BIT2;
const char ta××e1[]="I Love you!!!";
const char ta××e2[]="Forever!!!";
void delay(int m)
{
for(int i=0;i<m;i++)
for(int j=0;j<1000;j++);
}
int check_busy()
{
P3DIR=BIT0+BIT1+BIT2;
P4DIR=0X00;
clr_en;
clr_rs;
set_rw;
_NOP();
set_en;
if(P4IN&BIT7)
return 1;
else
return 0;
}
void write_com(char com ,char temp)
{
if(temp==1)
{
while(check_busy());
}
clr_en;
clr_rs;
clr_rw;
_NOP();
P4DIR=0XFF;
P4OUT=com;
_NOP();
set_en;
_NOP();
_NOP();
clr_en;
}
void write_data(char data)
{
while(check_busy());
clr_en;
set_rs;
clr_rw;
_NOP();
P4DIR=0XFF;
P4OUT=data;
_NOP();
set_en;
_NOP();
_NOP();
clr_en;
}
void init_io()
{
WDTCTL=WDTPW+WDTHOLD;
BCSCTL1 = CALBC1_1MHZ; // Set DCO to 8MHz
DCOCTL = CALDCO_1MHZ;
P3DIR=0x07;
P4DIR=0XFF;
}
void init()
{
delay(15);
write_com(0x38,0);
delay(5);
write_com(0x38,0);
delay(5);
write_com(0x38,0);
write_com(0x38,1);
write_com(0x08,1);
write_com(0x01,1);
write_com(0x06,1);
write_com(0x0c,1);
}
void display()
{
while(1)
{
for(int i=0;i<13;i++)
{
write_com(0x80+i,1);
write_data(ta××e1[i]);
}
delay(100);
for(int i=0;i<10;i++)
{
write_com(0x80+0x40+i,1);
write_data(ta××e2[i]);
}
}
}
void main()
{
init_io();
init();
display();
} |
|