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

📄 lcm2402_dev.lst

📁 基于单片机和液晶2402的数字钟     包含电路图及源码
💻 LST
字号:
C51 COMPILER V6.12  LCM2402_DEV                                                            04/05/2007 22:48:58 PAGE 1   


C51 COMPILER V6.12, COMPILATION OF MODULE LCM2402_DEV
OBJECT MODULE PLACED IN LCM2402_DEV.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE LCM2402_DEV.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          		 
   2          /********************************************************************************************
   3          * 程 序 名:LCM2402_DEV.c
   4          * 功    能:LCM2402液晶模块驱动(MBC24204)
   5          * 硬件条件:1.CPU型号:AT89S52
   6          *           2.晶振:12.000MHz
   7          *           3.LCM2402与AT89S52的连接如下:
   8          *
   9          *             LCM2402       AT89S52                   备      注
  10          *        ==================================================================
  11          *              RS            P1.0          0:传送命令;  1:传送数据
  12          *              RW            P1.2          0:进行写操作;1:进行读操作
  13          *              E             P1.1          读写脉冲
  14          *              DB0           P0.0          数据线0
  15          *              DB1           P0.1          数据线1
  16          *              DB2           P0.2          数据线2
  17          *              DB3           P0.3          数据线3
  18          *              DB4           P0.4          数据线4
  19          *              DB5           P0.5          数据线5
  20          *              DB6           P0.6          数据线6
  21          *              DB7           P0.7          数据线7
  22          *        ==================================================================
  23          *********************************************************************************************/
  24          
  25          
  26          
  27          
  28          /********************************************************************************************/
  29          #include <AT89X52.h>
  30          #include <string.h>                               // 包含头文件    
  31          /********************************************************************************************/
  32          typedef unsigned char      uint8;                // 无符号8位整型变量
  33          typedef signed   char      int8;                 // 有符号8位整型变量
  34          typedef unsigned short     uint16;               // 无符号16位整型变量
  35          typedef signed   short     int16;                // 有符号16位整型变量
  36          typedef unsigned int       uint32;               // 无符号32位整型变量
  37          typedef signed   int       int32;                // 有符号32位整型变量
  38          typedef float              fp32;                 // 单精度浮点数(32位长度)
  39          typedef double             fp64;                 // 双精度浮点数(64位长度)
  40          /********************************************************************************************/
  41          #define      LCM2402_DB0_DB7      P0             // 定义LCM2402的数据总线
  42          
  43          sbit LCM2402_RS   = P1 ^ 0;                      // 定义LCM2402的RS控制线
  44          sbit LCM2402_RW   = P1 ^ 2;                      // 定义LCM2402的RW控制线
  45          sbit LCM2402_E    = P1 ^ 1;                      // 定义LCM2402的E控制线
  46          sbit LCM2402_Busy = P0 ^ 7;                      // 定义LCM2402的测忙线
  47          
  48          uint8 code ARMSKY_51Easy[] = {" ARMSKY-51Easy  "};
  49          uint8 code Welcome[]={"Welcome to:     "};
  50          uint8 code website[] = {" www.armsky.net "};
  51          
  52          /********************************************************************************************/
  53          //定义LCM2402指令集//
  54          #define			CMD_clear		0x01             // 清除屏幕
  55          #define			CMD_back		0x02             // DDRAM回零位
