c語言analogread函數例子,c語言簡單自定義函數例子

本文目錄一覽:

C語言程序各行意思?求大神

朋友,糾正一下,你這個不是C語言,是Arduino語言,有很多語法像而已。同時,提醒一下,你這個代碼很不完整,連loop函數都沒有,工作不了的,而且setup函數都沒寫完。

這個必定是一個帶超聲波感應的小車子了,但看代碼,很多功能都沒有打開。

另外,百度知道最長只能有1024個字元,給你注釋的代碼無法發到回答區,就給你截取三個圖好了,都是高清的,你將就著看吧。

c語言中Random是什麼意思

Random意思是返回一個0~num-1之間的隨機數。 random(num)是在stdlib.h中的一個宏定義。num和函數返回值都是整型數。

如需要在一個random()序列上生成真正意義的隨機數,在執行其子序列時使用randomSeed()函數預設一個絕對的隨機輸入,例如在一個斷開引腳上的analogRead()函數的返回值。

擴展資料

Random使用之前需要使用Randomize語句進行隨機數種子的初始化。RANDOM產生的是偽隨機數或者說是用一種複雜的方法計算得到的序列值,因此每次運算時需要一個不同的種子值。種子值不同,得到的序列值也不同。因此也就是真正的隨機數了。

RANDOM產生的是偽隨機數或者說是用一種複雜的方法計算得到的序列值,因此每次運算時需要一個不同的種子值。種子值不同,得到的序列值也不同。因此也就是真正的隨機數了。這也正是RANDOMIZE隨機初始化的作用。 VB里用 NEW RANDOM()來表示初始化。

參考資料來源:百度百科-random()

C語言程序求教,不懂哪裡出了問題。程序和錯誤如下

你這個真是有意思,入口函數main()沒有安,文件包含也沒有,函數也沒有自己定義,怎麼調用,你開什麼玩笑

誰有pulsesensor心率感測器 的c語言程序,帶注釋的。在線等挺急的

這個是主程序和部分代碼由於字數限制所以你還是留個郵箱吧

void main(void)

