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

📄 lcd_picure.lst

📁 在12864上显示图片!!hehe ,很有成就感的
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.20   LCD_PICURE                                                            09/02/2007 16:28:22 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE LCD_PICURE
OBJECT MODULE PLACED IN lcd_picure.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE lcd_picure.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include < reg52.h >
   2          #include < intrins.h >
   3          
   4          #define lcd_Data      P0  //数据口
   5                          sbit LCD_RS = P2^2;       //数据命令选择端
   6                  sbit LCD_RW = P2^1;       //读写控制
   7                  sbit LCD_EN = P2^0;       //使能端
   8                  sbit lcd_Data7=P0^7;
   9          
  10          unsigned char count1,count2,lcd_x,lcd_y,data1,data2,i,j;
  11          
  12          void initial(void);
  13          void clear_LCD(void);
  14          char read_data(void);
  15          void send_data(unsigned char dat);
  16          void send_cmd(unsigned char cmd);
  17          void lcd_check_busy(void);
  18          void display1(unsigned char x_addr,unsigned char dat1,unsigned char dat2);
  19          void display2(unsigned char x_addr,unsigned char data1);
  20          //void picture_display(const unsigned char *s);
  21          void picture_display(unsigned char s1,unsigned char s2);
  22          void set_dot(unsigned char x,unsigned char y);
  23          void line(unsigned char start_x,unsigned char start_y,unsigned char end_x,unsigned char end_y);
  24          
  25          unsigned char temp;
  26          void main(void)
  27          {
  28   1        initial();
  29   1        temp=0x80;
  30   1        lcd_x=0x90;
  31   1        lcd_y=0x80;
  32   1        while(1)
  33   1        {
  34   2      
  35   2              lcd_y=0x80;                     //设置液晶下半部分坐标
  36   2              lcd_x=0x90;
  37   2              _nop_();_nop_();_nop_();
  38   2              for(i=0;i<32;i++)           //写入液晶下半图象部分
  39   2              {
  40   3                  picture_display(0x00,0x00);
  41   3                  lcd_y++;                    //y轴地址加1
  42   3              }
  43   2              lcd_y=0x80;                     //设置液晶下半部分坐标
  44   2              lcd_x=0x91;
  45   2              _nop_();_nop_();_nop_();
  46   2              for(i=0;i<32;i++)           //写入液晶下半图象部分
  47   2              {
  48   3                  picture_display(0x00,0x00);
  49   3                  lcd_y++;                    //y轴地址加1
  50   3              }
  51   2              lcd_y=0x80;                     //设置液晶下半部分坐标
  52   2              lcd_x=0x92;
  53   2              _nop_();_nop_();_nop_();
  54   2              for(i=0;i<32;i++)           //写入液晶下半图象部分
  55   2              {
C51 COMPILER V7.20   LCD_PICURE                                                            09/02/2007 16:28:22 PAGE 2   

  56   3                  picture_display(0x00,0x00);
  57   3                  lcd_y++;                    //y轴地址加1
  58   3              }
  59   2              lcd_y=0x80;                     //设置液晶下半部分坐标
  60   2              lcd_x=0x93;
  61   2              _nop_();_nop_();_nop_();
  62   2              for(i=0;i<32;i++)           //写入液晶下半图象部分
  63   2              {
  64   3                  picture_display(0x00,0x00);
  65   3                  lcd_y++;                    //y轴地址加1
  66   3              }
  67   2              lcd_y=0x80;                     //设置液晶下半部分坐标
  68   2              lcd_x=0x94;
  69   2              _nop_();_nop_();_nop_();
  70   2              for(i=0;i<32;i++)           //写入液晶下半图象部分
  71   2              {
  72   3                  picture_display(0x00,0x00);
  73   3                  lcd_y++;                    //y轴地址加1
  74   3              }
  75   2              lcd_y=0x80;                     //设置液晶下半部分坐标
  76   2              lcd_x=0x95;
  77   2             _nop_();_nop_();_nop_();
  78   2              for(i=0;i<32;i++)           //写入液晶下半图象部分
  79   2              {
  80   3                  picture_display(0x00,0x00);
  81   3                  lcd_y++;                    //y轴地址加1
  82   3              }
  83   2              lcd_y=0x80;                     //设置液晶下半部分坐标
  84   2              lcd_x=0x96;
  85   2              _nop_();_nop_();_nop_();
  86   2              for(i=0;i<32;i++)           //写入液晶下半图象部分
  87   2              {
  88   3                  picture_display(0x00,0x00);
  89   3                  lcd_y++;                    //y轴地址加1
  90   3              }
  91   2              lcd_y=0x80;                     //设置液晶下半部分坐标
  92   2              lcd_x=0x97;
  93   2              _nop_();_nop_();_nop_();
  94   2              for(i=0;i<32;i++)           //写入液晶下半图象部分
  95   2              {
  96   3                  picture_display(0x00,0x00);
  97   3                  lcd_y++;                    //y轴地址加1
  98   3              }
  99   2              lcd_y=0x80;                     //设置液晶下半部分坐标
 100   2              lcd_x=0x98;
 101   2              _nop_();_nop_();_nop_();
 102   2              for(i=0;i<32;i++)           //写入液晶下半图象部分
 103   2              {
 104   3                  picture_display(0x00,0x00);
 105   3                  lcd_y++;                    //y轴地址加1
 106   3              }
 107   2              lcd_y=0x80;                     //设置液晶下半部分坐标
 108   2              lcd_x=0x99;
 109   2              _nop_();_nop_();_nop_();
 110   2              for(i=0;i<32;i++)           //写入液晶下半图象部分
 111   2              {
 112   3                  picture_display(0x00,0x00);
 113   3                  lcd_y++;                    //y轴地址加1
 114   3              }
 115   2              lcd_y=0x80;                     //设置液晶下半部分坐标
 116   2              lcd_x=0x9a;
 117   2              _nop_();_nop_();_nop_();
C51 COMPILER V7.20   LCD_PICURE                                                            09/02/2007 16:28:22 PAGE 3   

 118   2              for(i=0;i<32;i++)           //写入液晶下半图象部分
 119   2              {
 120   3                  picture_display(0x00,0x00);
 121   3                  lcd_y++;                    //y轴地址加1
 122   3              }
 123   2              lcd_y=0x80;                     //设置液晶下半部分坐标
 124   2              lcd_x=0x9b;
 125   2              _nop_();_nop_();_nop_();
 126   2              for(i=0;i<32;i++)           //写入液晶下半图象部分
 127   2              {
 128   3                  picture_display(0x00,0x00);
 129   3                  lcd_y++;                    //y轴地址加1
 130   3              }
 131   2              lcd_y=0x80;                     //设置液晶下半部分坐标
 132   2              lcd_x=0x9c;
 133   2              _nop_();_nop_();_nop_();
 134   2              for(i=0;i<32;i++)           //写入液晶下半图象部分
 135   2              {
 136   3                  picture_display(0x00,0x00);
 137   3                  lcd_y++;                    //y轴地址加1
 138   3              }
 139   2              lcd_y=0x80;                     //设置液晶下半部分坐标
 140   2              lcd_x=0x9d;
 141   2              _nop_();_nop_();_nop_();
 142   2              for(i=0;i<32;i++)           //写入液晶下半图象部分
 143   2              {
 144   3                  picture_display(0x00,0x00);
 145   3                  lcd_y++;                    //y轴地址加1
 146   3              }
 147   2              lcd_y=0x80;                     //设置液晶下半部分坐标
 148   2              lcd_x=0x9e;
 149   2              _nop_();_nop_();_nop_();
 150   2              for(i=0;i<32;i++)           //写入液晶下半图象部分
 151   2              {
 152   3                  picture_display(0x00,0x00);
 153   3                  lcd_y++;                    //y轴地址加1
 154   3              }
 155   2              lcd_y=0x80;                     //设置液晶下半部分坐标
 156   2              lcd_x=0x9f;
 157   2             _nop_();_nop_();_nop_();
 158   2              for(i=0;i<32;i++)           //写入液晶下半图象部分
 159   2              {
 160   3                  picture_display(0x00,0x00);
 161   3                  lcd_y++;                    //y轴地址加1
 162   3              }
 163   2             line(1,30,120,5);
 164   2      
 165   2             line(5,5,50,50);
 166   2      
 167   2             line(80,10,30,50);
 168   2      
 169   2          while(1);
 170   2        }
 171   1      }
 172          
 173          /******************************************************/
 174          /*******************    液晶显示     ******************/
 175          /******************************************************/
 176          void lcd_check_busy(void)
 177          {
 178   1               _nop_();_nop_();_nop_();
 179   1                LCD_RS =0;//RC5
C51 COMPILER V7.20   LCD_PICURE                                                            09/02/2007 16:28:22 PAGE 4   

 180   1               _nop_();_nop_();_nop_();
 181   1                LCD_RW =1;//RC4
 182   1                while(1)
 183   1                {
 184   2                  LCD_EN=1;//RC3
 185   2                  _nop_();_nop_();_nop_();
 186   2                  if(lcd_Data7==0)break;
 187   2                 _nop_();_nop_();_nop_();
 188   2                } 
 189   1            LCD_EN=0;
 190   1      }
 191          
 192          void send_cmd(unsigned char cmd)
 193          {
 194   1                lcd_check_busy();
 195   1               _nop_();_nop_();_nop_();
 196   1                LCD_RS=0;
 197   1               _nop_();_nop_();_nop_();
 198   1                LCD_RW=0;
 199   1               _nop_();_nop_();_nop_();
 200   1                LCD_EN=1;
 201   1               _nop_();_nop_();_nop_();
 202   1                lcd_Data=cmd;
 203   1               _nop_();_nop_();_nop_();
 204   1                LCD_EN=0;               //停止工作
 205   1      }
 206          
 207          void initial(void)
 208          {
 209   1               _nop_();_nop_();_nop_();
 210   1                send_cmd(0x30);//基本指令集;
 211   1               _nop_();_nop_();_nop_();
 212   1                send_cmd(0x0c);//整体显示,关光标,不闪烁;
 213   1               _nop_();_nop_();_nop_();
 214   1                send_cmd(0x01);//清DDRAM;
 215   1               _nop_();_nop_();_nop_();
 216   1                send_cmd(0x02);//DDRAM地址归位;
 217   1               _nop_();_nop_();_nop_();
 218   1                send_cmd(0x80);//设定DDRAM 7位地址000,0000到地址计数器AC;
 219   1               _nop_();_nop_();_nop_();
 220   1                send_cmd(0x04);//指定在资料写入或读取时,光标的移动方向,
 221   1                                        //DDRAM的地址计数器(AC)加一;
 222   1               _nop_();_nop_();_nop_();
 223   1                send_cmd(0x0c);//整体显示,开光标,开闪烁;
 224   1      
 225   1      }
 226          
 227          void clear_LCD(void)
 228          {
 229   1                send_cmd(0x01);
 230   1           _nop_();_nop_();_nop_();
 231   1                send_cmd(0x34);
 232   1           _nop_();_nop_();_nop_();
 233   1                send_cmd(0x30);
 234   1      }
 235          
 236          char read_data(void)
 237          {
 238   1               unsigned char read_data;
 239   1               lcd_check_busy();
 240   1               LCD_RS=1;
 241   1      _nop_();_nop_();_nop_();
C51 COMPILER V7.20   LCD_PICURE                                                            09/02/2007 16:28:22 PAGE 5   

 242   1               LCD_RW=1;
 243   1      _nop_();_nop_();_nop_();
 244   1               LCD_EN=1;
 245   1      _nop_();_nop_();_nop_();
 246   1               read_data=lcd_Data;
 247   1               LCD_EN=0;
 248   1               return (read_data);
 249   1      }
 250          
 251          void send_data(unsigned char dat)
 252          {
 253   1                lcd_check_busy();
 254   1                LCD_RS =1;
 255   1      _nop_();_nop_();_nop_();
 256   1                LCD_RW =0;
 257   1      _nop_();_nop_();_nop_();
 258   1                LCD_EN =1;
 259   1      _nop_();_nop_();_nop_();
 260   1                lcd_Data =dat;
 261   1      _nop_();_nop_();_nop_();
 262   1                LCD_EN =0;
 263   1      }
 264          
 265          void display1(unsigned char x_addr,unsigned char data1,unsigned char data2)
 266          {
 267   1                send_cmd(x_addr);//1xxx,xxxx设定DDRAM7位地址xxx,xxxx到地址计数器AC;
 268   1                send_data(data1);
 269   1                send_data(data2);
 270   1      }
 271          
 272          
 273          void display2(unsigned char x_addr,unsigned char data1)
 274          {
 275   1               send_cmd(x_addr);//1xxx,xxxx设定DDRAM7位地址xxx,xxxx到地址计数器AC;
 276   1               send_data(data1);
 277   1      }
 278          
 279          void picture_display(unsigned char s1,unsigned char s2)
 280          {
 281   1                //unsigned char dat1,dat2;
 282   1                lcd_check_busy();
 283   1                send_cmd(0x34);                     //扩充指令集,绘图显示关闭
 284   1                _nop_();_nop_();_nop_();
 285   1      //        send_cmd(0x80);
 286   1                send_cmd(lcd_y);                    
 287   1                send_cmd(lcd_x);
 288   1      //        i=read_data();
 289   1      //        j=read_data();
 290   1      //        s2 =(s2|j);
 291   1      //        s1 =(s1|i);
 292   1              _nop_();_nop_();_nop_();
 293   1                send_data(s1);
 294   1              _nop_();_nop_();_nop_();
 295   1                send_data(s2);
 296   1              _nop_();_nop_();_nop_();
 297   1                send_cmd(0x36);                     //扩充指令集,绘图显示关闭
 298   1              _nop_();_nop_();_nop_();
 299   1                send_cmd(0x30);                     //恢复到基本指令集
 300   1      }
 301          /*
 302          void set_dot(unsigned char x,unsigned char y)
 303          {
C51 COMPILER V7.20   LCD_PICURE                                                            09/02/2007 16:28:22 PAGE 6   

 304            unsigned char x1,x2;
 305            if(y>31)
 306            {
 307                lcd_y=63-y+0x80;
 308                    x1=x/16;                       

⌨️ 快捷键说明

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