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

📄 main.c

📁 基于ATMEGA16和DDS的信号发生器的代码
💻 C
📖 第 1 页 / 共 2 页
字号:
        case 7:showchar(i+3,0,'7');break;
        case 8:showchar(i+3,0,'8');break;
        case 9:showchar(i+3,0,'9');break;
       }
     }
}     

void factor_display(void)
{
  uchar i;
  showstring(0,0,"factor:         ");
  factor[8] = correction1%10;                  //最低位
  factor[7] = correction1/10%10;
  factor[6] = correction1/100%10;
  factor[5] = correction1/1000%10;
  factor[4] = correction1/10000%10;
  factor[3] = correction1/100000%10;
  factor[2] = correction1/1000000%10;
  factor[1] = '.';                            //小数点位
  factor[0] = correction1/10000000;           //最高位
  
  for(i=0;i<9;i++)                            //显示9位数据
     {
       switch(factor[i])
       {
        case 0:showchar(i+7,0,'0');break;
        case 1:showchar(i+7,0,'1');break;
        case 2:showchar(i+7,0,'2');break;
        case 3:showchar(i+7,0,'3');break;
        case 4:showchar(i+7,0,'4');break;
        case 5:showchar(i+7,0,'5');break;
        case 6:showchar(i+7,0,'6');break;
        case 7:showchar(i+7,0,'7');break;
        case 8:showchar(i+7,0,'8');break;
        case 9:showchar(i+7,0,'9');break;
        case '.':showchar(i+7,0,'.');break;
       }
     }
}

