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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4182|回復: 2
打印 上一主題 下一主題
收起左側

基于stc89c52的LCD12864帶中文字庫液晶顯示中文

[復制鏈接]
跳轉到指定樓層
樓主
ID:262 發表于 2014-10-21 01:46 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
    // 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++);  
        }
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:51348 發表于 2014-10-22 12:05 | 只看該作者
為什么我的板子把PSB寫低不好用,非要把PSB接到GND才行呀?
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表