⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 text1.lst

📁 LCD TS12864-3的一些驱动。可显示中文。
💻 LST
字号:
C51 COMPILER V7.50   TEXT1                                                                 04/07/2008 15:32:04 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE TEXT1
OBJECT MODULE PLACED IN Text1.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Text1.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include<reg52.h>
   2          #define uchar unsigned char  
   3          #define uint  unsigned int
   4          #define DataPort    P0 
   5          #define N 800
   6          sbit E=P2^5;
   7          sbit RW=P2^6;
   8          sbit RS=P2^7;
   9          sbit RSTB=P2^4;
  10          int    num;
  11          uint i=0;
  12          uint l=0;
  13          uint b;
  14          uchar temp;
  15          uchar a[]="东莞理工学院0123456789abcdefg,今天是2008年04月07日星期1.";
  16          uchar c[]={2+'0',5+'0'};
  17          uchar d[]={0x98,0x90,0x88,0x80};
  18          ////////////////////////////////////////////////////////////
  19          
  20          /**************延时1ms*count*****************///
  21          void delay(int count)
  22          {
  23   1        int x,y;
  24   1        for(x=0;x<count;x++)
  25   1        for(y=0;y<120;y++);
  26   1      }
  27          /***********忙检测********************/
  28          void Busy()
  29          {
  30   1        DataPort=0xFF;
  31   1        RS=0; 
  32   1        RW=1; 
  33   1          E =1; 
  34   1          if (P0^7==1) delay(10); 
  35   1          E=0;
  36   1       }
  37          
  38          /***********写指令子程序****************/
  39          void Write_Com(uchar command)
  40          {
  41   1        Busy();        //检测忙标志位
  42   1        RS=0;
  43   1        RW=0; 
  44   1        E=1;                                          
  45   1        DataPort=command;  //写入指令
  46   1        delay(1);                                               
  47   1        E=0;  
  48   1        RW=1;
  49   1        DataPort=0xff;                                                                             
  50   1      }                                                  
  51          
  52          /***********写数据子程序***************/ 
  53          void Write_Data(uchar Data)
  54          {
  55   1        Busy();
C51 COMPILER V7.50   TEXT1                                                                 04/07/2008 15:32:04 PAGE 2   

  56   1        RS=1;                 
  57   1        RW=0;
  58   1        E=1;
  59   1        DataPort=Data;
  60   1        delay(1);
  61   1        E=0; 
  62   1        RW=1;
  63   1      }
  64          
  65          /***********LCD初始化*******************/ 
  66          
  67          void Init_LCD(void) 
  68          {    
  69   1         RSTB=0; 
  70   1         delay(1);
  71   1         RSTB=1;         
  72   1         delay(1); 
  73   1         Write_Com(0x32);//30H--基本指令操作  
  74   1         Write_Com(0x32);
  75   1         Write_Com(0x0e);//开显示,关光标,不闪烁。 
  76   1         Write_Com(0x00);//清除显示  
  77   1         Write_Com(0x06);//指定在资料写入或读取时,光标的移动方向,DDRAM的地址计数器(AC)加1。   
  78   1      } 
  79          
  80          /*****************清屏***********************/ 
  81          void Clear_LCD(void) 
  82          { 
  83   1        Write_Com(0x01); 
  84   1        Write_Com(0x34); 
  85   1        Write_Com(0x30); 
  86   1      }
  87          /*******************逐行显示***************************************/
  88          /**** 灵活的算法,实现字体向上走动,x=d[0]=0x98时,i=0时执行第1,3个if,最终将字写在0x98开始的行中。
  89                x=d[1]=0x90时,i=0时执行第1,4个if,最终将字写在0x98开始的行中,i=16时执行第2个if,将字写在
  90                    0x98中。。。以此类推。。。                                                            ****/
  91          
  92          void Display_Line(uchar x)
  93          {
  94   1        uchar c=0;
  95   1        c=x-0x1;                        //本函数说明,函数内部的计算公式一定要处在函数的首行
  96   1        if(i==0) Write_Com(x);
  97   1        if(i==2*(0x87-c)) Write_Com(0x90); 
  98   1        if(i==2*(0x97-c)) Write_Com(0x98);
  99   1        if(i==2*(0x8f-c)) Write_Com(0x88);
 100   1       }
 101          
 102          /********************汉字显示********************/
 103          void Show_Chiese()
 104          {
 105   1         EA=0;
 106   1         b=sizeof(a)/sizeof(char);  //注意,这里不能单纯写成b=sizeof(a),编译器看到的就是一个有52个元素的字符形

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -