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

📄 ad.lst

📁 校园打铃系统
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.06   AD                                                                    06/08/2007 19:10:53 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE AD
OBJECT MODULE PLACED IN .\ad.obj
COMPILER INVOKED BY: D:\常用软件\keil\C51\BIN\C51.EXE ..\新建文件夹\ad.c BROWSE DEBUG OBJECTEXTEND PRINT(.\ad.lst) OBJEC
                    -T(.\ad.obj)

stmt level    source

   1          
   2          
   3          /*说明:功能显示函数  *********************************************************
   4          ****** LCD_set_xy  ******** //显示光标定位  ***********************************
   5          ****** LCD_write_char ***** //在指定位置显示字符 ******************************
   6          ****** transfer_display *** //显示连续字串  ***********************************
   7          ****** LCD_Write_String *** //写入字符串   ************************************
   8          ****** FLOAT_NUM_Display ** //显示浮点型   ************************************
   9          ****** INT_NUM_Display **** //显示整数    *************************************
  10          ****** HEX_NUM_Display **** //显示十六进制   **********************************
  11          ******为了避免程序"死等",故在功能函数中尽量避免调用Delay函数******************/
  12          
  13          #include<reg51.h>
  14          #include<math.h>
  15          #include<intrins.h>
  16          /***************************LCD Part*******************************************/
  17          #define  uchar unsigned char
  18          
  19          #define  LCDIO     P0      //LCD数据口
  20          
  21          #define  LINE1     0        //1602第一行
  22          
  23          #define  LINE2     1        //1602第二行
  24          
  25          #define  LINE1_HEAD    0x80 //第一行首地址
  26          
  27          #define  LINE2_HEAD    0xC0 //第二行首地址
  28          
  29          
  30          /****************************LCD与单片机的接口*********************************/
  31          
  32          sbit LCD1602_RS=P1^4;   //指令/数据选择,1选择数据,0选择指令
  33          
  34          sbit LCD1602_RW=P1^5;   //读写选择,1读出,0写入
  35          
  36          sbit LCD1602_EN=P1^6;   //写使能。高有效,下降沿时锁定数据
  37          
  38          sbit LCD1602_busy=LCDIO^7; //判忙标志
  39          
  40          /********************数组定义区************************************************/
  41          
  42          uchar CHR[] = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f','.'};
  43          
  44          uchar LCDDisplaybuffer[32]={0};
  45          
  46          /******************全局变量定义区**********************************************/
  47          
  48          unsigned long frequency;  //显示整型定义
  49          
  50          float dd;                //显示浮点型定义]
  51          
  52          uchar zhi=0x30;          //数字0的代码值
  53          
  54          long int Num;
