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

📄 1602.lst

📁 一些51单片机基础模块的程序
💻 LST
字号:
C51 COMPILER V7.50   1602                                                                  04/10/2009 22:39:42 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE 1602
OBJECT MODULE PLACED IN 1602.obj
COMPILER INVOKED BY: E:\Program Files\Keil\C51\BIN\C51.EXE SRC\1602.c BROWSE DEBUG OBJECTEXTEND PRINT(.\1602.lst) OBJECT
                    -(1602.obj)

line level    source

   1          /********************************************************************
   2          * 文件名  : 液晶1602显示.c
   3          * 描述    :  该程序实现了对液晶1602的控制。
   4          * 创建人  : 东流,2009年4月10日
   5          * 版本号  : 2.0
   6          * 技术支持论坛:www.zidh.com/bbs(请进入“赞助商板块”中的“东流电子工作室”)
   7          * 感谢“中国自动化资讯网”对本工作室的大力支持。
   8          ***********************************************************************/
   9          #include<reg52.h>
  10          #define uchar unsigned char
  11          #define uint  unsigned int
  12          
  13          //这三个引脚参考资料
  14          sbit E=P2^7;            //1602使能引脚
  15          sbit RW=P2^6;           //1602读写引脚  
  16          sbit RS=P2^5;           //1602数据/命令选择引脚
  17          
  18          
  19          /********************************************************************
  20          * 名称 : delay()
  21          * 功能 : 延时,延时时间大概为140US。
  22          * 输入 : 无
  23          * 输出 : 无
  24          ***********************************************************************/
  25          
  26          void delay_22()
  27          {
  28   1              int i,j;
  29   1              for(i=0; i<=10; i++)
  30   1              for(j=0; j<=2; j++)
  31   1      ;
  32   1      }
  33          
  34          /********************************************************************
  35          * 名称 : Convert(uchar In_Date)
  36          * 功能 : 因为电路设计时,P0.0--P0.7接法刚好了资料中的相反,所以设计该函数。
  37          * 输入 : 1602资料上的值
  38          * 输出 : 送到1602的值
  39          ***********************************************************************/
  40          uchar Convert_22(uchar In_Date)
  41          {
  42   1          uchar i, Out_Date = 0, temp = 0;
  43   1          for(i=0; i<8; i++)
  44   1          {
  45   2              temp = (In_Date >> i) & 0x01;
  46   2              Out_Date |= (temp << (7 - i));
  47   2          }
  48   1          return Out_Date;
  49   1      }
  50          /********************************************************************
  51          * 名称 : enable(uchar del)
  52          * 功能 : 1602命令函数
  53          * 输入 : 输入的命令值
  54          * 输出 : 无
C51 COMPILER V7.50   1602                                                                  04/10/2009 22:39:42 PAGE 2   

  55          ***********************************************************************/
  56          
  57          void enable_22(uchar del)
  58          {
  59   1              P0 = Convert_22(del);
  60   1              RS = 0;
  61   1              RW = 0;
  62   1              E = 0;
  63   1              delay_22();
  64   1              E = 1;
  65   1              delay_22();
  66   1      }
  67          
  68          /********************************************************************
  69          * 名称 : write(uchar del)
  70          * 功能 : 1602写数据函数
  71          * 输入 : 需要写入1602的数据
  72          * 输出 : 无
  73          ***********************************************************************/
  74          
  75          void write_22(uchar del)
  76          {
  77   1              P0 = Convert_22(del);
  78   1              RS = 1;
  79   1              RW = 0;
  80   1              E = 0;
  81   1              delay_22();
  82   1              E = 1;
  83   1              delay_22();
  84   1      }
  85          
  86          /********************************************************************
  87          * 名称 : L1602_init()
  88          * 功能 : 1602初始化,请参考1602的资料
  89          * 输入 : 无
  90          * 输出 : 无
  91          ***********************************************************************/
  92          void L1602_init_22(void)
  93          {
  94   1              enable_22(0x01);
  95   1              enable_22(0x38);
  96   1              enable_22(0x0c);
  97   1              enable_22(0x06);
  98   1              enable_22(0xd0);
  99   1      }
 100          
 101          /********************************************************************
 102          * 名称 : L1602_char(uchar hang,uchar lie,char sign)
 103          * 功能 : 改变液晶中某位的值,如果要让第一行,第五个字符显示"b" ,调用该函数如下
 104                           L1602_char(1,5,'b')
 105          * 输入 : 行,列,需要输入1602的数据
 106          * 输出 : 无
 107          ***********************************************************************/
 108          void L1602_char_22(uchar hang,uchar lie,char sign)
 109          {
 110   1              uchar a;
 111   1              if(hang == 1) a = 0x80;
 112   1              if(hang == 2) a = 0xc0;
 113   1              a = a + lie - 1;
 114   1              enable_22(a);
 115   1              write_22(sign);
 116   1      }
C51 COMPILER V7.50   1602                                                                  04/10/2009 22:39:42 PAGE 3   

 117          
 118          /********************************************************************
 119          * 名称 : L1602_string(uchar hang,uchar lie,uchar *p)
 120          * 功能 : 改变液晶中某位的值,如果要让第一行,第五个字符开始显示"ab cd ef" ,调用该函数如下
 121                           L1602_string(1,5,"ab cd ef;")
 122          * 输入 : 行,列,需要输入1602的数据
 123          * 输出 : 无
 124          ***********************************************************************/
 125          void L1602_string_22(uchar hang,uchar lie,uchar *p)
 126          {
 127   1              uchar a;
 128   1              if(hang == 1) a = 0x80;
 129   1              if(hang == 2) a = 0xc0;
 130   1              a = a + lie - 1;
 131   1              enable_22(a);
 132   1              while(1)
 133   1              {
 134   2                      if(*p == '\0') break;
 135   2                      write_22(*p);
 136   2                      p++;
 137   2              }
 138   1      }
 139          
 140          /********************************************************************
 141          * 名称 : Main()
 142          * 功能 : 主函数
 143          * 输入 : 无
 144          * 输出 : 无
 145          ***********************************************************************/
 146          void Test_1602(void)
 147          {
 148   1              uint i;
 149   1              L1602_init_22();
 150   1              L1602_string_22(1,1," Welcome To The ");
 151   1              L1602_string_22(2,1,"   MCU World ");
 152   1              P2 = 0x00;
 153   1              P0 = 0xff;
 154   1              for(i=0; i<8000; i++) delay_22();
 155   1              L1602_init_22();
 156   1              L1602_string_22(1,1,"Now,Testing..... ");
 157   1              L1602_string_22(2,1,"              ");
 158   1              P2 = 0x00;      
 159   1      }
 160          
 161          void Test_1602_end(void)
 162          {
 163   1              P2 = 0x00;
 164   1              delay_22();
 165   1              L1602_init_22();
 166   1              L1602_string_22(1,1,"The Test Is Over");
 167   1              L1602_string_22(2,1,"  QQ : 85536436  ");
 168   1              P2 = 0x00;
 169   1              P0 = 0xff;
 170   1              while(1);       
 171   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    334    ----
   CONSTANT SIZE    =     99    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
C51 COMPILER V7.50   1602                                                                  04/10/2009 22:39:42 PAGE 4   

   DATA SIZE        =   ----       4
   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 + -