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

📄 text2.lst

📁 个人单片机入门程序集合 。很适合刚学单片机的人。用的是keil proteus
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.20   TEXT2                                                                 07/21/2007 13:47:15 PAGE 1   


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

line level    source

   1          #include<reg51.h>
   2          #include<intrins.h>
   3          #define uint unsigned int
   4          #define uchar unsigned char
   5          //数据口定义
   6          #define lcd1602_bus P3           
   7          
   8          //引脚定义
   9          sbit rs_1602=P2^5;           
  10          sbit rw_1602=P2^6;
  11          sbit e_1602=P2^7;
  12          
  13          sbit DQ =P1^0; 
  14          
  15          
  16          
  17          
  18          //ASCII码表
  19          /**********0---9**************/
  20          unsigned  int  code table[10]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};
  21          /**********a---z**************/
  22          unsigned  int code table1[26]={0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x6b,0x6c,0x6d,
  23                                         0x6e,0x6f,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a};
  24          /***********A---Z*************/
  25          unsigned  int code table2[26]={0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x4b,0x4c,0x4d,
  26                                         0x4e,0x4f,0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a};
  27          uchar wtdg,xbz;
  28          
  29          //基本变量定义
  30          //uchar cnt;
  31          // unsigned int d[3];
  32          /*
  33          hexstoascii2(unsigned int hex)
  34          {
  35          d[0]=table[hex/10];
  36          hex=hex%10;
  37          d[1]=table[hex]; 
  38          }
  39          
  40          hexstoascii3(unsigned int hex)
  41          {
  42          d[0]=table[hex/100];
  43          hex=hex%100;
  44          d[1]=table[hex/10];
  45          hex=hex%10;
  46          d[2]=table[hex];
  47          }
  48           */
  49          /**********************************lcd1602******************************************/
  50          
  51          /*********延时子程序**********/
  52          void delay(uchar dy)
  53          {
  54   1        while(--dy);
  55   1      } 
C51 COMPILER V7.20   TEXT2                                                                 07/21/2007 13:47:15 PAGE 2   

  56          
  57          /***********忙判断标志,返回一个位BF********************/
  58          bit lcd1602_busy(void)
  59          {
  60   1              uchar busy_flag;
  61   1              rs_1602=0;
  62   1              rw_1602=1;
  63   1              _nop_();
  64   1              e_1602=1;
  65   1              _nop_();
  66   1              lcd1602_bus=0xff;
  67   1              busy_flag=lcd1602_bus;   //e在高电平时读 
  68   1              e_1602=0;
  69   1              return (bit)(busy_flag&0x80);    //BF=1; BUSY  返回一个位
  70   1      }
  71          
  72          
  73          /********写命令,有两个参数,一个是要写的命令控制字,
  74          第二个是用来控制是否进行忙标志的判断。
  75          busyflag=1;
  76          判断: 为0 
  77          ***************/
  78          void lcd1602_wrcmd(unsigned char lcdcmd)
  79          {
  80   1              while(lcd1602_busy());     //等待空闲
  81   1              lcd1602_bus=lcdcmd;
  82   1              rs_1602=0;
  83   1              rw_1602=0;
  84   1              _nop_();
  85   1              e_1602=1;
  86   1              _nop_();
  87   1              _nop_();
  88   1              e_1602=0;      //产生一个下沿     
  89   1      }
  90          
  91          
  92          
  93          /***************向液晶写数据******************/
  94          void lcd1602_wrdata(uchar lcddata)
  95          {
  96   1       while(lcd1602_busy());       //等待空闲
  97   1       lcd1602_bus=lcddata;             //在下沿的时候写数据
  98   1       rs_1602=1;
  99   1       rw_1602=0;
 100   1       _nop_();
 101   1       e_1602=1;
 102   1       _nop_();
 103   1       _nop_();
 104   1       e_1602=0;
 105   1       //lcd_bus=0xff;
 106   1      }
 107          
 108          
 109          /************液晶的清屏************/
 110          void lcd1602_clear(void)
 111          {
 112   1        lcd1602_wrcmd(0x01);     //液晶清屏控制字     并延时>40us
 113   1        delay(100);
 114   1      }
 115          
 116          /***********1602液晶的初始化***************/
 117          void lcd1602_init(void)
