久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 954|回復: 2
打印 上一主題 下一主題
收起左側

單片機里自然對數如何寫

[復制鏈接]
跳轉到指定樓層
樓主
ID:1045846 發表于 2024-7-21 20:47 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

要計算兩路電壓的dB差,不在規格值時報警。
下面這種寫法,編譯沒有報錯,數碼管上也沒有數字顯示出來。

高手幫忙看看問題出在哪。
感謝!
  1. //測量VR電壓\dB程序
  2. void Voltage_VR(void)
  3. {
  4.         P1M0=0x32;P1M1=0x09;   //P1.1、P1.4、P1.5推挽(測試兩端),P1.0、P1.3為高阻
  5.         ADCA=0;ADCC=0;ADCB=0;ADCD=1;ADCE=1;//AL、BL、CL、OH,P1.5
  6.         ADKA=0;ADKB=0;//aL、bL、cL
  7.         Delay500us();          //延時等待穩定
  8.         VinA=ADC_V(0x00);     //讀取第0通道,R2層電壓,1-2端
  9.         Delay500us();          //延時等待穩定
  10.         VinB=ADC_V(0x03);     //讀取第0通道,R1層電壓,1-2端
  11.        
  12.         // 判斷電壓,進行dB計算
  13.               dBA=(float)20*log(VinA/VCC);
  14.               dBB=(float)20*log(VinB/VCC);
  15.               dB=dBA-dBB;
  16.               if(dB>=-2.9 && VinA<=5100)
  17.                                 {
  18.                                         count=0; //計數清0
  19.                                 }
  20.                                 else if(dB<=2.9 && VinA<=5100)//else if(Vin>=4950 && Vin<=5000)
  21.                                 {
  22.                                         count=0; //計數清0
  23.                                 }
  24.                                 else //以上各分支條件都不成立,說明產品有缺陷
  25.                                 {
  26.                                         count++;
  27.                                         if(count>=2)//當到達10ms
  28.                                         {
  29.                                                 LEDG=1;           //綠燈熄
  30.                                                 LEDR=0;           //紅燈亮
  31.                                                 alarm=1;
  32.                                                 while(alarm & RST)//取下VR或按RST鍵退出死循環,但報錯發生在不取下VR的情況下按RST鍵復檢當前檔位
  33.                                                 {
  34.                                                         VR=exist_VR(0x05); //第5通道測量VR存在
  35.                                                         if(VR>=4000)alarm=0;//判斷VR沒有裝,退出死循環

  36.                                                         if(count2==0)//閃爍周期250ms
  37.                                                         {
  38.                                              dis_buf[0]=~(table[dB%10]);
  39.                                  dis_buf[1]=~(table[dB/10%10]|0x80);
  40.                                        dis_buf[2]=~(table[25]);//'U'
  41.                                        dis_buf[3]=~(table[VinA/10%10]);
  42.                                        dis_buf[4]=~(table[VinA/100%10]);
  43.                                        dis_buf[5]=~(table[VinA/1000%10]|0x80);//加小數點
  44.                                                          dis_buf[6]=~(table[25]);//'U'
  45.                                        dis_buf[7]=~(table[VinB/10%10]);
  46.                                        dis_buf[8]=~(table[VinB/100%10]);
  47.                                        dis_buf[9]=~(table[VinB/1000%10]|0x80);//加小數點

  48.                                                                 DisplayScan();
  49.                                                         }
  50.                                                         if(count2==125)
  51.                                                         {
  52.                                                                 dis_buf[0]=~(table[16]);//不顯示
  53.                                                                 dis_buf[1]=~(table[16]);
  54.                                                                 dis_buf[2]=~(table[16]);
  55.                                                                 dis_buf[3]=~(table[16]);
  56.                                                                 dis_buf[4]=~(table[16]);
  57.                                                                 dis_buf[5]=~(table[16]);
  58.                                                                 dis_buf[6]=~(table[16]);
  59.                                                                 dis_buf[7]=~(table[16]);
  60.                                                                 dis_buf[8]=~(table[16]);
  61.                                                                 dis_buf[9]=~(table[16]);
  62.                                                                 DisplayScan();
  63.                                                         }
  64.                                                         Delay_ms(1);
  65.                                                         count2=++count2%250;
  66.                                                 }
  67.                                                 count2=0;
  68.                                         }
  69.                                 }
  70.                                 LEDG=0;           //綠燈亮
  71.                                 LEDR=1;           //紅燈熄
  72.                           dis_buf[0]=~(table[dB%10]);
  73.                           dis_buf[1]=~(table[dB/10%10]|0x80);
  74.                                 dis_buf[2]=~(table[25]);//'U'
  75.                                 dis_buf[3]=~(table[VinA/10%10]);
  76.                                 dis_buf[4]=~(table[VinA/100%10]);
  77.                                 dis_buf[5]=~(table[VinA/1000%10]|0x80);//加小數點
  78.                                 dis_buf[6]=~(table[25]);//'U'
  79.                                 dis_buf[7]=~(table[VinB/10%10]);
  80.                                 dis_buf[8]=~(table[VinB/100%10]);
  81.                                 dis_buf[9]=~(table[VinB/1000%10]|0x80);//加小數點
  82.                                 DisplayScan();           //顯示電壓值
  83.                         }
復制代碼




分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:344848 發表于 2024-7-22 11:56 | 只看該作者
普通單片機乘除運算能力較差,別說自然對數了,建議將自然對數轉化為表格形式,直接查表即可。這需要FLASH容量很大,才能確保精度!
回復

使用道具 舉報

板凳
ID:1045846 發表于 2024-7-27 16:19 | 只看該作者
donglw 發表于 2024-7-22 11:56
普通單片機乘除運算能力較差,別說自然對數了,建議將自然對數轉化為表格形式,直接查表即可。這需要FLASH ...

感謝提供方法。
只是本人初學,這種方法實施起來有難度。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美成人精品一区二区 | 欧美午夜理伦三级在线观看 | 国产精品久久久久久久久久久久久久久 | 在线播放国产精品 | 成人爽a毛片一区二区免费 www.欧美精品 | 成人免费毛片嘿嘿连载视频 | 午夜美女福利视频 | 久久精品美女 | 97国产精品视频 | 天天插天天透 | 一区二区三区视频 | 一区二区三区黄色 | 久久久久久久久国产精品 | 日本在线视频一区二区 | 国产免费成人 | 蜜臀久久99精品久久久久久宅男 | 51调教丨国产调教视频 | 一级毛片免费播放 | 成人羞羞国产免费游戏 | 婷婷久久综合 | 亚洲免费精品视频 | 欧美在线小视频 | 亚洲欧美第一页 | 做爰xxxⅹ性生交 | 亚洲成人免费在线观看 | 国产日韩一区二区三区 | av永久免费 | 国产精品久久久久久久久久久久久久 | 日本黄色录像 | 国产高潮在线观看 | 91亚洲精选 | 日产精品久久久一区二区 | 成人黄色小视频 | 成人午夜av | 中文字幕在线观看一区二区三区 | 亚洲午夜视频在线观看 | 欧日韩av | 性免费视频 | 懂色av一区二区夜夜嗨 | 久久人体视频 | 国产三级在线观看视频 |