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

正文內(nèi)容

基于stc12c5410ad單片機(jī)的傾角測試系統(tǒng)畢業(yè)設(shè)計(jì)-在線瀏覽

2025-05-12 12:43本頁面
  

【正文】 。AD轉(zhuǎn)換頻率: 52khz/2=26khzA/D轉(zhuǎn)換結(jié)果計(jì)算公式如下: (ADC_DATA[7:0],ADC_LOW2[1:0])= 1024Vin/Vcc其中,Vin為模擬輸入通道輸入電壓,Vcc為單片機(jī)實(shí)際工作電壓,用單片機(jī)工作電壓作為模擬參考電壓。 數(shù)字濾波及工程變換部分 采樣結(jié)束后進(jìn)行數(shù)字濾波,數(shù)字濾波有多種方式,由于角度變化,可慢可快,所以為了適應(yīng)快速變化的角度的測量,相比之下,采用了均值濾波,由于它實(shí)現(xiàn)簡單,占用單片機(jī)的資源較少,是一種比較好的選擇。濾波程序 float filter(void)//AD濾波 平均值濾波 { float sum=0。 char count。countN。 } return (sum/N)。以下為程序代碼:int ChengeADtoAngle(float m1) //m1為數(shù)字量{ float q2,q1。 //q1為得到的電壓值 4335為實(shí)際單片機(jī)的電壓值 q2=((q11650)/800)。 // 將角度 擴(kuò)大10倍}為了觀察角度的變化及對角度的歷史數(shù)據(jù)經(jīng)行分析,需要將該數(shù)據(jù)與出現(xiàn)該數(shù)據(jù)的時間同時記錄。DS1302時鐘芯片可以用于時間記錄,很好地解決了這個問題。這2K字節(jié)的數(shù)據(jù)Flash存儲器分為4個扇區(qū),每個扇區(qū)包含512字節(jié)。對于數(shù)據(jù)Flash存儲器的操作有三個基本命令,分別是字節(jié)讀、字節(jié)編程和扇區(qū)擦除??紤]到數(shù)據(jù)Flash只有扇區(qū)擦除,所以將數(shù)據(jù)按扇區(qū)存儲,不按字節(jié)數(shù)存儲。角度數(shù)據(jù)再加上時間標(biāo)簽共9個字節(jié)。每個扇區(qū)可存儲56個數(shù)據(jù)塊。 數(shù)據(jù)存儲子程序部分子程序//扇區(qū)擦除功能void sector_erase(unsigned int addr) //送地址{ ISP_CONTR = 0x83。 //3為扇區(qū)擦除功能 ISP_ADDRH = addr8。0x00ff。 //以免中斷打斷 ISP_TRIG = 0x46。 EA=1。}//字節(jié)編程void byte_program(unsigned int addr, char dat) //送地址addr 和數(shù)據(jù) dat{ ISP_CONTR = 0x83。 //2為字節(jié)編程 ISP_ADDRH = addr8。0x00ff。 EA=0。 ISP_TRIG = 0xb9。 iap_disable()。 ISP_CONTR = 0x83。 //1為字節(jié)讀功能 ISP_ADDRH = addr8。0x00ff。 ISP_TRIG = 0x46。 dat= ISP_DATA。 iap_disable()。} DS1302軟件設(shè)計(jì)DS1302是SPI總線驅(qū)動方式。1) DS1302的控制字節(jié)表 DS1302的控制字1RAMA4A3A2A1A0RD/CK/WR DS1302 的控制字如圖所示。位6如果為0,則表示存取日歷時鐘數(shù)據(jù),為1表示存取RAM數(shù)據(jù)。最低有效位(位0)如為0表示要進(jìn)行寫操作,為1表示進(jìn)行讀操作,控制字節(jié)總是從最低位開始輸出。同樣,在緊跟8位的控制指令字后的下一個SCLK脈沖的下降沿讀出DS1302的數(shù)據(jù),讀出數(shù)據(jù)時從低位0位到高位7。此外,DS1302 還有年份寄存器、控制寄存器、充電寄存器、時鐘突發(fā)寄存器及與RAM相關(guān)的寄存器等。 ACC = d。 i0。 DS1302_CLK = 1。 ACC = ACC 1。 for(i=8。 i) { ACC = ACC 1。 DS1302_CLK = 1。 } return(ACC)。 DS1302_CLK = 0。 DS1302InputByte(ucAddr)。 // 寫1Byte數(shù)據(jù) DS1302_CLK = 1。}unsigned char Read1302(unsigned char ucAddr) //讀取DS1302某地址的數(shù)據(jù){ unsigned char ucData。 DS1302_CLK = 0。 DS1302InputByte(ucAddr)。 // 讀1Byte數(shù)據(jù) DS1302_CLK = 1。 return(ucData)。鍵值功能設(shè)計(jì):系統(tǒng)默認(rèn)顯示的是當(dāng)前時間和當(dāng)前角度值,當(dāng)?shù)谝淮伟聪耂1時,顯示切換到角度上下限的顯示,第二次按下調(diào)節(jié)角度下限的小數(shù)位,第三次按下調(diào)節(jié)角度下限的個位,依次按下,依次調(diào)節(jié)各位。S3作為調(diào)節(jié)角度上下限時的減一及角度正負(fù)號的切換用。鍵盤功能程序代碼請見附錄。定時掃描有鍵按下?延時4ms有鍵按下?延時4ms讀取鍵值開始//獲取鍵值void getkey(void) { if(P00==0amp。key_last0==1) { delay_flag=0。 //延時4ms,去抖動 if(P00==0amp。key_last0==1) { key_num=0。 delay_flag=0。 //延時4ms,去抖動 } else if(P00==1) key_last0=1。 if(P01==0amp。key_last1==1) { delay_flag=0。 //去抖動 if(P01==0amp。key_last1==1) { key_num=1。 delay_flag=0。 //延時4ms,去抖動 else if(P01==1) key_last1=1。 if(P02==0amp。key_last2==1) { delay_flag=0。 //延時4ms,去抖動 if(P02==0amp。key_last2==1) { key_num=2。 delay_flag=0。 //延時4ms,去抖動 } else if(P02==1) key_last2=1。 if(P03==0amp。key_last3==1) { delay_flag=0。 //延時4ms,去抖動 if(P03==0amp。key_last3==1) { key_num=3。 delay_flag=0。 //延時4ms,去抖動 } //去抖動 else if(P03==1) key_last3=1。} 通信部分上位機(jī)與單片機(jī)通信按應(yīng)答方式經(jīng)行。將操作結(jié)果返回給上位機(jī)。單片機(jī)向上位機(jī)發(fā)送的數(shù)據(jù)的方式考慮了兩種,第一種是等數(shù)據(jù)存儲器容量存滿了后在一塊發(fā),這種方式實(shí)時性不夠,為了使角度數(shù)據(jù)的變化能夠及時的傳到上位機(jī),采用定時發(fā)送,定時時間和上傳的次數(shù)由上位機(jī)來定,這樣一來就解決了實(shí)時性問題。這可由時間標(biāo)簽,加以區(qū)分,而FF為數(shù)據(jù)存儲器中尚未寫進(jìn)的字節(jié)單元,通過上位機(jī)軟件可以濾除。上位機(jī)給單片機(jī)的指令為:報(bào)文開始識別字(STX)命令碼(CMD)報(bào)文結(jié)束(ETX)內(nèi)容0XEECC0XFF字節(jié)數(shù)1視命令定11) 0x10:上傳數(shù)據(jù)存儲器中角度數(shù)據(jù)命令格式:0xEE 0x100x01/00 0xXX0xYY/00 0xFF第二字節(jié) 01 表示允許上傳數(shù)據(jù) 00 表示不允許上傳數(shù)據(jù)第三字節(jié) XX表示隔多少時間上傳一次第四字節(jié) 表示上傳多少次數(shù)據(jù)。2) 0x11:上傳報(bào)警次數(shù)命令格式:0xEE 0x11 0xff3) 0x12:上傳角度上下限命令格式:0xEE 0x12 0xff4) 0x13:接收設(shè)定上下限角度命令格式:0xEE 0x13 0xXX0xYY 0xZZ0x 0xWW 0xRR 0xffXX:表示上限正負(fù)號,為1為正,非1為負(fù)YY:表示上限的整數(shù)部分ZZ:表示上限的小數(shù)部分:表示下限正負(fù)號,為1為正,非1為負(fù)WW:表示下限的整數(shù)部分RR:表示下限的小數(shù)部分5) 0x14:接收設(shè)定時間命令格式: 0xEE 0x140xXX 0xXX0xXX0xXX0xXX 0xXX 0xXX 0xFF 從左到右依次為 秒、分、 時、 日、 月 、星期 、年6) 其他 :命令錯誤返回給上位機(jī)的值為:0xEE33 30300xFF 其他部分軟件設(shè)計(jì) 報(bào)警部分軟件設(shè)計(jì):報(bào)警采用輸出不同占空比的PWM波形,通過音調(diào)高低的變化來實(shí)現(xiàn)高于上限獲低于下限的報(bào)警。并對上限和下限報(bào)警分別計(jì)數(shù),方便向上位機(jī)傳送數(shù)據(jù)。通過設(shè)置標(biāo)志位,很好的解決了這個問題。 temp0=temp。amp。 stop=0。 Is_HIalarm=1。 H_is_add=1。 L_is_add=0。 Is_HIalarm=0。 L_is_add=1。 H_is_add=0。amp。amp。amp。} h_Alarm_Time++。 }if((Is_LOWalarm==1)amp。(stop==0)amp。(Is_HIalarm==0)amp。(L_is_add==1)) { if(l_Alarm_Time==255){l_Alarm_Time=0。 L_is_add=0。顯示的位碼和段碼分別通過單片機(jī)SPI口的MOSI輸出到兩個74HC595來控制。由鍵盤控制顯示內(nèi)容。SPI發(fā)送位碼和段碼程序如下所示:void sendspi(unsigned char spidata,unsigned char isBit){ unsigned char t,spi1_status=0。 while(spi1_status==0) //等傳輸完畢 { spi1_status=SPSTAT。0x80。 for(t=0。t++)。 //位鎖存信號輸出 } else { P11=1。t15。 P11=0。 //寫1清SPIF標(biāo)志位 EA=1。直接測量傾角存在困難。AD轉(zhuǎn)化的參考電壓是單片機(jī)的供電電壓,但每次上電后,單片機(jī)的電壓不是恒定不變的值。把加速度傳感器固定在物體的水平面上,當(dāng)物體姿態(tài)改變時,加速度傳感器的敏感軸隨之轉(zhuǎn)動一定角度,由于重力的作用,傳感器敏感軸上的加速度會發(fā)生改變,因此可通過測量加速度的變化來反映物體姿態(tài)的變化。輸出電壓對應(yīng)傾斜角的公式如下所示: ()其中,為加速傳感器的輸出,為零加速度時的輸出,為靈敏度,為傾斜角。= =800mv/g= ~。總 結(jié)整個系統(tǒng)的設(shè)計(jì)已結(jié)束,由于初次設(shè)計(jì),經(jīng)驗(yàn)不足,系統(tǒng)的硬件LED驅(qū)動部分存在問題。 單片機(jī)和各個芯片分開供電,使單片機(jī)的供電電壓穩(wěn)定,AD轉(zhuǎn)化結(jié)果比較準(zhǔn)確。參考文獻(xiàn)[1] 韓宏,[J].傳感器技術(shù),2005,24(4):4850.[2] 田小芳,陸起涌,熊超. 基于加速度傳感器的傾角儀設(shè)計(jì)[J].傳感技術(shù)學(xué)報(bào),2006,19(2):361363.[3] 張曉靜,[J]. 單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2008 ,5 ,5455.[4] 趙名,[J].煤礦機(jī)電煤礦機(jī)電,2008,1:6264.[5] 王萬俊,[J].西部探礦工程,2002,2:9697.[6] 邱仁峰,[J].電子技術(shù)應(yīng)用,2005,6:3840.[7] 王云峰,謝建,[J].儀器儀表戶,2004,3435.[8] 熊明春,李積彬,王華權(quán),徐剛,[DB].維普資訊網(wǎng).[9] 馬洪連,丁男,黃偉,[M]北京:人民郵電出版社,.[10] Freescale Semiconductor. MMA7260Q Datasheet[S].[11]
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1