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

📄 lcdinit.lst

📁 2262 lcm abcdefghijkl
💻 LST
字号:
C51 COMPILER V8.02   LCDINIT                                                               03/14/2007 19:48:15 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE LCDINIT
OBJECT MODULE PLACED IN lcdinit.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE lcdinit.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include "reg51.h"
   2          #include "order.h"
   3          #include "lcdinit.h"
   4           char code int2charLCD[]={0xd6,0xd7,0xd8,0xd9,0xda,0xdb,0xdc,0xdd,0xde,0xdf,0xe0,0xe1,0xe2,0xe3,0xe4,0xe5,
             -0xe6,0xe7,0xe8,0xe9};
   5          /*读状态*/
   6          
   7          void display_LCD_number(char number,char i) //显示一个数字
   8          {
   9   1              unsigned char x;
  10   1          unsigned char ch;
  11   1              x=number;
  12   1              ch=i;
  13   1                      
  14   1          ch++;
  15   1      
  16   1              set_xy(ch,4);
  17   1              write_one(int2charLCD[2*x],INC_WR);
  18   1                                       
  19   1              set_xy(ch,5);
  20   1              write_one(int2charLCD[2*x+1],INC_WR);
  21   1      
  22   1      }
  23          
  24          
  25          
  26          
  27          
  28          uchar read_state(){
  29   1              uchar temp;
  30   1              P2 = 0xff;
  31   1              cd = 1;
  32   1              rd = 0;
  33   1              temp = P2;
  34   1              rd = 1;
  35   1              return(temp);
  36   1      }
  37          
  38          /*STA0指令读写状态,STA1数据读写状态 判断函数*/
  39          void lcd_enable(){
  40   1              uchar i;
  41   1              for(i = 10; i > 0; i--)
  42   1                      if((read_state() & 0x03) == 0x03)
  43   1                              break;
  44   1              if(i==0)error0=1;/*若i==0,说明错误*/
  45   1              //else error0=0;
  46   1      }
  47          
  48          /*STA2数据自动读状态 判断函数*/
  49          void atrd_enable(){
  50   1              uchar i;
  51   1              for(i = 10; i > 0; i--)
  52   1                      if((read_state() & 0x04) == 0x04)
  53   1                              break;
  54   1              if(i==0)error1=1;/*若i==0,说明错误*/
C51 COMPILER V8.02   LCDINIT                                                               03/14/2007 19:48:15 PAGE 2   

  55   1              //else error1=0;
  56   1      }
  57          
  58          /*STA3数据自动写状态 判断函数*/
  59          void atwr_enable(){
  60   1              uchar i;
  61   1              for(i = 10; i > 0; i--)
  62   1                      if((read_state() & 0x08) == 0x08)
  63   1                              break;
  64   1              if(i==0)error2=1;/*若i==0,说明错误*/
  65   1              //else error2=0;
  66   1      }
  67          /*写无参数函数*/
  68          
  69          
  70          void write_cmd0(uchar cmd){
  71   1              lcd_enable();
  72   1              cd=1;
  73   1              P2=cmd;
  74   1              wr=0;
  75   1              wr=1;
  76   1      }
  77          
  78          /*写单参数函数*/
  79          void write_cmd1(uchar data1, uchar cmd){
  80   1              lcd_enable();
  81   1              cd=0;
  82   1              P2=data1;
  83   1              wr=0;
  84   1              wr=1;
  85   1              lcd_enable();
  86   1              cd=1;
  87   1              P2=cmd;
  88   1              wr=0;
  89   1              wr=1;
  90   1      }
  91          
  92          /*写双参数函数*/
  93          void write_cmd2(uchar data1, uchar data2, uchar cmd){
  94   1              lcd_enable();
  95   1              cd=0;
  96   1              P2=data1;
  97   1              wr=0;
  98   1              wr=1;
  99   1              lcd_enable();
 100   1              cd=0;
 101   1              P2=data2;
 102   1              wr=0;
 103   1              wr=1;   
 104   1              lcd_enable();
 105   1              cd=1;
 106   1              P2=cmd;
 107   1              wr=0;
 108   1              wr=1;   
 109   1      }
 110          
 111          /*写数据函数*/
 112          void write_data(uchar data0){
 113   1              lcd_enable();
 114   1              cd=1;
 115   1              P2=data0;
 116   1              wr=0;
C51 COMPILER V8.02   LCDINIT                                                               03/14/2007 19:48:15 PAGE 3   

 117   1              wr=1;   
 118   1      }
 119          
 120          /*读数据函数*/
 121          uchar read_data(){
 122   1              char temp;
 123   1              lcd_enable();
 124   1              cd = 0;
 125   1              P2 = 0xff;
 126   1              rd = 0;
 127   1              temp = P2;
 128   1              rd = 1;
 129   1              return(temp);   /*若返回0,可能错误*/
 130   1      }
 131          
 132          /*自动写开始*/
 133          void auto_write(){
 134   1              write_cmd0(AUT_WR);
 135   1      }
 136          
 137          /*自动读开始*/
 138          void auto_read(){
 139   1              write_cmd0(AUT_RD);
 140   1      }
 141          
 142          /*自动写结束*/
 143          void atwr_stop(){
 144   1              write_cmd0(AUT_WO);
 145   1      }
 146          
 147          /*自动读结束*/
 148          void atrd_stop(){
 149   1              write_cmd0(AUT_RO);
 150   1      }
 151          
 152          /*数据一次写函数*/
 153          void write_one(uchar data1, char way){
 154   1              atwr_enable();
 155   1              auto_write();
 156   1              write_cmd1(data1,way);
 157   1              atwr_stop();
 158   1      }
 159          
 160          /*数据一次读函数*/
 161          uchar read_one(char way){
 162   1              uchar temp;
 163   1              atrd_enable();
 164   1              auto_read();
 165   1              write_cmd0(way);
 166   1              temp = read_data();
 167   1              atrd_stop();
 168   1              return(temp);
 169   1      }
 170          
 171          /*设置当前显示位置函数x,y从0开始表示单位为字符*/
 172          void set_xy(uchar x, uchar y){
 173   1              int temp;
 174   1              temp = y * LCD_CHAR + x;
 175   1              write_cmd2(temp&0xff,temp/0xff,ADR_POS);                        
 176   1      }
 177          
 178          void set_adr(uchar D1, uchar D2){
C51 COMPILER V8.02   LCDINIT                                                               03/14/2007 19:48:15 PAGE 4   

 179   1              write_cmd2(D1,D2,ADR_POS);
 180   1      }
 181          
 182          /*设置光标指针 x,y从0开始*/
 183          void set_cur(char x, char y){
 184   1              write_cmd2(x,y,CUR_POS);
 185   1      }
 186          
 187          /*CGRAM偏置地址设置函数*/
 188          void set_cgram(){
 189   1              write_cmd2(0x01,0x00,CGR_POS);//0000,1100,0000,0000 0C00
 190   1      }
 191          
 192          /*液晶初始化函数(文本区首地址D1,文本区首地址D2, 文本区宽度,  图形区首地址D1, 图形区首地址D2, 图形区宽度,  
             - 光标形状,  显示方式,  显示开关)*/
 193          void lcd_init(uchar txtstpd1, uchar txtstpd2, uchar txtwid, uchar grhstpd1, uchar grhstpd2, uchar grhwid, 
             -uchar cur, uchar mod, uchar sw){
 194   1              write_cmd2(txtstpd1,txtstpd2,TXT_STP);                                                          /*文本区首地址*/
 195   1              write_cmd2(txtwid,0x00,TXT_WID);                        /*文本区宽度*/
 196   1              write_cmd2(grhstpd1,grhstpd2,GRH_STP);          /*图形区首地址*/
 197   1              write_cmd2(grhwid,0x00,GRH_WID);                        /*图形区宽度*/
 198   1              write_cmd0(CUR_SHP | cur);                                      /*光标形状*/
 199   1              write_cmd0(mod);                                                        /*显示方式*/
 200   1              write_cmd0(DIS_SW | sw);                                        /*显示开关*/
 201   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    383    ----
   CONSTANT SIZE    =     20    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      11
   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 + -