stc89c52+12864带中文字库液晶显示中文

    1. // Header: 12864带中文字库液晶模块显示文字C程序实例  
    2. // File Name:   
    3. // Author:  
    4. // Date:  
    5.   
    6. #include <stdio.h>  
    7. #include <math.h>  
    8. #include <reg52.h>  
    9. #include <string.h>  
    10.   
    11. sbit    RS =P2^5; //注意:一定要看12864液晶模块的资料,来确定怎样操作  
    12. sbit    WRD=P2^6;  
    13. sbit    E=  P2^7;  
    14. sbit    PSB=P2^3;  
    15. sbit    RES=P2^4;  
    16.   
    17. void TransferData(char data1,bit DI);  
    18. void delayms(unsigned int n);  
    19. void delay(unsigned int m);  
    20. void lcd_mesg(unsigned char code *addr1);  
    21.   
    22.   
    23. //下面来定义要显示的汉字,8*4  
    24. unsigned char code IC_DAT[]={  
    25.     "世界您好!      "  
    26.     "程序初始化      "  
    27.     "                "  
    28.     "                "  
    29. };  
    30.   
    31. unsigned char code IC_DAT2[]={  
    32.     "爱一个人难却还爱"  
    33.     "交结朋友可路更宽"  
    34.     "诚实守信加油努力"  
    35.     "成功做人成功做事"  
    36. };  
    37.   
    38. void initinal(void)           //初始化,12864有要求的要写上  
    39. {  
    40.     delay(40);  
    41.     PSB=1;   //并口工作模式  
    42.     delay(1);  
    43.     RES=0; //复位  
    44.     delay(1);  
    45.     RES=1;   //复位置高  
    46.     delay(10);  
    47.     TransferData(0x30,0);  
    48.     delay(100);  
    49.     TransferData(0x30,0);  
    50.     delay(37);  
    51.     TransferData(0x08,0);  
    52.     delay(100);  
    53.     TransferData(0x10,0);  
    54.     delay(100);  
    55.     TransferData(0x0C,0);  
    56.     delay(100);  
    57.     TransferData(0x01,0);  
    58.     delay(10);  
    59.     TransferData(0x06,0);  
    60.     delay(100);  
    61. }  
    62.   
    63.   
    64. void main(void)            //分两屏来不断显示上面定义的IC_DAT和IC_DAT2汉字  
    65. {  
    66.     while(1)  
    67.     {  
    68.        initinal();//调用LCD字库初始化程序  
    69.        delay(100);  
    70.        lcd_mesg(IC_DAT);  
    71.        delayms(240);                   //延时程序必要的,长与短,自己调节  
    72.        delayms(240);  
    73.       
    74.        initinal();  
    75.        delay(100);  
    76.        lcd_mesg(IC_DAT2);  
    77.        delayms(240);  
    78.        delayms(240);  
    79.     }  
    80. }  
    81.   
    82.   
    83. void lcd_mesg(unsigned char code *addr1)   //显示汉字函数,8*4=32  
    84. {  
    85.     unsigned char i;  
    86.     TransferData(0x80,0);  
    87.     delay(100);  
    88.     for(i=0;i<32;i++)  
    89.        {  
    90.         TransferData(*addr1,1);  
    91.         addr1++;  
    92.        }  
    93.        TransferData(0x90,0);  
    94.        delay(100);  
    95.        for(i=32;i<64;i++)  
    96.        {  
    97.         TransferData(*addr1,1);  
    98.         addr1++;  
    99.        }  
    100. }  
    101.   
    102.      
    103. void TransferData(char data1,bit DI) //传送数据或是命令,当DI=0时,传送命令,当DI=1时,传送数据  
    104. {  
    105.     WRD=0;  
    106.     RS=DI;  
    107.     delay(1);  
    108.     P0=data1;  
    109.     E=1;  
    110.     delay(1);  
    111.     E=0;  
    112. }  
    113.   
    114.   
    115.   
    116. void delayms(unsigned int n)    //延时子程序  
    117. {  
    118.     unsigned int i,j;  
    119.     for(i=0;i<n;i++)  
    120.     for(j=0;j<2000;j++);  
    121. }  
    122.   
    123. void delay(unsigned int m)  
    124.     {  
    125.         unsigned int i,j;  
    126.         for(i=0;i<m;i++)  
    127.         for(j=0;j<10;j++);

posted on 2013-03-15 15:39  AI_JJ  阅读(352)  评论(0)    收藏  举报

导航