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

📄 4×4-key.lst

📁 单片机中LED显示/数码管显示/键盘控制/蜂鸣器输出/中断应用/定时器和计数器/串口通信/键控看门狗/数据交换
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.05a   4×4_KEY                                                             11/23/2006 15:04:53 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE 4×4_KEY
OBJECT MODULE PLACED IN 4×4-KEY.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 4×4-KEY.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*******************************************************************/
   2          /*                                                                 */
   3          /* ME500单片机开发系统演示程序 - 矩阵键盘键值读取器                */
   4          /*                                                                 */
   5          /* TS12864A-3(带汉字库)显示                                      */
   6          /* MCU:AT89S52 ,晶体频率:11.0592MHz                               */
   7          /*                                                                 */
   8          /* 版本: V1.0 (2006/11/20)                                        */
   9          /* 作者: gguoqing (Email: gguoqing@willar.com)                    */
  10          /* 网站: www.willar.com(伟纳电子)   www.mcusj.com(伟纳单片机世界) */
  11          /* 时间: 2006/11/22                                               */
  12          /*                                                                 */                                     
             -                             
  13          /*【版权】Copyright(C)伟纳电子 www.willar.com  All Rights Reserved */
  14          /*【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!       */
  15          /*                                                                 */
  16          /*******************************************************************/
  17          
  18          #include <reg51.h>
  19          #include <intrins.h>
  20                  
  21          #define uchar unsigned char
  22          #define uint  unsigned int
  23          /*TS12864A-3 端口定义*/
  24          #define LCD_data  P0             //数据口
  25          
  26          sbit LCD_RS  =  P2^0;            //寄存器选择输入 
  27          sbit LCD_RW  =  P2^1;            //液晶读/写控制
  28          sbit LCD_EN  =  P2^2;            //液晶使能控制
  29          sbit LCD_PSB =  P2^3;            //串/并方式控制
  30          sbit LCD_RST =  P2^5;            //液晶复位端口
  31          
  32          sbit  BEEP  = P3^7;                             //蜂鸣器
  33          
  34          uchar code dis1[] = {"-----ME500------"};
  35          uchar code dis2[] = {"矩阵键盘值读取器"};
  36          uchar code dis3[] = {"键值编码:- H   "};
  37          uchar code dis4[] = {" www.willar.com "};
  38          
  39          #define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};
  40          
  41          uchar  dis_buf;            //显示缓存
  42          uchar  temp;
  43          uchar  key;                //键顺序吗
  44          
  45          /*********************************************************/
  46          /*                                                                                                               */
  47          /* 延时x*0.14ms子程序                                                                    */
  48          /*                                                       */
  49          /*********************************************************/
  50          
  51          void delay0(uchar x)    //x*0.14MS
  52          {
  53   1         uchar i;
  54   1         while(x--)
C51 COMPILER V8.05a   4×4_KEY                                                             11/23/2006 15:04:53 PAGE 2   

  55   1         {
  56   2           for (i = 0; i<13; i++) {}
  57   2         }
  58   1      }
  59          
  60          /*********************************************************/
  61          /*                                                                                                               */
  62          /* 蜂鸣器响一声子程序                                                                    */
  63          /*                                                       */
  64          /*********************************************************/
  65          void beep()
  66          {
  67   1        uchar i;
  68   1        for (i=0;i<180;i++)
  69   1         {
  70   2           delay0(5);
  71   2           BEEP=!BEEP;                 //BEEP取反
  72   2         } 
  73   1        BEEP=1;                      //关闭蜂鸣器
  74   1      }
  75          
  76          /*******************************************************************/
  77          /*                                                                 */
  78          /*  延时函数                                                       */
  79          /*                                                                 */
  80          /*******************************************************************/
  81          void delay(int ms)
  82          {
  83   1          while(ms--)
  84   1              {
  85   2            uchar i;
  86   2                for(i=0;i<250;i++)  
  87   2                 {
  88   3                  _nop_();                       
  89   3                      _nop_();
  90   3                      _nop_();
  91   3                      _nop_();
  92   3                 }
  93   2              }
  94   1      }               
  95          /*******************************************************************/
  96          /*                                                                 */
  97          /*检查LCD忙状态                                                    */
  98          /*lcd_busy为1时,忙,等待。lcd-busy为0时,闲,可写指令与数据。      */
  99          /*                                                                 */
 100          /*******************************************************************/
 101          bit lcd_busy()
 102           {                          
 103   1          bit result;
 104   1          LCD_RS = 0;
 105   1          LCD_RW = 1;
 106   1          LCD_EN = 1;
 107   1          delayNOP();
 108   1          result = (bit)(P0&0x80);
 109   1          LCD_EN = 0;
 110   1          return(result); 
 111   1       }
 112          /*******************************************************************/
 113          /*                                                                 */
 114          /*写指令数据到LCD                                                  */
 115          /*RS=L,RW=L,E=高脉冲,D0-D7=指令码。                             */
 116          /*                                                                 */
C51 COMPILER V8.05a   4×4_KEY                                                             11/23/2006 15:04:53 PAGE 3   

 117          /*******************************************************************/
 118          void lcd_wcmd(uchar cmd)
 119          {                          
 120   1         while(lcd_busy());
 121   1          LCD_RS = 0;
 122   1          LCD_RW = 0;
 123   1          LCD_EN = 0;
 124   1          _nop_();
 125   1          _nop_(); 
 126   1          P0 = cmd;
 127   1          delayNOP();
 128   1          LCD_EN = 1;
 129   1          delayNOP();
 130   1          LCD_EN = 0;  
 131   1      }
 132          /*******************************************************************/
 133          /*                                                                 */
 134          /*写显示数据到LCD                                                  */
 135          /*RS=H,RW=L,E=高脉冲,D0-D7=数据。                               */
 136          /*                                                                 */
 137          /*******************************************************************/
 138          void lcd_wdat(uchar dat)
 139          {                          
 140   1         while(lcd_busy());
 141   1          LCD_RS = 1;
 142   1          LCD_RW = 0;
 143   1          LCD_EN = 0;
 144   1          P0 = dat;
 145   1          delayNOP();
 146   1          LCD_EN = 1;
 147   1          delayNOP();
 148   1          LCD_EN = 0; 
 149   1      }
 150          /*******************************************************************/
 151          /*                                                                 */
 152          /*  LCD初始化设定                                                  */

⌨️ 快捷键说明

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