⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dds.lst

📁 这个是我们做过的波形发生器的单片机程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
 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 + -