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

📄 main.lst

📁 很实用的单片机例程
💻 LST
字号:
C51 COMPILER V8.06   MAIN                                                                  12/02/2011 19:25:48 PAGE 1   


C51 COMPILER V8.06, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /**********************HL-1实验开发板例程************************
   2          *  平台:HL-1 V6.2 + Keil U3 + STC89C52RD
   3          *  公司:慧净电子科技有限公司
   4          *  淘宝:http://shop37031453.taobao.com       
   5          *  网站:www.hlmcu.com
   6          *  编写:慧净
   7          *  日期:2008-8-08
   8          *   QQ : 121350852 398115088
   9          *  晶振:11.0592MHZ
  10          *  说明:免费开源,不提供源代码分析,有问题直接到慧净论坛交流
  11          *  论坛:http://hjdz.5d6d.com
  12          ******************************************************************/
  13          //实验目的:
  14          /*-----------------------------------------------
  15            名称:LCD1602
  16            内容:通过标准程序静态显示字符
  17            引脚定义如下:1-VSS 2-VDD 3-V0 4-RS 5-R/W 6-E 7-14 DB0-DB7 15-BLA 16-BLK
  18          ------------------------------------------------*/
  19          #include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
  20          #include<intrins.h>
  21          
  22          sbit RS = P1^0;   //定义端口 
  23          sbit RW = P1^1;
  24          sbit EN = P2^5;
  25          sbit DU = P2^0;
  26          sbit WE = P2^1;
  27          
  28          #define RS_CLR RS=0 
  29          #define RS_SET RS=1
  30          
  31          #define RW_CLR RW=0 
  32          #define RW_SET RW=1 
  33          
  34          #define EN_CLR EN=0
  35          #define EN_SET EN=1
  36          
  37          #define DataPort P0
  38          
  39          void cmg88()//关数码管,点阵函数
  40          {
  41   1      DU=1;  
  42   1      P0=0X00;
  43   1      DU=0;
  44   1      }
  45          /*------------------------------------------------
  46           uS延时函数,含有输入参数 unsigned char t,无返回值
  47           unsigned char 是定义无符号字符变量,其值的范围是
  48           0~255 这里使用晶振12M,精确延时请使用汇编,大致延时
  49           长度如下 T=tx2+5 uS 
  50          ------------------------------------------------*/
  51          void DelayUs2x(unsigned char t)
  52          {   
  53   1       while(--t);
  54   1      }
  55          /*------------------------------------------------
C51 COMPILER V8.06   MAIN                                                                  12/02/2011 19:25:48 PAGE 2   

  56           mS延时函数,含有输入参数 unsigned char t,无返回值
  57           unsigned char 是定义无符号字符变量,其值的范围是
  58           0~255 这里使用晶振12M,精确延时请使用汇编
  59          ------------------------------------------------*/
  60          void DelayMs(unsigned char t)
  61          {
  62   1           
  63   1       while(t--)
  64   1       {
  65   2           //大致延时1mS
  66   2           DelayUs2x(245);
  67   2               DelayUs2x(245);
  68   2       }
  69   1      }
  70          /*------------------------------------------------
  71                        判忙函数
  72          ------------------------------------------------*/
  73           bit LCD_Check_Busy(void) 
  74           { 
  75   1       DataPort= 0xFF; 
  76   1       RS_CLR; 
  77   1       RW_SET; 
  78   1       EN_CLR; 
  79   1       _nop_(); 
  80   1       EN_SET;
  81   1       return (bit)(DataPort & 0x80);
  82   1       }
  83          /*------------------------------------------------
  84                        写入命令函数
  85          ------------------------------------------------*/
  86           void LCD_Write_Com(unsigned char com) 
  87           {  
  88   1       while(LCD_Check_Busy()); //忙则等待
  89   1       RS_CLR; 
  90   1       RW_CLR; 
  91   1       EN_SET; 
  92   1       DataPort= com; 
  93   1       _nop_(); 
  94   1       EN_CLR;
  95   1       }
  96          /*------------------------------------------------
  97                        写入数据函数
  98          ------------------------------------------------*/
  99           void LCD_Write_Data(unsigned char Data) 
 100           { 
 101   1       while(LCD_Check_Busy()); //忙则等待
 102   1       RS_SET; 
 103   1       RW_CLR; 
 104   1       EN_SET; 
 105   1       DataPort= Data; 
 106   1       _nop_();
 107   1       EN_CLR;
 108   1       }
 109          
 110          /*------------------------------------------------
 111                          清屏函数
 112          ------------------------------------------------*/
 113           void LCD_Clear(void) 
 114           { 
 115   1       LCD_Write_Com(0x01); 
 116   1       DelayMs(5);
 117   1       }
C51 COMPILER V8.06   MAIN                                                                  12/02/2011 19:25:48 PAGE 3   

 118          /*------------------------------------------------
 119                        写入字符串函数
 120          ------------------------------------------------*/
 121           void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s) 
 122           {     
 123   1       if (y == 0) 
 124   1              {     
 125   2               LCD_Write_Com(0x80 + x);     //表示第一行
 126   2              }
 127   1       else 
 128   1              {      
 129   2              LCD_Write_Com(0xC0 + x);      //表示第二行
 130   2              }        
 131   1       while (*s) 
 132   1              {     
 133   2       LCD_Write_Data( *s);     
 134   2       s ++;     
 135   2              }
 136   1       }
 137          /*------------------------------------------------
 138                        写入字符函数
 139          ------------------------------------------------*/
 140           void LCD_Write_Char(unsigned char x,unsigned char y,unsigned char Data) 
 141           {     
 142   1       if (y == 0) 
 143   1              {     
 144   2              LCD_Write_Com(0x80 + x);     
 145   2              }    
 146   1       else 
 147   1              {     
 148   2              LCD_Write_Com(0xC0 + x);     
 149   2              }        
 150   1       LCD_Write_Data( Data);  
 151   1       }
 152          /*------------------------------------------------
 153                        初始化函数
 154          ------------------------------------------------*/
 155           void LCD_Init(void) 
 156           {
 157   1         LCD_Write_Com(0x38);    /*显示模式设置*/ 
 158   1         DelayMs(5); 
 159   1         LCD_Write_Com(0x38); 
 160   1         DelayMs(5); 
 161   1         LCD_Write_Com(0x38); 
 162   1         DelayMs(5); 
 163   1         LCD_Write_Com(0x38);  
 164   1         LCD_Write_Com(0x08);    /*显示关闭*/ 
 165   1         LCD_Write_Com(0x01);    /*显示清屏*/ 
 166   1         LCD_Write_Com(0x06);    /*显示光标移动设置*/ 
 167   1         DelayMs(5); 
 168   1         LCD_Write_Com(0x0C);    /*显示开及光标设置*/
 169   1         }
 170             
 171          /*------------------------------------------------
 172                              主函数
 173          ------------------------------------------------*/ 
 174          void main(void) 
 175          { 
 176   1      cmg88();//关数码管,点阵函数
 177   1      LCD_Init(); 
 178   1      LCD_Clear();//清屏
 179   1      while (1) 
C51 COMPILER V8.06   MAIN                                                                  12/02/2011 19:25:48 PAGE 4   

 180   1       {  
 181   2        LCD_Write_Char(7,0,'o');
 182   2        LCD_Write_Char(8,0,'k');
 183   2        LCD_Write_String(1,1,"www.hlmcu.com");
 184   2        while(1);
 185   2       }
 186   1      }
 187          


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