新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > MSP430單片機驅動LCD1602液晶

        MSP430單片機驅動LCD1602液晶

        作者: 時間:2016-11-30 來源:網絡 收藏
        //實驗目的:熟悉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++);   } 


        評論


        技術專區

        關閉
        主站蜘蛛池模板: 成都市| 巴马| 若尔盖县| 彰化县| 娄烦县| 南昌县| 武定县| 军事| 东乌| 平乡县| 遂溪县| 筠连县| 习水县| 盐津县| 湖北省| 普格县| 湘乡市| 夹江县| 文登市| 泰顺县| 永吉县| 阿拉尔市| 息烽县| 饶河县| 钦州市| 满洲里市| 久治县| 蛟河市| 璧山县| 霸州市| 合肥市| 平利县| 遵化市| 安图县| 舒兰市| 铜山县| 成安县| 玉龙| 合江县| 荆州市| 商城县|