📄 dds9954.lst
字号:
222 ** 输 出: 无
223 ** 全局变量: 无
224 ** 调用模块: 无
225 ***********************************************************************/
226
227 void AD9954_Update(void)
228 {
229 1
230 1 IO_UPDATE_0();
231 1
232 1 nNop(40);
233 1 IO_UPDATE_1();
234 1 }
235
236
237 void AD9954_LinearSweep_Init(void)
238 {
239 1
240 1 WriteByte(0x00);
241 1
C51 COMPILER V8.02 DDS9954 04/08/2008 23:07:51 PAGE 5
242 1 WriteByte(0x00);
243 1 WriteByte(0x20);
244 1 WriteByte(0x00);
245 1 WriteByte(0x44);
246 1 AD9954_Update();
247 1
248 1 }
249
250 void AD9954_LinearSweep_Freq(void)
251 {
252 1
253 1
254 1
255 1 WriteByte(0x04);
256 1
257 1 WriteByte(0x00);
258 1 WriteByte(0x09);
259 1 WriteByte(0xD4);
260 1 WriteByte(0x95);
261 1
262 1 WriteByte(0x06);
263 1
264 1 WriteByte(0x00);
265 1 WriteByte(0x16);
266 1 WriteByte(0xF0);
267 1 WriteByte(0x06);
268 1
269 1
270 1
271 1 WriteByte(0x07);
272 1
273 1 WriteByte(0xFF);
274 1 WriteByte(0x00);
275 1 WriteByte(0x00);
276 1 WriteByte(0x00);
277 1 WriteByte(0x0B);
278 1
279 1
280 1 WriteByte(0x08);
281 1
282 1 WriteByte(0xFF);
283 1 WriteByte(0x00);
284 1 WriteByte(0x00);
285 1 WriteByte(0x00);
286 1 WriteByte(0x0B);
287 1 AD9954_Update();
288 1 }
289
290
291 //*******************************************
292 //*函数名称:void Parallel_Check_Busy(void) *
293 //*函数功能:并行方式查忙 *
294 //*形式参数:无 *
295 //*形参说明:无 *
296 //*返回参数:无 *
297 //*使用说明:无 *
298 //*******************************************
299 void Parallel_Check_Busy(void)
300 {
301 1 bit temp;
302 1 P2 = 0xff; //输入前置1
303 1 RS = 0; //指令
C51 COMPILER V8.02 DDS9954 04/08/2008 23:07:51 PAGE 6
304 1 RW = 1; //读模式
305 1 do
306 1 {
307 2 E = 1; //使能
308 2 temp = BUSY;
309 2 E = 0;
310 2 }
311 1 while(temp);//等待不忙
312 1 }
313
314
315 //************************************************************************************
316 //*函数名称:void Parallel_Write_LCD( bit b_Data_Command , unsigned char uc_Content ) *
317 //*函数功能:并行模式向LCD发送数据或指令 *
318 //*形式参数:bit b_Data_Command , unsigned char uc_Content *
319 //*形参说明:数据或指令的标志位,指令或数据的内容 *
320 //*返回参数:无 *
321 //*使用说明:无 *
322 //************************************************************************************
323 void Parallel_Write_LCD( bit b_Data_Command , unsigned char uc_Content )
324 {
325 1 Parallel_Check_Busy();
326 1 if(b_Data_Command)
327 1 {
328 2 RS = 1; //数据
329 2 RW = 0; //写模式
330 2 }
331 1 else
332 1 {
333 2 RS = 0; //指令
334 2 RW = 0; //写模式
335 2 }
336 1 P2=uc_Content;//数据放到P1口上
337 1 E = 1;
338 1 _nop_();//很重要
339 1 _nop_();
340 1 _nop_();
341 1 E = 0;
342 1 }
343
344
345 //********************************************
346 //*函数名称:uc_Parallel_Read_LCD_Data *
347 //*函数功能:并行读LCD数据 *
348 //*形式参数:无 *
349 //*形参说明:无 *
350 //*返回参数:读回的数据 *
351 //*使用说明:无 *
352 //********************************************
353 uchar uc_Parallel_Read_LCD_Data(void)
354 {
355 1 uchar uc_Content;
356 1 Parallel_Check_Busy();
357 1 P2 = 0xff; //输入前置1
358 1 RS = 1; //数据
359 1 RW = 1; //读模式
360 1 E = 1; //使能
361 1 uc_Content = P2; //P1口的内容放到变量中
362 1 E = 0;
363 1 return uc_Content;
364 1 }
365
C51 COMPILER V8.02 DDS9954 04/08/2008 23:07:51 PAGE 7
366 //*************************************************************
367 //*函数名称:void Parallel_DDRAM_Address_Set(uchar ucDDramAdd) *
368 //*函数功能:设定DDRAM(文本区)地址到地址计数器AC *
369 //*形式参数:uchar ucDDramAdd *
370 //*行参说明:具体地址 *
371 //*格式说明: *
372 //* RS RW DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 *
373 //* 0 0 1 AC6 AC5 AC4 AC3 AC2 AC1 AC0 *
374 //*返回参数:无 *
375 //*使用说明: *
376 //* 第一行地址:80H~8FH *
377 //* 第二行地址:90H~9FH *
378 //* 第三行地址:A0H~AFH *
379 //* 第四行地址:B0H~BFH *
380 //*************************************************************
381 void Parallel_DDRAM_Address_Set(uchar ucDDramAdd)
382 {
383 1 Parallel_Write_LCD(COMMAND,BASIC_FUNCTION); //基本指令集
384 1 Parallel_Write_LCD(COMMAND,ucDDramAdd); //设定DDRAM地址到地址计数器AC
385 1 }
386
387
388 //*************************************************************
389 //*函数名称:void Parallel_CGRAM_Address_Set(uchar ucCGramAdd) *
390 //*函数功能:设定CGRAM(自定义字库区)地址到地址计数器AC *
391 //*形式参数:uchar ucCGramAdd *
392 //*形参说明:具体地址 *
393 //*格式说明: *
394 //* RS RW DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 *
395 //* 0 0 0 1 AC5 AC4 AC3 AC2 AC1 AC0 *
396 //*返回参数:无 *
397 //*使用说明:地址范围为40H~3FH *
398 //*************************************************************
399 void Parallel_CGRAM_Address_Set(uchar ucCGramAdd)
400 {
401 1 Parallel_Write_LCD(COMMAND,BASIC_FUNCTION); //基本指令集
402 1 Parallel_Write_LCD(COMMAND,ucCGramAdd); //设定CGRAM地址到地址计数器AC
403 1 }
404
405
406 //*******************************************************************************
407 //*函数名称:void Parallel_GDRAM_Address_Set(uchar ucGDramAdd) *
408 //*函数功能:设定GDRAM(图形区)地址到地址计数器AC *
409 //*形式参数:uchar ucGDramAdd *
410 //*形参说明:具体地址值 *
411 //* RS RW DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 *
412 //* 0 0 1 AC6 AC5 AC4 AC3 AC2 AC1 AC0 *
413 //* 先设定垂直位置再设定水平位置(连续写入两个字节完成垂直和水平位置的设置) *
414 //* 垂直地址范围:AC6~AC0 *
415 //* 水平地址范围:AC3~AC0 *
416 //*返回参数:无 *
417 //*使用说明:必须在扩展指令集的情况下使用 *
418 //*******************************************************************************
419 void Parallel_GDRAM_Address_Set(uchar ucGDramAdd)
420 {
421 1 Parallel_Write_LCD(COMMAND,EXTEND_FUNCTION); //扩展指令集
422 1 Parallel_Write_LCD(COMMAND,ucGDramAdd);
423 1 }
424
425
426
427 //*******************************************
C51 COMPILER V8.02 DDS9954 04/08/2008 23:07:51 PAGE 8
428 //*函数名称:void Parallel_Init_LCD(void) *
429 //*函数功能:并行初始化LCD *
430 //*形式参数:无 *
431 //*形参说明:无 *
432 //*返回参数:无 *
433 //*使用说明:无 *
434 //*******************************************
435 void Parallel_Init_LCD(void)
436 {
437 1 RST = 1; //复位后拉高,停止复位
438 1 PSB = 1; //选择并行传输模式
439 1 Parallel_Write_LCD(COMMAND,BASIC_FUNCTION); //基本指令动作
440 1 Parallel_Write_LCD(COMMAND,CLEAR_SCREEN); //清屏,地址指针指向00H
441 1 Parallel_Write_LCD(COMMAND,0x06); //光标的移动方向
442 1 Parallel_Write_LCD(COMMAND,0x0c); //开显示,关游标
443 1
444 1 }
445
446
447
448 //********************************************************
449 //*函数名称:void Parallel_Clear_Ram(void) *
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -