欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: STC15F2K60S2單片機AD轉換程序 [打印本頁]

作者: alexlong    時間: 2017-11-14 12:38
標題: STC15F2K60S2單片機AD轉換程序
STC15F2K60S2的ad轉換。

單片機源程序如下:
  1. #include<STC15F2K60S2.H>
  2. #define uchar unsigned char
  3. #define uint unsigned int

  4. sbit wei1=P3^4;
  5. sbit wei2=P3^5;
  6. sbit wei3=P3^6;
  7. sbit wei4=P3^7;

  8. uchar code duan[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
  9. uint num=0;

  10. void delay()
  11. {
  12.         uchar i,j;
  13.         for(i=0;i<20;i++)
  14.                 for(j=0;j<250;j++);
  15. }

  16. void adval()//ad轉換函數
  17. {
  18.         uint val;//存放ad轉換結果
  19.         uchar low;//存放ad轉換結果低兩位
  20.         float fval;//小數
  21.         P1ASF=0X08;//p1.3為ad轉換kou
  22.         ADC_CONTR=0xeb;//打開ad轉換電源速度最快輸出端p1.3;
  23.         delay();
  24.         while(ADC_CONTR&0X10==0);
  25.         val=ADC_RES;//取轉換結果高八位放入
  26.         val<<=2;//空出第八位
  27.         low=ADC_RESL;
  28.         low&=0x03;
  29.         val+=low;
  30.         fval=val;
  31.         fval*=5;
  32.         fval/=1024;
  33.         fval*=10;
  34.         num=fval;
  35.         ADC_CONTR=0xeb;

  36. }

  37. void display()
  38. {
  39.         uchar bai,shi,ge;
  40.         uint temp=num;
  41.         bai=temp/100;
  42.         temp=temp%100;
  43.         shi=temp/10;
  44.         ge=temp%10;
  45.         P2=duan[bai];wei2=0;delay();wei2=1;
  46.         P2=duan[shi]&0x7f;wei3=0;delay();wei3=1;
  47.         P2=duan[ge];wei4=0;delay();wei4=1;
  48. ……………………

  49. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
AD轉換.zip (22.56 KB, 下載次數: 418)



作者: Conrad970519    時間: 2017-12-14 20:20
下下來看看
作者: wuxishun    時間: 2017-12-16 18:24
謝謝分享
作者: yyjzd0414    時間: 2018-2-6 22:28
學習中謝謝分享
作者: 青桑葉    時間: 2018-2-7 22:11
謝謝分享。寫的很清楚,讀起來很舒服
作者: 老胖熊    時間: 2018-2-20 20:11
頭文件在哪里下載的?
作者: wuxishun    時間: 2018-2-24 23:16
學習中,謝謝分享
作者: 大米飯    時間: 2018-3-25 19:02
只是個AD轉換函數  不是AD讀取函數,下載的時候沒看清
作者: baishifanzon    時間: 2018-5-2 13:13
正在學習,感謝樓主無私的分享
作者: 騰飛的龍    時間: 2018-5-3 18:17
送人玫瑰手留余香。感謝分享
作者: 騰飛的龍    時間: 2018-5-3 18:19
ADC_CONTR=0xeb;//打開ad轉換電源速度最快輸出端p1.3;  樓主后面的0xeb是怎么出來的
作者: lzptt    時間: 2018-5-4 00:15
騰飛的龍 發表于 2018-5-3 18:19
ADC_CONTR=0xeb;//打開ad轉換電源速度最快輸出端p1.3;  樓主后面的0xeb是怎么出來的

0xeb是16進制 二進制需根據8421轉換法轉成16進制
8421    轉換碼
1110    E  =8+4+2+0=12=E(16進制)
1011    B  =8+0+2+1=11=B(16進制)
所以ADC_CONTR=1110 1011=0xeb
作者: xiaoye000    時間: 2018-5-14 16:20
謝謝分享,學習中
作者: suph007    時間: 2018-6-2 15:24
可以看看思路
作者: 小百科    時間: 2018-7-10 22:39
謝謝分享
作者: 小百科    時間: 2018-7-10 22:41
大米飯 發表于 2018-3-25 19:02
只是個AD轉換函數  不是AD讀取函數,下載的時候沒看清

AD讀取函數是什么意思啊??
作者: 小百科    時間: 2018-7-12 10:30
P2=duan[shi]&0x7f這是什么意思啊
作者: cyz0909    時間: 2018-10-21 17:14
謝謝樓主
作者: 溫泉墨跡    時間: 2019-4-14 13:24
厲害,謝謝謝謝謝謝
作者: 小七七七    時間: 2019-4-14 17:06
感謝分享
作者: a969241066    時間: 2019-6-7 20:31
感謝分享
作者: a969241066    時間: 2019-6-7 20:32
感謝分享
作者: 不就一個你    時間: 2019-7-18 10:13
大米飯 發表于 2018-3-25 19:02
只是個AD轉換函數  不是AD讀取函數,下載的時候沒看清

val=ADC_RES;
val<<=2;
low=ADC_RESL;
low&=0x03;
val+=low;
這是什么?
作者: 芝華塔尼歐    時間: 2019-7-18 11:19
謝謝分享
作者: 周濤1331    時間: 2019-7-21 09:00
騰飛的龍 發表于 2018-5-3 18:19
ADC_CONTR=0xeb;//打開ad轉換電源速度最快輸出端p1.3;  樓主后面的0xeb是怎么出來的

看看15手冊,PLASF是P1口的模擬功能控制寄存器,PLASF=0x08;是將P1.3口做模擬ad使用,后面的ADC_CONTR=0xeb;ADC_CONTR是控制寄存器,后四位的16進制數是b,是1011,后三位011指的是將P1.3作為ad輸入來用,
作者: 周濤1331    時間: 2019-7-21 09:14
不就一個你 發表于 2019-7-18 10:13
val=ADC_RES;
val

看15手冊,ADC_RES和ADC_RESL是AD轉換過程中的存儲ad轉換結果的,這里ADC_RES指的是高八位,ADC_RESL指的是低2位,val向左移了2位,相當與變為了10位,val加上low表示高八位和低二位相加,low&=0x03;表示值不能超過3;































作者: 周濤1331    時間: 2019-7-21 09:19
小百科 發表于 2018-7-12 10:30
P2=duan[shi]&0x7f這是什么意思啊

這個地方有些多余,&這是與的意思,0x7f指的是數碼管可以顯示8,無論你用啥值與8&‘都等于原來值
作者: 周濤1331    時間: 2019-7-21 09:50
小百科 發表于 2018-7-12 10:30
P2=duan[shi]&0x7f這是什么意思啊

你這個意思是不管是啥值,都要帶個小數點,之前理解錯了
作者: 天天向上啦啦啦    時間: 2019-7-21 10:18
想下載看看哈
作者: 少有過客    時間: 2019-11-7 21:59
挺簡單的程序,移植也很方便
作者: stiu    時間: 2019-11-8 17:08
謝謝樓主的分享
作者: 未來研究人員    時間: 2019-12-7 11:50
送人玫瑰手留余香。感謝分享
作者: vvv80    時間: 2019-12-7 13:32
學習中,謝謝分享
作者: 許你一世柔情    時間: 2020-3-25 14:14
我想問一下 就不能給一個16位然后高位移開 | 低位嗎
作者: 18877865862    時間: 2020-4-28 17:52
謝謝大佬分享
作者: ZXDZXD38378    時間: 2020-4-29 14:10
謝謝樓主的分享,好東西
作者: fendou-奮斗    時間: 2020-7-26 22:04

打開ad轉換電源速度最快輸出端p1.3;  樓主后面的0xeb是怎么出來的
作者: qjyvi2    時間: 2020-8-9 15:56
low&=0x03;
這步是作什么用。感覺是不是多余。是不是有什么深意。忘解惑。謝謝!
作者: qjyvi2    時間: 2020-8-14 20:53
沒有電路圖嗎。
作者: xiaoyuxinke    時間: 2022-5-19 09:16
本帖最后由 xiaoyuxinke 于 2022-5-19 09:25 編輯
周濤1331 發表于 2019-7-21 09:00
看看15手冊,PLASF是P1口的模擬功能控制寄存器,PLASF=0x08;是將P1.3口做模擬ad使用,后面的ADC_CONTR=0x ...

這里是錯的,0xeb   E=1110,B=1100  加起來就是1110,1011  而且實話說樓主這個程序你自己用過么,前面的E是指1110      這四個分開
1.打開ADC電源
1.速度1
1.速度0
0.ADC標志位

后面的B是指1011     這四個分開
1.開啟ADC轉換
0.通道選擇第1位
1.通道選擇第2位
1.通道選擇第3位

樓主此程序無法正常工作,因為你自己都沒看明白STC15手冊.

作者: xiaoyuxinke    時間: 2022-5-19 09:26
qjyvi2 發表于 2020-8-14 20:53
沒有電路圖嗎。

這么簡單的程序,都說明了P1.3做ADC輸入,還要什么電路圖





歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1