專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

MSP430單片機(jī)驅(qū)動(dòng)LCD1602液晶

作者:佚名   來(lái)源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2013年11月11日   【字體:
//實(shí)驗(yàn)?zāi)康模菏煜CD的使用方法   
//LCD循環(huán)顯示本站網(wǎng)址和電話   
//硬件要求:LCD直接與單片機(jī)的A口和D口相連接   
//所有撥碼開關(guān)置OFF   
//調(diào)節(jié)電位器,調(diào)節(jié)LCD亮度。   
#include<msp430x14x.h>   

#define set(x) P6OUT |=x   
#define clr(x) P6OUT &=~x   
#define rs BIT2   
#define rw BIT3   
#define e  BIT4   

const char web[ ]={' ','w','w','w','.','5','1','h','e','i','.','c','0','m',' '};   
//顯示公司web地址   
const char tel[ ]={'T','E','L',':','1','5','3','1','2','7','6','9','2','6','4',' '};   
//顯示公司電話號(hào)碼   

void init();                   //申明I/O口初始化函數(shù)   
void lcd_init();               //申明LCD初始化函數(shù)   
void write_web();              //申明顯示公司web地址函數(shù)   
void write_tel();              //申明顯示公司tel函數(shù)   
void write(char x);            //申明顯示1字節(jié)數(shù)據(jù)函數(shù)   
void lcd_enable();             //申明LCD顯示設(shè)置函數(shù)   
void delay();                  //申明延時(shí)函數(shù)   

//---------------------------------------   
//主函數(shù)   
void main()   
{   

    init();                //調(diào)用I/O口初始化函數(shù)     
             lcd_init();            //調(diào)用LCD初始化函數(shù)   
        write_web();           //調(diào)用顯示公司web地址函數(shù)   
        P4OUT=0Xc0;//PORTD=0XC0;            //設(shè)置第2行顯示地址   
        lcd_enable();          //調(diào)用LCD顯示設(shè)置函數(shù)   
        write_tel();           //調(diào)用顯示公司tel函數(shù)   
    while(1);   
}   

//---------------------------------------   
//I/O口初始化函數(shù)   
void init()   
{   
    //ADCON1=0X07;               //設(shè)置A口為普通I/O口   
    //TRISA=0X00;                //設(shè)置A口為輸出   
    //TRISD=0X00;                //設(shè)置D口為輸出   
    P4DIR=0xff;   
        P6DIR=0x1c;//設(shè)置A口為輸出   
    WDTCTL = WDTPW + WDTHOLD;  //殺狗   


}   

//---------------------------------------   
//LCD初始化函數(shù)   
void lcd_init()   
{   
    P4OUT=0x01;//PORTD=0X1;                 //清除顯示   
    lcd_enable();   
    P4OUT=0x38;//PORTD=0X38;                //8位2行5*7點(diǎn)陣   
    lcd_enable();   
    P4OUT=0x0e;//PORTD=0X0e;                //顯示開,光標(biāo)開,閃爍   
    lcd_enable();   
    P4OUT=0x06;//PORTD=0X06;                //文字不動(dòng),光標(biāo)右移   
    lcd_enable();   
    P4OUT=0x80;//PORTD=0X80;                //公司web顯示地址   
    lcd_enable();   
}   

//--------------------------------------   
//顯示公司web地址   
void write_web()   
{   
    int i;   
    for(i=0;i<0x10;i++)        //一共16字節(jié)數(shù)據(jù)   
       {   
         write(web[i]);        //查表獲取數(shù)據(jù)并調(diào)用寫一個(gè)字節(jié)數(shù)據(jù)函數(shù)送LCD顯示   
       }   
}   

//--------------------------------------   
//顯示公司tel函數(shù)   
void write_tel()   
{   
    int i;   
    for(i=0;i<0x10;i++)       //一共顯示16字節(jié)數(shù)據(jù)   
       {   
         write(tel[i]);       //查表獲取數(shù)據(jù)并調(diào)用寫一個(gè)字節(jié)數(shù)據(jù)函數(shù)送LCD顯示   
       }   
}   

//--------------------------------------   
//寫一個(gè)字節(jié)數(shù)據(jù)函數(shù)     
void write(char x)   
{   
  P4OUT=x;//PORTD=x;                   //待顯示數(shù)據(jù)送PORTD口   
  set(rs);//rs=1;                      //該字節(jié)數(shù)據(jù)為數(shù)據(jù),而不是命令   
  clr(rw);//rw=0;                      //此次操作為寫,而不是讀   
  clr(e);//e=0;                       //拉低使能信號(hào)   
  delay();                   //保持使能信號(hào)為低一段時(shí)間   
  set(e);//e=1;                       //拉高使能信號(hào),建立LCD操作所需要的上升沿   
}   

//--------------------------------------   
//LCD顯示設(shè)置函數(shù)   
void lcd_enable()   
{   
   clr(rs);                     //該字節(jié)數(shù)據(jù)為命令,而不是數(shù)據(jù)   
   clr(rw);                     //此次操作為寫,而不是讀   
   clr(e);                      //拉低使能信號(hào)   
   delay();                  //保持使能信號(hào)為低一段時(shí)間   
   set(e);                      //拉高使能信號(hào),建立LCD操作所需要的上升沿   
}   

//--------------------------------------   
//延時(shí)函數(shù)   
void delay()   
{   
   unsigned int i;   
   for(i=0;i<10000;i++);   
}   
關(guān)閉窗口

相關(guān)文章