原创 ad9954+8051

2009-3-20 09:53 1553 2 3 分类: MCU/ 嵌入式

  1. //                      液晶控制芯片ST7920驱动源文件                   *    
  2. //                                                                      *    
  3. //硬件连接说明:                                                       *    
  4. //                                                                      *    
  5. //              RS(CS)    -----------------------------  P3^1           *    
  6. //              R/W(STD)  -----------------------------  P3^4           *    
  7. //              E(SCLK)   -----------------------------  P3^5           *    
  8. //              PSB       -----------------------------  P0^1           *    
  9. //              RST       -----------------------------  P0^0           *    
  10. //              DB0       -----------------------------  P1^0           *    
  11. //              DB1       -----------------------------  P1^1           *    
  12. //              DB2       -----------------------------  P1^2           *    
  13. //              DB3       -----------------------------  P1^3           *    
  14. //              DB4       -----------------------------  P1^4           *    
  15. //              DB5       -----------------------------  P1^5           *    
  16. //              DB6       -----------------------------  P1^6           *    
  17. //              DB7(BUSY) -----------------------------  P1^7           *    
  18. //                                                                      *    
  19. //***********************************************************************    
  20.    
  21. #include <REG52.H>    
  22. #include<INTRINS.H>    
  23. #include<STRING.H>    
  24. #define uchar unsigned char    
  25. #define uint  unsigned int    
  26.    
  27. #define  COUNT    0x10    
  28.    
  29. //每行的首地址,基于RT12864-4M型液晶    
  30. #define LINE_ONE_ADDRESS   0x80    
  31. #define LINE_TWO_ADDRESS   0x90    
  32. #define LINE_THREE_ADDRESS 0x88    
  33. #define LINE_FOUR_ADDRESS  0x98    
  34.    
  35. //基本指令集预定义    
  36. #define DATA                1           //数据位    
  37. #define COMMAND             0           //命令位    
  38. #define CLEAR_SCREEN        0x01        //清屏        
  39. #define ADDRESS_RESET       0x02        //地址归零       
  40. #define BASIC_FUNCTION      0x30        //基本指令集    
  41. #define EXTEND_FUNCTION     0x34        //扩充指令集    
  42.    
  43.    
  44. //扩展指令集预定义    
  45. #define AWAIT_MODE          0x01        //待命模式      
  46. #define ROLLADDRESS_ON      0x03        //允许输入垂直卷动地址    
  47. #define IRAMADDRESS_ON      0x02        //允许输入IRAM地址        
  48. #define SLEEP_MODE          0x08        //进入睡眠模式    
  49. #define NO_SLEEP_MODE       0x0c        //脱离睡眠模式    
  50. #define GRAPH_ON            0x36        //打开绘图模式    
  51. #define GRAPH_OFF           0x34        //关闭绘图模式    
  52.    
  53.    
  54. //并行位定义    
  55. sbit RS=P1^4;   
  56. sbit RW=P1^5;   
  57. sbit E= P1^6;   
  58.    
  59. sbit BUSY=P2^7;   
  60.    
  61. //控制位定义    
  62. sbit PSB = P1^7;    //串并选择信号    
  63. sbit RST = P3^0;    //复位信号    
  64.    
  65.    
  66. uchar code Tab1[]="扫频仪";  //显示在第一行    
  67. uchar code Tab2[]="起始频率:  3KHz";//显示在第二行    
  68. uchar code Tab3[]="终止频率:  7KHz";//显示在第三行    
  69. uchar code Tab4[]="扫描时间:  4s";//显示在第四行    
  70. uchar code Tab5[]={0x54,0xf4};   
  71.    
  72. unsigned long CFR1 ;                             
  73. unsigned long CFR2 = 0;                       
  74. unsigned long FTW0;                              
  75. unsigned long FTW1;   
  76. unsigned long NLSCW;   
  77. unsigned long PLSCW;   
  78. unsigned long multfreq = 0xFFFFFFFF;    //计算频率控制字的系数    
  79.    
  80.    
  81.    
  82.    
  83.    
  84. //51引脚定义    
  85. sbit  IO_UPDATE = P0^0;   
  86. sbit  PS1       = P0^1;   
  87. sbit  PS0       = P0^2;   
  88. sbit  IO_SYNC   = P0^3;   
  89. sbit  SDIO      = P0^4;   
  90. sbit  SCLK      = P0^5;   
  91. sbit  CS        = P0^6;   
  92. sbit  SDO       = P0^7;   
  93.    
  94.    
  95. sbit  CS2       = P1^0;   
  96. sbit  PWR       = P1^1;   
  97. sbit  CLKMS     = P1^2;   
  98. sbit  RET       = P1^3;   
  99.    
  100.    
  101.    
  102. /***********************************************************************   
  103. ** 函数名称:    端口操作   
  104. ** 功能描述:    AD9954端口基本操作   
  105. ** 输 入:     无        
  106. ** 输 出:      无   
  107. ** 全局变量:    无   
  108. ** 调用模块:    无   
  109. ***********************************************************************/   
  110. void SCLK_0(void)   
  111. {    
  112.   SCLK = 0;   
  113. }   
  114.    
  115.    
  116. void SCLK_1(void)   
  117. {   
  118.   SCLK = 1;   
  119. }   
  120.    
  121.    
  122. void SDIO_0(void)   
  123. {   
  124.   SDIO = 0;   
  125. }   
  126.    
  127.    
  128. void SDIO_1(void)   
  129. {   
  130.   SDIO = 1;   
  131. }   
  132.     
  133.    
  134.    
  135.    
  136. void IO_UPDATE_0(void)   
  137. {   
  138.   IO_UPDATE = 0;   
  139. }   
  140.    
  141. void IO_UPDATE_1(void)   
  142. {   
  143.   IO_UPDATE = 1;   
  144. }   
  145.    
  146.    
  147.    
  148.    
  149. /***********************************************************************  
  150. ** 函数名称:    IO9954_Init  
  151. ** 功能描述:    IO_Init  
  152. ** 输 入:         无        
  153. ** 输 出:      无  
  154. ** 全局变量:    无  
  155. ** 调用模块:    无  
  156. ***********************************************************************/   
  157. void IO9954_Init()   
  158. {      
  159.     CS2= 0;   
  160.     PWR=0;   
  161.     CLKMS=0;   
  162.     RET=0;   
  163.    
  164.    IO_UPDATE = 0;   
  165.  // PS1         = 0;    
  166. //  PS0         = 0;    
  167.   IO_SYNC   = 0;   
  168.   SDIO      = 0;   
  169.   SCLK      = 0;   
  170.     CS      = 0;   
  171. //  SDO     = 0;    
  172. }   
  173.    
  174. /***********************************************************************  
  175. ** 函数名称:    nNop  
  176. ** 功能描述:    US级软件延时(不精确)  
  177. ** 输 入:     延时参数,值越大时延时越久        
  178. ** 输 出:      无  
  179. ** 全局变量:    无  
  180. ** 调用模块:    无  
  181. ***********************************************************************/   
  182. void nNop(unsigned long nValue)   
  183. {   
  184.   unsigned long i;   
  185.   for(i=nValue;i>0;i--);   
  186. }   
  187.    
  188. /***********************************************************************  
  189. ** 函数名称:    WriteByte  
  190. ** 功能描述:    向AD9954发送一字节数据 MSB FIRST  
  191. ** 输 入:     unsigned char data   发送的数据       
  192. ** 输 出:      无  
  193. ** 全局变量:    无  
  194. ** 调用模块:    端口操作 nNop  
  195. ***********************************************************************/   
  196. void WriteByte(unsigned char Data)   
  197. {   
  198.   unsigned char k;   
  199.   for(k=0;k<8;k++)    
  200.   {    
  201.    SCLK_0();   
  202.    nNop(4);     //延时很重要    
  203.    if((Data&0x80) == 0x80)   
  204.      SDIO_1();   
  205.    else   
  206.      SDIO_0();   
  207.    Data = Data << 1;   
  208.    nNop(2);    //延时很重要    
  209.    SCLK_1();   
  210.    nNop(4);    //延时很重要    
  211.   }   
  212. }   
  213.    
  214.    
  215.    
  216.    
  217. /***********************************************************************  
  218. ** 函数名称:    更新寄存器操作  
  219. ** 功能描述:    每次更新寄存器的固定操作  
  220. ** 输 入:     无        
  221. ** 输 出:      无  
  222. ** 全局变量:    无  
  223. ** 调用模块:    无  
  224. ***********************************************************************/   
  225.    
  226. void AD9954_Update(void)   
  227. {   
  228.    
  229.  IO_UPDATE_0();   
  230.     
  231.  nNop(40);   
  232.  IO_UPDATE_1();    
  233. }   
  234.    
  235.    
  236. void  AD9954_LinearSweep_Init(void)   
  237. {   
  238.    
  239. WriteByte(0x00);   
  240.    
  241. WriteByte(0x00);   
  242. WriteByte(0x20);   
  243. WriteByte(0x00);   
  244. WriteByte(0x44);   
  245. AD9954_Update();   
  246.    
  247. }   
  248.    
  249. void  AD9954_LinearSweep_Freq(void)   
  250.  {   
  251.    
  252.     
  253.     
  254.   WriteByte(0x04);   
  255.      
  256.   WriteByte(0x00);   
  257.   WriteByte(0x09);   
  258.   WriteByte(0xD4);   
  259.   WriteByte(0x95);   
  260.    
  261.   WriteByte(0x06);   
  262.      
  263.   WriteByte(0x00);   
  264.   WriteByte(0x16);   
  265.   WriteByte(0xF0);   
  266.   WriteByte(0x06);   
  267.    
  268.    
  269.    
  270.   WriteByte(0x07);   
  271.      
  272.   WriteByte(0xFF);   
  273.   WriteByte(0x00);   
  274.   WriteByte(0x00);   
  275.   WriteByte(0x00);   
  276.   WriteByte(0x0B);   
  277.    
  278.    
  279.   WriteByte(0x08);   
  280.      
  281.   WriteByte(0xFF);   
  282.   WriteByte(0x00);   
  283.   WriteByte(0x00);   
  284.   WriteByte(0x00);   
  285.   WriteByte(0x0B);   
  286.   AD9954_Update();   
  287. }   
  288.    
  289.    
  290. //*******************************************    
  291. //*函数名称:void Parallel_Check_Busy(void)  *    
  292. //*函数功能:并行方式查忙                  *    
  293. //*形式参数:无                               *    
  294. //*形参说明:无                               *    
  295. //*返回参数:无                               *    
  296. //*使用说明:无                               *    
  297. //*******************************************    
  298. void Parallel_Check_Busy(void)   
  299. {   
  300.     bit temp;   
  301.     P2 = 0xff;  //输入前置1    
  302.     RS = 0;     //指令    
  303.     RW = 1;     //读模式    
  304.     do   
  305.     {      
  306.         E  = 1;  //使能    
  307.         temp = BUSY;   
  308.         E  = 0;   
  309.     }   
  310.     while(temp);//等待不忙    
  311. }   
  312.    
  313.    
  314. //************************************************************************************    
  315. //*函数名称:void Parallel_Write_LCD( bit b_Data_Command , unsigned char uc_Content ) *    
  316. //*函数功能:并行模式向LCD发送数据或指令                                              *    
  317. //*形式参数:bit b_Data_Command , unsigned char uc_Content                            *    
  318. //*形参说明:数据或指令的标志位,指令或数据的内容                                       *    
  319. //*返回参数:无                                                                        *    
  320. //*使用说明:无                                                                        *    
  321. //************************************************************************************    
  322. void Parallel_Write_LCD( bit b_Data_Command , unsigned char uc_Content )   
  323. {   
  324.     Parallel_Check_Busy();   
  325.     if(b_Data_Command)   
  326.      {   
  327.         RS = 1;   //数据    
  328.         RW = 0;   //写模式    
  329.      }   
  330.     else    
  331.      {   
  332.         RS = 0;   //指令    
  333.         RW = 0;   //写模式    
  334.      }   
  335.     P2=uc_Content;//数据放到P1口上    
  336.     E = 1;   
  337.     _nop_();//很重要     
  338.     _nop_();   
  339.     _nop_();   
  340.     E = 0;                                                         
  341. }   
  342.    
  343.    
  344. //********************************************    
  345. //*函数名称:uc_Parallel_Read_LCD_Data        *    
  346. //*函数功能:并行读LCD数据                     *    
  347. //*形式参数:无                                *    
  348. //*形参说明:无                                *    
  349. //*返回参数:读回的数据                        *    
  350. //*使用说明:无                                *    
  351. //********************************************    
  352. uchar uc_Parallel_Read_LCD_Data(void)   
  353. {   
  354.     uchar uc_Content;   
  355.     Parallel_Check_Busy();   
  356.     P2 = 0xff;          //输入前置1    
  357.     RS = 1;             //数据    
  358.     RW = 1;             //读模式    
  359.     E = 1;              //使能    
  360.     uc_Content = P2;    //P1口的内容放到变量中    
  361.     E = 0;   
  362.     return uc_Content;   
  363. }   
  364.    
  365. //*************************************************************    
  366. //*函数名称:void Parallel_DDRAM_Address_Set(uchar ucDDramAdd) *    
  367. //*函数功能:设定DDRAM(文本区)地址到地址计数器AC                *    
  368. //*形式参数:uchar ucDDramAdd                                  *    
  369. //*行参说明:具体地址                                          *    
  370. //*格式说明:                                                  *    
  371. //*     RS  RW  DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0               *    
  372. //*     0   0   1   AC6 AC5 AC4 AC3 AC2 AC1 AC0               *    
  373. //*返回参数:无                                                 *    
  374. //*使用说明:                                                  *    
  375. //* 第一行地址:80H~8FH                                         *    
  376. //* 第二行地址:90H~9FH                                         *    
  377. //* 第三行地址:A0H~AFH                                         *    
  378. //* 第四行地址:B0H~BFH                                         *    
  379. //*************************************************************    
  380. void Parallel_DDRAM_Address_Set(uchar ucDDramAdd)   
  381. {   
  382.     Parallel_Write_LCD(COMMAND,BASIC_FUNCTION);         //基本指令集    
  383.     Parallel_Write_LCD(COMMAND,ucDDramAdd);             //设定DDRAM地址到地址计数器AC    
  384. }   
  385.    
  386.    
  387. //*************************************************************    
  388. //*函数名称:void Parallel_CGRAM_Address_Set(uchar ucCGramAdd) *    
  389. //*函数功能:设定CGRAM(自定义字库区)地址到地址计数器AC         *    
  390. //*形式参数:uchar ucCGramAdd                                  *    
  391. //*形参说明:具体地址                                          *    
  392. //*格式说明:                                                  *    
  393. //*     RS  RW  DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0               *    
  394. //*     0   0   0   1   AC5 AC4 AC3 AC2 AC1 AC0               *    
  395. //*返回参数:无                                                 *    
  396. //*使用说明:地址范围为40H~3FH                                  *    
  397. //*************************************************************    
  398. void Parallel_CGRAM_Address_Set(uchar ucCGramAdd)   
  399. {   
  400.     Parallel_Write_LCD(COMMAND,BASIC_FUNCTION);         //基本指令集    
  401.     Parallel_Write_LCD(COMMAND,ucCGramAdd);             //设定CGRAM地址到地址计数器AC    
  402. }   
  403.    
  404.    
  405. //*******************************************************************************    
  406. //*函数名称:void Parallel_GDRAM_Address_Set(uchar ucGDramAdd)                   *    
  407. //*函数功能:设定GDRAM(图形区)地址到地址计数器AC                                  *    
  408. //*形式参数:uchar ucGDramAdd                                                    *    
  409. //*形参说明:具体地址值                                                           *    
  410. //*     RS  RW  DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0                                 *    
  411. //*     0   0   1   AC6 AC5 AC4 AC3 AC2 AC1 AC0                                 *    
  412. //*     先设定垂直位置再设定水平位置(连续写入两个字节完成垂直和水平位置的设置)    *       
  413. //*     垂直地址范围:AC6~AC0                                                  *    
  414. //*     水平地址范围:AC3~AC0                                                  *    
  415. //*返回参数:无                                                                   *    
  416. //*使用说明:必须在扩展指令集的情况下使用                                      *    
  417. //*******************************************************************************    
  418. void Parallel_GDRAM_Address_Set(uchar ucGDramAdd)   
  419. {   
  420.     Parallel_Write_LCD(COMMAND,EXTEND_FUNCTION);            //扩展指令集    
  421.     Parallel_Write_LCD(COMMAND,ucGDramAdd);        
  422. }   
  423.    
  424.    
  425.    
  426. //*******************************************    
  427. //*函数名称:void Parallel_Init_LCD(void)    *    
  428. //*函数功能:并行初始化LCD                    *    
  429. //*形式参数:无                               *    
  430. //*形参说明:无                               *    
  431. //*返回参数:无                               *    
  432. //*使用说明:无                               *    
  433. //*******************************************    
  434. void Parallel_Init_LCD(void)   
  435. {   
  436.     RST = 1;                                    //复位后拉高,停止复位    
  437.     PSB = 1;                                    //选择并行传输模式          
  438.     Parallel_Write_LCD(COMMAND,BASIC_FUNCTION); //基本指令动作       
  439.     Parallel_Write_LCD(COMMAND,CLEAR_SCREEN);   //清屏,地址指针指向00H    
  440.     Parallel_Write_LCD(COMMAND,0x06);           //光标的移动方向    
  441.     Parallel_Write_LCD(COMMAND,0x0c);           //开显示,关游标    
  442.    
  443. }   
  444.    
  445.    
  446.    
  447. //********************************************************    
  448. //*函数名称:void Parallel_Clear_Ram(void)                *    
  449. //*函数功能:并行清屏函数                               *    
  450. //*形式参数:无                                            *    
  451. //*形参说明:无                                            *    
  452. //*返回参数:无                                            *    
  453. //*使用说明:DDRAM填满20H,并设定DDRAM AC到00H           *    
  454. //*格式说明:                                             *    
  455. //*         RS  RW  DB7  DB6  DB5  DB4  DB3 DB2 DB1 DB0  *    
  456. //*         0   0    0    0    0    0    0   0   0   1   *    
  457. //********************************************************    
  458. void Parallel_Clear_Ram(void)   
  459. {   
  460.     Parallel_Write_LCD(COMMAND,BASIC_FUNCTION);         //基本指令集    
  461.     Parallel_Write_LCD(COMMAND,CLEAR_SCREEN);           //清屏    
  462. }   
  463.    
  464.    
  465. //*****************************************************    
  466. //*函数名称:void Parallel_Graph_Mode_Set(bit bSelect) *    
  467. //*函数功能:打开或关闭绘图显示                         *    
  468. //*形式参数:bit bSelect                               *    
  469. //*形参说明:打开或关闭绘图显示的标志位,1打开,0关闭     *    
  470. //*格式说明:                                          *    
  471. //*     RS  RW  DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0       *    
  472. //*     0   0   0   0   1   DL  X   RE   G   X        *    
  473. //*     DL:0,4bitMPU控制界面                          *    
  474. //*     DL:1,8bitMPU控制界面                          *    
  475. //*     RE:0,基本指令集                                *    
  476. //*     RE:1,扩充指令集                                *    
  477. //*     G :0,绘图显示OFF                              *    
  478. //*     G :1,绘图显示ON                               *    
  479. //*返回参数:无                                         *    
  480. //*使用说明:无                                         *    
  481. //*****************************************************    
  482. void Parallel_Graph_Mode_Set(bit bSelect)   
  483. {   
  484.     Parallel_Write_LCD(COMMAND,EXTEND_FUNCTION);    //扩展指令集    
  485.     if(bSelect)   
  486.     {   
  487.     Parallel_Write_LCD(COMMAND,GRAPH_ON);           //打开绘图模式    
  488.     }   
  489.     else   
  490.     {   
  491.     Parallel_Write_LCD(COMMAND,GRAPH_OFF);          //关闭绘图模式        
  492.     }   
  493. }   
  494.    
  495.    
  496. //*********************************************************************************    
  497. //*函数名称:void Parallel_DisplayStrings_WithAddress(uchar ucAdd,uchar code *p)   *    
  498. //*函数功能:在(文本区)ucAdd指定的位置显示一串字符(或是汉字或是ASCII或是两者混合)  *    
  499. //*形式参数:uchar ucAdd,uchar code *p                                             *    
  500. //*形参说明:指定的位置,要显示的字符串                                             *    
  501. //*地址必须是:80H~8FH,90H~9FH,88H~AFH,98H~BFH                                      *    
  502. //*返回参数:无                                                                     *    
  503. //*使用说明:使用之前要初始化液晶                                                *    
  504. //*********************************************************************************    
  505. void Parallel_DisplayStrings_WithAddress(uchar ucAdd,uchar code *p)   
  506. {   
  507.     uchar length;   
  508.     length = strlen(p);   
  509.     Parallel_Write_LCD(COMMAND,BASIC_FUNCTION);             //基本指令动作       
  510.     Parallel_DDRAM_Address_Set(ucAdd);   
  511.     for( ;  length ; length -- )   
  512.     Parallel_Write_LCD(DATA, *(p++));                      
  513. }   
  514.    
  515.    
  516.    
  517. //****************************************************************    
  518. //*函数名称:void Parallel_ImgDisplay(unsigned char code *img)    *    
  519. //*函数功能:全屏显示128*64个象素的图形                             *    
  520. //*形式参数:unsigned char code *img                              *    
  521. //*形参说明:要显示的图形                                       *    
  522. //*液晶屏坐标说明:                                              *    
  523. //*      _______________________________________________         *    
  524. //*     |(0,0)                                   (7,0) |         *    
  525. //*     |                                              |         *    
  526. //*     |                                              |         *    
  527. //*     |(0,31)                                  (7,31)|         *    
  528. //*     |(8,0)                                   (15,0)|         *    
  529. //*     |                                              |         *    
  530. //*     |                                              |         *    
  531. //*     |(8,31)                                 (15,31)|         *    
  532. //*     |______________________________________________|         *    
  533. //                                                               *    
  534. //返回参数:无                                                     *    
  535. //使用说明:此函数适用于RT12864-4M型液晶                           *    
  536. //****************************************************************    
  537. void Parallel_ImgDisplay(unsigned char code *img)   
  538. {   
  539.     uchar i,j;   
  540.     Parallel_Graph_Mode_Set(0x01); //先关闭图形显示功能    
  541.     for(j=0;j<32;j++)   
  542.      {   
  543.         for(i=0;i<8;i++)   
  544.          {   
  545.             Parallel_Write_LCD(COMMAND,0x80+j);     //设定垂直坐标    
  546.             Parallel_Write_LCD(COMMAND,0x80+i);     //设定水平坐标    
  547.             Parallel_Write_LCD(DATA,img[j*16+i*2]); //放入数据高字节    
  548.             Parallel_Write_LCD(DATA,img[j*16+i*2+1]);   //放入数据低字节    
  549.          }   
  550.      }   
  551.     for(j=32;j<64;j++)   
  552.      {   
  553.         for(i=0;i<8;i++)   
  554.          {   
  555.             Parallel_Write_LCD(COMMAND,0x80+j-32);   
  556.             Parallel_Write_LCD(COMMAND,0x88+i);   
  557.             Parallel_Write_LCD(DATA,img[j*16+i*2]);   
  558.             Parallel_Write_LCD(DATA,img[j*16+i*2+1]);   
  559.          }   
  560.      }   
  561.     Parallel_Graph_Mode_Set(0x00);//最后打开图形显示功能    
  562. }   
  563.    
  564.    
  565.    
  566. //******************************************************************************    
  567. //*函数名称:void Parallel_ImgDisplayCharacter(uchar x,uchar y,uchar code *img) *    
  568. //*函数功能:使用绘图的方法,在(x,y)处画一个16*16点阵的图案,也可以是字符        *    
  569. //*形式参数:uchar x,uchar y,uchar code *img                                    *    
  570. //*         x取值范围:0~15                                                     *    
  571. //*         y取值范围:0~32 (针对RT12864-4M型液晶)                               *    
  572. //*形参说明:坐标水平位置,坐标垂直位置,要显示的图形                               *    
  573. //*液晶屏坐标说明:                                                            *    
  574. //*     _______________128个象素______________________                        *     
  575. //*     |(0,0)                                   (7,0)|                        *    
  576. //*     |                                             |                        *    
  577. //* 6   |                                             |                        *    
  578. //* 4   |(0,31)                                 (7,31)|                        *    
  579. //* 个   |(8,0)                                  (15,0)|                        *    
  580. //* 象   |                                             |                        *    
  581. //* 素   |                                             |                        *    
  582. //*     |(8,31)________________________________(15,31)|                        *    
  583. //*                                                                            *    
  584. //*返回参数:无                                                                  *    
  585. //*使用说明:此函数适用于RT12864-4M型液晶                                    *    
  586. //******************************************************************************    
  587. void Parallel_ImgDisplayCharacter(uchar x,uchar y,uchar code *img)   
  588. {   
  589.     uchar i;   
  590.     Parallel_Graph_Mode_Set(0x01);      //先关闭图形显示功能    
  591.     Parallel_Write_LCD(COMMAND,EXTEND_FUNCTION);   
  592.     for(i=0;i<16;i++)   
  593.      {   
  594.    
  595.            //   Parallel_Write_LCD(COMMAND,0x80+y+i);    
  596.             //Parallel_Write_LCD(COMMAND,0x80+x);    
  597.             Parallel_GDRAM_Address_Set(0x80+y+i);   
  598.             Parallel_GDRAM_Address_Set(0x80+x);   
  599.             Parallel_Write_LCD(DATA,img[i*2]);   
  600.             Parallel_Write_LCD(DATA,img[i*2+1]);   
  601.      }   
  602.    Parallel_Graph_Mode_Set(0x00);               //最后打开图形显示功能    
  603. }   
  604.    
  605.                                        
  606.    
  607.    
  608.    
  609. void main()   
  610. {   
  611.     
  612.   PSB=0;      
  613.   Parallel_Init_LCD();   
  614.   Parallel_DisplayStrings_WithAddress(0x80,Tab1);   
  615.   Parallel_DisplayStrings_WithAddress(0x90,Tab2);   
  616.   Parallel_DisplayStrings_WithAddress(0x88,Tab3);   
  617.   Parallel_DisplayStrings_WithAddress(0x98,Tab4);   
  618.      
  619.   IO9954_Init();   
  620.   PS1=0;   
  621.   PS0=0;   
  622.   AD9954_LinearSweep_Init();   
  623.     
  624.  while(1)   
  625. {   
  626.      
  627.    
  628.  PS0=0;   
  629.  nNop(2);   
  630.  PS0=1;   
  631.   AD9954_LinearSweep_Freq();   
  632.      
  633.     
  634. }   
  635. }   
  636.    
PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户377235 2013-10-23 11:25

3q

用户1456817 2009-7-14 09:55

有没有用内部存储器产生任意波形的程序或是资料啊?发给我参考下,先谢谢啦,我的邮箱是huangxinqing1987@126.com
相关推荐阅读
用户202896 2009-03-20 11:39
ad9954
https://static.assets-stash.eet-china.com/album/old-resources/2009/3/20/797db516-16c1-446b-b01c-d92d...
用户202896 2009-03-20 09:52
ad9954+8051
全国赛我们组写的用51控制AD9954的程序,发上来给大家分享一下.文章发表于:2007-11-16 16:04#include<reg52.h>#define PLL_M 6#defin...
用户202896 2009-03-20 09:50
ad9954
https://static.assets-stash.eet-china.com/album/old-resources/2009/3/20/4d8ca128-94ed-4e70-827a-5a01...
用户202896 2009-03-20 09:31
ad9954
高性能DDS芯片AD9954及其应用摘要:AD9954是美国AD公司采用先进的DDS技术生产的高集成度频率合成器,它能产生200MHz的模拟正弦波。文章介绍了AD9954的基本特点和引脚功能,分析了其...
用户202896 2009-03-20 09:25
ad9954
摘要:AD9954是美国AD公司采用先进的DDS技术生产的高集成度频率合成器,它能产生200MHz的模拟正弦波。文章介绍了AD9954的基本特点和引脚功能,分析了其内部结构和工作原理,给出了AD995...
我要评论
1
2
关闭 站长推荐上一条 /2 下一条