?? dds.lst
字號:
194 //==============================================================
195 //函數名稱:void LCD_Write_Data(uchar Data)
196 //函數功能:送數據給夜晶12864函數
197 //=============================================================
198 void LCD_Write_Data(uchar Data)
199 {
200 1 uchar i,j,tem=0xfa;
201 1 CS=1;
202 1 for(i=8;i>0;i--)
203 1 {
204 2 SCLK=0;
205 2 SID=tem&0x80;
206 2 SCLK=1;
207 2 tem<<=1;
208 2 }
209 1
210 1 for(j=2;j>0;j--)
211 1 for(i=8;i>0;i--)
212 1 {
213 2 if(i>4) //送高四位
214 2 {
215 3 SCLK=0;
216 3 SID=Data&0x80;
217 3 SCLK=1;
218 3 Data<<=1;
219 3 }
220 2 else //低四位為"0"
221 2 {
222 3 SCLK=0;
223 3 SID=0;
224 3 SCLK=1;
225 3 }
226 2
227 2 }
228 1
229 1 CS=0;
230 1 }
231
232
233 //=====================================================
234 //函數名稱:void display()
235 //函數功能:顯示選擇的波形,調用前先送液晶地址
236 //=====================================================
237 void display()
238 {
239 1 uchar i,j,k;
240 1 a[0]=f/10000000;
241 1 a[1]=f/1000000%10;
C51 COMPILER V8.02 DDS 05/23/2008 13:58:50 PAGE 5
242 1 a[2]=f/100000%10;
243 1 a[3]=f/10000%10;
244 1 a[4]=f/1000%10;
245 1 a[5]=f/100%10;
246 1 a[6]=f/10%10;
247 1 a[7]=f%10;
248 1
249 1 LCD_Write_order(0x93);
250 1 for(i=0; i<8; i++) //在液晶12864上顯示頻率
251 1 {
252 2 LCD_Write_Data(table[a[i]]);
253 2 }
254 1 LCD_Write_order(0x97);
255 1 for(j=0;j<2;j++)
256 1 {
257 2 LCD_Write_Data(line5[j]);
258 2 }
259 1
260 1
261 1 a[0]=fudu/10; //在液晶12864上顯示幅值
262 1 a[1]=fudu%10;
263 1 LCD_Write_order(0x8b);
264 1 LCD_Write_Data(table[a[0]]);
265 1 LCD_Write_Data(sb[0]);
266 1 LCD_Write_order(0x8c);
267 1 LCD_Write_Data(table[a[1]]);
268 1 LCD_Write_order(0x8d);
269 1 for(k=0;k<6;k++)
270 1 {
271 2 LCD_Write_Data(line6[k]);
272 2 }
273 1
274 1
275 1
276 1 switch(boxing_flag)
277 1 {
278 2 case 0: LCD_Write_order(0x9b); //顯示正弦波
279 2 for(j=0;j<4;j++)
280 2 LCD_Write_Data(wavetype[j]);
281 2 LCD_Write_order(0x9d);
282 2 for(k=0;k<6;k++)
283 2 {
284 3 LCD_Write_Data(line6[k]);
285 3 }
286 2 break;
287 2
288 2 case 1: LCD_Write_order(0x9b); //顯示方波
289 2 for(j=6;j<12;j++)
290 2 LCD_Write_Data(wavetype[j]);
291 2 break;
292 2
293 2
294 2 case 2:LCD_Write_order(0x9b); //顯示三角波
295 2 for(j=12;j<18;j++)
296 2 LCD_Write_Data(wavetype[j]);
297 2 break;
298 2 case 3: LCD_Write_order(0x9b); //顯示鋸齒波
299 2 for(j=18;j<24;j++)
300 2 LCD_Write_Data(wavetype[j]);
301 2 break;
302 2
303 2 default: break;
C51 COMPILER V8.02 DDS 05/23/2008 13:58:50 PAGE 6
304 2 }
305 1
306 1 }
307
308
309 //=====================================================
310 //函數名稱:void DS1804_Inc_N_Step()
311 //函數功能:數字電位器向上調2步
312 //=====================================================
313 void DS1804_Inc_N_Step()
314 {
315 1 unsigned char i=0;
316 1 DS1804_UD=1; // UD 拉高, 則INC下降沿,執行UP操作
317 1 DS1804_CS=0; // CS 拉低
318 1 for(i=0;i<2;i++)
319 1 {
320 2 DS1804_INC=1; // 拉高INC ,使INC的下沿有效
321 2 DS1804_INC=0; // INC 拉低, 產生一個下沿
322 2 }
323 1 DS1804_INC=1;// 完畢CS拉高 ,存儲
324 1 }
325
326
327 //=====================================================
328 //函數名稱:void DS1804_Dec_N_Step()
329 //函數功能:數字電位器向下調2步
330 //=====================================================
331 void DS1804_Dec_N_Step()
332 {
333 1 unsigned char i=0;
334 1 DS1804_UD=0; // U/D 清0, 則下面的INC下沿,執行Down操作
335 1 DS1804_CS=0; // CS 拉低
336 1 for(i=0;i<2;i++)
337 1 {
338 2 DS1804_INC=1; // 拉高INC 因為INC的下沿有效
339 2 DS1804_INC=0; // INC 拉低; // 產生一個下沿
340 2 }
341 1 DS1804_CS=1; // 完畢CS拉高 ,存儲
342 1
343 1 }
344
345
346 //主函數
347 void main(void)
348 {
349 1 init12864(); //初始化12864函數
350 1 f=100;
351 1 fudu=5;
352 1 boxing_flag=0;
353 1 while(1)
354 1 {switch (keyscan())
355 2 {
356 3 case 0: break;
357 3
358 3
359 3 case 1: f+=100;if(f>596000||f<0)f=100;break;
360 3 case 2: f-=100;if(f>596000||f<0)f=100;break;
361 3 case 3: boxing_flag++;
362 3 if (boxing_flag==4)
363 3 boxing_flag=0; break;
364 3 case 4: DS1804_Inc_N_Step();fudu+=1;if(fudu>50||fudu<0)fudu=1;display();break;
365 3 case 5: DS1804_Dec_N_Step();fudu-=1;if(fudu>50||fudu<0)fudu=1;display();break;
C51 COMPILER V8.02 DDS 05/23/2008 13:58:50 PAGE 7
366 3 default: break;
367 3 }
368 2
369 2 dectohex(f);
370 2 display();
371 2
372 2 type_gettype();
373 2 display();
374 2
375 2 }
376 1
377 1 }
378
379
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1172 ----
CONSTANT SIZE = 114 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 20 5
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -