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

📄 12864f.lst

📁 51单片机控制LCD(12864F)和DS18B20
💻 LST
字号:
C51 COMPILER V7.08   12864F                                                                04/27/2009 21:28:13 PAGE 1   


C51 COMPILER V7.08, COMPILATION OF MODULE 12864F
OBJECT MODULE PLACED IN 12864F.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 12864F.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <reg51.h>
   2          #include <intrins.h>
   3          #include <string.h>
   4          #include <DS18B20.h>  
   5          #define uchar unsigned char
   6          #define uint unsigned int
   7          
   8          //12864 汉字显示模块 与MCU连接
   9          
  10          sbit RS = P3^0;// 1:输入数据 ;0:输入命令
  11          sbit RW = P3^1;//1:读数据  0:写数据
  12          sbit E = P3^2;
  13          //sbit PSB = P1^1;  //串并口选择 1:并口模式; 0:串口模式;
  14          sbit ak = P1^0;
  15          sbit be = P3^7;
  16          sbit br = P1^7;
  17          sbit key= P3^3;
  18          
  19          #define  LcdData P0
  20          
  21          //延时子程序
  22          void delay(unsigned int t)
  23          {  unsigned int i,j;
  24   1         for(i=0;i<t;i++)
  25   1            for(j=0;j<10;j++);
  26   1               
  27   1      }
  28          //测试LCD忙
  29          bit Check_Busy()
  30          {
  31   1          bit busy;
  32   1          RS = 0;
  33   1          RW = 1;
  34   1          E = 1;
  35   1            _nop_(); 
  36   1          busy = (bit)(LcdData&0x80);
  37   1          E = 0;
  38   1          return busy;
  39   1      }
  40          //等待LCD到空闲
  41          void wait()
  42          {
  43   1          while(Check_Busy());
  44   1      }
  45          //写数据
  46          void Lcd_Writedata(unsigned char dispdata)
  47          {  wait();
  48   1      
  49   1         RS=1;
  50   1         RW=0;
  51   1         E=0;
  52   1         _nop_();  _nop_();
  53   1         LcdData=dispdata;
  54   1         E=1;
  55   1         _nop_(); _nop_();
C51 COMPILER V7.08   12864F                                                                04/27/2009 21:28:13 PAGE 2   

  56   1         E=0;
  57   1      }
  58          
  59          //写指令代码
  60          void Lcd_WriteCmd(unsigned char cmdcode)
  61          {  wait();
  62   1         RS=0;
  63   1         RW=0;
  64   1       
  65   1         E=0;
  66   1         _nop_();  _nop_();
  67   1         LcdData=cmdcode;
  68   1         _nop_(); _nop_();
  69   1         E=1;
  70   1         _nop_();  _nop_();
  71   1         E=0;
  72   1      }
  73          //初始化LCD
  74          void Lcd_Reset()
  75          { // PSB=1;
  76   1         Lcd_WriteCmd(0x30);       //选择基本指令集
  77   1         delay(5); 
  78   1         Lcd_WriteCmd(0x0e);       //开显示(无游标、不反白)
  79   1         delay(5);
  80   1         Lcd_WriteCmd(0x01);       //清除显示,并且设定地址指针为00H
  81   1         delay(5);
  82   1         Lcd_WriteCmd(0x06);       //指定在资料的读取及写入时,设定游标的移动方向及指定显示的移位
  83   1         
  84   1      }
  85          
  86          void WriteStr(unsigned char code *s)
  87          { 
  88   1          while(*s>0)
  89   1         {  Lcd_Writedata(*s);
  90   2            s++;     
  91   2         }
  92   1      }
  93          
  94          void hzDisp()
  95          { 
  96   1         Lcd_WriteCmd(0x80);
  97   1         WriteStr(" ");
  98   1         Lcd_WriteCmd(0x90);
  99   1         WriteStr("系统初始化。。。");
 100   1         delay(40000);
 101   1         Lcd_WriteCmd(0x90);
 102   1         WriteStr("                ");
 103   1         delay(5000);
 104   1         Lcd_WriteCmd(0x80);
 105   1         WriteStr("欢迎使用");    
 106   1         Lcd_WriteCmd(0x88);
 107   1         WriteStr("  智能家居系统");
 108   1        
 109   1      }
 110          
 111          
 112          
 113          void Main()
 114          {  
 115   1         unsigned int a,b,c,d,tem;
 116   1         Lcd_Reset(); //初始化LCD屏
 117   1         ak=0;
C51 COMPILER V7.08   12864F                                                                04/27/2009 21:28:13 PAGE 3   

 118   1         hzDisp();
 119   1         delay(40000);
 120   1         d=0;
 121   1            while(1)
 122   1         {              
 123   2                  tem=ReadTemperature();
 124   2                  a=tem/100+48;
 125   2                      b=tem%100/10+48;
 126   2                      c=tem%10+48;
 127   2                      Lcd_Reset(); //初始化LCD屏
 128   2                      delay(5);
 129   2                      Lcd_WriteCmd(0x80);       
 130   2                      WriteStr("当前室内温度:");
 131   2                      Lcd_WriteCmd(0x90);       
 132   2                      Lcd_Writedata(a);        
 133   2                      Lcd_Writedata(b);
 134   2                      Lcd_Writedata(0x2e);
 135   2                      Lcd_Writedata(c);
 136   2                      WriteStr("度");
 137   2                      Lcd_WriteCmd(0x88);       
 138   2                      WriteStr("当前室内照度:");
 139   2                      Lcd_WriteCmd(0x98);       
 140   2                      WriteStr("偏暗");
 141   2                      delay(20000);
 142   2         
 143   2              if(d++==10)
 144   2                       ak=1;
 145   2      
 146   2                  if (key==0)
 147   2                  { d=0;
 148   3                        ak=0;
 149   3                        be=0;
 150   3                        delay(5000);
 151   3                    be=1;}
 152   2         }  
 153   1       
 154   1      }
 155          
 156          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    661    ----
   CONSTANT SIZE    =     98    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      12
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       1
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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