📄 disp160_128.lst
字号:
186 2 {
187 3 for(i=x1;i<=x2;i++)
188 3 {
189 4 j++;k++;
190 4 Point(i,y1,n);
191 4 if(k==shang2)j=k=0;
192 4 else if(j==shang1){y1++;j=0;}
193 4 }
194 3 }
195 2 else if((y2<y1)&&(x2<x1))
196 2 {
197 3 for(i=x2;i<=x1;i++)
198 3 {
199 4 j++;k++;
200 4 Point(i,y2,n);
201 4 if(k==shang2)j=k=0;
202 4 else if(j==shang1){y2++;j=0;}
203 4 }
204 3 }
205 2 else if((y2<y1)&&(x2>x1))
206 2 {
207 3 for(i=x1;i<=x2;i++)
208 3 {
209 4 j++;k++;
210 4 Point(i,y1,n);
211 4 if(k==shang2)j=k=0;
212 4 else if(j==shang1){y1--;j=0;}
213 4 }
214 3 }
215 2 else if((y2>y1)&&(x2<x1))
216 2 {
217 3 for(i=x2;i<=x1;i++)
218 3 {
219 4 j++;k++;
220 4 Point(i,y2,n);
221 4 if(k==shang2)j=k=0;
222 4 else if(j==shang1){y2--;j=0;}
223 4 }
224 3 }
225 2 }
226 1 else
227 1 {
228 2 shang1=_y/_x;
229 2 yu_shu=_y%_x;
230 2 shang2=_y/yu_shu;
231 2 if((y2>y1)&&(x2>x1))
232 2 {
233 3 for(i=y1;i<=y2;i++)
234 3 {
235 4 j++;k++;
236 4 Point(x1,i,n);
237 4 if(k==shang2)j=k=0;
238 4 else if(j==shang1){x1++;j=0;}
239 4 }
240 3 }
241 2 else if((y2<y1)&&(x2<x1))
C51 COMPILER V7.50 DISP160_128 05/21/2009 07:54:16 PAGE 5
242 2 {
243 3 for(i=y2;i<=y1;i++)
244 3 {
245 4 j++;k++;
246 4 Point(x2,i,n);
247 4 if(k==shang2)j=k=0;
248 4 else if(j==shang1){x2++;j=0;}
249 4 }
250 3 }
251 2
252 2 else if((y2>y1)&&(x2<x1))
253 2 {
254 3 for(i=y1;i<=y2;i++)
255 3 {
256 4 j++;k++;
257 4 Point(x1,i,n);
258 4 if(k==shang2)j=k=0;
259 4 else if(j==shang1){x1--;j=0;}
260 4 }
261 3 }
262 2 else if((y2<y1)&&(x2>x1))
263 2 {
264 3 for(i=y2;i<=y1;i++)
265 3 {
266 4 j++;k++;
267 4 Point(x2,i,n);
268 4 if(k==shang2)j=k=0;
269 4 else if(j==shang1){x2--;j=0;}
270 4 }
271 3 }
272 2 }
273 1 }
274 //画圆子程序,其中x0,y0表示圆心,R表示半径
275 //圆方程为(x-x0)^2+(y-y0)^2=R^2
276 //先打第一象限内的1/4段圆弧(顺时针和反时针各打一次),再依据对称原理打出其他3段圆弧
277 void Circle(unsigned char x0,unsigned char y0,unsigned R,bit n)
278 {
279 1 unsigned char i,j=0;
280 1 Point(x0,y0,n);
281 1 for(i=0;i<=R;i++)
282 1 {
283 2 while(1)
284 2 {
285 3 if(R*R-i*i<=j*j)break;
286 3 j++;
287 3 }
288 2 //第一象限打点
289 2 Point(x0-j,y0+i,n);
290 2 Point(x0-i,y0+j,n);
291 2 //Delay_500ms();
292 2 //第二象限打点
293 2 Point(x0+j,y0+i,n);
294 2 Point(x0+i,y0+j,n);
295 2 //Delay_500ms();
296 2 //第三象限打点
297 2 Point(x0+j,y0-i,n);
298 2 Point(x0+i,y0-j,n);
299 2 // Delay_500ms();
300 2 //第四象限打点
301 2 Point(x0-j,y0-i,n);
302 2 Point(x0-i,y0-j,n);
303 2 //Delay_500ms();
C51 COMPILER V7.50 DISP160_128 05/21/2009 07:54:16 PAGE 6
304 2 j=0;
305 2 }
306 1 }
307 /********************************没有用到的驱动******************************/
308 //显示图片程序,Addr1/Addr2为图片的地址,I表示图片的大小,
309 /*void Map_Display(unsigned char Addr1,unsigned char Addr2,unsigned int i)
310 {
311 Write_Data2(Addr1,Addr2,ADR_POS);//设置写地址
312 Write_Com(AUT_WR); //设置自动写方式
313 for(;i>0;i--)
314 {
315 Enable();
316 _CD=0;
317 P2=Map[i];
318 _WR=0;
319 _WR=1;
320 }
321 Write_Com(AUT_WO); //自动写结束
322 }
323 //bit2数据自动读状态位,为1时候空闲
324 void Aut_Read()
325 {
326 while(1)
327 if((Read_State()&4)==4)break;
328 }
329 //写数据函数(注意:此处只能写一个字节)
330 void Write_Data(unsigned char Data)
331 {
332 Enable();
333 _CD=0;
334 P2=Data;
335 _WR=0;
336 _WR=1;
337 }
338 //读数据函数(注意:此处只能读一个字节)
339 unsigned char Read_Data()
340 {
341 unsigned char a;
342 Enable();
343 _CD=0;
344 P2=0xff;//读状态之前先将数据线拉高
345 _RD=0;
346 _RD=1;
347 a=P2;
348 return a;
349 }
350 //读8字节数据函数
351 unsigned char Read_8_Data(unsigned char Way)
352 {
353 unsigned char a;
354 Aut_Read();//判断是否能自动读
355 Write_Com(AUT_RD);//自动读开始
356 Write_Com(Way);
357 a=Read_Data();
358 Write_Com(AUT_RO);//自动读结束
359 return a;
360 }
361 *//*****************************************************************/
362
363
C51 COMPILER V7.50 DISP160_128 05/21/2009 07:54:16 PAGE 7
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1612 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 54 ----
IDATA SIZE = ---- ----
BIT SIZE = 3 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -