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

📄 cmpmnckj.lst

📁 该程序实现触摸屏控制,与KY系列智能液晶终端配合使用
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V7.07   CMPMNCKJ                                                              09/13/2007 12:26:26 PAGE 1   


C51 COMPILER V7.07, COMPILATION OF MODULE CMPMNCKJ
OBJECT MODULE PLACED IN CMPMNCKJ.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE CMPMNCKJ.C BROWSE INTVECTOR(0X8000) DEFINE(monitor51) DEBUG OBJECTEXTEND

stmt level    source

   1          //本程序为Franklin/keil  C51源程序,可以在所有51系列(或兼容)单片机中运行。
   2          //完成功能:使用任意2个引脚模拟串行接口,实现对触摸屏控制器数据的接收
   3          //          和对KY系列智能液晶终端进行控制.
   4          //程序中给出了设计方法,通过修改TIMEzq使本程序适用于各种晶振及各种波特率.
   5          //本例为:当通讯波特率=9600Hz,单片机晶振=18.432MHz时,TIMEzq=50
   6          //        使用P3.0模拟串口输入,使用P3.1模拟串口输出,使用P1.2检测"忙"信号.
   7          //本程序在Wave For windows ver 2.80仿真软件编译成功。
   8          //在AT89C51(9600Hz,18.432MHz)中运行通过.运行结果是:可更改6位十进制数的触摸键盘.
   9          //本程序运行需以下8个汉字,应运行前下载到字符集3中(12*12,代码为B8H-BFH)
  10          //    "取消"(B8H B9H)  "增加"(BAH BBH)  "减少"(BCH BDH)   "确认"(BEH BFH)
  11          //=========================================================================================
  12          #include "reg51.h"
  13          #define  uchar     unsigned char
  14          #define  uint     unsigned int
  15          sbit     CMP_DATA   =P1^7; //由此接收触摸屏发出的串行数据,可以使用任一引脚.
  16          sbit     ZD_DATA   =P1^1; //向液晶终端输出串行数据,使用模拟串口输出数据时,可以使用任一引脚.
  17          sbit     ZD_BUSY   =P1^3; //接收液晶终端发来的"忙"(BUSY)信号,可以连接于任意一位输入引脚上.
  18          //=========================================================================================
  19          bdata char  DATA;
  20          sbit    mb0=DATA^0;
  21          sbit    mb1=DATA^1;
  22          sbit    mb2=DATA^2;
  23          sbit    mb3=DATA^3;
  24          sbit    mb4=DATA^4;
  25          sbit    mb5=DATA^5;
  26          sbit    mb6=DATA^6;
  27          sbit    mb7=DATA^7;
  28          //=========================================================================================
  29          #define  TIMEzq    29   //修改TIMEzq可使本程序适用于各种晶振及各种波特率.计算方法见文件尾。
  30          //本例:AT89C51(9600Hz,11.0592MHz)时 TIMEzq=29
  31                  uint Xzsj,Yzsj;
  32          //=========================================================================================
  33                  uint Xzb,Yzb;//X坐标在Xzb中,Y坐标在Yzb中
  34          //延时函数TIME()
  35          //为了得到精确的延时时间,不要修改本函数的形式,绝对不要修改!
  36          void     TIME(void)
  37            {
  38   1        uchar i;
  39   1        for(i=0;i<TIMEzq;i++);
  40   1        }
  41          //=========================================================================================
  42          //延时函数TIME1B()
  43          //为了得到精确的延时时间,不要修改本函数的形式,绝对不要修改!
  44          void     TIME1B(void)
  45            {
  46   1        uchar i;
  47   1        for(i=0;i<(TIMEzq/2);i++);
  48   1        }
  49          //=========================================================================================
  50          //将sj(仅低4位有效)转换为对应的ASCII码
  51          uchar zh16(uint sj)
  52          {
  53   1        uchar sj1;
  54   1        sj1=sj&0x0f;
  55   1        if (sj1>=0x0a) sj1=sj1+7;
C51 COMPILER V7.07   CMPMNCKJ                                                              09/13/2007 12:26:26 PAGE 2   

  56   1        sj1=sj1+0x30;
  57   1        return sj1;
  58   1      }
  59          //=========================================================================================
  60          //向终端发送一字节数据
  61          //为了得到精确的延时时间,不要修改本函数的形式,绝对不要修改!
  62          void FSsj(uchar sj)
  63            {
  64   1               while(ZD_BUSY);
  65   1               ZD_DATA =0;       //起始位=0
  66   1               TIME();
  67   1               ZD_DATA =sj&1;    //D0;12+24+24+24
  68   1               TIME();
  69   1               ZD_DATA =sj&2;    //D1
  70   1               TIME();
  71   1               ZD_DATA =sj&4;    //D2
  72   1               TIME();
  73   1               ZD_DATA =sj&8;    //D3
  74   1               TIME();
  75   1               ZD_DATA =sj&0x10; //D4
  76   1               TIME();
  77   1               ZD_DATA =sj&0x20; //D5
  78   1               TIME();
  79   1               ZD_DATA =sj&0x40; //D6
  80   1               TIME();
  81   1               ZD_DATA =sj&0x80; //D7
  82   1               TIME();
  83   1               ZD_DATA =0;       //奇偶位=0
  84   1               TIME();
  85   1               ZD_DATA =1;       //停止位=1
  86   1               TIME();
  87   1        }
  88          //=========================================================================================
  89          //用CMP_DATA模拟串口接收数据
  90          //为了得到精确的延时时间,不要修改本函数的形式,绝对不要修改!
  91          //读触摸屏1个字节
  92          uchar JSsj(void)
  93          {
  94   1              while(CMP_DATA);        //CMP_DATA=1,则等待.
  95   1              TIME1B();
  96   1              TIME();
  97   1              mb0=CMP_DATA;   //D0
  98   1              TIME();
  99   1              mb1=CMP_DATA;   //D1
 100   1              TIME();
 101   1              mb2=CMP_DATA;   //D2
 102   1              TIME();
 103   1              mb3=CMP_DATA;   //D3
 104   1              TIME();
 105   1              mb4=CMP_DATA;   //D4
 106   1              TIME();
 107   1              mb5=CMP_DATA;   //D5
 108   1              TIME();
 109   1              mb6=CMP_DATA;   //D6
 110   1              TIME();
 111   1              mb7=CMP_DATA;   //D7
 112   1              TIME();
 113   1              TIME();
 114   1              return DATA;
 115   1      }
 116          
 117          //===========================================
