<acronym id="xonnx"></acronym>
      <td id="xonnx"></td>
    1. <pre id="xonnx"></pre>

      1. 專注電子技術學習與研究
        當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

        新唐M051驅動LCD12864液晶屏程序

        作者:佚名   來源:Keil4   點擊數:  更新時間:2014年09月01日   【字體:

        共享一個新唐M051單片機驅動帶字庫的LCD12864液晶屏的c語言程序:

         #include "SmartM_M0.h"

         
        #define LCD12864_RS_PIN   0
        #define LCD12864_RW_PIN   1
        #define LCD12864_EN_PIN   2
        #define LCD12864_MD_PIN   3
         
        #define LCD12864_RS(x)     {if((x))P0_DOUT|=  1UL<<LCD12864_RS_PIN;\
                                    else   P0_DOUT&=~(1UL<<LCD12864_RS_PIN);}
        #define LCD12864_RW(x)     {if((x))P0_DOUT|=  1UL<<LCD12864_RW_PIN;\
                                    else   P0_DOUT&=~(1UL<<LCD12864_RW_PIN);}
        #define LCD12864_EN(x)     {if((x))P0_DOUT|=  1UL<<LCD12864_EN_PIN;\
                                    else   P0_DOUT&=~(1UL<<LCD12864_EN_PIN);}
        #define LCD12864_MD(x)     {if((x))P0_DOUT|=  1UL<<LCD12864_MD_PIN;\
                                    else   P0_DOUT&=~(1UL<<LCD12864_MD_PIN);}
        #define LCD12864_PORT(x)    LS164Send((x))                  
         
         
        /********************************************
        *函數名稱:LCD12864WriteByte
        *輸    入:ucByte 要寫入的字節
        *輸    出:無
        *說    明:LCD12864 寫字節
        ********************************************/
        VOID LCD12864WriteByte(UINT8 ucByte)
        {
             LCD12864_PORT(ucByte);
             LCD12864_RS(HIGH);
             LCD12864_RW(LOW);
             LCD12864_EN(LOW);
             Delayus(500);
             LCD12864_EN(HIGH);
        }
        /********************************************
        *函數名稱:LCD12864WriteCommand
        *輸    入:ucCmd 要寫入的命令
        *輸    出:無
        *說    明:LCD12864 寫命令
        ********************************************/
        VOID LCD12864WriteCommand(UINT8 ucCmd)
        {
             LCD12864_PORT(ucCmd);
             LCD12864_RS(LOW);
             LCD12864_RW(LOW);
             LCD12864_EN(LOW);
             Delayus(500);
             LCD12864_EN(HIGH);
        }
        /********************************************
        *函數名稱:LCD12864SetXY
        *輸    入:x 橫坐標 y 縱坐標
        *輸    出:無
        *說    明:LCD12864 設置坐標
        ********************************************/
        VOID LCD12864SetXY(UINT8 x,UINT8 y)
        {
           switch(y)
             {
          case 1:
                {
                     LCD12864WriteCommand(0x80|x);
                }
                break;
          case 2:
                {
                     LCD12864WriteCommand(0x90|x);
                }
                break;
          case 3:
                {
                     LCD12864WriteCommand(0x88|x);
                }
                break;
          case 4:
                {
                     LCD12864WriteCommand(0x98|x);
                }
                break;
          default:break;
             }
        }
        /********************************************
        *函數名稱:LCD12864PrintfString
        *輸    入:x 橫坐標 y 縱坐標 s字符串
        *輸    出:無
        *說    明:LCD12864 打印字符串
        ********************************************/
        VOID LCD12864PrintfString(UINT8 x,
                                 UINT8 y,
                                 UINT8 *s)
        {
          LCD12864SetXY(x,y);    //設置顯示坐標
         
             while(s && *s)
             {
                LCD12864WriteByte(*s);   //顯示逐個字符
                s++;
               
             }
        }
        /********************************************
        *函數名稱:LCD12864ClearScreen
        *輸    入:無
        *輸    出:無
        *說    明:LCD12864 清屏
        ********************************************/
        VOID LCD12864ClearScreen(VOID)
        {
          LCD12864WriteCommand(0x01);
             Delayus(500);
        }
        /********************************************
        *函數名稱:LCD12864Init
        *輸    入:無
        *輸    出:無
        *說    明:LCD12864 初始化
        ********************************************/
        VOID LCD12864Init(VOID)
        {
             LS164Init();
          LCD12864_MD(HIGH);
             LCD12864WriteCommand(0x30);//功能設置,一次送8位數據,基本指令集
             LCD12864WriteCommand(0x0C);//整體顯示,游標off,游標位置off
             LCD12864WriteCommand(0x01);//清DDRAM   
             LCD12864WriteCommand(0x02);//DDRAM地址歸位
             LCD12864WriteCommand(0x80);//設定DDRAM 7位地址000,0000到地址計數器AC
        }
        /****************************************
        *函數名稱:main
        *輸    入:無
        *輸    出:無
        *功    能:函數主體
        ******************************************/
        INT32 main(VOID)
        {
             Un_Lock_Reg();          //ISP下載時保護FLASH存儲器
          PWRCON |= XTL12M_EN;        //默認時鐘源為外部晶振
          while((CLKSTATUS & XTL12M_STB) == 0);     //等待12MHz時鐘穩定 
         
          CLKSEL0 = (CLKSEL0 & (~HCLK)) | HCLK_12M;   //設置外部晶振為系統時鐘
         
          LCD12864Init();         //LCD12864初始化
             LCD12864PrintfString(0,1,"1234567890ABCDEF");//顯示第一行
             LCD12864PrintfString(0,2,"Hello World!!!!!");//顯示第二行
             LCD12864PrintfString(0,3,"學好電子成就自己");//顯示第三行
             LCD12864PrintfString(0,4,"I Love You!!!!!!");//顯示第四行 
          while(1);
        }
         
        關閉窗口
        欧美性色欧美精品视频,99热这里只有精品mp4,日韩高清亚洲日韩精品一区二区,2020国自产拍精品高潮