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

📄 vter_test.lst

📁 wq_vga.rar,系列C51列程
💻 LST
字号:
C51 COMPILER V7.20   VTER_TEST                                                             10/23/2006 14:10:51 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE VTER_TEST
OBJECT MODULE PLACED IN Vter_test.OBJ
COMPILER INVOKED BY: C:\Program Files\Keil\C51\BIN\C51.EXE Vter_test.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <reg51.h>
   2          #include <math.h>
   3          
   4          //=======================
   5          #define  rate 3.14            //圆周率定义
   6          
   7          //==============按键图片的编号定义
   8          #define background 0
   9          #define abstract   1
  10          #define return_    2
  11          #define timeon     3
  12          #define timeoff    4
  13          #define settime    5
  14          #define drawgraph  6
  15          #define drawline   7
  16          #define drawell    8
  17          #define drawrec    9
  18          #define string     10
  19          #define diswave    11
  20          #define execute    12
  21          #define keyboard   13
  22          #define topbmp     14
  23          #define wavegraph  15
  24          
  25          //===========功能按键坐标定义
  26          #define key1x  0                //简介
  27          #define key1y  440
  28          
  29          #define key2x  110              //显示时间
  30          #define key2y  440
  31          
  32          #define key3x  220              //设置时间
  33          #define key3y  440
  34          
  35          #define key4x  330              //绘制图形
  36          #define key4y  440
  37          
  38          #define key5x  440              //字符
  39          #define key5y  440
  40          
  41          #define key6x  550              //显示波形
  42          #define key6y  440
  43          
  44          #define keywidth 87             //功能按键的宽
  45          #define keyheith 40             //功能按键的高
  46          
  47          #define touchxx  304    //触摸屏x坐标显示位置
  48          #define touchxy  9              //触摸屏x坐标显示位置
  49          
  50          #define touchyx  375    //触摸屏y坐标显示位置
  51          #define touchyy  9              //触摸屏y坐标显示位置
  52          
  53          //===========背景图片中间黑色方框区域坐标定义
  54          #define bmpx   58               //左上角x坐标
  55          #define bmpy   95               //左上角y坐标
C51 COMPILER V7.20   VTER_TEST                                                             10/23/2006 14:10:51 PAGE 2   

  56          #define bmpwidth 557    //区域的宽
  57          #define bmpheith 328    //区域的高
  58          
  59          //=============显示时间的位置坐标定义
  60          #define distimex  5
  61          #define distimey  5
  62          
  63          //=============设置时间时,键入的数据显示坐标定义
  64          #define dissetdatex  (bmpx+60)          //日期行的坐标
  65          #define dissetdatey  (bmpy+77)
  66          #define dissettimex  (bmpx+40)          //时间行的坐标
  67          #define dissettimey  (bmpy+126)
  68          
  69          //=============设置时间时,键盘的按键定义
  70          #define boardkeywidth   78              //键盘按键的宽
  71          #define boardkeyheith   77              //键盘按键的高
  72          
  73          #define keyboard0x (bmpx+242)   //0数字键(其中bmpx是背景图片中间黑色方框区域坐标,也就是显示键盘的坐标)
  74          #define keyboard0y (bmpy+5)
  75          
  76          #define keyboard1x (bmpx+242+boardkeywidth) //1数字键
  77          #define keyboard1y (bmpy+5)
  78          
  79          #define keyboard2x (bmpx+242+2*boardkeywidth)//2数字键
  80          #define keyboard2y (bmpy+5)
  81          
  82          #define keyboard3x (bmpx+242+3*boardkeywidth)//3数字键
  83          #define keyboard3y (bmpy+5)
  84          
  85          #define keyboard4x (bmpx+242)                            //4数字键
  86          #define keyboard4y (bmpy+5+boardkeyheith)
  87          
  88          #define keyboard5x (bmpx+242+boardkeywidth)  //5数字键
  89          #define keyboard5y (bmpy+5+boardkeyheith)
  90          
  91          #define keyboard6x (bmpx+242+2*boardkeywidth)//6数字键
  92          #define keyboard6y (bmpy+5+boardkeyheith)
  93          
  94          #define keyboard7x (bmpx+242+3*boardkeywidth)//7数字键
  95          #define keyboard7y (bmpy+5+boardkeyheith)
  96          
  97          #define keyboard8x (bmpx+242)                            //8数字键
  98          #define keyboard8y (bmpy+5+2*boardkeyheith)
  99          
 100          #define keyboard9x (bmpx+242+boardkeywidth)  //9数字键
 101          #define keyboard9y (bmpy+5+2*boardkeyheith)
 102          
 103          #define keyboardcx (bmpx+242+2*boardkeywidth)//清除键
 104          #define keyboardcy (bmpy+5+2*boardkeyheith)
 105          
 106          #define keyboardokx (bmpx+242)                                   //确定键
 107          #define keyboardoky (bmpy+5+3*boardkeyheith)
 108          
 109          //=====================全局变量定义===========
 110          unsigned char fcolor,bcolor;    //前景色、背景色变量定义
 111          unsigned char touchbuf[4];                      //触摸屏坐标存储区
 112          unsigned char datebuf[6];                       //日期存储区
 113          unsigned char timebuf[8];                       //时间存储区
 114          unsigned char int_state=0;              //引发中断的事件(触摸屏、日期、时间)
 115          unsigned char rx_count=0;               //读串口数据的计数器
 116          unsigned char touchok=0;                //触摸屏数据接收OK
 117          unsigned char dateok=0;                 //日期数据接收OK