C51 COMPILER V7.07   CMPMNCKJ                                                              09/13/2007 12:26:26 PAGE 3   

 118          uchar h6jp(void)//画出6位数字键盘
 119          {
 120   1              FSsj(0X1B);//最大矩形 'j' 的ASCII码为6A
 121   1              FSsj('j');
 122   1              FSsj((0X9000+Xzsj)>>8);   //定义矩形的左上角坐标
 123   1              FSsj(Xzsj);
 124   1              FSsj(Yzsj>>8);
 125   1              FSsj(Yzsj);
 126   1              FSsj((Xzsj+242)>>8);
 127   1              FSsj(Xzsj+242);
 128   1              FSsj((Yzsj+86)>>8);
 129   1              FSsj(Yzsj+86);
 130   1      
 131   1              FSsj(0X1B);//矩形
 132   1              FSsj('j');
 133   1              FSsj((0X9000+Xzsj+2)>>8);
 134   1              FSsj(Xzsj+2);
 135   1              FSsj(Yzsj+2>>8);
 136   1              FSsj(Yzsj+2);
 137   1              FSsj((Xzsj+242-2)>>8);
 138   1              FSsj(Xzsj+242-2);
 139   1              FSsj((Yzsj+86-2)>>8);
 140   1              FSsj(Yzsj+86-2);
 141   1      
 142   1              FSsj(0X1B);//1#按键
 143   1              FSsj('j');
 144   1              FSsj((0X9000+Xzsj+2+4)>>8);
 145   1              FSsj(Xzsj+2+4);
 146   1              FSsj(Yzsj+2+4>>8);
 147   1              FSsj(Yzsj+2+4);
 148   1              FSsj((Xzsj+2+4+35)>>8);
 149   1              FSsj(Xzsj+2+4+35);
 150   1              FSsj(Yzsj+2+4+35>>8);
 151   1              FSsj(Yzsj+2+4+35);
 152   1      
 153   1              FSsj(0X1B);//2#按键
 154   1              FSsj('j');
 155   1              FSsj((0X9000+Xzsj+2+4+35+4)>>8);
 156   1              FSsj(Xzsj+2+4+35+4);
 157   1              FSsj(Yzsj+2+4>>8);
 158   1              FSsj(Yzsj+2+4);
 159   1              FSsj((Xzsj+2+4+35+35+4)>>8);
 160   1              FSsj(Xzsj+2+4+35+35+4);
 161   1              FSsj(Yzsj+2+4+35>>8);
 162   1              FSsj(Yzsj+2+4+35);
 163   1      
 164   1              FSsj(0X1B);//3#按键
 165   1              FSsj('j');
 166   1              FSsj((0X9000+Xzsj+2+4+(35+4)*2)>>8);
 167   1              FSsj(Xzsj+2+4+(35+4)*2);
 168   1              FSsj(Yzsj+2+4>>8);
 169   1              FSsj(Yzsj+2+4);
 170   1              FSsj((Xzsj+2+4+35+(35+4)*2)>>8);
 171   1              FSsj(Xzsj+2+4+35+(35+4)*2);
 172   1              FSsj(Yzsj+2+4+35>>8);
 173   1              FSsj(Yzsj+2+4+35);
 174   1      
 175   1              FSsj(0X1B);//4#按键
 176   1              FSsj('j');
 177   1              FSsj((0X9000+Xzsj+2+4+(35+4)*3)>>8);
 178   1              FSsj(Xzsj+2+4+(35+4)*3);
 179   1              FSsj(Yzsj+2+4>>8);
C51 COMPILER V7.07   CMPMNCKJ                                                              09/13/2007 12:26:26 PAGE 4   

 180   1              FSsj(Yzsj+2+4);
 181   1              FSsj((Xzsj+2+4+35+(35+4)*3)>>8);
 182   1              FSsj(Xzsj+2+4+35+(35+4)*3);
 183   1              FSsj(Yzsj+2+4+35>>8);
 184   1              FSsj(Yzsj+2+4+35);
 185   1      
 186   1              FSsj(0X1B);//5#按键
 187   1              FSsj('j');
 188   1              FSsj((0X9000+Xzsj+2+4+(35+4)*4)>>8);
 189   1              FSsj(Xzsj+2+4+(35+4)*4);
 190   1              FSsj(Yzsj+2+4>>8);
 191   1              FSsj(Yzsj+2+4);
 192   1              FSsj((Xzsj+2+4+35+(35+4)*4)>>8);
 193   1              FSsj(Xzsj+2+4+35+(35+4)*4);
 194   1              FSsj(Yzsj+2+4+35>>8);
 195   1              FSsj(Yzsj+2+4+35);
 196   1      
 197   1              FSsj(0X1B);//6#按键
 198   1              FSsj('j');
 199   1              FSsj((0X9000+Xzsj+2+4+(35+4)*5)>>8);
 200   1              FSsj(Xzsj+2+4+(35+4)*5);
 201   1              FSsj(Yzsj+2+4>>8);
 202   1              FSsj(Yzsj+2+4);
 203   1              FSsj((Xzsj+2+4+35+(35+4)*5)>>8);
 204   1              FSsj(Xzsj+2+4+35+(35+4)*5);
 205   1              FSsj(Yzsj+2+4+35>>8);
 206   1              FSsj(Yzsj+2+4+35);
 207   1      
 208   1              FSsj(0X1B);   //调用字符集3 
 209   1              FSsj(0X33);
 210   1              FSsj(0X1B);   //设置字符旋转方向
 211   1              FSsj(0X66);
 212   1              FSsj(0X04);
 213   1      
 214   1              FSsj(0X1B);//7#按键:"取消"(B8H B9H)
 215   1              FSsj('j');
 216   1              FSsj((0X9000+Xzsj+2+4)>>8);
 217   1              FSsj(Xzsj+2+4);
 218   1              FSsj(Yzsj+2+4+35+4>>8);
 219   1              FSsj(Yzsj+2+4+35+4);
 220   1              FSsj((Xzsj+2+4+35)>>8);
 221   1              FSsj(Xzsj+2+4+35);
 222   1              FSsj(Yzsj+2+4+35+35+4>>8);
 223   1              FSsj(Yzsj+2+4+35+35+4);
 224   1              FSsj(0X1B);
 225   1              FSsj('z');//设置系统坐标及字体颜色
 226   1              FSsj((0X9000+Xzsj+2+4+5)>>8);
 227   1              FSsj(Xzsj+2+4+5);
 228   1              FSsj((0X8000+Yzsj+2+4+35+4+11)>>8);
 229   1              FSsj(Yzsj+2+4+35+4+11);
 230   1              FSsj(0XB8);
 231   1              FSsj(0XB9);

⌨️ 快捷键说明

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