C51 COMPILER V6.12  LCM2402_DEV                                                            04/05/2007 22:48:58 PAGE 2   

  56          #define			CMD_dec1		0x04             // 读入后AC(指针)减1,向左写
  57          #define			CMD_add1		0x06             // 读入后AC(指针)加1,向右写
  58          #define			CMD_dis_gb1		0x0f             // 开显示_开光标_开光标闪烁
  59          #define			CMD_dis_gb2		0x0e             // 开显示_开光标_关光标闪烁
  60          #define			CMD_dis_gb3		0x0c             // 开显示_关光标_关光标闪烁
  61          #define			CMD_OFF_dis		0x08             // 关显示_关光标_关光标闪烁
  62          #define			CMD_set82		0x38             // 8位总线_2行显示
  63          #define			CMD_set81		0x30             // 8位总线_1行显示(上边行)
  64          #define			CMD_set42		0x28             // 4位总线_2行显示
  65          #define			CMD_set41		0x20             // 4位总线_1行显示(上边行)
  66          #define			lin_1			0x80             // 上边行左行首位置
  67          #define			lin_2			0xc0             // 下边行左行首位置
  68          
  69          
  70          /********************************************************************************************[底层协议]
  71          * 函数名称:LCM2402_Delay()	
  72          * 功    能:LCM2402时序控制专用软件延时
  73          * 入口参数:count    延时参数,值越大,延时越长
  74          * 出口参数:无
  75          *********************************************************************************************/
  76          void LCM2402_Delay(uint16 count){
  77   1        uint8 i;                
  78   1        while(--count != 0)        
  79   1          {
  80   2           for(i = 0; i < 125; i++);                // ";" 表示空语句,CPU空转。
  81   2         }                                // i 从0加到125,在12M晶体下CPU大概耗时1毫秒
  82   1      }
  83          /********************************************************************************************[底层协议]
  84          * 函数名称:LCM2402_TestBusy()
  85          * 功    能:LCM2402测忙,若LCM2402处于忙状态,本函数将继续测忙,直到LCM2402处于非忙状态。
  86          * 入口参数:无
  87          * 出口参数:无
  88          *********************************************************************************************/
  89          void LCM2402_TestBusy(void){
  90   1        do{
  91   2         LCM2402_DB0_DB7 = 0xff;
  92   2         LCM2402_RS = 0;
  93   2         LCM2402_RW = 1;
  94   2         LCM2402_E = 0;
  95   2         LCM2402_Delay(2);
  96   2         LCM2402_E = 1;
  97   2       }
  98   1       while(LCM2402_Busy);
  99   1      }
 100          /********************************************************************************************[底层协议]
 101          * 函数名称:LCM2402_WriteCMD()
 102          * 功    能:向LCM2402写命令。
 103          * 入口参数:LCM2402_command     要写入LCM2402的命令字节
 104          * 出口参数:无
 105          *********************************************************************************************/
 106          void LCM2402_WriteCMD(uint8 LCM2402_command) { 
 107   1        LCM2402_DB0_DB7 = LCM2402_command;
 108   1        LCM2402_RS = 0;
 109   1        LCM2402_RW = 0;
 110   1        LCM2402_E = 0;
 111   1        LCM2402_TestBusy();
 112   1        LCM2402_E = 1;
 113   1      }
 114          /********************************************************************************************[底层协议]
 115          * 函数名称:LCM2402_WriteData()
 116          * 功    能:向LCM2402写数据。
 117          * 入口参数:LCM2402_data     要写入LCM2402的数据字节
C51 COMPILER V6.12  LCM2402_DEV                                                            04/05/2007 22:48:58 PAGE 3   

 118          * 出口参数:无
 119          *********************************************************************************************/
 120          void LCM2402_WriteData(uint8 LCM2402_data){ 
 121   1        LCM2402_DB0_DB7 = LCM2402_data;
 122   1        LCM2402_RS = 1;
 123   1        LCM2402_RW = 0;
 124   1        LCM2402_E = 0;
 125   1        LCM2402_TestBusy();
 126   1        LCM2402_E = 1;
 127   1      }
 128          /********************************************************************************************
 129          * 函数名称:LCM2402_Init()
 130          * 功    能:LCM2402初始化
 131          * 入口参数:无
 132          * 出口参数:无
 133          *********************************************************************************************/
 134          void LCM2402_Init(void){
 135   1        LCM2402_WriteCMD(CMD_set82);// 显示模式设置:显示2行,每个字符为5*7个像素
 136   1        LCM2402_WriteCMD(CMD_clear);// 显示清屏
 137   1        LCM2402_WriteCMD(CMD_add1);// 显示光标移动设置:文字不动,光标右移
 138   1        LCM2402_WriteCMD(CMD_dis_gb3); // 显示开及光标设置:显示开,光标开,闪烁开
 139   1      }
 140          
 141          
 142          /********************************************************************************************
 143          * 函数名称:print()
 144          * 功    能:向LCM发送一个字符串,长度48字符之内。//应用:print("doyoung.net");
 145          * 入口参数:字符串
 146          * 出口参数:无
 147          *********************************************************************************************/
 148          void print(uint8 *str){
 149   1      		while(*str != '\0'){
 150   2      			LCM2402_WriteData(*str++);
 151   2              }
 152   1      		*str = 0;
 153   1      }


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