新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > LCD12232串行顯示C51程序

        LCD12232串行顯示C51程序

        作者: 時間:2016-11-29 來源:網絡 收藏

        這個程序包含三個方面的知識:
        1。4*4按鍵的部份--完成(0~9)數字鍵,功能鍵,字母鍵的輸入;按鍵抬起后才能作用;
        2。LCD12232的顯示部份;串行顯示,只用兩根線,顯示中英文字母及數字;
        3。TTL系列芯片與CMOS系列芯片的知識,及做庫;這部份還沒完成;
        我想第三步完成了,MM還符合一名合格的大學畢業生的;
        哈!直接上代碼了,下載地址: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[]={"浙江師范大學行"};
        uchar code Disp_2[]={"知學院電子信息"};
        uchar code Disp_3[]={"工程08級毛夢超"};
        uchar code Disp_4[]={"的畢業設計--集"};
        uchar code Disp_5[]={"成電路測試系統!"};
        uchar code Disp_6[]={"指導老師:丁宇"};
        uchar code Disp_7[]={"請插入芯片后按"};
        uchar code Disp_8[]={"確認鍵進行測試!"};
        uchar code Disp_9[]={"請選擇芯片類型:"};
        uchar code Disp_10[]={"1-CMOS; 2-TTL;"};
        uchar code Disp_11[]={"請輸入CMOS系列"};
        uchar code Disp_12[]={"請輸入TTL 系列"};
        uchar code Disp_13[]={"IC型號:"};
        //-----------------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顯示部份之寫數據
        //-----------------------------------------
        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!= 主站蜘蛛池模板: 中卫市| 格尔木市| 施秉县| 任丘市| 潼关县| 道孚县| 宁蒗| 乐至县| 额尔古纳市| 织金县| 尚志市| 太仓市| 宿州市| 光山县| 潞西市| 泽普县| 道真| 平遥县| 长白| 东乡族自治县| 温宿县| 织金县| 文昌市| 都昌县| 阿坝| 天等县| 准格尔旗| 天峻县| 松溪县| 和硕县| 砀山县| 乳源| 安义县| 新晃| 营口市| 衢州市| 商水县| 阳东县| 青神县| 稻城县| 彭水|