📄 ctl_muen_240128.lst
字号:
C51 COMPILER V7.08 CTL_MUEN_240128 08/31/2005 02:48:49 PAGE 1
C51 COMPILER V7.08, COMPILATION OF MODULE CTL_MUEN_240128
OBJECT MODULE PLACED IN ctl_MUEN_240128.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ctl_MUEN_240128.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <AT89X51.H>
2 #include <intrins.h>
3 #include <math.h>
4
5 extern unsigned char read_from(void);
6 extern void write_2_code(unsigned char a,unsigned char b,unsigned char c);
7 extern void write_1_code(unsigned char a,unsigned char c);
8 extern void write_code(unsigned char c);
9 extern void write_to(unsigned char a);
10 extern void lcm_start(void);
11 extern void cls_lcm(void);
12 extern void delay(unsigned int a);
13 enum KEY{key_start,key_up,key_down,key_left,key_right};
14 struct MENU{
15 unsigned char ID;
16 unsigned char class_id;
17 unsigned char up_id;
18 unsigned char down_id;
19 unsigned char chinese_id[2];
20 unsigned char x1,y1,x2,y2;
21 };
22
23 code struct MENU menu_lis[10]={
24 0,0,255,1,2,3,1,2,3,2,
25 1,1,0,2,8,9,1,24,3,24,
26 2,1,0,255,8,9,1,44,3,44,
27 3,1,0,2,8,9,1,65,3,65,
28 4,2,1,255,8,9,7,23,9,23,
29 5,2,1,3,8,9,7,45,9,45,
30 6,2,1,255,8,9,7,67,9,67,
31 7,3,2,255,8,9,14,45,16,45,
32 8,0,255,1,4,5,7,2,9,2,
33 9,1,0,255,6,7,7,24,9,24
34 };
35
36 unsigned char count_time=0,id=0,key=0,up_down_key=0;
37 unsigned char code tab_ascii[][16]={0,0
38
39
40
41 };
42
43
44
45 unsigned char code tab_chinese[][32]={
46
47 0x00,0x80,0x3E,0x90,0x02,0xA0,0x12,0x48,0x0C,0x50,0x08,0x20,0x1F,0xF0,0x20,0x2E,
48 0xCF,0xF4,0x08,0x20,0x08,0x20,0x0F,0xE0,0x04,0x40,0x02,0x88,0x7F,0xFC,0x00,0x00,
49 /**--0--*以上为"登"的点阵*/
50
51 0x00,0x10,0x3F,0xF8,0x00,0x10,0x00,0x10,0x1F,0xF0,0x00,0x10,0x00,0x14,0xFF,0xFE,
52 0x01,0x08,0x11,0x10,0x09,0xA0,0x05,0x40,0x09,0x20,0x11,0x1E,0x65,0x04,0x02,0x00,
53 /**--1--*以上为"录"的点阵*/
54
55
C51 COMPILER V7.08 CTL_MUEN_240128 08/31/2005 02:48:49 PAGE 2
56 0x10,0x40,0x10,0x20,0x13,0xFE,0x12,0x02,0xFC,0x54,0x10,0x88,0x15,0x04,0x18,0x00,
57 0x30,0x08,0xD3,0xFC,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x24,0x57,0xFE,0x20,0x00,
58 /**--2--*以上为"控"的点阵*/
59
60 0x04,0x04,0x24,0x04,0x25,0x04,0x3F,0xA4,0x24,0x24,0x44,0xA4,0xFF,0xE4,0x04,0x24,
61 0x3F,0xA4,0x24,0xA4,0x24,0xA4,0x24,0x84,0x26,0x84,0x25,0x04,0x04,0x14,0x04,0x08,
62 /**--3--*以上为"制"的点阵*/
63
64 0x08,0x00,0x0A,0x7C,0xFF,0x48,0x08,0x50,0x7E,0x58,0x08,0x44,0xFF,0x64,0x08,0x58,
65 0x11,0x50,0x3F,0xF0,0xD1,0x10,0x11,0x10,0x11,0x10,0x11,0x50,0x11,0x20,0x01,0x00,
66 /**--4--*以上为"帮"的点阵*/
67
68 0x02,0x20,0x3F,0x20,0x22,0x20,0x22,0x24,0x23,0xFE,0x3E,0x24,0x22,0x24,0x22,0x24,
69 0x3E,0x24,0x22,0x24,0x22,0x44,0x22,0x44,0x2F,0x44,0xF0,0x84,0x41,0x28,0x02,0x10,
70 /**--5--*以上为"助"的点阵*/
71
72 0x10,0x10,0x08,0x18,0x04,0x20,0x04,0x48,0x7F,0xFC,0x01,0x00,0x01,0x00,0x01,0x04,
73 0xFF,0xFE,0x01,0x00,0x02,0x80,0x02,0x80,0x04,0x40,0x08,0x30,0x30,0x0E,0xC0,0x04,
74 /**--6--*以上为"关"的点阵*/
75
76 0x00,0x10,0x3F,0xF8,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x04,0xFF,0xFE,0x01,0x00,
77 0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x05,0x00,0x02,0x00,
78 /**--7--*以上为"于"的点阵*/
79
80 0x04,0x40,0x04,0x44,0xFF,0xFE,0x04,0x40,0x00,0x38,0x3F,0xC0,0x12,0x10,0x09,0x20,
81 0x01,0x04,0xFF,0xFE,0x03,0x80,0x05,0x40,0x09,0x30,0x11,0x0E,0x61,0x04,0x01,0x00,
82 /**--8--*以上为"菜"的点阵*/
83
84 0x10,0x10,0x08,0x20,0x04,0x48,0x3F,0xFC,0x21,0x08,0x21,0x08,0x3F,0xF8,0x21,0x08,
85 0x21,0x08,0x3F,0xF8,0x21,0x00,0x01,0x04,0xFF,0xFE,0x01,0x00,0x01,0x00,0x01,0x00,
86 /**--9--*以上为"单"的点阵*/
87
88
89 };
90
91
92 void delay_1ms(unsigned int dd)
93 {unsigned char ii;
94 1 while(dd--)for(ii=0;ii<125;ii++);
95 1
96 1 }
97
98
99 void ascii_show(unsigned char x,unsigned char y,bit show_mode,unsigned char ascii)
100 {
101 1 unsigned char i ;
102 1 unsigned int startaddr ;
103 1 startaddr=(y)*30+x ;
104 1 for(i=0;i<16;i++)
105 1 {
106 2 write_2_code((unsigned char)(startaddr),(unsigned char)(startaddr>>8),0x24);
107 2 if(show_mode)
108 2 write_1_code(tab_ascii[ascii][i],0xc4);
109 2 else write_1_code(~tab_ascii[ascii][i],0xc4);
110 2 startaddr=startaddr+30 ;
111 2 }
112 1
113 1 }
114
115 void chinese_show(unsigned char x,unsigned char y,bit show_mode,unsigned int hzcode)
116 {
117 1 unsigned char i ;
C51 COMPILER V7.08 CTL_MUEN_240128 08/31/2005 02:48:49 PAGE 3
118 1 unsigned int startaddr ;
119 1 startaddr=(y)*30+x ;
120 1 for(i=0;i<16;i++)
121 1 {
122 2 write_2_code((unsigned char)(startaddr),(unsigned char)(startaddr>>8),0x24);
123 2 if(show_mode)
124 2 { write_1_code(tab_chinese[hzcode][i*2],0xc0);
125 3 write_1_code(tab_chinese[hzcode][i*2+1],0xc4);
126 3 }
127 2 else
128 2 {write_1_code(~tab_chinese[hzcode][i*2],0xc0);
129 3 write_1_code(~tab_chinese[hzcode][i*2+1],0xc4);
130 3 }
131 2
132 2 startaddr=startaddr+30 ;
133 2 }
134 1
135 1 }
136 void show_pixel(unsigned int x,unsigned int y,bit mode)
137 {
138 1 unsigned int startaddr=0 ;
139 1 unsigned char dat ;
140 1 startaddr=y*30+x/8 ;
141 1 dat=0xf0+7-x%8 ;
142 1 if(mode)dat=dat|0x08 ;
143 1 write_2_code((unsigned char)(startaddr),(unsigned char)(startaddr>>8),0x24);
144 1
145 1 write_code(dat);
146 1 }
147
148 void show_line(unsigned char x1,unsigned char y1,unsigned char x2,unsigned char y2,bit mode)
149 {
150 1 unsigned char x,y ;
151 1 double k,b ;
152 1 if(abs(y1-y2)<=abs(x1-x2))
153 1 {
154 2 k=(float)(y2-y1)/(float)(x2-x1);
155 2 b=y1-k*x1 ;
156 2 if(x1<=x2)
157 2 {
158 3 for(x=x1;x<=x2;x++)
159 3 {
160 4 y=k*x+b ;
161 4 show_pixel(x,y,mode);
162 4 }
163 3 }
164 2 else
165 2 {
166 3
167 3 for(x=x2;x<=x1;x++)
168 3 {
169 4 y=k*x+b ;
170 4 show_pixel(x,y,mode);
171 4 }
172 3 }
173 2
174 2
175 2 }
176 1 else
177 1 {
178 2
179 2 k=(float)(x2-x1)/(float)(y2-y1);
C51 COMPILER V7.08 CTL_MUEN_240128 08/31/2005 02:48:49 PAGE 4
180 2 b=x1-k*y1 ;
181 2 if(y1<=y2)
182 2 {
183 3 for(y=y1;y<=y2;y++)
184 3 {
185 4 x=k*y+b ;
186 4 show_pixel(x,y,mode);
187 4 }
188 3 }
189 2 else
190 2 {
191 3
192 3 for(y=y2;y<=y1;y++)
193 3 {
194 4 x=k*y+b ;
195 4 show_pixel(x,y,mode);
196 4 }
197 3 }
198 2 }
199 1 }
200
201 void circle(unsigned char x0,unsigned char y0,unsigned char Rx, bit s)
202 {
203 1 unsigned int xx,rr,xt,yt,rs,row,col;
204 1 yt=Rx;
205 1 rr=Rx*Rx+1; //补偿 1 修正方形
206 1 rs=(yt+(yt>>1))>>1; //(*0.75)分开1/8圆弧来画
207 1 for (xt=0;xt<=rs;xt++)
208 1 {
209 2 xx=xt*xt;
210 2 while ((yt*yt)>(rr-xx))yt--;
211 2 row=x0+xt; //第一象限
212 2 col=y0-yt;
213 2 show_pixel(row,col,s);
214 2 row=x0-xt; //第二象限
215 2 show_pixel(row,col,s);
216 2 col=y0+yt; //第三象限
217 2 show_pixel(row,col,s);
218 2 row=x0+xt; //第四象限
219 2 show_pixel(row,col,s);
220 2
221 2 /***************45度镜象画另一半***************/
222 2
223 2 row=x0+yt; //第一象限
224 2 col=y0-xt;
225 2 show_pixel(row,col,s);
226 2 row=x0-yt; //第二象限
227 2 show_pixel(row,col,s);
228 2 col=y0+xt; //第三象限
229 2 show_pixel(row,col,s);
230 2 row=x0+yt; //第四象限
231 2 show_pixel(row,col,s);
232 2 }
233 1 }
234
235 //--------to draw the square in the lcm--------------//
236 void draw_fill_Square(unsigned char x1,unsigned char y1,unsigned char x2,unsigned char y2,bit mode)
237 {
238 1 unsigned char ii,jj;
239 1
240 1 for(ii=y1;ii<abs(y2);ii++)
241 1 {
C51 COMPILER V7.08 CTL_MUEN_240128 08/31/2005 02:48:49 PAGE 5
242 2 for(jj=x1;jj<abs(x2);jj++)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -