MSP430寫(xiě)的1602液晶顯示程序
#include"msp430x14x.h"
#define uint unsigned int
#define rw(x) P3OUT=(P3OUT&(~BIT6))|(x?BIT6:0);
unsigned char table0[]="diansai 2010-7";
unsigned char table1[]="0123456789";
//**************延時(shí)***********************************
void delay(uint z)
{
uint t,y;
for(t=z;t>0;t--)
for(y=110;y>0;y--);
}
//*******寫(xiě)命令*****************************************
void write_com(unsigned char com)
{
P3OUT&=~BIT5;//作為RS選擇端低電平有效
rw(0);
P4OUT=com;
delay(5);
P3OUT|=BIT7;
//delay(5);
P3OUT&=~BIT7;
}
//*******寫(xiě)數(shù)據(jù)***************************************************
void write_data(unsigned char date)
{
P3OUT|=BIT5;//作為RS選擇端高電平有效勞
rw(0);
P4OUT=date;
delay(5);
P3OUT|=BIT7;//作為E選擇端=1;
// delay(5);
P3OUT&=~BIT7;
}
//********初始化******************************************
void init()
{
P3DIR=0xff;//P3輸出 作控制口
P3SEL=0;
P3OUT=0x00;
P3OUT&=~BIT7;//E
P3OUT&=~BIT5;//RS
P4DIR=0XFF;//P4輸出 作數(shù)據(jù)口
P4SEL=0;
P4OUT=0X00;
write_com(0x38);//顯示模式設(shè)置
write_com(0x0c);//開(kāi)顯示,不顯光標(biāo)
write_com(0x06);//數(shù)據(jù)地址指針
write_com(0x01);//清屏
_BIS_SR(GIE);//兩個(gè)開(kāi)總中斷的方法隨便用哪一個(gè)
// _EINT();
}
//************顯示函數(shù)2********************
display2(unsigned char x,unsigned char *p)
{
unsigned char y=0; //y要給其初值0否則出亂碼
write_com(x);
while(p[y]!=0x00)
{
write_data(p[y]);
y++;
delay(5);
}
}
//***************主函數(shù)****************************************************
void main()
{
WDTCTL=WDTPW+WDTHOLD; //關(guān)看門(mén)狗
init();
display2(0x80+0x01,table0);
display2(0x80+0x40+0x03,table1);
}
評(píng)論