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

📄 lcd.lst

📁 单片机温度控制系统源代码
💻 LST
字号:
C51 COMPILER V8.08   LCD                                                                   03/18/2009 21:47:28 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE LCD
OBJECT MODULE PLACED IN lcd.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE lcd.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <reg52.h>
   2          #include <intrins.h>
   3          #include <lcd.h>
   4          sbit RSPIN = P1^0;         //数据/命令选择端
   5          sbit RWPIN = P1^1;         //读写控制信号
   6          //sbit EPIN = P1^2;        //使能信号
   7          
   8          unsigned char XPOS,YPOS;
   9          unsigned char chbuff;
  10          
  11          void delay1(unsigned int t)       //延时
  12          {  unsigned int i,j;
  13   1         for(i=0;i<t;i++)
  14   1            for(j=0;j<10;j++)
  15   1               ;
  16   1      }
  17          
  18          void lcdwaitidle(void)      //读写检测.对控制器每次进行读写操作之前,都必须进行,
  19          {  P0=0xff;
  20   1         RSPIN=0;
  21   1         RWPIN=1;
  22   1         EPIN=1;
  23   1         //while((P0&0x80)==0x80);     //确保STA7 为0
  24   1         while((P0&0x01)==0x01);       //确保STA7 为0
  25   1         EPIN=0;
  26   1      }
  27          
  28          void lcdwcn(unsigned char c)     //不判忙直接写指令
  29          {  RSPIN=0;
  30   1         RWPIN=0;
  31   1         chbuff=0;
  32   1         if (c&0x01) chbuff=chbuff|0x80;
  33   1         if (c&0x02) chbuff=chbuff|0x40;
  34   1         if (c&0x04) chbuff=chbuff|0x20;
  35   1         if (c&0x08) chbuff=chbuff|0x10;
  36   1         if (c&0x10) chbuff=chbuff|0x08;
  37   1         if (c&0x20) chbuff=chbuff|0x04;
  38   1         if (c&0x40) chbuff=chbuff|0x02;
  39   1         if (c&0x80) chbuff=chbuff|0x01;
  40   1         P0=chbuff;
  41   1         EPIN=1;
  42   1         _nop_();
  43   1         EPIN=0;
  44   1      }
  45          
  46          void lcdwc(unsigned char c)             //判忙后写指令  
  47          {  lcdwaitidle();
  48   1         lcdwcn(c);
  49   1      }
  50          
  51          void lcdwd(unsigned char d)              //写数据       
  52          {  lcdwaitidle();
  53   1         RSPIN=1;
  54   1         RWPIN=0;
  55   1         chbuff=0;
C51 COMPILER V8.08   LCD                                                                   03/18/2009 21:47:28 PAGE 2   

  56   1         if (d&0x01) chbuff=chbuff|0x80;
  57   1         if (d&0x02) chbuff=chbuff|0x40;
  58   1         if (d&0x04) chbuff=chbuff|0x20;
  59   1         if (d&0x08) chbuff=chbuff|0x10;
  60   1         if (d&0x10) chbuff=chbuff|0x08;
  61   1         if (d&0x20) chbuff=chbuff|0x04;
  62   1         if (d&0x40) chbuff=chbuff|0x02;
  63   1         if (d&0x80) chbuff=chbuff|0x01;
  64   1         P0=chbuff;
  65   1         EPIN=1;
  66   1         _nop_();
  67   1         EPIN=0;
  68   1      }
  69          
  70          void lcdpos(void)                  //确定当前光标位置
  71          {  XPOS&=0x0f;
  72   1         YPOS&=0x03;
  73   1         if(YPOS==0x00)
  74   1            lcdwc(XPOS|0x80);
  75   1         else if(YPOS==0x01)
  76   1            lcdwc((XPOS+0x40)|0x80);
  77   1      }
  78          
  79          void lcdreset()                                  //LCM初始化
  80          {  EPIN=0;
  81   1         delay1(150); lcdwcn(0x38);    //写指令38H
  82   1         delay1(50); lcdwcn(0x38);     //写指令38H
  83   1         delay1(50); lcdwcn(0x38);     //写指令38H
  84   1         lcdwc(0x38);                                  //显示模式设置,设置16X2 显示,5X7 点阵,8 位数据接口
  85   1         lcdwc(0x08);         //显示关闭                  
  86   1         lcdwc(0x01);         //显示清屏
  87   1         lcdwc(0x06);     //显示光标移动设置
  88   1         lcdwc(0x0c);     //显示开及光标设置
  89   1      }
  90          
  91          void lcdfill(unsigned char n)           //向1602写一满屏字符
  92          {
  93   1         for(YPOS=0;YPOS<2;YPOS++)
  94   1            for(XPOS=0;XPOS<16;XPOS++)
  95   1            {  lcdpos();
  96   2               lcdwd(n);  }
  97   1      }
  98          
  99          void lcdchar(unsigned char x,unsigned char y,unsigned char ch)    //在1602指定位置写一个字符
 100          {
 101   1              XPOS=x;  YPOS=y;
 102   1              lcdpos();
 103   1              lcdwd(ch);
 104   1      }
 105          
 106          void lcdwda(unsigned char x,unsigned char y,unsigned char *s) //在1602指定位置写一行字符串
 107          {  YPOS=y;
 108   1         for(XPOS=x;XPOS<16;XPOS++)
 109   1         {  lcdpos();
 110   2                if (*s=='\0') return;
 111   2            lcdwd(*s);
 112   2            s++;
 113   2            //delay1(5000);//(400);
 114   2         }
 115   1      }
 116          
 117          
C51 COMPILER V8.08   LCD                                                                   03/18/2009 21:47:28 PAGE 3   

 118          
 119          
 120          
 121          
 122          
 123          
 124          
 125          
 126          
 127          
 128          
 129          
 130          
 131          
 132          
 133          
 134          
 135          


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