{

unsigned char i;

sys_init();

beep = 1;

LCD12864_DisplayOneLine(0x80,ucStr1); //顯示信息1

LCD12864_DisplayOneLine(0x90,ucStr2); //顯示信息2

LCD12864_DisplayOneLine(0x88,ucStr3); //顯示信息3

LCD12864_DisplayOneLine(0x98,ucStr4); //顯示信息4

while(1)

{

sendDataToProcessing(‘S’, Signal); // 發送並處理原始脈搏感測器數據

if (QS == true){ // 確定發現一個心跳

fadeRate = 255; // Set ‘fadeRate’ Variable to 255 to fade LED with pulse

sendDataToProcessing(‘B’,BPM); // 發送一個’B’和心率

sendDataToProcessing(‘Q’,IBI); // send time between beats with a ‘Q’ prefix

QS = false; // reset the Quantified Self flag for next time

LCD_disp_list_char(2,4,DisBuff);//在LCD12864上顯示BPM

}

delay(138); // 延時 19.6ms

LCD_disp_list_char(4,4,DisBuff2);

//ledFadeToBeat();

if(Pressure100){

for(i=0;i8;i++){

delay(1000);}

if (Pressure100){

beep = 0;}}

if(BPM60|BPM100){

for(i=0;i9;i++){

delay(1000);}

if(BPM60|BPM100){

beep = 0;}

for(i = 0;i16;i++) //依次執行寫入操作

{

putchar(ucStr1[i]);

}

for(i = 0;i16;i++) //依次執行寫入操作

{

putchar(ucStr2[i]);

}

for(i=0;i3;i++)

{

putchar(DisBuff[i]);}

for(i = 0;i16;i++) //依次執行寫入操作

{

putchar(ucStr3[i]);

}

for(i = 0;i16;i++) //依次執行寫入操作

{

putchar(ucStr4[i]);

}

for(i=0;i4;i++)

{

putchar(DisBuff2[i]);}

}

}

//void ledFadeToBeat(){

// fadeRate -= 15; // set LED fade value

// fadeRate = constrain(fadeRate,0,255); // keep LED fade value from going into negative numbers!

// analogWrite(fadePin,fadeRate); // fade LED

// }

/******************************************************************************

函數名稱:GetADCResult

函數功能:獲取AD轉換結果函數

入口參數:BYTE ch(通道選擇)

返回值:result(A/D轉換結果)

備註:無

*******************************************************************************/

unsigned int GetADCResult(BYTE ch)

{ unsigned int result; //AD轉換結果result

ADC_CONTR=0xf8; //清除ADC控制寄存器ADC CONTR的CHS2、CHS1、CHS0(清除通道選擇)

_nop_(); //設置ADC CONTR控制寄存器後,要加4個空操作延時才可以正確讀到ADC CONTR寄存器的值

_nop_();

_nop_();

_nop_();

ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ch | ADC_START; //開ADC電源,選擇AD轉換速率,並選擇AD通道,開始AD轉換

_nop_(); //設置ADC CONTR控制寄存器後,要加4個空操作延時才可以正確讀到ADC CONTR寄存器的值

_nop_();

_nop_();

_nop_();

while (!(ADC_CONTR ADC_FLAG));//等待AD轉換結束

ADC_CONTR = ~ADC_FLAG; //關閉ADC

result=ADC_RES; //將AD轉換結果的高兩位賦給result

result=result8; //將result循環左移8位

result+=ADC_RESL; //將AD轉換結果的底8位加高兩位共10位給result

return result; //返回10位AD轉換結果

}

void sendDataToProcessing(char symbol, int dat ){

putchar(symbol); // symbol prefix tells Processing what type of data is coming

printf(“%d\r\n”,dat); // the data to send culminating in a carriage return

}

void UART_init(void)

{

TMOD = 0x20; //定時器工作在定時器1的方式2

PCON = 0x00; //不倍頻

SCON = 0x50; //串口工作在方式1,並且啟動串列接收

TH1 = 0xFd; //設置波特率 9600

TL1 = 0xFd;

TR1 = 1; //啟動定時器1

}

char putchar(unsigned char dat)

{

TI=0;

SBUF=dat;

while(!TI);

TI=0;

return SBUF;

}

void _nop_ (void)

{}

void T0_init(void){

// Initializes Timer0 to throw an interrupt every 2mS.

TMOD |= 0x01; //16bit TIMER

TL0=T0MS;

TH0=T0MS8;

TR0=1; //start Timer 0

ET0=1; //enable Timer Interrupt

EA=1; // MAKE SURE GLOBAL INTERRUPTS ARE ENABLED

}

void T1_init(void){

// Initializes Timer0 to throw an interrupt every 2mS.

TMOD |= 0x01; //16bit TIMER

TL1=T0MS2;

TH1=T0MS28;

TR1=1; //start Timer 0

ET1=1; //enable Timer Interrupt

EA=1; // MAKE SURE GLOBAL INTERRUPTS ARE ENABLED

}

void ADC_init(unsigned char channel)

{

P1ASF=ADC_MASKchannel; //選擇P1. channel作為A/D輸入來用

ADC_RES=0; //清除ADC結果寄存器RES

ADC_RESL=0; //清除ADC結果寄存器RESL

AUXR1 |= 0x04; //調整ADC格式的結果

}

void Timer1_rountine(void) interrupt 1

{}

unsigned int analogRead(unsigned char channel)

{

unsigned int result;

while (!(ADC_CONTR ADC_FLAG));//Wait complete flag

ADC_CONTR =!ADC_FLAG; //clear ADC FLAG

result=ADC_RES;

result=result8;

result+=ADC_RESL;

// ADC_CONTR|=channel|ADC_POWER|ADC_SPEEDLL|ADC_START;

return result;

}

// Timer 0中斷子程序,每2MS中斷一次,讀取AD值,計算心率值

void Timer0_rountine(void) interrupt 1

{

int N;

unsigned char i;

// keep a running total of the last 10 IBI values

unsigned int runningTotal = 0; // clear the runningTotal variable

EA=0; // 關定時器中斷

TL0=T0MS;

TH0=T0MS8; //重裝16位定時器初值

Pressure = (GetADCResult(PressurePin)); //****************

DisBuff2[3] = Pressure%10+48;//取個位數

DisBuff2[2] = Pressure%100/10+48; //取十位數

DisBuff2[1] = Pressure%1000/100+48; //百位數 ***************

DisBuff2[0] = Pressure/1000+48;//取千位數

Signal = GetADCResult(PulsePin); // 讀脈搏感測器

sampleCounter += 2; // 使用這個值跟蹤記錄脈搏時間間隔在ms級

N = sampleCounter – lastBeatTime; // 減上個節拍的時間來避免雜訊

// 找到脈搏波的波峰和波谷

if(Signal thresh N (IBI/5)*3){ // 如果脈搏感測器輸出小於電源電壓一半 並且 消除雜訊時間小於 3/5個脈搏時間間隔

if (Signal Trough){ // 如果脈搏感測器輸出小于波谷

Trough = Signal; // 跟蹤脈搏波的最低點

}

}

if(Signal thresh Signal Peak){ // 如果輸出大於電源電壓一半並且大于波峰

Peak = Signal; // 將新值設為波峰

} // 跟蹤脈搏波的波峰

if (N 250){ // 避免高頻雜訊

if ( (Signal thresh) (Pulse == false) (N (IBI/5)*3) ){

Pulse = true; // 當檢測到一個脈搏時將脈搏標誌設為真

blinkPin=0; // 點亮脈搏燈

IBI = sampleCounter – lastBeatTime; // 測量兩個脈搏的時間in mS

lastBeatTime = sampleCounter; // 跟蹤脈搏時間

if(secondBeat){ // 如果這是第二個脈搏

secondBeat = false; // 清除標識

for(i=0; i=9; i++){ // 全部的數據作為真實脈搏BMP

rate[i] = IBI;

}

}

if(firstBeat){ // 如果是第一個脈搏

firstBeat = false; // 清除標誌

secondBeat = true; // 設置第二脈搏標誌

EA=1; //開中斷

return; // IBI 值是不可靠的所以拋棄

}

for(i=0; i=8; i++){ // 移動數據在rate數組中

rate[i] = rate[i+1]; // 頂替舊值

runningTotal += rate[i]; // 加上第九個新值

}

rate[9] = IBI; // 加最後的IBI到rate數組中

runningTotal += rate[9]; // 加上一個IBI到runningTotal

runningTotal /= 10; // 取平均值

BPM = 60000/runningTotal; // 一分鐘可以檢測到多少個心跳及 BPM!

if(BPM200)BPM=200; //限制BPM最高顯示值

if(BPM30)BPM=30; //限制BPM最低顯示值

DisBuff[2] = BPM%10+48;//取個位數

DisBuff[1] = BPM%100/10+48; //取十位數

DisBuff[0] = BPM/100+48; //百位數

if(DisBuff[0]==48)

DisBuff[0]=32;

QS = true; // 設置QS標誌

// QS FLAG IS NOT CLEARED INSIDE THIS ISR

}

}

if (Signal thresh Pulse == true){ // 當電壓歸零節拍結束

blinkPin=1; // 熄滅脈搏燈

Pulse = false; // 重置脈搏標識我們可以重新測

amp = Peak – Trough; // 得到脈搏波的峰峰值

thresh = amp/2 + Trough; // 設置thresh位脈搏峰峰值的一半

Peak = thresh; // 為下一次測試重置波峰

Trough = thresh;

}

if (N 2500){ //如果超過2.5秒沒有檢測到一個脈搏

thresh = 512; // 重新設置波谷

Peak = 512; // 重新設置波峰

Trough = 512; // 重新設置間隔

lastBeatTime = sampleCounter; // 把最後的節拍時間更新

firstBeat = true; // 重新設置標誌避免雜訊

secondBeat = false; // 當我們得到心跳的時候

}

EA=1; // 開中斷

}// end isr

跪求c語言大神給解答一下這個程序每句的意思!!臣妾看不懂啊!這是電路相關的。。

#define ANALOG_PIN 1

#define BUTTON_PIN 8

#define LED_PIN 5

#define LED_SCALE 2.6

#define MIN_LED 150

#define LED_OFFSET 300

#define DEBOUNCE_DELAY 10

int lightLevel = 0;

bool ledOn = false;

/**

 * Setup the serial communication and pin modes.

 */

void setup() 

{

  Serial.begin(9600);//設置串口波特率9600

  pinMode(BUTTON_PIN, INPUT);//引腳8為輸入模式

  pinMode(LED_PIN, OUTPUT);//引腳5為輸出模式

// DDRD = (DDRD | B00000100)  B11110111; //e.g.for BUTTON_PIN = 3,LED_PIN = 2

}

/**

 * Read and debounce the input from the button.

 */

bool buttonPressed() 

{

  int button = digitalRead(BUTTON_PIN);//讀取引腳8的電平

  if(button == LOW)//如果是高電平

  {

    while(button == LOW)

    {

      delay(1);//延時

      button = digitalRead(BUTTON_PIN);

    }

    delay(DEBOUNCE_DELAY);//延時

    return true;

  }

  return false;

}

/**

 * Check the light level, make sure the light level is with range, 

 * set the LED brightness, if the button is pressed toggle the LED.

 */

void loop() 

{

  if(buttonPressed()) //引腳8為高電平時,就是按下按鍵

  {

    ledOn = !ledOn;//反轉

    Serial.print(“LED is now”);//串口輸出信息

    Serial.print(ledOn ? ” on” : ” off”);

  }

  if(ledOn) //如果為真

  {

//下面應該是PWM調節燈的光暗度

    lightLevel = (analogRead(ANALOG_PIN) – LED_OFFSET)*LED_SCALE; // 10 bits

    if(lightLevel  1023)

      lightLevel = 1023;

    if(lightLevel  MIN_LED)

      lightLevel = MIN_LED;

    analogWrite(LED_PIN, lightLevel  2); // 8 bits

    Serial.println(lightLevel);//串口輸出相關信息

  }

  else

  {

    digitalWrite(LED_PIN, LOW);//LED引腳輸出高電平

  }

  delay(100);

}

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/153411.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-14 03:05
下一篇 2024-11-14 03:05

相關推薦

  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python中capitalize函數的使用

    在Python的字元串操作中,capitalize函數常常被用到,這個函數可以使字元串中的第一個單詞首字母大寫,其餘字母小寫。在本文中,我們將從以下幾個方面對capitalize函…

    編程 2025-04-29
  • Python中set函數的作用

    Python中set函數是一個有用的數據類型,可以被用於許多編程場景中。在這篇文章中,我們將學習Python中set函數的多個方面,從而深入了解這個函數在Python中的用途。 一…

    編程 2025-04-29
  • 單片機列印函數

    單片機列印是指通過串口或並口將一些數據列印到終端設備上。在單片機應用中,列印非常重要。正確的列印數據可以讓我們知道單片機運行的狀態,方便我們進行調試;錯誤的列印數據可以幫助我們快速…

    編程 2025-04-29
  • 三角函數用英語怎麼說

    三角函數,即三角比函數,是指在一個銳角三角形中某一角的對邊、鄰邊之比。在數學中,三角函數包括正弦、餘弦、正切等,它們在數學、物理、工程和計算機等領域都得到了廣泛的應用。 一、正弦函…

    編程 2025-04-29
  • Python3定義函數參數類型

    Python是一門動態類型語言,不需要在定義變數時顯示的指定變數類型,但是Python3中提供了函數參數類型的聲明功能,在函數定義時明確定義參數類型。在函數的形參後面加上冒號(:)…

    編程 2025-04-29
  • AES加密解密演算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密演算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES演算法,並對實現過程進…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演著非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python實現計算階乘的函數

    本文將介紹如何使用Python定義函數fact(n),計算n的階乘。 一、什麼是階乘 階乘指從1乘到指定數之間所有整數的乘積。如:5! = 5 * 4 * 3 * 2 * 1 = …

    編程 2025-04-29
  • Python定義函數判斷奇偶數

    本文將從多個方面詳細闡述Python定義函數判斷奇偶數的方法,並提供完整的代碼示例。 一、初步了解Python函數 在介紹Python如何定義函數判斷奇偶數之前,我們先來了解一下P…

    編程 2025-04-29

發表回復

登錄後才能評論