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

📄 dds.lst

📁 这个是我们做过的波形发生器的单片机程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.02   DDS                                                                   05/23/2008 13:58:50 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE DDS
OBJECT MODULE PLACED IN dds.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE dds.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <reg52.h>
   2          #include <intrins.h>
   3          #include<absacc.h>
   4          
   5          #define uchar unsigned char          //类型重定义
   6          #define uint  unsigned int           //类型重定义
   7          
   8          sbit CS=P3^5;          // LCD_4   选通
   9          sbit SID=P3^6;         // LCD_5   串行数据输入端
  10          sbit SCLK=P3^7;        // LCD_6   串行时钟
  11          
  12          uchar code line1[14]={"频率步进:100Hz"};
  13          uchar code line5[2]={"Hz"};
  14          uchar code line2[14]={"频率:     "};
  15          uchar code line3[16]={"幅值:  V"};
  16          uchar code line4[16]={"波形:     "};
  17          uchar code line6[16]={"          "};
  18          uchar sb[]={"."};
  19          
  20          uchar code table[]={"0123456789 "};  //半字符数字码表
  21          uchar  a[8]={0,0,0,0,0,0,0,0};                  //装载要显示频率的数组
  22          
  23          long int f=0;     //输入的频率
  24          uchar fudu=0;     //输入的幅度
  25          uchar code wavetype[24]={"sin   方波  叁角波锯齿波"};
  26          
  27          sbit DS1804_CS=P1^5;   //  DS1804端口定义
  28          sbit DS1804_INC=P1^6; 
  29          sbit DS1804_UD=P1^7;
  30             
  31          unsigned char key, key_flag1,boxing_flag;
  32          unsigned char Data[2]; 
  33          sbit P12=P1^2;sbit P13=P1^3;
  34          sbit pinlv1=P3^0;sbit pinlv2=P3^1;sbit boxing=P3^2;sbit fudu1=P3^3;sbit fudu2=P3^4;
  35          
  36          unsigned char keyhh();
  37          void init12864() ;
  38          void LCD_Write_order(uchar Command);
  39          void LCD_Write_Data(uchar ddd);
  40          void display();
  41          void DS1804_Inc_N_Step();
  42          void DS1804_Dec_N_Step();
  43          
  44          
  45          //==============================================================
  46          //函数名称:void delay(unsigned int n) 
  47          //函数功能:延时函数
  48          //=============================================================
  49          void delay(unsigned int n)                                                                      
  50          
  51          {
  52   1           unsigned int i,j;
  53   1             for(i=0;i<n;i++)
  54   1                for(j=0;j<n;j++)  ;
  55   1      }
