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

📄 t9_v1.lst

📁 在AT89C55和液晶上实现输入用按键控制输出输出
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V7.50   T9_V1                                                                 01/22/2006 18:12:40 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE T9_V1
OBJECT MODULE PLACED IN T9_V1.OBJ
COMPILER INVOKED BY: e:\Keil\C51\BIN\C51.EXE T9_V1.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <REG52.H>
   2          #include <stdio.h>
   3          #include<ziku.h>
   4          #include<string.h>
   5          
   6          
   7          
   8          
   9          #define uint  unsigned int
  10          #define uchar unsigned char
  11          #define DISP_ON    0x3f
  12          #define DISP_OFF   0x3e
  13          #define COL        0x40    //列地址
  14          #define PAGE 0xb8          //行地址
  15          #define START_LINE 0xc0
  16          #define LCD_BUS     P2 
  17          #define LCD_CON     P3 
  18          #define key_bus     P1
  19          
  20          
  21          //==========================================口定义=================================================
  22          
  23          sbit CS1=LCD_CON^0;             //  CS1
  24          sbit CS2=LCD_CON^1;             //  CS2
  25          sbit E =LCD_CON^2;              //液晶使能
  26          sbit RW=LCD_CON^3;              //液晶读写
  27          sbit DI=LCD_CON^4;              //液晶数据指
  28          sbit sw0=P3^6;                                  //OK
  29          sbit sw1=P3^7;                                  //Cancel
  30          sbit SCL=P0^0;
  31          sbit SDA=P0^1;
  32          
  33          //===========================================END===================================================
  34          
  35          
  36          
  37          
  38          
  39          
  40          //=============================================函数声明============================================
  41          
  42          void display_h(uchar page,uchar col,uchar code *str,uchar n);
  43          void display_e(uchar page,uchar col,uchar code *str,uchar n);
  44          void display_num(uchar page,uchar col,uchar code *str,uchar n);
  45          void line_v(uchar x,uchar y,uchar l);
  46          void line_h(uchar x,uchar y,uchar l);
  47          void init();
  48          void cls();
  49          void delay(uint);         //延时程序
  50          void write_cmd(uchar);    //写命令操作字
  51          void write_data(uchar);   //写数据
  52          uchar read_data();        //读数据
  53          uchar key_ii();
  54          unsigned char code *py_v1(unsigned char input_py_val[]);
  55          void point(uchar x,uchar y);