C51 COMPILER V7.06   AD                                                                    06/08/2007 19:10:53 PAGE 2   

  55          
  56          uchar Bite;
  57          
  58          /******************函数声明区**************************************************/
  59          
  60          void LCD_en_command(uchar command);   //写指令
  61          
  62          void LCD_en_dat(uchar temp);         //写数据
  63          
  64          void LCD_set_xy( uchar x, uchar y );//设置显示地址
  65          
  66          void LCD_write_char( uchar x,uchar y,uchar dat);//显示字符
  67          
  68          void LCD_write_string(uchar X,uchar Y,uchar *s);//显示字符串
  69          
  70          void transfer_display(uchar zhi,uchar x,uchar y);//显示滚动的字符
  71          
  72          void LCD_init(void);       //LCD初始化
  73          
  74          void  LCD_busy();           //判忙
  75          
  76          void FLOAT_NUM_Display(float dd,uchar x,uchar y);       //显示浮点型
  77          
  78          void INT_NUM_Display(unsigned int Num,uchar x,uchar y);//显示整型
  79          
  80          void HEX_NUM_Display(unsigned long  Num,uchar Bite,uchar x,uchar y);//显示十六进制
  81          
  82          void delay_nms(unsigned int n);//延时功能
  83          
  84          /*******************nms延时函数************************************************/
  85          
  86          
  87          void delay_nms(unsigned int n)
  88          {
  89   1          unsigned int i=0,j=0;
  90   1          for (i=n;i>0;i--)
  91   1             for (j=0;j<1140;j++)
  92   1                   {;};
  93   1      
  94   1      }
  95          
  96          
  97          
  98          /*******************************************************************************
  99          /***************LCD模块的子程序*************************************************
 100          ****************要注意判忙程序的写法和在指令数据函数里放的顺序,不可调换********/
 101          
 102          //判忙程序
 103          void LCD_busy()
 104          {
 105   1          LCDIO=0xff;    //置p0口为输入状态
 106   1          LCD1602_RS=0;
 107   1          LCD1602_RW=1;
 108   1          LCD1602_EN=1;
 109   1          while(LCD1602_busy);
 110   1          LCD1602_EN=0;
 111   1      }
 112          
 113          //写入指令代码,即数据的地址
 114          void LCD_en_command(uchar command)
 115          {
 116   1      
C51 COMPILER V7.06   AD                                                                    06/08/2007 19:10:53 PAGE 3   

 117   1          LCDIO=command;
 118   1          LCD1602_RS=0;
 119   1          LCD1602_RW=0;
 120   1          LCD1602_EN=0;
 121   1          LCD_busy();
 122   1          LCD1602_EN=1;
 123   1      }
 124          
 125          
 126          //写入要显示的数据
 127          void LCD_en_dat(uchar dat)
 128          {
 129   1          LCDIO=dat;
 130   1          LCD1602_RS=1;
 131   1          LCD1602_RW=0;
 132   1          LCD1602_EN=0;
 133   1          LCD_busy();
 134   1          LCD1602_EN=1;
 135   1      }
 136          
 137          /*********************************************************************************
 138          ** 函数名:void LCD_set_xy( uchar x, uchar y )************************************
 139          ** 功能:设置LCD显示的起始位置****************************************************
 140          ** 入口参数:uchar  x,uchar y (x:0-15;y:0-1;)************************************
 141          ********************LCD第一行显示寄存器地址:0X80-0X8F****************************
 142          ********************LCD第一行显示寄存器地址:0XC0-0XCF****************************
 143          ***********  uchar x,uchar y(字符显示的坐标)************************************
 144          ** 出口参数:无 ******************************************************************
 145          **********************************************************************************/
 146          
 147          
 148          void LCD_set_xy( uchar x, uchar y )
 149          {
 150   1      
 151   1          uchar address;//光标位置
 152   1          if (y==LINE1)
 153   1               address=LINE1_HEAD+x;
 154   1          else
 155   1               address=LINE2_HEAD+x;
 156   1      
 157   1          LCD_en_command(address);
 158   1      }
 159          
 160          
 161          
 162          /*********************************************************************************
 163          ** 函数名:void LCD_write_char( uchar x,uchar y,uchar dat)************************
 164          ** 功能:在指定位置显示单字符(最多32个字符)*************************************
 165          ** 入口参数:uchar  dat (直接输入需要显示的字符,例如'1','a'等等)***************
 166          ***********  uchar x,uchar y(字符显示的坐标)************************************
 167          ** 出口参数:无 ******************************************************************
 168          **********************************************************************************/
 169          
 170          void LCD_write_char( uchar x,uchar y,uchar dat)
 171          {
 172   1      
 173   1         LCD_set_xy( x, y );
 174   1         LCD_en_dat(dat);
 175   1      
 176   1      }
 177          
 178          
C51 COMPILER V7.06   AD                                                                    06/08/2007 19:10:53 PAGE 4   

 179          /*********************************************************************************
 180          **函数名:void transfer_display()**************************************************
 181          **功能:显示从定义的zhi的ASCALL码开始的连续的字符(最多显示32个字符)**************
 182          **入口参数:uchar zhi (输入要显示连续字串的首字符)*********************************
 183          **其中的i,j是x轴,LINE1,LINE2为y轴************************************************
 184          **出口参数:无*********************************************************************/
 185          
 186          
 187          void transfer_display(uchar zhi,uchar x,uchar y)
 188          {
 189   1      
 190   1          uchar i,j;
 191   1      
 192   1          for(i=x;i<16;i++)  //第一行显示
 193   1                 {
 194   2                   LCD_write_char(i,y,zhi++);
 195   2                 }
 196   1      
 197   1                 y^=1;
 198   1          for(j=0;j<16;j++)  //当第一行显示满后第二行显示
 199   1                 {
 200   2                   LCD_write_char(j,y,zhi++);
 201   2                 }
 202   1      
 203   1      }
 204          
 205          /*********************************************************************************
 206          ** 函数名:void LCD_write_string(uchar X,uchar Y,uchar *s)************************
 207          ** 功能:字符串显示的输入函数(最多32个字符)*************************************
 208          ** 入口参数:uchar  *s (直接输入需要显示的字符串,例如"welcome to use!")********
 209          ***********  uchar X,uchar Y(第一个字符开始显示的坐标)**************************
 210          ** 出口参数:无 ******************************************************************
 211          **********************************************************************************/
 212          void LCD_write_string(uchar X,uchar Y,uchar *s)
 213          {
 214   1      
 215   1          while (*s)  // 显示的字符
 216   1             {
 217   2      
 218   2                LCD_set_xy( X, Y ); //设置显示的地址

⌨️ 快捷键说明

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