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

📄 testlcd.lst

📁 单片机学习例程(液晶显示) 适合初学者使用
💻 LST
字号:
C51 COMPILER V7.20   TESTLCD                                                               09/29/2006 20:06:10 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE TESTLCD
OBJECT MODULE PLACED IN testlcd.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE testlcd.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include "reg52.h"
   2          #include <intrins.h>
   3          
   4          #define uchar unsigned char
   5          
   6          typedef bit BOOL  ; 
   7          
   8          sbit rs         = P2^6 ; 
   9          sbit rw         = P3^6 ;
  10          sbit ep         = P2^7 ;
  11          
  12          
  13          void delay(uchar) ;
  14          void lcd_wcmd(uchar) ;
  15          BOOL lcd_bz() ;
  16          void lcd_pos(uchar) ;
  17          void lcd_wdat(uchar) ;
  18          void display(uchar,uchar *) ;
  19          
  20          code uchar  dis1[] = {"  www.52eda.com  "} ;
  21          code uchar  dis2[] = {"WELCOME TO 52EDA"} ;
  22          
  23          
  24          
  25          void longdelay(uchar s)  //长延时
  26          {
  27   1               while(s--)
  28   1               {
  29   2                      delay(60) ;
  30   2               }
  31   1      }
  32          
  33          void delay(uchar ms)
  34          {       // 延时子程序
  35   1               uchar i ;
  36   1               while(ms--)
  37   1               {
  38   2                      for(i = 0 ; i<250;i++) ;
  39   2               }
  40   1      }
  41          
  42          BOOL lcd_bz()
  43          {       // 测试LCD忙碌状态
  44   1               BOOL result ;
  45   1               rs = 0 ;
  46   1               rw = 1 ;
  47   1               ep = 1 ;
  48   1               result = (BOOL)(P0 & 0x80) ;
  49   1               ep = 0 ;
  50   1               return result ; 
  51   1      }
  52          
  53          void lcd_wcmd(uchar cmd)
  54          {       // 写入指令数据到LCD
  55   1              while(lcd_bz()) ;
C51 COMPILER V7.20   TESTLCD                                                               09/29/2006 20:06:10 PAGE 2   

  56   1              rs = 0 ;
  57   1              rw = 0 ;
  58   1              ep = 0 ;
  59   1              P0 = cmd ;
  60   1              ep = 1 ;
  61   1              ep = 0 ;  
  62   1      }
  63          
  64          void lcd_pos(uchar pos)
  65          {       //设定显示位置
  66   1              lcd_wcmd(pos | 0x80) ;
  67   1      }
  68          
  69          void lcd_wdat(uchar dat) 
  70          {       //写入字符显示数据到LCD
  71   1              while(lcd_bz()) ;
  72   1              rs = 1 ;
  73   1              rw = 0 ;
  74   1              ep = 0 ;
  75   1              P0 = dat ;
  76   1              ep = 1 ;
  77   1              ep = 0 ; 
  78   1      }
  79          
  80          void lcd_init()
  81          {       //LCD初始化设定
  82   1               lcd_wcmd(0x38) ;   //function set
  83   1               delay(1) ;
  84   1               lcd_wcmd(0x38) ;   //function set
  85   1               delay(1) ;
  86   1               lcd_wcmd(0x08) ;   //display on/off
  87   1               delay(1) ;
  88   1               lcd_wcmd(0x01) ;   //清除LCD的显示内容
  89   1               delay(1) ;
  90   1               lcd_wcmd(0x06) ;   //entry mode set
  91   1               delay(1) ;
  92   1               lcd_wcmd(0x0c) ;   //entry mode set
  93   1               delay(1) ;
  94   1      }
  95          
  96          /*---------------
  97          函数名称:display()
  98          功能 :在LCD上显示数组的数据
  99          说明 :先写显示地址,后写显示数据
 100          调用 :lcd_wcmd(), lcd_pos()
 101          入口参数:pos 写入的位置,q指向要写入的数据所在的数组
 102          返回值 :无
 103          ----------------*/
 104          void display(uchar pos, uchar *q)
 105          { 
 106   1               uchar i ;
 107   1               //lcd_wcmd(0x01) ; //clear 
 108   1               delay(10) ;
 109   1               lcd_pos(pos) ;
 110   1               for(i=0 ;i<16;i++)
 111   1               {
 112   2                        lcd_wdat(*q) ;
 113   2                        q++ ;
 114   2                        longdelay(2) ;
 115   2               } 
 116   1      }
 117          
C51 COMPILER V7.20   TESTLCD                                                               09/29/2006 20:06:10 PAGE 3   

 118          main()
 119          {
 120   1               lcd_init() ;    // 初始化LCD   
 121   1               delay(10) ;
 122   1               display(0x00,dis1) ;
 123   1               display(0x40,dis2) ;
 124   1               display(0x14,dis1) ;
 125   1               display(0x54,dis2) ;
 126   1               lcd_wcmd(0x07) ;   //entry mode set
 127   1               delay(1) ;
 128   1               while(1)
 129   1               { 
 130   2                        display(0x00,dis1) ;
 131   2                        /*
 132   2                        display(0x40,dis2) ;
 133   2                        display(0x14,dis1) ;
 134   2                        display(0x54,dis2) ;
 135   2                        */
 136   2               }
 137   1      }


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