C51 COMPILER V7.20   TEXT2                                                                 07/21/2007 13:47:15 PAGE 3   

 118          {
 119   1        lcd1602_wrcmd(0x38);          //功能设置-----8位数据接口,两行显示,5*7点阵字符显示
 120   1        delay(100);
 121   1        lcd1602_wrcmd(0x0f);         //显示开关控制----显示开关开,光标开关关,闪烁开关关
 122   1        delay(100);
 123   1        lcd1602_wrcmd(0x06);         //输入方式设置,AC自增1, S=0;
 124   1        delay(100);              
 125   1        lcd1602_wrcmd(0x01);         //清屏
 126   1        delay(100);
 127   1      }
 128          
 129          
 130          /**********4*4矩阵键盘****************/
 131          /************
 132           矩阵键盘
 133          D---------P1.0
 134          C---------P1.1
 135          B---------P1.2
 136          A---------P1.3
 137          1---------P1.4
 138          2---------P1.5
 139          3---------P1.6
 140          4---------P1.7
 141          按键值的分布
 142             D   C  B  A
 143          1〔15 14 13 12〕
 144          2〔11 10  9  8〕
 145          3〔 7  6  5  4〕
 146          4〔 3  2  1  0〕
 147          利用已有的那个按键程序  
 148          *************/
 149          
 150          uchar getkey_ii()
 151          
 152          {
 153   1          unsigned char keycode=0xff,temp,i;
 154   1          P1=0x0f;
 155   1          temp=P1&0x0f;
 156   1          if(temp!=0x0f)        //判是否有键按下
 157   1          {
 158   2             // beep=0;
 159   2              P1=0xef;          //自第0行开始扫描输出,自列读入键值
 160   2              for(i=0;i<4;i++)
 161   2              {
 162   3                  temp=P1&0x0f;
 163   3                  if(temp==0x07)     //判断第0列是否有键按下
 164   3                  {    
 165   4                      keycode=i*4+0;
 166   4                      break;
 167   4                  }
 168   3                  else if(temp==0x0b)//判断第1列是否有键按下
 169   3                  {
 170   4                      keycode=i*4+1;
 171   4                      break;                                                                                    
 172   4                  }
 173   3                  else if(temp==0x0d)//判断第2列是否有键按下
 174   3                  {
 175   4                      keycode=i*4+2;
 176   4                      break;
 177   4                  }
 178   3                  else if(temp==0x0e)//判断第3列是否有键按下
 179   3                  {
C51 COMPILER V7.20   TEXT2                                                                 07/21/2007 13:47:15 PAGE 4   

 180   4                      keycode=i*4+3;
 181   4                      break;
 182   4                  }
 183   3                  P1=(P1<<1)|0x1;
 184   3              }
 185   2      
 186   2               while((P1&0x0f)!=0x0f)   //等待释放
 187   2               {
 188   3                   P1=0x0f;
 189   3               }
 190   2          //   beep=1;                                             
 191   2              
 192   2           }
 193   1           return keycode;
 194   1      }
 195          
 196          /**********lcd1602 测试程序**********************/
 197          //上电后lcd1602 显示  
 198          //            "System of P.H.Y"      
 199          //             "   Welcome!"
 200          //
 201          //分别按矩阵最右下角的三个按键 分别出现下面几个显示界面:
 202          //   key=0 显示
 203          //              "    2005/7/28";
 204          //                      "      20:27";
 205          //   key=1 显示
 206          //              "<>?+-*/()="    
 207          //              "`-=\[]/.,;"    
 208          //   key=2 显示
 209          //         "!@#$%^&*()_+|~"
 210          //         "!@#$%^&*()_+|~"
 211          

⌨️ 快捷键说明

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