色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 12232c液晶顯示和8051單片機(jī)的接口c語(yǔ)言程序

          12232c液晶顯示和8051單片機(jī)的接口c語(yǔ)言程序

          作者: 時(shí)間:2016-11-10 來(lái)源:網(wǎng)絡(luò) 收藏
          以下為彭總編寫(xiě)的c語(yǔ)言程序,我用過(guò)了!赫赫??!在atmega128中寫(xiě)通訊協(xié)議的頭四位數(shù)字時(shí)好像不能分開(kāi)一位一位的送,而是要把它當(dāng)作一個(gè)16進(jìn)制的整體移位寫(xiě)入!程序中的comm為寫(xiě)0表示寫(xiě)12232c的指令,dat為1表示寫(xiě)數(shù)據(jù)。cs,sclk,std分別為片選、時(shí)鐘、及數(shù)據(jù)io口,可用sbit指令定義。

          /************lcd初始化程序**************/
          void init_lcd (void)
          {
          wr_lcd (comm,0x30); /*30---基本指令集動(dòng)作,8位控制接口*/
          wr_lcd (comm,0x01); /*清屏,地址指針指向00H*/
          delay (80);
          wr_lcd (comm,0x06); /*光標(biāo)的移動(dòng)方向,光標(biāo)右移*/
          wr_lcd (comm,0x0c); /*開(kāi)顯示,關(guān)光標(biāo)*/
          }

          本文引用地址:http://cafeforensic.com/article/201611/317349.htm

          /******************LCD顯示任意量程序********************/
          void eng_disp (uchar x,uchar y,uchar code *eng)
          {
          uchar i,j;
          wr_lcd (comm,0x30);
          wr_lcd (comm,0x80); /*第一行的起始地址*/
          for(j=0;j {
          for (i=0;i wr_lcd (dat,eng[j*16+i]);
          if((y==2)&&(j==1))
          {wr_lcd (comm,0x90);
          for (i=0;i<8;i++)
          wr_lcd (dat,eng[j*16+i]);
          }
          }
          }

          /*********************LCD顯示中文(歡迎界面)程序******************/

          void chn_disp (uchar code *chn) /*lcd顯示中文*/
          {
          uchar i,j;
          wr_lcd (comm,0x30);
          wr_lcd (comm,0x80); /*第一行的起始地址*/
          j=0;
          for (i=0;i<16;i++)
          wr_lcd (dat,chn[j*16+i]);
          wr_lcd (comm,0x90); //第二行的起始地址
          j=1;
          for (i=0;i<16;i++)
          wr_lcd (dat,chn[j*16+i]);
          }

          /***************************LCD清內(nèi)存程序*******************/
          void clrram (void) //lcd清內(nèi)存
          {
          wr_lcd (comm,0x30);
          wr_lcd (comm,0x01);
          delay (120);
          }

          /*************LCD寫(xiě)數(shù)據(jù)或?qū)懨钭映绦?***************/

          void wr_lcd (uchar dat_comm,uchar content) /*lcd寫(xiě)數(shù)據(jù)*/
          {
          uchar a,i,j;
          delay (40);
          a=content; //a為指令代碼或者數(shù)據(jù)
          cs=1; //置位cs開(kāi)始傳輸數(shù)據(jù)
          sclk=0; //拉低sclk準(zhǔn)備給上升沿,發(fā)送數(shù)據(jù)
          std=1; //置1
          for(i=0;i<5;i++) /*先傳輸起始字節(jié),首先5個(gè)1,sclk的上升沿傳輸啟動(dòng)*/
          {
          sclk=1;
          sclk=0;
          }
          std=0; //RW=0;
          sclk=1;
          sclk=0;
          if(dat_comm)
          std=1; //如果是數(shù)據(jù)則RS為1
          else
          std=0; //如果是控制字則RS為0
          sclk=1; //給上升沿,啟動(dòng)傳輸
          sclk=0; //拉低sclk
          std=0; //第8位為0,起始字節(jié)傳輸完畢
          sclk=1; //給上升沿,啟動(dòng)傳輸
          sclk=0;
          for(j=0;j<2;j++) //一個(gè)字節(jié)分兩次發(fā)送,第一次發(fā)送高四位,后面補(bǔ)4個(gè)0,第二次發(fā)送低4位,后面同樣補(bǔ)4個(gè)0
          {
          for(i=0;i<4;i++) //先傳輸高4位
          {
          a=a<<1; //數(shù)據(jù)循環(huán)左移一位,低位補(bǔ)0
          std=CY; //把進(jìn)位進(jìn)行傳輸
          sclk=1;
          sclk=0;
          }
          std=0;
          for(i=0;i<4;i++) //后4位數(shù)據(jù)為4個(gè)0
          {
          sclk=1;
          sclk=0;
          }
          }
          }

          /**********************LCD延時(shí)程序************************************/
          void delay (uint us) //lcd延時(shí)時(shí)間
          {
          while(us--);
          }
          void delay1 (uint ms)
          {
          uint i,j;
          for(i=0;i for(j=0;j<15;j++)
          delay(1);
          }
          /*********************顯示數(shù)據(jù)位子程序*******************/

          void math_disp(uint math)
          { uint k;
          uchar i;
          uchar j;
          k=math;
          dispbuf[0]=k/10000; //得到萬(wàn)位數(shù)
          k=k%10000;
          dispbuf[1]=k/1000; //得到千位數(shù)
          k=k%1000;
          dispbuf[2]=k/100; //得到百位數(shù)
          k=k%100;
          dispbuf[3]=k/10; //得到十位數(shù)
          dispbuf[4]=k%10; //得到個(gè)位數(shù)
          wr_lcd (comm,0x90); //給第二行的起始地址以讓數(shù)據(jù)在第二行顯示,
          for(i=0;i<5;i++)
          {
          for(j=0;j<2;j++) //連續(xù)顯示兩個(gè)tab2中的字節(jié),LCD自動(dòng)把這兩個(gè)字節(jié)聯(lián)系起來(lái)顯示一個(gè)數(shù)據(jù)
          {
          wr_lcd(dat,tab2[xs2*dispbuf[i]+j]); //調(diào)用顯示子函數(shù)
          }
          }
          }



          關(guān)鍵詞: 12232c液晶顯示805

          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