精品乱码一区内射人妻无码-亚洲中文AⅤ中文字幕在线-免费不卡国产福利在线观看-国产综合无码一区二区色蜜蜜

          您現(xiàn)在的位置:智能制造網(wǎng)>技術中心>LCD1620和LCD12864I/O控制顯示

          直播推薦

          更多>

          企業(yè)動態(tài)

          更多>

          推薦展會

          更多>

          LCD1620和LCD12864I/O控制顯示

          2010年04月21日 17:08:46人氣:2323來源:西安譽通光電測控有限責任公司

           

          //LCD1620——I/O模擬控制方式
          #Include <reg52.h>
          #Include <intrins.h>

          typedef unsigned char BYTE;
          typedef unsigned int WORD;
          typedef bit BOOL ;

          sbit rs = P2^0; //寄存器選擇信號,高表示數(shù)據(jù)、低表示指令
          sbit rw = P2^1; //讀寫控制信號,高表示讀、低表示寫
          sbit ep = P2^2;//片選使能信號。下降沿觸發(fā)

          BYTE code dis1[] = {"abcdef"};//每行zui多顯示16個字符
          BYTE code dis2[] = {"ABCDEF"};

          delay(BYTE ms)// 延時子程序
          {      
           BYTE i;
           while(ms--)
           {
            for(i = 0; i< 250; i++)
            {
             _nop_();
             _nop_();
             _nop_();
             _nop_();
            }
           }
          }

          BOOL lcd_bz()// 測試LCD忙碌狀態(tài) 011
          {       
           BOOL result;
           rs = 0;//指令
           rw = 1;//讀
           ep = 1;//使能
           _nop_();
           _nop_();
           _nop_();
           _nop_();
           result = (BOOL)(P0 & 0x80);//讀忙標志和地址計數(shù)器ACC的值
           //P0口如果等于0X80,則說明不忙碌,(數(shù)據(jù)總線的高位為1)
           ep = 0;//使能下降沿觸發(fā)
           return result; 
          }

          lcd_wcmd(BYTE cmd)// 寫入指令數(shù)據(jù)到LCD 000
          {      
           while(lcd_bz());
           rs = 0;
           rw = 0;
           ep = 0;//下降沿
           _nop_();
           _nop_(); 
           P0 = cmd;//寫指令數(shù)據(jù),已經(jīng)定義“ BYTE cmd”
           _nop_();
           _nop_();
           _nop_();
           _nop_();
           ep = 1; //高
           _nop_();
           _nop_();
           _nop_();
           _nop_();
           ep = 0; //低 
          }

          lcd_pos(BYTE pos)//設定顯示位置
          {       
           lcd_wcmd(pos | 0x80);
          }

          lcd_wdat(BYTE dat)//寫入字符顯示數(shù)據(jù)到LCD 100 
          {      
           while(lcd_bz());
           rs = 1;
           rw = 0;
           ep = 0;
           P0 = dat;//寫數(shù)據(jù)數(shù)據(jù),已經(jīng)定義“BYTE dat”
           _nop_();
           _nop_();
           _nop_();
           _nop_();
           ep = 1; //高
           _nop_();
           _nop_();
           _nop_();
           _nop_();
           ep = 0; //低
          }

          lcd_init() //LCD初始化設定
          {       
           lcd_wcmd(0x38);   //打開顯示開關、允許移動位置、允許功能設置
           delay(1);
           lcd_wcmd(0x0c);   //打開顯示開關、設置輸入方式
           delay(1);
           lcd_wcmd(0x06);   //設置輸入方式、光標返回
           delay(1);
           lcd_wcmd(0x01);   //清除LCD的顯示內(nèi)容
           delay(1);
          }

          main()
          {
           BYTE i;
           lcd_init();    // 初始化LCD   
           delay(10);
           lcd_pos(0);    // 設置顯示位置為*行的第5個字符
           i = 0;
           while(dis1[i] != '0')
           {      // 顯示字符"abcdef"
            lcd_wdat(dis1[i]);
            i++;
           }
           //lcd_pos(0x41);   // 設置顯示位置為第二行第二個字符
           lcd_pos(64);   // 設置顯示位置為第二行第1個字符
           i = 0;
           while(dis2[i] != '0')
           {
            lcd_wdat(dis2[i]); // 顯示字符"ABCDEF "
            i++;
           }
           while(1);    //
          }

          //LCD12864—I/O模擬控制顯示方式
          /********************************************/
          /* 12864系列測試程序  */
          //128*64--16行*8頁*64列
          /********************************************/

          #Include <reg51.h>
          #Include <ctype.h>
          #Include <string.h>
          #Include <stdlib.h>
          #Include <stdio.h>
          #Include <math.h>

          #define Disp_On  0x3f//顯示開0011 111X 顯示開/關指令
          #define Disp_Off 0x3e//顯示關0011 111X  顯示開/關指令
          #define Col_Add  0x40//設置列地址01XX XXXX(0-63列)
          #define Page_Add 0xb8 //設置頁地址指令1011 1XXX(0-7頁)、頁(PAGE)設置指令
          #define Start_Line 0xc0//起始行11XX XXXX(0-63行)顯示起始行(ROW)設置指令

          #define Lcd_Bus P0  //總線接口 MCU P1<------> LCM
          sbit Mcs=P2^6;  //主芯片選中(使能 Master chip enable)
          sbit Scs=P2^5;  //從芯片選中(使能 Slave chip enable)
          sbit Enable=P2^7; //LCD信號使能 6800 mode Enable single  
          sbit Di=P2^4;  //數(shù)據(jù)、命令選擇端 Data or Instrument Select
          sbit RW=P2^3;  //讀寫控制端 Write or Read
          sbit Lcd_Rst=P1^0; //Lcm reset
          /*
          #Include<absacc.h>
          #define LCD_CMD_WRA      XBYTE[0x8008] //;寫指令代碼,RS=0、R/W=0
          #define LCD_DATA_WRA  XBYTE[0x8009] //;寫數(shù)據(jù),RS=1、R/W=0
          #define LCD_BUSY_RDA  XBYTE[0x800A] //;讀忙標志和AC值,RS=0、R/W=1
          #define LCD_DATA_RDA  XBYTE[0x800B] //;讀數(shù)據(jù),RS=1、R/W=1
          #define LCD_CMD_WRB      XBYTE[0x8004] //;寫指令代碼,RS=0、R/W=0
          #define LCD_DATA_WRB  XBYTE[0x8005] //;寫數(shù)據(jù),RS=1、R/W=0
          #define LCD_BUSY_RDB  XBYTE[0x8006] //;讀忙標志和AC值,RS=0、R/W=1
          #define LCD_DATA_RDB  XBYTE[0x8007] //;讀數(shù)據(jù),RS=1、R/W=1
          */
          char code ce[]={
          /*-- 文字: 測 --*/
          /*-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --*/
          0x08,0x31,0x86,0x60,0x00,0xFE,0x02,0xF2,0x02,0xFE,0x00,0xF8,0x00,0x00,0xFF,0x00,
          0x04,0xFC,0x03,0x00,0x80,0x47,0x30,0x0F,0x10,0x67,0x00,0x07,0x40,0x80,0x7F,0x00
          };
          char code shi[]={
          /*-- 文字: 試 --*/
          /*-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --*/
          0x40,0x42,0xDC,0x08,0x00,0x90,0x90,0x90,0x90,0x90,0xFF,0x10,0x12,0x1C,0x10,0x00,
          0x00,0x00,0x7F,0x20,0x10,0x20,0x20,0x1F,0x10,0x10,0x01,0x06,0x18,0x20,0x78,0x00
          };
          char code kai[]={
          /*-- 文字: 開 --*/
          /*-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --*/
          0x40,0x42,0x42,0x42,0x42,0xFE,0x42,0x42,0x42,0x42,0xFE,0x42,0x42,0x42,0x42,0x00,
          0x00,0x40,0x20,0x10,0x0C,0x03,0x00,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x00,0x00
          };
          char code shi3[]={
          /*-- 文字: 始 --*/
          /*-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --*/
          0x10,0x90,0x70,0x1F,0x12,0xF0,0x00,0x20,0x70,0x28,0x27,0x22,0x28,0x70,0x20,0x00,
          0x40,0x21,0x12,0x0C,0x06,0x09,0x30,0x00,0x7F,0x21,0x21,0x21,0x21,0x7F,0x00,0x00
          };
          char code wan[]={
          /*-- 文字: 完 --*/
          /*-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --*/
          0x00,0x90,0x8C,0xA4,0xA4,0xA4,0xA5,0xA6,0xA4,0xA4,0xA4,0xA4,0x94,0x8C,0x04,0x00,
          0x00,0x80,0x40,0x20,0x18,0x07,0x00,0x00,0x00,0x3F,0x40,0x40,0x40,0x70,0x00,0x00
          };
          char code bi[]={
          /*-- 文字: 畢 --*/
          /*-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --*/
          0x00,0x00,0xFF,0x88,0x48,0x28,0x08,0x80,0x7F,0x88,0x88,0x88,0x84,0x84,0xE0,0x00,
          0x04,0x04,0x04,0x04,0x04,0x04,0x04,0xFF,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00
          };
          //-----------------延時子程序-----------------------------
          void delay(unsigned int t)
          {
          unsigned int i,j;
          for(i=0;i<t;i++)
          for(j=0;j<10;j++)
          ;
          }
          //----------------寫命令到LCD------------------------------
          void write_com(unsigned char cmdcode)//RS=0、RW=0、E=“1—》0”
          {
          Di=0;
          RW=0;
          Lcd_Bus=cmdcode;
          delay(0);
          Enable=1;
          delay(0);
          Enable=0;
          }
          //------------------寫數(shù)據(jù)到LCD----------------------------
          void write_data(unsigned char Dispdata)//RS=1、RW=0、E=“1—》0”
          {
          Di=1;
          RW=0;
          Lcd_Bus=Dispdata;
          delay(0);
          Enable=1;
          delay(0);
          Enable=0;
          }
          //------------------讀LCD數(shù)據(jù)----------------------------
          unsigned char read_data()//RS=1、RW=1、E=1
          {
          unsigned char tmpin;
          Di=1;
          RW=1;
          delay(0);
          Enable=1;
          delay(0);
          Enable=0;
          tmpin=Lcd_Bus;
          return tmpin;
          }
          //-----------------清除內(nèi)存---------------
          void Clr_Scr()
          {
          unsigned char j,k;
          Mcs=1;Scs=1;

           write_com(Page_Add+0);
           write_com(Col_Add+0);

           for(k=0;k<8;k++)//8頁
           {
            write_com(Page_Add+k);//0-8
            for(j=0;j<64;j++)//64列
                write_data(0x00);
           }
          }
          //--------------------位置顯示漢字16*16-----------------------
          void hz_disp16(unsigned char pag,unsigned char col, unsigned char code *hzk)
          {
          unsigned char j=0,i=0;
          for(j=0;j<2;j++)
          {
          write_com(Page_Add+pag+j);
          write_com(Col_Add+col);
          for(i=0;i<16;i++) write_data(hzk[16*j+i]);
          }
          }
          //-----------------初始化LCD屏--------------------------
          void init_lcd()
          {
          Lcd_Rst=0;delay(100);
          Lcd_Rst=1;delay(100);
          Mcs=1;Scs=1;delay(100);
          write_com(Disp_Off);
          write_com(Page_Add+0);
          write_com(Start_Line+0);
          write_com(Col_Add+0);
          write_com(Disp_On);
          }
          //---------------------------信息顯示---------------------
          void Msg(int flg)
          {
          Clr_Scr();
          if(flg==0)//顯示“測試開始”
          {
          Mcs=1;Scs=0;
          hz_disp16(3,32,ce);delay(2000);
          hz_disp16(3,48,shi);delay(2000);
          Mcs=0;Scs=1;
          hz_disp16(3,0,kai);delay(2000);
          hz_disp16(3,16,shi3);delay(2000);
          }
          else if(flg==1)//顯示“測試完畢”
          {
          Mcs=1;Scs=0;
          hz_disp16(3,32,ce);
          hz_disp16(3,48,shi);
          Mcs=0;Scs=1;
          hz_disp16(3,0,wan);
          hz_disp16(3,16,bi);
          }
          }
          //-------------------主程序--------------------------------
          main()
          {
          unsigned char i=0;
          init_lcd();
          while(1)
           {
          Msg(0);delay(10000);
          Msg(1);delay(10000);
           }
          }

          關鍵詞:計數(shù)器
          全年征稿/資訊合作 聯(lián)系郵箱:1271141964@qq.com

          免責聲明

          • 凡本網(wǎng)注明"來源:智能制造網(wǎng)"的所有作品,版權均屬于智能制造網(wǎng),轉(zhuǎn)載請必須注明智能制造網(wǎng),http://www.tzhjjxc.com。違反者本網(wǎng)將追究相關法律責任。
          • 企業(yè)發(fā)布的公司新聞、技術文章、資料下載等內(nèi)容,如涉及侵權、違規(guī)遭投訴的,一律由發(fā)布企業(yè)自行承擔責任,本網(wǎng)有權刪除內(nèi)容并追溯責任。
          • 本網(wǎng)轉(zhuǎn)載并注明自其它來源的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點或證實其內(nèi)容的真實性,不承擔此類作品侵權行為的直接責任及連帶責任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉(zhuǎn)載時,必須保留本網(wǎng)注明的作品來源,并自負版權等法律責任。
          • 如涉及作品內(nèi)容、版權等問題,請在作品發(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關權利。

          <
          更多 >

          工控網(wǎng)機器人儀器儀表物聯(lián)網(wǎng)3D打印工業(yè)軟件金屬加工機械包裝機械印刷機械農(nóng)業(yè)機械食品加工設備制藥設備倉儲物流環(huán)保設備造紙機械工程機械紡織機械化工設備電子加工設備水泥設備海洋水利裝備礦冶設備新能源設備服裝機械印染機械制鞋機械玻璃機械陶瓷設備橡塑設備船舶設備電子元器件電氣設備


          我要投稿
          • 投稿請發(fā)送郵件至:(郵件標題請備注“投稿”)1271141964.qq.com
          • 聯(lián)系電話0571-89719789
          工業(yè)4.0時代智能制造領域“互聯(lián)網(wǎng)+”服務平臺
          智能制造網(wǎng)APP

          功能豐富 實時交流

          智能制造網(wǎng)小程序

          訂閱獲取更多服務

          微信公眾號

          關注我們

          抖音

          智能制造網(wǎng)

          抖音號:gkzhan

          打開抖音 搜索頁掃一掃

          視頻號

          智能制造網(wǎng)

          公眾號:智能制造網(wǎng)

          打開微信掃碼關注視頻號

          快手

          智能制造網(wǎng)

          快手ID:gkzhan2006

          打開快手 掃一掃關注
          意見反饋
          關閉
          企業(yè)未開通此功能
          詳詢客服 : 0571-87858618