基于stc12c56的心電信號模擬程序 作者: 時間:2016-11-29 來源:網(wǎng)絡 加入技術交流群 掃碼加入和技術大咖面對面交流海量資料庫查詢 收藏 ///////////////////////////////////////////////////////////*************定時器定時輸入波形***********************/void timer0_int() interrupt 1{pwm_n = (pwm_n + 1)/255;switch(Wave){case 0 : {pwm(SacTab[pwm_n]);break;} //正常心電波case 1 : {pwm(pwm_n);break;} //鋸齒波case 2 : {pwm(SinTab[pwm_n]);break;} //正弦波// case 3 : {pwm(SanTab[pwm_n]);break;}default : pwm(0x3c);break;}TH0 = (-50000+Wave*200) / 256;TL0 = (-50000+Wave*200) % 256; }////////////////////////////////////////////void pwm(uchar High) //調節(jié)PWM輸出{CR = 0;CMOD = 0x02; //setup PCA timerCL = 0x00;CH = 0x00;CCAP0L = 255 - High; //Set the initial value same as CCAP0H;CCAP0H = 255 - High; //高電平為 high/256CCAPM0 = 0x42; //0100,0010 setup PCA module 0 in PWM modeCR = 1; //start PCA timer}//////////////////////////////////////////////uchar get_adc(uchar channel) //AD 采樣{ADC_DATA = 0;ADC_LOW2 = 0;channel &= 0x07; //0000,0111 清0高5位_nop_();_nop_();_nop_();_nop_();ADC_CONTR |= AD_SPEED1; //選擇速度_nop_();_nop_();_nop_();_nop_();ADC_CONTR |= channel; //選擇 A/D 當前通_nop_();_nop_();_nop_();_nop_();delay(1); //使輸入電壓達到穩(wěn)定ADC_CONTR |= 0x08; //0000,1000 令 ADCS = 1, 啟動A/D轉換_nop_();_nop_();_nop_();_nop_();while(!(ADC_CONTR & 0x10)); //0001,0000 測試A/D轉換結束否ADC_CONTR &= 0x80; //1000,0000 清 ADC_FLAG 位, 關閉A/D轉換,_nop_();_nop_();_nop_();_nop_();return (ADC_DATA); //返回 A/D 8 位轉換結果}/******************按鍵處理****************************/void button(uchar key){if(key == 1) {Wave=(Wave+1)%4; }if(key == 2){Wave=(Wave-1)%4;}if(key == 3){Freq=(Freq+1)%50;}if(key == 4){Freq=(Freq-1)%50;}}//////////////////////////////////////////////////******************AD做鍵盤**********************************/void Key(){AD_result = get_adc(NUM); //獲取按鍵值if(abs(AD_result)< 240) //判斷是否按鍵{delay(4); //去抖動AD_result = get_adc(NUM);if(abs(AD_result)< 240) //獲取穩(wěn)定的按鍵值{AD_n=(255)/(254 - AD_result); //獲取倍率,方便處理if((AD_n > 1.5)&&(AD_n <= 2.5))button(1);else if((AD_n > 2.5)&&(AD_n <= 3.5))button(2);else if((AD_n > 3.5)&&(AD_n <= 4.5))button(3);else if((AD_n > 4.5)&&(AD_n <= 5.5))button(4);elsebutton(5);}}delay(25);}//////////////////////////////////////////////main(){adc_init();timer0_init();pwm_init();while(1){Key();}} 2、設計波形采集回放系統(tǒng)。 上一頁 1 2 下一頁
評論