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

📄 bo hao.lst

📁 用89S52作的远程序电话拨号系统
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.02   BO_HAO                                                                12/11/2006 11:06:57 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE BO_HAO
OBJECT MODULE PLACED IN bo hao.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE bo hao.C BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*******************************************************************/
   2          /*                                                                 */
   3          /* ME500B片机开发系统演示程序 - 电话拨号器                         */
   4          /*                                                                 */
   5          /* LCD1602显示                                                     */
   6          /*                                                                 */
   7          /* 版本: V1.0 (2006/11/20)                                        */
   8          /* 作者: gguoqing (Email: gguoqing@willar.com)                    */
   9          /* 网站: www.willar.com(伟纳电子)   www.mcusj.com(伟纳单片机世界) */
  10          /* 时间: 2006/12/10                                               */
  11          /*                                                                 */
  12          /*【版权】Copyright(C)伟纳电子 www.willar.com  All Rights Reserved */
  13          /*【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!       */
  14          /*                                                                 */
  15          /*******************************************************************/
  16          
  17          #include <reg51.h>
  18          #include <intrins.h>
  19                                  
  20          #define uchar unsigned char
  21          #define uint  unsigned int
  22          
  23          sbit BEEP = P3^7;          //蜂鸣器驱动线
  24          uchar  dis_buf=0x00;       //显示缓存     
  25          uchar  dis_buf1[ ] = {0x00,0x00,0x00,0x00,0x00,0x00,
  26                                0x00,0x00,0x00,0x00,0x00,0x00};   
  27                                     //电话号码存储单元
  28          uchar  temp,m;
  29          uchar  key,keynum;        //键顺序吗
  30          
  31          sbit LCD_RS = P2^0;             
  32          sbit LCD_RW = P2^1;
  33          sbit LCD_EN = P2^2;
  34          
  35          sbit MT_RS  = P2^3;
  36          sbit MT_RW  = P2^4;
  37          sbit MT_CS  = P2^5;
  38          sbit MT_CK  = P2^6;
  39          sbit TEL    = P2^7;      //电话摘挂机控制线 
  40          
  41          uchar code  cdis1[ ] = {"TELEPHONE DIALER"};
  42          uchar code  cdis2[ ] = {"TEL:            "};
  43          
  44          #define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};
  45          
  46          
  47          /*************************************************************
  48          *                                                            *
  49          * 延时子程序                                                 *
  50          * 晶振 11.0592MHz  延时为1ms                                 *
  51          *                                                            *
  52          *************************************************************/
  53          void  delay(uint x)
  54          { uchar j;
  55   1          while((x--)!=0)
C51 COMPILER V8.02   BO_HAO                                                                12/11/2006 11:06:57 PAGE 2   

  56   1          { 
  57   2                for(j=0;j<115;j++)
  58   2               {;}
  59   2          }
  60   1      }
  61          
  62          /*************************************************************
  63          *                                                            *
  64          *检查LCD忙状态                                               *
  65          *lcd_busy为1时,忙,等待。lcd-busy为0时,闲,可写指令与数据   *
  66          *                                                            *
  67          *************************************************************/ 
  68          bit lcd_busy()
  69           {                          
  70   1          bit result;
  71   1          LCD_RS = 0;
  72   1          LCD_RW = 1;
  73   1          LCD_EN = 1;
  74   1          delayNOP();
  75   1          result = (bit)(P0&0x80);
  76   1          LCD_EN = 0;
  77   1          return(result); 
  78   1       }
  79          
  80          /*************************************************************
  81          *                                                            *
  82          *写指令数据到LCD                                             *
  83          *RS=L,RW=L,E=高脉冲,D0-D7=指令码。                        *
  84          *                                                            *
  85          *************************************************************/
  86          void lcd_wcmd(uchar cmd)
  87          
  88          {                          
  89   1         while(lcd_busy());
  90   1          LCD_RS = 0;
  91   1          LCD_RW = 0;
  92   1          LCD_EN = 0;
  93   1          _nop_();
  94   1          _nop_(); 
  95   1          P0 = cmd;
  96   1          delayNOP();
  97   1          LCD_EN = 1;
  98   1          delayNOP();
  99   1          LCD_EN = 0;  
 100   1      }
 101          
 102          /************************************************************
 103          *                                                           *
 104          *写显示数据到LCD                                            *
 105          *RS=H,RW=L,E=高脉冲,D0-D7=数据。                         *
 106          *                                                           *
 107          ************************************************************/
 108          void lcd_wdat(uchar dat)
 109          {                          
 110   1         while(lcd_busy());
 111   1          LCD_RS = 1;
 112   1          LCD_RW = 0;
 113   1          LCD_EN = 0;
 114   1          P0 = dat;
 115   1          delayNOP();
 116   1          LCD_EN = 1;
 117   1          delayNOP();
C51 COMPILER V8.02   BO_HAO                                                                12/11/2006 11:06:57 PAGE 3   

 118   1          LCD_EN = 0; 
 119   1      }
 120          
 121          /************************************************************
 122          *                                                           *
 123          *  LCD初始化设定                                            *
 124          *                                                           *
 125          ************************************************************/
 126          void lcd_init()
 127          { 
 128   1          delay(15);                   
 129   1          lcd_wcmd(0x38);      //16*2显示,5*7点阵,8位数据
 130   1          delay(5);
 131   1          lcd_wcmd(0x38);         
 132   1          delay(5);
 133   1          lcd_wcmd(0x38);         
 134   1          delay(5);
 135   1      
 136   1          lcd_wcmd(0x0c);      //显示开,关光标
 137   1          delay(5);
 138   1          lcd_wcmd(0x06);      //移动光标
 139   1          delay(5);
 140   1          lcd_wcmd(0x01);      //清除LCD的显示内容
 141   1          delay(5);
 142   1      }
 143          
 144          /************************************************************
 145          *                                                           *
 146          *  设定显示位置                                             *
 147          *                                                           *
 148          ************************************************************/
 149          
 150          void lcd_pos(uchar pos)
 151          {                          
 152   1        lcd_wcmd(pos | 0x80);  //数据指针=80+地址变量
 153   1      }
 154          
 155          /************************************************************
 156          *                                                           *
 157          * 矩阵键盘扫描函数                                          *
 158          * 键值保存在key                                             *
 159          *                                                           *
 160          ************************************************************/
 161          uchar  keyscan(void)
 162           { 
 163   1          P1=0x0F;                 //低四位输入  
 164   1          delay(1);
 165   1              temp=P1;                 //读P1口 
 166   1          temp=temp&0x0F;
 167   1          temp=~(temp|0xF0);
 168   1          if(temp==1)
 169   1              key=0;
 170   1          else if(temp==2)
 171   1              key=1;
 172   1          else if(temp==4)
 173   1              key=2;
 174   1          else if(temp==8)
 175   1              key=3;
 176   1          else
 177   1              key=16;
 178   1              
 179   1          P1=0xF0;                //高四位输入
C51 COMPILER V8.02   BO_HAO                                                                12/11/2006 11:06:57 PAGE 4   

 180   1          delay(1);
 181   1              temp=P1;                //读P1口       
 182   1          temp=temp&0xF0;
 183   1          temp=~((temp>>4)|0xF0);
 184   1          if(temp==1)
 185   1              key=key+0;
 186   1          else if(temp==2)
 187   1              key=key+4;
 188   1          else if(temp==4)
 189   1              key=key+8;
 190   1          else if(temp==8)
 191   1              key=key+12;
 192   1          else
 193   1              key=16;
 194   1      
 195   1          return(key);
 196   1      }
 197          
 198          /************************************************************
 199          *                                                           *
 200          * 延时 x*0.14ms                                             *
 201          *                                                           *
 202          ************************************************************/
 203          void delay0(uchar x)    
 204          {
 205   1       unsigned char i;
 206   1        while(x--)
 207   1       {
 208   2        for (i = 0; i<13; i++) {}

⌨️ 快捷键说明

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