欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 基于stc89c52的LCD12864帶中文字庫液晶顯示中文 [打印本頁]

作者: heicad    時間: 2014-10-21 01:46
標題: 基于stc89c52的LCD12864帶中文字庫液晶顯示中文
    // Header: 12864帶中文字庫液晶模塊顯示文字C程序實例  
    // File Name: stc89c52+12864帶中文字庫液晶顯示中文  
    // Author: TabLee
    // Date: 2014.04.03

    #include <stdio.h>  
    #include <math.h>  
    #include <reg52.h>  
    #include <string.h>  

    sbit    RS =P2^5; //注意:一定要看12864液晶模塊的資料,來確定怎樣操作  
    sbit    WRD=P2^6;  
    sbit    E=  P2^7;  
    sbit    PSB=P2^3;  
    sbit    RES=P2^4;  

    void TransferData(char data1,bit DI);  
    void delayms(unsigned int n);  
    void delay(unsigned int m);  
    void lcd_mesg(unsigned char code *addr1);  


    //下面來定義要顯示的漢字,8*4  
    unsigned char code IC_DAT[]={  
        "世界您好!      "  
        "程序初始化      "  
        "                "  
        "                "  
    };  

    unsigned char code IC_DAT2[]={  
        "愛一個人難卻還愛"  
        "交結朋友可路更寬"  
        "誠實守信加油努力"  
        "成功做人成功做事"  
    };  

    void initinal(void)           //初始化,12864有要求的要寫上  
    {  
        delay(40);  
        PSB=1;   //并口工作模式  
        delay(1);  
        RES=0; //復位  
        delay(1);  
        RES=1;   //復位置高  
        delay(10);  
        TransferData(0x30,0);  
        delay(100);  
        TransferData(0x30,0);  
        delay(37);  
        TransferData(0x08,0);  
        delay(100);  
        TransferData(0x10,0);  
        delay(100);  
        TransferData(0x0C,0);  
        delay(100);  
        TransferData(0x01,0);  
        delay(10);  
        TransferData(0x06,0);  
        delay(100);  
    }  


    void main(void)            //分兩屏來不斷顯示上面定義的IC_DAT和IC_DAT2漢字  
    {  
        while(1)  
        {  
           initinal();//調用LCD字庫初始化程序  
           delay(100);  
           lcd_mesg(IC_DAT);  
           delayms(240);                   //延時程序必要的,長與短,自己調節  
           delayms(240);  

           initinal();  
           delay(100);  
           lcd_mesg(IC_DAT2);  
           delayms(240);  
           delayms(240);  
        }  
    }  


    void lcd_mesg(unsigned char code *addr1)   //顯示漢字函數,8*4=32  
    {  
        unsigned char i;  
        TransferData(0x80,0);  
        delay(100);  
        for(i=0;i<32;i++)  
           {  
            TransferData(*addr1,1);  
            addr1++;  
           }  
           TransferData(0x90,0);  
           delay(100);  
           for(i=32;i<64;i++)  
           {  
            TransferData(*addr1,1);  
            addr1++;  
           }  
    }  


    void TransferData(char data1,bit DI) //傳送數據或是命令,當DI=0時,傳送命令,當DI=1時,傳送數據  
    {  
        WRD=0;  
        RS=DI;  
        delay(1);  
        P0=data1;  
        E=1;  
        delay(1);  
        E=0;  
    }  



    void delayms(unsigned int n)    //延時子程序  
    {  
        unsigned int i,j;  
        for(i=0;i<n;i++)  
        for(j=0;j<2000;j++);  
    }  

    void delay(unsigned int m)  
        {  
            unsigned int i,j;  
            for(i=0;i<m;i++)  
            for(j=0;j<10;j++);  
        }

作者: T29    時間: 2014-10-22 12:05
為什么我的板子把PSB寫低不好用,非要把PSB接到GND才行呀?





歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1