C51 COMPILER V7.20   VTER_TEST                                                             10/23/2006 14:10:51 PAGE 3   

 118          unsigned char timeok=0;                 //时间数据接收OK
 119          
 120          //=====================按键是否被点击的标志定义,0表示未点击,1点击一次,2点击两次
 121          unsigned char  abstractkey=0;   //简介
 122          unsigned char  timeonkey=0;             //时间
 123          unsigned char  settimekey=0;    //设置时间
 124          unsigned char  drawgraphkey=0;  //绘制图形
 125          unsigned char  stringkey=0;             //字符
 126          unsigned char  wavekey=0;               //显示波形
 127          
 128          //=================================函数声明=====================================================
 129          void command_head(unsigned char command1,unsigned char command2);
 130          void command_head2(unsigned char command1,unsigned char command2,unsigned short x0,unsigned short y0);
 131          dis_value(unsigned short x,unsigned short y,unsigned short Va,unsigned char area);
 132          dis_smallchar(unsigned short x,unsigned short y,char *fmt);
 133          void dis_bmp(unsigned short x,unsigned short y,unsigned char num);
 134          void draw_rec(unsigned short x,unsigned short y,unsigned short width,unsigned short heith);
 135          void inv_rec(unsigned short x,unsigned short y,unsigned short width,unsigned short heith);
 136          void draw_line(unsigned short x0,unsigned short y0,unsigned short x1,unsigned short y1,unsigned short widt
             -h);
 137          void draw_ell(unsigned short x,unsigned short y,unsigned short xsize,unsigned short ysize);
 138          void draw_sin(unsigned short x,unsigned short y,unsigned char mode,double pi,unsigned char cp,unsigned sho
             -rt xsize);
 139          void time_on(unsigned short x,unsigned short y,unsigned char mode);
 140          void Lcd_Clr(void);
 141          void send_byte(unsigned char byte);
 142          void tx_check();
 143          void onkey1(void);
 144          void onkey2(void);
 145          void onkey3(void);
 146          void onkey4(void);
 147          void onkey5(void);
 148          void onkey6(void);
 149          void set_time(void);
 150          void renewtime(unsigned char *da);
 151          unsigned char disfigure(unsigned char num,unsigned char figure);
 152          
 153          //==============================================================================================
 154          main(void)
 155          {
 156   1              unsigned char keyvalue=0;
 157   1              unsigned short chx,chy;
 158   1              unsigned int i;
 159   1      
 160   1      //对AT89C51(11.059MHz)的串口初始化
 161   1      
 162   1          SP = 0xe0;                                                          //定义堆栈的起始地址为0xe0(也可以由系统自动分配)
 163   1              TMOD=0x20;                              //定时器1设置为模式2
 164   1              SM0=0;
 165   1              SM1=1;                                  //设置串口为方式1,10位异步收发
 166   1              PCON=PCON|0x80;                         //波特率加倍
 167   1              TL1=0xFD;
 168   1              TH1=0xFD;                               //波特率为19200
 169   1              TR1=1;                                  //启动定时器1
 170   1              REN = 1;                                //允许串口接受使能
 171   1      
 172   1              EA=1;                                   //全局中断使能,(EA=0,关全局中断;EA=1,开全局中断)
 173   1              ES = 1;                                 //串口中断使能置1,允许串口中断
 174   1      
 175   1      //===============================================================================================
 176   1      //显示终端在上电就绪时发送F0.用仿真器时不要检测F0.
 177   1      //当把程序烧写到单片机上时,显示终端和单片机同时上电,所以一定
C51 COMPILER V7.20   VTER_TEST                                                             10/23/2006 14:10:51 PAGE 4   

 178   1      //要检测是否收到F0。以判断显示终端是否上电就绪
 179   1      //===============================================================================================
 180   1              i = 0;
 181   1              while(!(i == 0xF0))
 182   1              {
 183   2                      i = SBUF;
 184   2              }
 185   1      
 186   1              fcolor = 0x00;                                  //前景色
 187   1              bcolor = 0xff;                                  //背景色
 188   1          Lcd_Clr();                                          //清屏
 189   1              dis_bmp(0,0,background);                //显示背景图片
 190   1              dis_bmp(key1x,key1y,abstract);  //显示按键图片
 191   1              dis_bmp(key2x,key2y,timeon);
 192   1              dis_bmp(key3x,key3y,settime);
 193   1              dis_bmp(key4x,key4y,drawgraph);
 194   1              dis_bmp(key5x,key5y,string);
 195   1              dis_bmp(key6x,key6y,diswave);
 196   1              while(1)
 197   1              {
 198   2                      while(1)                                        //触摸屏被触发吗?没有则循环检测(读串口)?
 199   2                      {       
 200   3                              if(touchok==1)
 201   3                              {
 202   4                                      chx=(touchbuf[0]*100+touchbuf[1]); //将两字节数据转换为短整型
 203   4                                      chy=(touchbuf[2]*100+touchbuf[3]);
 204   4                                      touchok=0;
 205   4                                      break;
 206   4                              }
 207   3                      }
 208   2      
 209   2                      dis_value(touchxx+2,touchxy+2,chx,03);  //显示触摸屏坐标
 210   2                      dis_value(touchyx+2,touchyy+2,chy,03);
 211   2      
 212   2      //===================================================按键检测程序==================================
 213   2                      if(abstractkey==0 && settimekey==0 && drawgraphkey==0
 214   2      
 215   2                         &&  stringkey==0 && wavekey==0                                                //检测这些参数是为了判断是否已经有其他按键事先按下,若有,此按键
             -无效;这个条件是程序的关键
 216   2      
 217   2                         || abstractkey==1 || settimekey==1 || drawgraphkey==1 || stringkey==1//若有其它按键事先按下,则返回键
             -也接收点击
 218   2      
 219   2                         || wavekey==2)               //当“显示波形”键被按了两次,“返回”键也
 220   2      
 221   2                      {
 222   3                              if(chx>key1x && chx<(key1x+keywidth) && chy>key1y && chy<(key1y+keyheith))//您点击在按键的范围吗?
 223   3                              {       
 224   4                                      keyvalue=1;                     //键值置1
 225   4                              }
 226   3                      }
 227   2      
 228   2                      if(abstractkey==0 && settimekey==0 && drawgraphkey==0 &&  stringkey==0 && wavekey==0)//检测这些参数是为

⌨️ 快捷键说明

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