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

          新聞中心

          LCD12232串行顯示C51程序

          作者: 時(shí)間:2016-11-29 來源:網(wǎng)絡(luò) 收藏

          這個(gè)程序包含三個(gè)方面的知識(shí):
          1。4*4按鍵的部份--完成(0~9)數(shù)字鍵,功能鍵,字母鍵的輸入;按鍵抬起后才能作用;
          2。LCD12232的顯示部份;串行顯示,只用兩根線,顯示中英文字母及數(shù)字;
          3。TTL系列芯片與CMOS系列芯片的知識(shí),及做庫;這部份還沒完成;
          我想第三步完成了,MM還符合一名合格的大學(xué)畢業(yè)生的;
          哈!直接上代碼了,下載地址:http://www.51hei.com/f/12232ch.rar
          #include
          #define uint unsigned int
          #define uchar unsigned char
          sbit SID = P0^5;
          sbit SCK = P0^6;
          sbit BUZ = P0^7;

          sbit A0 = P3^0;
          sbit A1 = P3^1;
          sbit A2 = P3^2;
          sbit A3 = P3^3;
          sbit A4 = P3^4;
          sbit A5 = P3^5;
          sbit B0 = P0^0;
          sbit B7 = P1^7;
          sbit B6 = P1^6;
          sbit B5 = P1^5;
          sbit B4 = P1^4;
          sbit B3 = P1^3;
          sbit B2 = P1^2;
          uchar Key_Select,Key_Mode;
          uchar code Disp_1[]={"浙江師范大學(xué)行"};
          uchar code Disp_2[]={"知學(xué)院電子信息"};
          uchar code Disp_3[]={"工程08級(jí)毛夢(mèng)超"};
          uchar code Disp_4[]={"的畢業(yè)設(shè)計(jì)--集"};
          uchar code Disp_5[]={"成電路測(cè)試系統(tǒng)!"};
          uchar code Disp_6[]={"指導(dǎo)老師:丁宇"};
          uchar code Disp_7[]={"請(qǐng)插入芯片后按"};
          uchar code Disp_8[]={"確認(rèn)鍵進(jìn)行測(cè)試!"};
          uchar code Disp_9[]={"請(qǐng)選擇芯片類型:"};
          uchar code Disp_10[]={"1-CMOS; 2-TTL;"};
          uchar code Disp_11[]={"請(qǐng)輸入CMOS系列"};
          uchar code Disp_12[]={"請(qǐng)輸入TTL 系列"};
          uchar code Disp_13[]={"IC型號(hào):"};
          //-----------------Delay_*2us-------------------
          void Delay_us(uchar x2us)
          {
          while(--x2us);
          }

          void Delay_ms(uint xms)
          {
          uint i,j;
          for(i=xms;i>0;i--)
          for(j=122;j>0;j--)
          {}
          }
          //-------------4KHz-------------------
          void Buz(void)
          {
          uint i;
          for(i=200;i>0;i--)
          {
          BUZ=1;
          Delay_us(120);
          BUZ=0;
          }
          BUZ=0;
          }
          //-------------LCD Part--------------------
          //LCD顯示部份之寫地址
          //-----------------------------------------
          void Lcd_Wr_Command(uchar com_data)
          {
          uchar i;
          uchar i_data;
          i_data=0xf8;
          SCK=0;
          for(i=0;i<8;i++)
          {
          SID=(bit)(i_data&0x80);
          SCK=0;
          SCK=1;
          i_data=i_data<<1;
          }
          i_data=com_data;
          i_data&=0xf0;
          for(i=0;i<8;i++)
          {
          SID=(bit)(i_data&0x80);
          SCK=0;
          SCK=1;
          i_data=i_data<<1;
          }
          i_data=com_data;
          i_data<<=4;
          for(i=0;i<8;i++)
          {
          SID=(bit)(i_data&0x80);
          SCK=0;
          SCK=1;
          i_data=i_data<<1;
          }
          Delay_ms(1);
          }
          //-------------LCD Part--------------------
          //LCD顯示部份之寫數(shù)據(jù)
          //-----------------------------------------
          void Lcd_Wr_Data(uchar com_data)
          {
          uchar i;
          uchar i_data;
          i_data=0xfa;

          for(i=0;i<8;i++)
          {
          SID=(bit)(i_data&0x80);
          SCK=0;
          SCK=1;
          i_data=i_data<<1;
          }
          i_data=com_data;
          i_data&=0xf0;
          for(i=0;i<8;i++)
          {
          SID=(bit)(i_data&0x80);
          SCK=0;
          SCK=1;
          i_data=i_data<<1;
          }
          i_data=com_data;
          i_data<<=4;
          for(i=0;i<8;i++)
          {
          SID=(bit)(i_data&0x80);
          SCK=0;
          SCK=1;
          i_data=i_data<<1;
          }
          Delay_ms(1);
          }
          //-------------LCD Part--------------------
          //LCD顯示部份之初始化
          //-----------------------------------------
          void Lcd_init()
          {
          Delay_ms(100);
          Lcd_Wr_Command(0x30);
          Delay_ms(5);
          Lcd_Wr_Command(0x02);
          Delay_ms(5);
          Lcd_Wr_Command(0x06);
          Delay_ms(5);
          Lcd_Wr_Command(0x0c);
          Delay_ms(5);
          Lcd_Wr_Command(0x01);
          Delay_ms(5);
          //Lcd_Wr_Command(0x80);
          }
          void Posit(uchar x,uchar y,uchar *String)
          {
          uchar Posit,Addr;
          if(y==1)
          Addr=0x80;
          if(y==2)
          Addr=0x90;
          Posit=Addr+x;
          Lcd_Wr_Command(Posit);
          while(*String!=