C51 COMPILER V7.50   T9_V1                                                                 01/22/2006 18:12:40 PAGE 2   

  56          unsigned char *T9PY(char *strInput_t9PY_str,uchar length);
  57          //==============================================END================================================
  58          
  59          
  60          #include<iic.h>
  61          
  62          
  63          //========================================全局变量声明=============================================
  64          uchar *p_py;
  65          unsigned char PY_num;
  66          struct t9PY_index code  * T9PY_mb[4];
  67          uchar state=0;//用state变量来指示程序的执行状态
  68          uchar file_num=0;//用于记录短信的数目,初值为0
  69          uchar length_h=0;//用于记录当前编辑的短信的长度
  70          uchar row=0;
  71          /**************************************************************************************************
  72          *
  73          *T9 输入法查找函数
  74          *函数声明:unsigned char *T9PY(char *strInput_t9PY_str,uchar length);
  75          *参数说明:strInput_t9PY_str为字符串的地址,length为字符串的长度
  76          *函数功能:把找到的汉字点阵表的首地址放在数组T9PY_mb中
  77          *
  78          **************************************************************************************************/
  79          
  80          unsigned char *T9PY(char *strInput_t9PY_str,uchar length)
  81          {
  82   1          struct t9PY_index *cpHZ,*cpHZedge;
  83   1          unsigned char i;
  84   1          PY_num=0;                              
  85   1          if(*strInput_t9PY_str=='\0')return(0);         //如果输入空字符返回0
  86   1      
  87   1          cpHZ=&(t9PY_index2[0]);                        //查首字母索引
  88   1          cpHZedge=t9PY_index2+sizeof(t9PY_index2)/sizeof(t9PY_index2[0]);
  89   1          while(cpHZ < cpHZedge)                         //待查询记录条数
  90   1          {                                                                                   
  91   2              for(i=0;i<length;i++)
  92   2              {
  93   3                     if(*(strInput_t9PY_str+i)!=*((*cpHZ).t9PY_T9+i))    //检查字符串匹配
  94   3                     {
  95   4                           
  96   4                                              break;                                         //发现字母串不配,退出/
  97   4                     }
  98   3                                 
  99   3                                             
 100   3              }
 101   2                      if(i==length&&PY_num<=3)    
 102   2              {
 103   3                                    
 104   3                                 T9PY_mb[PY_num]=cpHZ;
 105   3                     PY_num++;
 106   3                                 //break;   
 107   3              }
 108   2      
 109   2              cpHZ++;
 110   2          }
 111   1              if (PY_num>0)
 112   1          {
 113   2                p_py=T9PY_mb[0]->PY;
 114   2                        return(T9PY_mb[0]->PY_mb);                
 115   2              }
 116   1              else
 117   1              {
C51 COMPILER V7.50   T9_V1                                                                 01/22/2006 18:12:40 PAGE 3   

 118   2                        return(PY_mb_a);
 119   2              }
 120   1      }
 121          
 122          
 123          /**************************************************************************************************
 124          *         P17>---0----1----2----3      
 125          *                                |        |        |    |
 126          *                 P16>---4----5----6----7
 127          *                                |        |        |    |
 128          *                 P15>---8----9----A----B
 129          *                                |        |        |    |
 130          *                 P14>---C----D----E----F
 131          *                                |    |    |    |
 132          *                               P13  P12  P11  P10
 133          *4*4键盘输入函数
 134          *函数声明:uchar key_ii();
 135          *函数参数:无
 136          *
 137          *
 138          *
 139          **************************************************************************************************/
 140          uchar key_ii()
 141          {
 142   1          uchar keycode=0xff,temp,i;
 143   1          key_bus=0x0f;
 144   1              temp=key_bus&0x0f; 
 145   1              if(temp!=0x0f)              //有键按下
 146   1              {
 147   2                  key_bus=0x7f;
 148   2                  for(i=0;i<4;i++)
 149   2                      {
 150   3                              temp=key_bus&0x0f;
 151   3                  if(temp==0x07)
 152   3                      {    
 153   4                                  keycode=i*4;
 154   4                                      break;
 155   4                              }
 156   3                      else if(temp==0x0b)
 157   3                              {
 158   4                          keycode=i*4+1;
 159   4                                      break;
 160   4                              }
 161   3                  else if(temp==0x0d)
 162   3                              {
 163   4                          keycode=i*4+2;
 164   4                                      break;
 165   4                              }
 166   3                  else if(temp==0x0e)
 167   3                              {
 168   4                          keycode=i*4+3;
 169   4                                      break;
 170   4                              }
 171   3                              key_bus=(key_bus>>1)|0x80;
 172   3                      }
 173   2      
 174   2                   while((key_bus&0x0f)!=0x0f)   //等待释放
 175   2                       {
 176   3                           key_bus=0x0f; 
 177   3                       }                                                                           
 178   2                  
 179   2               }
C51 COMPILER V7.50   T9_V1                                                                 01/22/2006 18:12:40 PAGE 4   

 180   1               return keycode;
 181   1      }
 182          
 183          /**************************************************************************************************
 184          *
 185          *
 186          *
 187          *
 188          *
 189          *
 190          **************************************************************************************************/
 191          uchar key()
 192          {
 193   1            uchar keycode=0,temp;
 194   1                //键盘口,先置1
 195   1                sw0=1; sw1=1;
 196   1                temp=P3&0xD0;
 197   1                if(temp!=0xD0)
 198   1                {
 199   2                  sw0=1; sw1=1;
 200   2                              temp=P3&0x40;
 201   2                      if(temp==0)keycode=6;
 202   2                      temp=P3&0x80;
 203   2                      if(temp==0)keycode=7;
 204   2                              while(temp!=0xD0)
 205   2                              {
 206   3                                    temp=P3&0xD0;
 207   3                              }
 208   2                }
 209   1                return keycode;
 210   1      
 211   1                   
 212   1      }
 213          
 214          
 215          /**************************************************************************************************
 216          *
 217          *延时函数
 218          *函数声明:void delay(uint t);
 219          *函数参数:t
 220          *
 221          *
 222          **************************************************************************************************/
 223          
 224          void delay(uint t)             
 225          {
 226   1            uint i,j;
 227   1            for(i=0;i<t;i++)
 228   1                  for(j=0;j<10;j++);
 229   1      }
 230          
 231          
 232          /**************************************************************************************************
 233          *
 234          *向LCD写命令函数
 235          *函数声明:void write_cmd(uchar cmd);
 236          *函数参数:cmd(具体命令查看数据手册)
 237          *
 238          *
 239          **************************************************************************************************/
 240          
 241          void write_cmd(uchar cmd)  
C51 COMPILER V7.50   T9_V1                                                                 01/22/2006 18:12:40 PAGE 5   

 242          {
 243   1      
 244   1            DI=0; RW=0;
 245   1            LCD_BUS=cmd;
 246   1            E=1;
 247   1            E=0;
 248   1      }
 249          
 250          /**************************************************************************************************
 251          *
 252          *向LCD写数据函数
 253          *函数声明:void write_data(uchar dout);
 254          *函数参数:dout为要向LCD写的数据
 255          *
 256          *
 257          **************************************************************************************************/
 258          void write_data(uchar dout)  
 259          {
 260   1      
 261   1            DI=1; RW=0;
 262   1            LCD_BUS=dout;
 263   1            E=1;
 264   1            E=0;
 265   1      }

⌨️ 快捷键说明

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