C51 COMPILER V8.02   DDS                                                                   05/23/2008 13:58:50 PAGE 2   

  56          
  57          
  58          //==============================================================
  59          //函数名称:void dectohex(f) 
  60          //函数功能:十进制频率控制字数值转换十六进制数值,分为高8位与低8位
  61          //=============================================================
  62          void dectohex(f)
  63          { long int Ds;
  64   1        unsigned int az;
  65   1          Ds=f/3;
  66   1              //Ds=Ds*100;
  67   1          az=Ds/256;
  68   1          P2=az;   //高8位
  69   1          P0=Ds%256;   //低8位
  70   1      }
  71          
  72          
  73          //==============================================================
  74          //函数名称:void type_gettype(void ) 
  75          //函数功能:波形选择
  76          //=============================================================
  77          void type_gettype(void )     
  78          { 
  79   1        
  80   1       switch (boxing_flag)
  81   1         {  case 0:  P13=0; P12=0;    break;//正弦波
  82   2           case 1:  P13=0; P12=1;     break;//方波
  83   2               case 2:  P13=1; P12=0; break;//三角波
  84   2           case 3:  P13=1; P12=1;     break;//锯齿波
  85   2          default:  break;
  86   2         } 
  87   1       }
  88          
  89          
  90          
  91          //==============================================================
  92          //函数名称:unsigned char keyscan()
  93          //函数功能:按键检测并去除抖动,返回键值
  94          //=============================================================
  95           unsigned char keyscan()
  96          {
  97   1        unsigned char fromkey;
  98   1        fromkey=P3&0x1f;
  99   1        if (fromkey!=0x1f)
 100   1        {
 101   2          delay(20);
 102   2          fromkey=P3&0x1f;
 103   2              while ((P3&0x1f)!=0x1f)
 104   2              {
 105   3                        ;//wait key release
 106   3                      }
 107   2          switch (fromkey)
 108   2              {
 109   3            case 0x1f:return(0);break;//无按键
 110   3            case 0x1e:return(1);break;//按SW2 FRE递增
 111   3            case 0x1d:return(2);break;//按SW3 FRE递减 
 112   3            case 0x1b:return(3);break;//change WAVE
 113   3            case 0x17:return(4);break;//按SW4 fudu递增
 114   3            case 0x0f:return(5);break;//按SW5 fudu递减
 115   3            default:return(0);break;
 116   3            }   
 117   2        }
C51 COMPILER V8.02   DDS                                                                   05/23/2008 13:58:50 PAGE 3   

 118   1        else return(0);
 119   1      }
 120          
 121          
 122          //==============================================================
 123          //函数名称:void init12864()
 124          //函数功能:初始化12864函数     
 125          //=============================================================
 126          void init12864()
 127          {
 128   1              uchar i;
 129   1              LCD_Write_order(0x30);  //基本操作指令
 130   1              LCD_Write_order(0x0f);  //开显示,关光标,不闪烁
 131   1              LCD_Write_order(0x01);  //清除显示
 132   1              LCD_Write_order(0x06);  //指定在资料写入或读取时,光标的移动方向
 133   1              LCD_Write_order(0x0c);  //整体显示
 134   1      
 135   1      
 136   1              LCD_Write_order(0x80);  //第1行初始化
 137   1              for(i=0;i<14;i++)
 138   1                      LCD_Write_Data(line1[i]);
 139   1      
 140   1              LCD_Write_order(0x90);  //第2行初始化
 141   1              for(i=0;i<10;i++)
 142   1                      LCD_Write_Data(line2[i]);
 143   1      
 144   1              LCD_Write_order(0x88); //第3行初始化
 145   1              for(i=0;i<16;i++)
 146   1                      LCD_Write_Data(line3[i]);
 147   1      
 148   1              LCD_Write_order(0x98); //第4行初始化
 149   1              for(i=0;i<16;i++)
 150   1                      LCD_Write_Data(line4[i]);
 151   1                      }
 152          
 153          
 154          
 155          //==============================================================
 156          //函数名称:void LCD_Write_order(uchar Command)
 157          //函数功能:送命令给夜晶12864函数
 158          //=============================================================
 159          void LCD_Write_order(uchar Command)
 160          {
 161   1        uchar i,j,tem=0xf8;
 162   1        CS=1;
 163   1        for(i=8;i>0;i--)
 164   1        {
 165   2           SCLK=0;
 166   2           SID=tem&0x80;
 167   2           SCLK=1; 
 168   2           tem<<=1;
 169   2         }
 170   1      
 171   1        for(j=2;j>0;j--)
 172   1        for(i=8;i>0;i--)
 173   1         { 
 174   2               if(i>4)           //送高四位
 175   2               {
 176   3                 SCLK=0;
 177   3             SID=Command&0x80;
 178   3             SCLK=1;
 179   3             Command<<=1; 
C51 COMPILER V8.02   DDS                                                                   05/23/2008 13:58:50 PAGE 4   

 180   3               } 
 181   2               else              //低四位为"0"
 182   2               {
 183   3                 SCLK=0;
 184   3             SID=0;
 185   3             SCLK=1;
 186   3                }
 187   2      
 188   2         }
 189   1        
 190   1        CS=0;
 191   1      }
 192          
 193          

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -