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

📄 12864.lst

📁 自己在lm3s1138上面移植的128*64程序
💻 LST
字号:
C51 COMPILER V7.06   12864                                                                 09/06/2008 21:30:31 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE 12864
OBJECT MODULE PLACED IN 12864.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE 12864.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          /*******************************************************************/
   2          /*                                                                 */
   3          /* ME300B单片机开发系统演示程序 - 128*64LCD显示红外遥控器键值显示  */
   4          /*                                                                 */
   5          /*  LCD型号:TS12864A-3(带汉字库)或兼容型号    控制器ST7920      */
   6          /*  MCU:AT89S52 ,晶体频率:11.0592MHz                              */
   7          /*******************************************************************/
   8          
   9          #include <reg52.h>
  10          #include <intrins.h>
  11                  
  12          #define uchar unsigned char
  13          #define uint  unsigned int
  14          /*TS12864A-3 端口定义*/
  15          
  16          /*  #define LCD_data P0             //数据口
  17                  sbit LCD_RS  =  P2^0;            //寄存器选择输入 
  18                  sbit LCD_RW  =  P2^1;            //液晶读/写控制
  19                  sbit LCD_EN  =  P2^2;            //液晶使能控制
  20                  sbit LCD_PSB =  P2^3;            //串/并方式控制
  21                  sbit LCD_RST =  P2^5;            //液晶复位端口
  22          */
  23          
  24          
  25                  #define LCD_data P0             //数据口
  26                  sbit LCD_RS  =  P2^4;            //寄存器选择输入 
  27                  sbit LCD_RW  =  P2^5;            //液晶读/写控制
  28                  sbit LCD_EN  =  P2^6;            //液晶使能控制
  29                  sbit LCD_PSB =  P2^1;            //串/并方式控制
  30                  sbit LCD_RST =  P2^3;            //液晶复位端口
  31          
  32          uchar code dis1[] = {"赞成苏艳蕊是流氓"};
  33          uchar code dis2[] = {"请举手!!"};
  34          uchar code dis3[] = {"票数持续攀升中……"};
  35          uchar code dis4[] = {"现在有      票了"};
  36          uint kk;//输入要显示的数据
  37          
  38          #define delayNOP();  {_nop_();_nop_();_nop_();_nop_();};
  39          //uchar IRDIS[2];
  40          void  dataconv(uint number,uchar pos);
  41          uchar num[3];
  42          void lcd_pos(uchar X,uchar Y);  //确定显示位置
  43          void clean();
  44          /*******************************************************************/
  45          /*                                                                 */
  46          /*  延时函数                                                       */
  47          /*                                                                 */
  48          /*******************************************************************/
  49          void delay(int ms)
  50          {
  51   1          while(ms--)
  52   1              {
  53   2            uchar i;
  54   2                for(i=0;i<250;i++)  
  55   2                 {
C51 COMPILER V7.06   12864                                                                 09/06/2008 21:30:31 PAGE 2   

  56   3                  _nop_();                       
  57   3                      _nop_();
  58   3                      _nop_();
  59   3                      _nop_();
  60   3                 }
  61   2              }
  62   1      }               
  63          /*******************************************************************/
  64          /*                                                                 */
  65          /*检查LCD忙状态                                                    */
  66          /*lcd_busy为1时,忙,等待。lcd-busy为0时,闲,可写指令与数据。      */
  67          /*                                                                 */
  68          /*******************************************************************/
  69          bit lcd_busy()
  70           {                          
  71   1          bit result;
  72   1          LCD_RS = 0;
  73   1          LCD_RW = 1;
  74   1          LCD_EN = 1;
  75   1          delayNOP();
  76   1          result = (bit)(P0&0x80);
  77   1          LCD_EN = 0;
  78   1          return(result); 
  79   1       }
  80          /*******************************************************************/
  81          /*                                                                 */
  82          /*写指令数据到LCD                                                  */
  83          /*RS=L,RW=L,E=高脉冲,D0-D7=指令码。                             */
  84          /*                                                                 */
  85          /*******************************************************************/
  86          void lcd_wcmd(uchar cmd)
  87          {                          
  88   1              uchar res=200;                  
  89   1          while((lcd_busy()) && (res) )
  90   1              {res--;} 
  91   1          LCD_RS = 0;
  92   1          LCD_RW = 0;
  93   1          LCD_EN = 0;
  94   1          _nop_();
  95   1          _nop_(); 
  96   1          P0 = cmd;
  97   1          delayNOP();
  98   1          LCD_EN = 1;
  99   1          delayNOP();
 100   1          LCD_EN = 0;  
 101   1      }
 102          /*******************************************************************/
 103          /*                                                                 */
 104          /*写显示数据到LCD                                                  */
 105          /*RS=H,RW=L,E=高脉冲,D0-D7=数据。                               */
 106          /*                                                                 */
 107          /*******************************************************************/
 108          void lcd_wdat(uchar dat)
 109          {        
 110   1              uchar res=200;                  
 111   1          while((lcd_busy()) && (res) )
 112   1              {res--;} 
 113   1          LCD_RS = 1;
 114   1          LCD_RW = 0;
 115   1          LCD_EN = 0;
 116   1          P0 = dat;
 117   1          delayNOP();
C51 COMPILER V7.06   12864                                                                 09/06/2008 21:30:31 PAGE 3   

 118   1          LCD_EN = 1;
 119   1          delayNOP();
 120   1          LCD_EN = 0; 
 121   1      }
 122          
 123          /*********************************************************/
 124          /*                                                       */
 125          /* 设定显示位置                                          */
 126          /*                                                       */
 127          /*********************************************************/
 128          void lcd_pos(uchar X,uchar Y)
 129          {                          
 130   1         uchar  pos;
 131   1         if (X==0)
 132   1           {X=0x80;}
 133   1         else if (X==1)
 134   1           {X=0x90;}
 135   1         else if (X==2)
 136   1           {X=0x88;}
 137   1         else if (X==3)
 138   1           {X=0x98;}
 139   1         pos = X+Y ;  
 140   1         lcd_wcmd(pos);     //显示地址
 141   1      }
 142          /*******************************************************************/
 143          /*                                                                 */
 144          /*  LCD初始化设定                                                  */
 145          /*                                                                 */
 146          /*******************************************************************/
 147          void lcd_init()
 148          { 
 149   1              LCD_RST = 0;             //液晶复位
 150   1          delay(30);                   
 151   1          LCD_RST = 1;      
 152   1          delay(5);
 153   1          LCD_PSB = 1;         //并口方式
 154   1          
 155   1          lcd_wcmd(0x34);      //扩充指令操作
 156   1          delay(5);
 157   1          lcd_wcmd(0x30);      //基本指令操作
 158   1          delay(5);
 159   1          lcd_wcmd(0x0C);      //显示开,关光标
 160   1          delay(5);
 161   1          lcd_wcmd(0x01);      //清除LCD的显示内容
 162   1          delay(5);
 163   1      }
 164          void clean(void)
 165          {
 166   1                LCD_RST = 0;           //液晶复位
 167   1            lcd_init();         //初始化LCD 
 168   1      }
 169          /*********************************************************/
 170          /*                                                                                                               */
 171          /* 转换为ASCII码                                                                                 */
 172          /*                                                       */
 173          /*********************************************************/
 174          void  dataconv(uint number,uchar pos)    
 175            {
 176   1           uchar  t; 
 177   1              
 178   1               num[2]= number/100;
 179   1               num[1]=(number-num[2]*100)/10;
C51 COMPILER V7.06   12864                                                                 09/06/2008 21:30:31 PAGE 4   

 180   1               num[0]= number%10;
 181   1      
 182   1               for (t=0;t<3;t++)   
 183   1           {
 184   2               if(num[t]>9)
 185   2            num[t]=num[t]+0x37;
 186   2           else
 187   2                num[t]=num[t]+0x30;
 188   2               }
 189   1               lcd_pos(3,pos);             
 190   1           lcd_wdat(num[2]);        //第三位数显示
 191   1           pos++;
 192   1               lcd_pos(3,pos);             
 193   1           lcd_wdat(num[1]);        //第二位数显示
 194   1               pos++; 
 195   1               lcd_pos(3,pos);             
 196   1           lcd_wdat(num[0]);        //第二位数显示
 197   1        }
 198           
 199          /*********************************************************/
 200          /*                                                                                                               */
 201          /* 主程序                                                                                */
 202          /*                                                       */
 203          /*********************************************************/
 204            main()
 205           {
 206   1              uchar hehe;
 207   1       
 208   1          uchar i;
 209   1          delay(10);                 //延时
 210   1          lcd_init();                //初始化LCD             
 211   1              
 212   1          lcd_pos(0,0);             //设置显示位置为第一行的第1个字符
 213   1           i = 0;
 214   1          while(dis1[i] != '\0')
 215   1           {                         //显示字符
 216   2             lcd_wdat(dis1[i]);
 217   2             i++;
 218   2           }
 219   1      //       delay(400);
 220   1      
 221   1       //     clean();   
 222   1          lcd_pos(1,0);             //设置显示位置为第二行的第1个字符
 223   1           i = 0;
 224   1          while(dis2[i] != '\0')
 225   1           {
 226   2             lcd_wdat(dis2[i]);      //显示字符
 227   2             i++;
 228   2           }
 229   1      //    delay(400);
 230   1      //      clean();   
 231   1               lcd_pos(2,0);             //设置显示位置为第三行的第1个字符
 232   1           i = 0;
 233   1          while(dis3[i] != '\0')
 234   1           {
 235   2             lcd_wdat(dis3[i]);      //显示字符
 236   2             i++;
 237   2           }
 238   1               
 239   1      //       delay(400);
 240   1      //       clean();
 241   1      
C51 COMPILER V7.06   12864                                                                 09/06/2008 21:30:31 PAGE 5   

 242   1               lcd_pos(3,0);  //设置显示位置为第四行的第1个字符
 243   1            i = 0;
 244   1          while(dis4[i] != '\0')
 245   1           {
 246   2             lcd_wdat(dis4[i]);      //显示字符
 247   2             i++;
 248   2           }
 249   1               kk=0;  
 250   1              while(1)
 251   1              {       
 252   2                               //输入要显示的数据
 253   2               kk++;
 254   2               dataconv(kk,3);                        //记住咯 每行的位置是从0开始的
 255   2               for(hehe=2;hehe>0;hehe--)
 256   2                      delay(100);
 257   2               if(kk==200)
 258   2                      kk=0;
 259   2              }
 260   1      
 261   1           
 262   1         
 263   1      
 264   1      }
 265          
 266          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    459    ----
   CONSTANT SIZE    =     64    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      5       3
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       1
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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