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

📄 main.lst

📁 自己做的单片机Proteus仿真实例
💻 LST
字号:
C51 COMPILER V8.02   MAIN                                                                  05/08/2012 23:59:43 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: E:\IDEsoftware\Keil uVision3\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /************http://hi.baidu.com/echoas***************
   2          程序:LCD12864自定义显示字符(最多显示4个)
   3          内容:ASCII码显示、自带字库显示(8192个)、自定义显示字符(4个)。
   4          软件:keil uVision4
   5          液晶:QYLCD12864HZ1(带字库) 
   6          作者:大海橡树 
   7          整理日期:2010-11-28  11:00
   8          修改:无 
   9          
  10          备注:有什么错误的地方,欢迎网友们到空间留言
  11          
  12                                                  O(∩_∩)O~
  13          
  14          ************http://hi.baidu.com/echoas*****************/
  15          #include<AT89X52.h>
  16          #define uchar unsigned char
  17          #define uint  unsigned int              //定义一下,方便使用 
  18          
  19          sbit RS=P2^5;
  20          sbit RW=P2^6;
  21          sbit EN=P2^7;   //液晶的三个控制端 
  22          
  23          //sbit PSB=P2^4;//1---8位或4位并口方式;0---串口方式。单片机上电高电平,选择的是并口方式 
  24          
  25          //繁体中文字“龍”      
  26          uchar table[]={0x10,0x80,0x08,0x80,0x7E,0xFC,0x24,0x80,0x18,0xFC,0xFF,0x04,0x00,0xFC,0x3E,0x80,
  27          0x22,0xF8,0x3E,0x80,0x22,0xF8,0x3E,0x80,0x22,0xFA,0x22,0x82,0x2A,0x82,0x24,0x7E}; 
  28          
  29          //一个星星、一个月亮 
  30          unsigned char code zk[]={0x08,0x20,0x1c,0x10,0x1c,0x1c,0xff,0x9e,0x7f,0x1e,0x1c,0x1f,0x3e,0x1f,
  31          0x3e,0x1f, 0x77,0x1f,0x41,0x3f,0x00,0x7e,0x00,0xfe,0x83,0xfc,0x7f,0xf8,0x3f,0xf0,0x0f,0xc0, 
  32          }; 
  33          
  34          //小人 
  35          uchar code table2[]={0x03,0xC0,0x04,0x20,0x04,0x20,0x03,0xC0,0x0C,0x30,0x14,0x28,0x14,0x28,0x14,0x28,
  36          0x14,0x28,0x17,0xE8,0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x0E,0x70,0x0E,0x70}; 
  37          
  38          //喇叭 
  39          uchar code table3[]={0x00,0x39,0x00,0x6A,0x00,0xA8,0x01,0x29,0x7E,0x2A,0xFC,0x28,0xFC,0x29,0xCC,0x2A,
  40          0xCC,0x28,0xFC,0x29,0xFC,0x2A,0x7E,0x28,0x01,0x29,0x00,0xAA,0x00,0x68,0x00,0x38};
  41          
  42          uchar code table4[]="LCD12864";
  43          uchar code table5[]="自定义显示字符";
  44          uchar code table6[]="大海橡树";
  45          
  46          void delay(uint i)      //延时函数 
  47          {
  48   1              while(--i);
  49   1      }
  50          
  51          void read_busy()        //读忙标志 最高位为1则busy,不能进行读写操作 
  52          {
  53   1              RS=0;
  54   1              RW=1;
  55   1              EN=1;   //看时序 
C51 COMPILER V8.02   MAIN                                                                  05/08/2012 23:59:43 PAGE 2   

  56   1              while(P0 & 0x80); 
  57   1              EN=0;
  58   1      }
  59          
  60          void write_LCD_command(uchar value) //写命令函数 
  61          {
  62   1              read_busy();    //每次读写都要进行读忙标志 
  63   1              RS=0;
  64   1              RW=0;
  65   1              delay(200);
  66   1              EN=1;           //EN从1--0锁存数据 
  67   1              P0=value;
  68   1              delay(200);
  69   1              EN=0;
  70   1      }
  71          
  72          void write_LCD_data(uchar value)        //写数据函数 
  73          {
  74   1              read_busy();
  75   1              RS=1;
  76   1              RW=0;
  77   1              delay(200);
  78   1              EN=1;           //EN从1--0锁存数据 
  79   1              P0=value;
  80   1              delay(200);
  81   1              EN=0;
  82   1      }
  83          
  84          void init_LCD()                         //8位并口方式LCD1864初始化函数 
  85          {
  86   1              delay(4000);                    //等待时间>40ms 
  87   1              write_LCD_command(0x30);//功能设定:8位数据、基本指令操作 
  88   1              delay(100);                             //等待时间>100us 
  89   1              write_LCD_command(0x30);//功能设定:8位数据、基本指令操作 
  90   1              delay(37);                              //等待时间>37us 
  91   1              write_LCD_command(0x0C);//显示设定:整体显示、游标关、不反白 
  92   1              delay(100);                             // 等待时间>100us 
  93   1              write_LCD_command(0x01);//清屏指令 
  94   1              delay(10000);                   //等待时间>10ms 
  95   1              write_LCD_command(0x06);//进入点设定:地址指针加1 
  96   1      }
  97          
  98          /*=============================================
  99          自定义汉字函数:CGRAM自定义显示字符
 100          地址            显示编码
 101          0x40            0x0000
 102          0x50            0x0002
 103          0x60            0x0004
 104          0x70            0x0006
 105          共可显示四个自定义字符! 
 106          显示自定义字符前,先要设定显示的位置,否则会乱码 
 107          ==============================================*/
 108          void CGRAM()
 109          {
 110   1              uchar i;
 111   1              write_LCD_command(0x30);//基本指令操作 
 112   1              write_LCD_command(0x40);//设定CGRAM字符的位置 
 113   1              for(i=0;i<16;i++)
 114   1              {
 115   2                      write_LCD_data(table[i*2]);
 116   2                      write_LCD_data(table[i*2+1]);//送显示数据到CGRAM区中 
 117   2              }
C51 COMPILER V8.02   MAIN                                                                  05/08/2012 23:59:43 PAGE 3   

 118   1              write_LCD_command(0x50);
 119   1              for(i=0;i<16;i++)
 120   1              {
 121   2                      write_LCD_data(zk[i*2]);
 122   2                      write_LCD_data(zk[i*2+1]);
 123   2              }
 124   1              write_LCD_command(0x60);
 125   1              for(i=0;i<16;i++)
 126   1              {
 127   2                      write_LCD_data(table2[i*2]);
 128   2                      write_LCD_data(table2[i*2+1]);
 129   2              }
 130   1      
 131   1              write_LCD_command(0x70);
 132   1              for(i=0;i<16;i++)
 133   1              {
 134   2                      write_LCD_data(table3[i*2]);
 135   2                      write_LCD_data(table3[i*2+1]);
 136   2              }
 137   1              
 138   1      }
 139          
 140          void main()
 141          {
 142   1              uchar num;
 143   1              init_LCD();
 144   1              
 145   1              while(1)
 146   1              {
 147   2                      write_LCD_command(0x80);
 148   2                      for(num=0;num<8;num++)
 149   2                      {
 150   3                              write_LCD_data(table6[num]);
 151   3                      }
 152   2                      write_LCD_command(0x84);
 153   2                      for(num=0;num<8;num++)
 154   2                      {
 155   3                              write_LCD_data(table4[num]);
 156   3                      }
 157   2      
 158   2                      write_LCD_command(0x90);
 159   2                      for(num=0;num<14;num++)
 160   2                      {
 161   3                              write_LCD_data(table5[num]);
 162   3                      }
 163   2                      
 164   2                      CGRAM();
 165   2                      write_LCD_command(0x98);
 166   2                      write_LCD_data(0x00);
 167   2                      write_LCD_data(0x00);//第一个自定义显示字符编码为:0x0000 
 168   2                      
 169   2                      write_LCD_command(0x99);
 170   2                      write_LCD_data(0x00);
 171   2                      write_LCD_data(0x02);//第一个自定义显示字符编码为:0x0002
 172   2      
 173   2                      write_LCD_command(0x9A);
 174   2                      write_LCD_data(0x00);
 175   2                      write_LCD_data(0x04);//第一个自定义显示字符编码为:0x0004
 176   2      
 177   2                      write_LCD_command(0x9B);
 178   2                      write_LCD_data(0x00);
 179   2                      write_LCD_data(0x06);//第一个自定义显示字符编码为:0x0006
C51 COMPILER V8.02   MAIN                                                                  05/08/2012 23:59:43 PAGE 4   

 180   2              }
 181   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    410    ----
   CONSTANT SIZE    =    129    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     32    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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