专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

MSP430单片机驱动LCD1602液晶

作者:佚名   来源:本站原创   点击数:  更新时间:2013年11月11日   【字体:
//实验目的:熟悉LCD的使用方法   
//LCD循环显示本站网址和电话   
//硬件要求:LCD直接与单片机的A口和D口相连接   
//所有拨码开关置OFF   
//调节电位器,调节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',' '};   
//显示公司电话号码   

void init();                   //申明I/O口初始化函数   
void lcd_init();               //申明LCD初始化函数   
void write_web();              //申明显示公司web地址函数   
void write_tel();              //申明显示公司tel函数   
void write(char x);            //申明显示1字节数据函数   
void lcd_enable();             //申明LCD显示设置函数   
void delay();                  //申明延时函数   

//---------------------------------------   
//主函数   
void main()   
{   

    init();                //调用I/O口初始化函数     
             lcd_init();            //调用LCD初始化函数   
        write_web();           //调用显示公司web地址函数   
        P4OUT=0Xc0;//PORTD=0XC0;            //设置第2行显示地址   
        lcd_enable();          //调用LCD显示设置函数   
        write_tel();           //调用显示公司tel函数   
    while(1);   
}   

//---------------------------------------   
//I/O口初始化函数   
void init()   
{   
    //ADCON1=0X07;               //设置A口为普通I/O口   
    //TRISA=0X00;                //设置A口为输出   
    //TRISD=0X00;                //设置D口为输出   
    P4DIR=0xff;   
        P6DIR=0x1c;//设置A口为输出   
    WDTCTL = WDTPW + WDTHOLD;  //杀狗   


}   

//---------------------------------------   
//LCD初始化函数   
void lcd_init()   
{   
    P4OUT=0x01;//PORTD=0X1;                 //清除显示   
    lcd_enable();   
    P4OUT=0x38;//PORTD=0X38;                //8位2行5*7点阵   
    lcd_enable();   
    P4OUT=0x0e;//PORTD=0X0e;                //显示开,光标开,闪烁   
    lcd_enable();   
    P4OUT=0x06;//PORTD=0X06;                //文字不动,光标右移   
    lcd_enable();   
    P4OUT=0x80;//PORTD=0X80;                //公司web显示地址   
    lcd_enable();   
}   

//--------------------------------------   
//显示公司web地址   
void write_web()   
{   
    int i;   
    for(i=0;i<0x10;i++)        //一共16字节数据   
       {   
         write(web[i]);        //查表获取数据并调用写一个字节数据函数送LCD显示   
       }   
}   

//--------------------------------------   
//显示公司tel函数   
void write_tel()   
{   
    int i;   
    for(i=0;i<0x10;i++)       //一共显示16字节数据   
       {   
         write(tel[i]);       //查表获取数据并调用写一个字节数据函数送LCD显示   
       }   
}   

//--------------------------------------   
//写一个字节数据函数     
void write(char x)   
{   
  P4OUT=x;//PORTD=x;                   //待显示数据送PORTD口   
  set(rs);//rs=1;                      //该字节数据为数据,而不是命令   
  clr(rw);//rw=0;                      //此次操作为写,而不是读   
  clr(e);//e=0;                       //拉低使能信号   
  delay();                   //保持使能信号为低一段时间   
  set(e);//e=1;                       //拉高使能信号,建立LCD操作所需要的上升沿   
}   

//--------------------------------------   
//LCD显示设置函数   
void lcd_enable()   
{   
   clr(rs);                     //该字节数据为命令,而不是数据   
   clr(rw);                     //此次操作为写,而不是读   
   clr(e);                      //拉低使能信号   
   delay();                  //保持使能信号为低一段时间   
   set(e);                      //拉高使能信号,建立LCD操作所需要的上升沿   
}   

//--------------------------------------   
//延时函数   
void delay()   
{   
   unsigned int i;   
   for(i=0;i<10000;i++);   
}   
关闭窗口

相关文章