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

📄 ad9835_v2.lst

📁 51单片机工程应用实例
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V7.50   AD9835_V2                                                             04/15/2008 17:47:52 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE AD9835_V2
OBJECT MODULE PLACED IN AD9835_v2.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE AD9835_v2.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          //F=12MHz with LCD1602
   2          //2008/4/13 AD9835 on AT89C51
   3          
   4          #include <reg51.H>
   5          #include <stdio.h>
   6          #include <INTRINS.H>//_nop_()
   7          
   8          typedef  unsigned char uchar;
   9          typedef  unsigned int uint;
  10          
  11          //键排列
  12          // 7 8 9 C
  13          // 4 5 6 D
  14          // 1 2 3 E
  15          // A 0 B F
  16          
  17          //LCD 1602
  18          sbit    LCD_D7=P2^7;
  19          sbit    LCD_D6=P2^6;
  20          sbit    LCD_D5=P2^5;
  21          sbit    LCD_D4=P2^4;
  22          sbit    LCD_E =P2^3;
  23          sbit    LCD_RW=P2^2;
  24          sbit    LCD_RS=P2^1;
  25          
  26          //I/O
  27          sbit    BEP=P2^0;//Beep
  28          sbit    LED=P3^2;//RED LED
  29          //AD9835
  30          sbit    DAT=P3^0;//
  31          sbit    CLK=P3^1;//
  32          sbit    SYC=P3^3;//
  33          
  34          //FREQ
  35          sbit    FRQ=P3^5;//T1 check
  36          #define No_key  255 
  37          
  38          //键值
  39          #define MHz 12  //MHz 
  40          #define KHz 13  //KHz
  41          #define Hzz 14  //Hz
  42          #define point 15//小数点
  43          #define shift 11//不用
  44          #define back 10 //改正
  45          
  46          uchar freq[8]={0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00};//8位频率数800.0Hz
  47          uchar F_word[4];
  48          
  49          uchar step=8,cur=7,act=0,key=No_key;//act有效位
  50          uchar buf[9];//输入缓存
  51          
  52          /*------------------------------------------------------------------
  53          Public function prototypes
  54          --------------------------------------------------------------------*/
  55          void LCD_init       (void);