void correction_set(void)
{      
       uchar temp;                          //标志是否处于修正系数的设定状态
       fq1=fq;                              //当前频率值“入栈”
       fq=850000;                           //设置修正系数时以850KHZ为参考频率
       showstring(0,1,"set correction  ");  //提示可以设置修正系数
       factor_display();                    //当前修正系数的值显示在LCD上
       temp=1;                              //temp为1表明修正系数还没有修改完毕,依然执行下边的循环
       while(temp)
         {
          key_num = get_key();
          switch(key_num)
           {
           case '#': fq=fq1;                                       //#按下表明修正系数修改完毕,将当前频率值回写到fq中,以保证前后的频率值不变
                     _EEPUT(0x01,factor[0]);/*写EEPROM地址0X01*/   //修正系数存入EEPROM中
                     _EEPUT(0x02,factor[2]);/*写EEPROM地址0X02*/
                     _EEPUT(0x03,factor[3]);/*写EEPROM地址0X03*/
                     _EEPUT(0x04,factor[4]);/*写EEPROM地址0X04*/
                     _EEPUT(0x05,factor[5]);/*写EEPROM地址0X05*/
                     _EEPUT(0x06,factor[6]);/*写EEPROM地址0X06*/
                     _EEPUT(0x07,factor[7]);/*写EEPROM地址0X07*/
                     _EEPUT(0x08,factor[8]);/*写EEPROM地址0X08*/
                     _EEPUT(0x00,1);/*写EEPROM地址0X00*/
                     showstring(0,1,"correction seted");           //提示已经过盛修正系数的修改
                     delay_nms(1000);
                     correction_temp = correction1/10000000.0;     //重新计算频率值,并写入频率控制字到DDS中
                     con_word_temp=fq*4294967296*correction_temp/Fosc;
                     con_word=con_word_temp;
                     con_word_array[0]=con_word%256;
                     con_word_array[1]=con_word/256%256;
                     con_word_array[2]=con_word/256/256%256;
                     con_word_array[3]=con_word/256/256/256;
                     write_word(con_word_array);                     
                     showstring(0,1,"set frequency   ");
                     fq_display();
                     temp=0;                                      //temp清零,完成修正系数的修改
                     break;
                     /******************按下一边任一键,对修正系数作相应的修改,并实时输出经修正后的参考频率**************************/
           case '1': correction1 += 1;                 //按1号键加1
                     correction_temp = correction1/10000000.0;
                     con_word_temp=fq*4294967296*correction_temp/Fosc;
                     con_word=con_word_temp;
                     con_word_array[0]=con_word%256;
                     con_word_array[1]=con_word/256%256;
                     con_word_array[2]=con_word/256/256%256;
                     con_word_array[3]=con_word/256/256/256;
                     write_word(con_word_array);
                     factor_display();
                     break;
           case '4': correction1 -= 1;                 //按4号键减1
                     correction_temp = correction1/10000000.0;
                     con_word_temp=fq*4294967296*correction_temp/Fosc;
                     con_word=con_word_temp;
                     con_word_array[0]=con_word%256;
                     con_word_array[1]=con_word/256%256;
                     con_word_array[2]=con_word/256/256%256;
                     con_word_array[3]=con_word/256/256/256;
                     write_word(con_word_array);
                     factor_display();
                     break;
           case '2': correction1 += 10;                         //按2号键加10
                     correction_temp =correction1/10000000.0;
                     con_word_temp=fq*4294967296*correction_temp/Fosc;
                     con_word=con_word_temp;
                     con_word_array[0]=con_word%256;
                     con_word_array[1]=con_word/256%256;
                     con_word_array[2]=con_word/256/256%256;
                     con_word_array[3]=con_word/256/256/256;
                     write_word(con_word_array);
                     factor_display();
                     break;
           case '5': correction1 -= 10;                         //按5号键减10
                     correction_temp =correction1/10000000.0;
                     con_word_temp=fq*4294967296*correction_temp/Fosc;
                     con_word=con_word_temp;
                     con_word_array[0]=con_word%256;
                     con_word_array[1]=con_word/256%256;
                     con_word_array[2]=con_word/256/256%256;
                     con_word_array[3]=con_word/256/256/256;
                     write_word(con_word_array);
                     factor_display();
                     break;
           case '3': correction1 += 100;                        //按3号键加100
                     correction_temp =correction1/10000000.0;
                     con_word_temp=fq*4294967296*correction_temp/Fosc;
                     con_word=con_word_temp;
                     con_word_array[0]=con_word%256;
                     con_word_array[1]=con_word/256%256;
                     con_word_array[2]=con_word/256/256%256;
                     con_word_array[3]=con_word/256/256/256;
                     write_word(con_word_array);
                     factor_display();
                     break;
           case '6': correction1 -= 100;                        //按6号键减100
                     correction_temp =correction1/10000000.0;
                     con_word_temp=fq*4294967296*correction_temp/Fosc;
                     con_word=con_word_temp;
                     con_word_array[0]=con_word%256;
                     con_word_array[1]=con_word/256%256;
                     con_word_array[2]=con_word/256/256%256;
                     con_word_array[3]=con_word/256/256/256;
                     write_word(con_word_array);
                     factor_display();
                     break;
           case 'A': correction1 += 1000;                       //按A键加1000
                     correction_temp =correction1/10000000.0;
                     con_word_temp=fq*4294967296*correction_temp/Fosc;
                     con_word=con_word_temp;
                     con_word_array[0]=con_word%256;
                     con_word_array[1]=con_word/256%256;
                     con_word_array[2]=con_word/256/256%256;
                     con_word_array[3]=con_word/256/256/256;
                     write_word(con_word_array);
                     factor_display();
                     break;
           case 'B': correction1 -= 1000;                       //按B键减1000
                     correction_temp =correction1/10000000.0;
                     con_word_temp=fq*4294967296*correction_temp/Fosc;
                     con_word=con_word_temp;
                     con_word_array[0]=con_word%256;
                     con_word_array[1]=con_word/256%256;
                     con_word_array[2]=con_word/256/256%256;
                     con_word_array[3]=con_word/256/256/256;
                     write_word(con_word_array);
                     factor_display();
                     break;
           default:break;
           }
         }
}

⌨️ 快捷键说明

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