微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > MSP430单片机驱动LCD1602液晶

MSP430单片机驱动LCD1602液晶

时间:11-30 来源:互联网 点击:
//实验目的:熟悉LCD的使用方法
//LCD循环显示本站网址和电话   //硬件要求:LCD直接与单片机的A口和D口相连接   //所有拨码开关置OFF   //调节电位器,调节LCD亮度。   #includemsp430x14x.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++);   } 

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top