freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于aduc848的智能電壓測(cè)試儀課程設(shè)計(jì)(含全部源程序)(編輯修改稿)

2024-08-16 12:06 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 個(gè)脈沖 MCO=1。 //制造起始條件 iic_delay_4us()。//等待穩(wěn)定 MDO=1。 //上升 iic_delay_5us()。//等待穩(wěn)定 MDO=0。 //拉低數(shù)據(jù)線,產(chǎn)生起始信號(hào) iic_delay_4us()。//等待穩(wěn)定 MCO=0。 //時(shí)鐘拉低,開(kāi)始 } void iic_stop() { MDE=1。 //允許輸出 MCO=0。 MDO=0。 MCO=1。 iic_delay_4us()。 MDO=1。 iic_delay_5us()。 // MDO=0。 //中止后應(yīng)該釋放數(shù)據(jù)線 } //1307 讀入位數(shù)據(jù) void iic_write_bit(bit dat) { MDE=1。 MCO=0。 MDO=dat。 iic_delay_4us()。 MCO=1。 iic_delay_4us()。 MCO=0。 iic_delay_4us()。 } //1307 寫出,輸出 1307 發(fā)送出的位數(shù)據(jù) bit iic_read_bit() { bit dat。 MDE=1。 MCO=0。 MDO=1。 //釋放數(shù)據(jù)線 MDE=0。 iic_delay_4us()。 MCO=1。 iic_delay_4us()。 dat=MDI。 MCO=0。 iic_delay_4us()。 return dat。 } //判斷 1307 寫出是否有效,即從機(jī)是否接受,輸出應(yīng)答信號(hào)。該信號(hào)為低,則表明有效 bit iic_write_char(uchar dat) { uchar i。 bit res。 for(i=0。i8。i++) { iic_write_bit((dat(7i))amp。0x01)。 } res=iic_read_bit()。 return res。 } //讀入 1307,輸出寫入的字符數(shù)據(jù) uchar iic_read_char(bit nack) { uchar dat=0,i。 for(i=0。i8。i++) { dat=1。 if(iic_read_bit()==1)dat++。 } iic_write_bit(nack)。 return dat。 } //判斷寫地址是否有效 bit iic_write_address(uchar id,uchar address) { iic_start()。 if(iic_write_char(id)!=0)return 1。 if(iic_write_char(address)!=0)return 1。 return 0。 } 4) AD 模塊 include include define v_count 9 define a_count 3 unsigned char InterruptCounter=0。//定義中斷計(jì)數(shù)變量并賦初值 0 unsigned int count=0。//定義秒計(jì)數(shù)變量并賦初值 0 unsigned int count1=0。 unsigned int max,min。//電壓最大、最小值 unsigned int CurrentValue。//電壓當(dāng)前值 unsigned int qual_rate,overup_rate,overlow_rate。//電壓上、下限值、合格率、超上限率、超下限率 unsigned int upper_limit=20xx。 unsigned int lower_limit=0。 bit bz_flag。//設(shè)標(biāo)志位,區(qū)分對(duì)象是電壓值還是百分比,輸出“ V”還是“ %” unsigned int Fir_bit,Sec_bit,Thi_bit,Fou_bit。 //電壓位 unsigned int num=0,num1=0。 //num 為電壓采樣周期內(nèi)總計(jì)數(shù), num1 為平均值計(jì)算周期內(nèi)總計(jì)數(shù) unsigned int num_up=0,num_low=0。 //num_up 為超上限次數(shù) ,num_low 為超下限次數(shù) unsigned int sum=0。 //sum 為電壓采樣周期內(nèi)電壓總數(shù)和 unsigned int value[v_count]。 //取樣電壓值數(shù)組,存放一個(gè)平均值計(jì)算周期內(nèi)的每秒電壓值 unsigned int average[a_count]。 //平均值數(shù)組,存放平均值 void Init() { ADCMODE = 0X23。 //一直轉(zhuǎn)換 /CHOP 使能 ADC0CON1 = 0x27。 //主 ADC 選用放大 1 倍 ,單端輸入, ADC0CON2 = 0x0C。 //選用內(nèi)部參考電源,模擬信號(hào)從 AIN5 AIN6 輸入 /* TMOD=0x01。 TH0=(6553650000)/256。 TL0=(6553650000)%256。 EA=1。 ET0=1。 TR0=1。 */ TMOD=0x01。//配置定時(shí)器 0 為 16 位模式,時(shí)鐘是 core clock,默認(rèn)為 IE=0x82。//使能定時(shí)器 0 中斷和全局中斷 TH0=0X00。 TL0=0X00。 TR0=1。//開(kāi)啟 定時(shí)器 0 } void Data_Process(unsigned char ad) { unsigned int w。 if(RDY0) { CurrentValue=((ADC0H*256)+ADC0M)*5/256。 // CurrentValue=1000。 value[num] = ((ADC0H*256)+ADC0M)*5/256。 max=value[0]。 min=value[0]。 //求最大、小值 for(w=1。wnum。w++) { if(value[w1]value[w]) { value[w]=value[w1]。 } else { max=value[w]。 } if(value[w1]value[w]) { value[w]=value[w1]。 } else { min=value[w]。 } } sum+=value[num]。//求電壓采樣周期內(nèi)電壓總和 average[num1]=sum/v_count。 //取計(jì)算周期內(nèi)所有采樣電壓值總和的平均值 //計(jì)算上、下限率 overup_rate=(num_up/num1)*100。 overlow_rate=num_low/num1*100。 qual_rate=99*(1overup_rate/100overlow_rate/100)。 //當(dāng)超過(guò)上下限值時(shí),蜂鳴器鳴響報(bào)警 if(CurrentValueupper_limit||CurrentValuelower_limit) { beep=0。delay_beep(10)。 beep=1。delay_beep(10)。 } //選擇顯示對(duì)應(yīng) AD 標(biāo)號(hào)電壓值或比率 switch(ad) { case 1: AD_display(CurrentValue)。 break。 case 2: AD_display(max)。 break。 case 3: AD_display(min)。 break。 case 4: AD_display(qual_rate)。 break。 case 5: AD_display(overup_rate)。 break。 case 6: AD_display(overlow_rate)。 break。 case 7: AD_display(upper_limit)。 break。 case 8: AD_display(lower_limit)。 break。 } RDY0 = 0。 } } void delay_beep(unsigned int z) { unsigned int x,y。 for(x=z。x0。x) { for(y=100。y0。y)。 } } //定時(shí)器中斷 void timer0() interrupt 1 { unsigned int k。 InterruptCounter++。 if(InterruptCounter=24*8) { InterruptCounter=0。 count++。 num++。 //1 秒采樣一個(gè)電壓 if(count1) { count=0。 } //每一個(gè)采樣周期獲得一個(gè)平均值 if(num==v_count) { num1++。 num=0。 sum=0。 //一個(gè)采樣周期后采樣電壓值清零,重新存儲(chǔ) for(k=0。kv_count。k++) { value[k]=0。 } } //判斷電壓是否超上下限 for(k=0。knum1。k++) { if(average[k]upper_limitamp。amp。num_upa_count) { num_up++。 } if(average[k]lower_limitamp。amp。num_lowa_count) { num_low++。 } } //一個(gè)計(jì)算周期后清零重置 if(num1==a_count) { num1=0。 num=0。 num_up=0。 num_low=0。 for(k=0。ka_count。k++) { average[k]=0。 } } } } //將電壓數(shù)據(jù)或者比率顯示在 lcd 上 void AD_display(unsigned int d) { if(RDY0) { if(bz_flag==0) { Fir_bit = d/1000。 Sec_bit = d/100%10。 Thi_bit = d/10%10。 Fou_bit = d%10。 lcd_pos(lcd_next)。 //向液晶寫指令 lcd_wd(0x30+Fir_bit)。 lcd_wd(0x2e)。 //向液晶寫 39。.39。 lcd_wd(0x30+Sec_bit)。 lcd_wd(0x30+Thi_bit)。 lcd_wd(0x30+Fou_bit)。 lcd_wd(0x56)。//向液晶寫 39。V39。 } else { d*=100。 Fir_bit = d/1000。 Sec_bit = d/100%1
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1