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

📄 lcd_1621.lst

📁 电子称重的程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
 178   1       lcd_writedata(18,lcd_buf[1],0);
 179   1       lcd_writedata(16,lcd_buf[1]>>4,0);
C51 COMPILER V8.02   LCD_1621                                                              05/04/2008 21:35:46 PAGE 4   

 180   1       return 1;
 181   1      }
 182          /**************************************************************************
 183          *      函数原型: BOOL lcd_writenum(char num[7])
 184          *      功    能: 在数字区写入数据
 185          *      入口:需写入的数字或字母的数组
 186          *      出口:返回是否写入成功
 187          **************************************************************************/
 188          unsigned char lcd_writenum(unsigned char *num)
 189          {
 190   1       uchar i=0,j=0;
 191   1       Uchar show_temp=0;
 192   1       for(i=0;i<6;i++)
 193   1       {
 194   2        show_temp=num[j];
 195   2        if(show_temp>='a') show_temp-=('a'-10);
 196   2        else if(show_temp>='A') show_temp-=('A'-10);
 197   2        else if(show_temp>='0') show_temp-='0';
 198   2        else if(show_temp=='-') show_temp=36;//'-'
 199   2        else if(show_temp>9)show_temp=0x25;//blank
 200   2        if(num[++j]=='.')
 201   2        {
 202   3        j++;
 203   3        show_temp|=0x80;
 204   3        }
 205   2        lcd_nbuf[i]=show_temp;
 206   2       }
 207   1        lcd_outnum(0);
 208   1       return j;
 209   1      }
 210          void lcd_outnum(unsigned char flashbit)
 211          {
 212   1        uchar i=0;
 213   1        Uchar show_temp=0;
 214   1        for(i=0;i<6;i++)
 215   1        {
 216   2        show_temp=lcd_num[0x7f&lcd_nbuf[i]];
 217   2        if(0x80&lcd_nbuf[i])show_temp|=0x80;
 218   2      //  if(((6-i)==flashbit)||flashbit>6)show_temp&=0x80;
 219   2        lcd_writedata(i*2,show_temp,1);
 220   2        }
 221   1      }
*** WARNING C280 IN LINE 210 OF LCD_1621.C: 'flashbit': unreferenced local variable
 222          
 223          /**************************************************************************
 224          *      函数原型: BOOL lcd_writechar(char wchar[3])
 225          *      功    能: 在字符写入数据
 226          *      入口:需写入的数字或字母的数组
 227          *      出口:返回是否写入成功
 228          **************************************************************************/
 229          BOOL lcd_writechar(char *wchar)
 230          {
 231   1        uchar i,j=0,k=0;
 232   1        Uchar show_temp=0;
 233   1        for(i=0;i<3;i++)
 234   1        {
 235   2          show_temp=wchar[j];
 236   2          if(show_temp>='a')
 237   2          show_temp-='a'-36;
 238   2          else  if(show_temp>='A')
 239   2          show_temp-='A'-10;
 240   2          else if(show_temp>='0') show_temp-='0';
C51 COMPILER V8.02   LCD_1621                                                              05/04/2008 21:35:46 PAGE 5   

 241   2          else   show_temp=63;
 242   2          k=i*4+12+(i>0?5:0);
 243   2          lcd_writedata(k,lcd_char[show_temp][0],1);
 244   2          show_temp=lcd_char[show_temp][1];
 245   2          if(wchar[++j]=='.')
 246   2          {
 247   3          j++;
 248   3          show_temp|=0x80;
 249   3          }
 250   2          lcd_writedata(k+2,show_temp,1);
 251   2        }
 252   1        return 1;
 253   1      }
 254          
 255          /**************************************************************************
 256          *      函数原型: void command(bit temp)
 257          *      功    能: 写命令或写数据
 258          **************************************************************************/
 259          void lcd_command(bit temp)
 260          {
 261   1       LCS=LOW;
 262   1       LDATA=HIGH;           //端口置高 1
 263   1       lcd_writerising();    //写入
 264   1       LDATA=LOW;            //         0
 265   1       lcd_writerising();
 266   1       LDATA=temp;           //         0/1  写命令或数据
 267   1       lcd_writerising();
 268   1      }
 269          
 270          /**************************************************************************
 271          *      函数原型:void lcd_datadriver(Uchar seg,Uchar form)
 272          *      功    能:写行地址及数据
 273          **************************************************************************/
 274          void lcd_writedata(Uchar seg,Uchar form,bit mode)
 275          {
 276   1        Uchar j;
 277   1        EA=0;
 278   1        lcd_command(HIGH);                                   //101XXXXXXX write
 279   1        for(j=0;j<6;j++)
 280   1           {
 281   2             LDATA=(bit)(seg&0x20);               //地址6位
 282   2             seg<<=1;
 283   2                 lcd_writerising();
 284   2                }
 285   1        for(j=0;j<(mode?0x8:0x4);j++)
 286   1            {
 287   2              LDATA=(bit)(form&0x01);              //数据
 288   2              form>>=1;
 289   2                      lcd_writerising();
 290   2             }
 291   1        LDATA=HIGH;
 292   1        LCS=HIGH;
 293   1        EA=1;
 294   1      }
 295          /**************************************************************************
 296          *      函数原型:void write_lcdcommand(Uchar commandcode);
 297          *      功    能:写一字节命令到LCD。
 298          **************************************************************************/
 299          void lcd_writecommand(Uchar commandcode)
 300          {
 301   1      Uchar i;
 302   1      EA=0;
C51 COMPILER V8.02   LCD_1621                                                              05/04/2008 21:35:46 PAGE 6   

 303   1       lcd_command(LOW);                    //100XXXXXXX 送命令
 304   1       for(i=0;i<8;i++)
 305   1       {
 306   2        LDATA=(bit)(commandcode&0x80);
 307   2        commandcode=commandcode<<1;
 308   2        lcd_writerising();
 309   2       }
 310   1       lcd_writerising();             //送无效数据位
 311   1       LDATA=HIGH;                    //第九位数据位
 312   1       LCS=HIGH;                      //CS置高
 313   1       EA=1;
 314   1      }
 315          /**************************************************************************
 316          *      函数原型: void lcd_writerising(void);
 317          *      功    能:产生写信号上升沿。
 318          **************************************************************************/
 319          /*void lcd_writerising(void)
 320          {
 321           LWR=LOW;
 322           LWR=HIGH;
 323          } */
 324          /**************************************************************************
 325          *      函数原型: void init_lcd(void);
 326          *      功    能:初始化LCD。
 327          **************************************************************************/
 328          void lcd_init(void)            //初始化送命令
 329          {
 330   1       Uint i=0;
 331   1       LCS=HIGH;
 332   1       LDATA=HIGH;
 333   1       LWR=HIGH;
 334   1       lcd_writecommand(0x01);
 335   1       lcd_writecommand(0x02);
 336   1       lcd_writecommand(0x18);
 337   1       lcd_writecommand(0x29);
 338   1       lcd_writecommand(0x60);
 339   1       lcd_writecommand(0xe3);
 340   1       lcd_writecommand(0x03);
 341   1      lcd_writecommand(0x08);
 342   1      lcd_clr();
 343   1      }
 344          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    868    ----
   CONSTANT SIZE    =    183    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      9      18
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       5
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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