C51 COMPILER V7.50   AD9835_V2                                                             04/15/2008 17:47:52 PAGE 2   

  56          void LCD_en_write   (void);
  57          void LCD_write_char (uchar cd,uchar ab);
  58          void LCD_set_xy     (uchar x, uchar y);
  59          void LCD_write_str      (uchar X,uchar Y,uchar *s);
  60          void LCD_byte           (uchar abc);
  61          
  62          void delay_nus          (uint n);
  63          void del_ms         (uint n);
  64          
  65          uchar Key_scan          (void);
  66          void  Key_num           (uchar n);      //输入数字并显示
  67          uchar Key_table         (k);
  68          void bee();                                             //低有效蜂鸣
  69          void Long_bee           (void);         //低有效蜂鸣长声
  70          
  71          void AD9835_byte        (uchar a);      //发一个字节
  72          void AD9835_word        (uchar *p);     //发一个字两个字节
  73          void AD9835_init        (void);         //初始化和写频
  74          void AD9835_calc        (void);         //计算出频率寄存器的四个字节值
  75          void disp(void);                                //显示
  76          
  77          //------------------------------------
  78          void LCD_init(void)             //液晶初始化
  79          {
  80   1              P1=0xFF;
  81   1              P3=0xff;                                //输出
  82   1              LCD_RS=0;                               //
  83   1              del_ms(50);
  84   1                      
  85   1          LCD_write_char(0x30,0); 
  86   1          del_ms(6); 
  87   1          LCD_write_char(0x30,0);     //
  88   1          del_ms(1); 
  89   1          LCD_write_char(0x30,0);     //上电即显示正常,无需复位        
  90   1          del_ms(1); 
  91   1          LCD_write_char(0x02,0);
  92   1          del_ms(1); 
  93   1          LCD_write_char(0x28,0); //4bit test显示模式设置(不检测忙信号) 
  94   1          del_ms(1);  
  95   1          LCD_write_char(0x08,0); // 显示关闭 
  96   1          del_ms(1); 
  97   1              LCD_write_char(0x01,0); // 显示清屏 
  98   1          del_ms(1); 
  99   1          LCD_write_char(0x06,0); // 显示光标移动设置 
 100   1          del_ms(1); 
 101   1          LCD_write_char(0x0C,0); // 显示开及光标设置 
 102   1          del_ms(10); 
 103   1      }
 104          //---------------------------------------------
 105          void LCD_write_str(uchar X,uchar Y,uchar *s)
 106            {
 107   1          LCD_set_xy( X, Y );         //写地址    
 108   1          while (*s)                          // 写显示字符
 109   1            {
 110   2              LCD_write_char( 0, *s );
 111   2                      s ++;
 112   2            }
 113   1        }
 114            void LCD_set_xy( uchar x, uchar y )  //写地址函数
 115            {
 116   1          uchar address;
 117   1          if (y == 0) address = 0x80 + x;
C51 COMPILER V7.50   AD9835_V2                                                             04/15/2008 17:47:52 PAGE 3   

 118   1          else 
 119   1             address = 0xc0 + x;
 120   1          LCD_write_char( address, 0 );
 121   1        }
 122          //------------------------------------------------
 123          void LCD_en_write(void)         //液晶使能
 124          {
 125   1        _nop_();
 126   1        LCD_E=1;//EN=1
 127   1        _nop_();
 128   1        LCD_E=0;//EN=0
 129   1      }
 130          //------------------------------------------------
 131          void LCD_write_char(uchar cd,uchar ab) // 写数据
 132          { 
 133   1       delay_nus(20);
 134   1       if(cd==0)
 135   1       {
 136   2        LCD_RS=1;                             //RS=1,写显示内容  
 137   2        LCD_byte(ab);
 138   2       }
 139   1       else
 140   1       {
 141   2        LCD_RS=0;                             //RS=0,写命令
 142   2        LCD_byte(cd);
 143   2        }
 144   1      }
 145          //-----------------------------------------------
 146          void LCD_byte(uchar abc)//
 147          {
 148   1              delay_nus(50);
 149   1              if(((abc<<0)&0x80)==0)  //MSB is output first
 150   1               LCD_D7=0;                      //abc=0
 151   1               else LCD_D7=1;                 //abc=1
 152   1              if(((abc<<1)&0x80)==0)  //MSB is output first
 153   1               LCD_D6=0;                      //abc=0
 154   1               else LCD_D6=1;                 //abc=1
 155   1              if(((abc<<2)&0x80)==0)  //MSB is output first
 156   1               LCD_D5=0;                      //abc=0
 157   1               else LCD_D5=1;                 //abc=1
 158   1              if(((abc<<3)&0x80)==0)  //MSB is output first
 159   1               LCD_D4=0;                      //abc=0
 160   1               else LCD_D4=1;                 //abc=1
 161   1              LCD_en_write();
 162   1              
 163   1              if(((abc<<4)&0x80)==0)  //MSB is output first
 164   1               LCD_D7=0;                      //abc=0
 165   1               else LCD_D7=1;                 //abc=1
 166   1              if(((abc<<5)&0x80)==0)  //MSB is output first
 167   1               LCD_D6=0;                      //abc=0
 168   1               else LCD_D6=1;                 //abc=1
 169   1              if(((abc<<6)&0x80)==0)  //MSB is output first
 170   1               LCD_D5=0;                      //abc=0
 171   1               else LCD_D5=1;                 //abc=1
 172   1              if(((abc<<7)&0x80)==0)  //MSB is output first
 173   1               LCD_D4=0;                      //abc=0
 174   1               else LCD_D4=1;                 //abc=1
 175   1              LCD_en_write();
 176   1                      
 177   1      }
 178          
 179          //-------------------------------------
C51 COMPILER V7.50   AD9835_V2                                                             04/15/2008 17:47:52 PAGE 4   

 180          uchar Key_table(k)
 181          {       
 182   1              uchar TempNum;
 183   1              switch (k)
 184   1              {
 185   2              case 0x11:TempNum=12;break;
 186   2              case 0x12:TempNum=13;break;
 187   2              case 0x14:TempNum=14;break;
 188   2              case 0x18:TempNum=15;break;
 189   2              case 0x88:TempNum=10;break;
 190   2              case 0x28:TempNum=11;break;
 191   2              case 0x48:TempNum=0;break;
 192   2              case 0x84:TempNum=1;break;
 193   2              case 0x44:TempNum=2;break;
 194   2              case 0x24:TempNum=3;break;
 195   2              case 0x82:TempNum=4;break;
 196   2              case 0x42:TempNum=5;break;
 197   2              case 0x22:TempNum=6;break;
 198   2              case 0x81:TempNum=7;break;
 199   2              case 0x41:TempNum=8;break;
 200   2              case 0x21:TempNum=9;break;
 201   2              default:break;
 202   2              }

⌨️ 快捷键说明

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