📄 vter_test.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 + -