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

正文內(nèi)容

基于stc12c5410ad單片機的傾角測試系統(tǒng)設(shè)計畢業(yè)論文-文庫吧

2025-06-12 19:36 本頁面


【正文】 數(shù)據(jù)并將其轉(zhuǎn)換為RS232信息流格式發(fā)送給外設(shè);另一方面可從RS232外設(shè)接收數(shù)據(jù)轉(zhuǎn)換為USB數(shù)據(jù)格式傳送至主機,其中包括控制和握手信號。,該芯片可以從USB接口處獲取電源。R,T分別接單片機的TXD(發(fā)射端)和RXD(接收端)。 CP2102與USB接口 DS1302簡介DS1302是美國DALLAS公司推出的一種高性能、低功耗的實時時鐘芯片,附加31字節(jié)靜態(tài)RAM,采用SPI三線接口與CPU進行同步通信,并可采用突發(fā)方式一次傳送多個字節(jié)的時鐘信號和RAM數(shù)據(jù)。實時時鐘可提供秒、分、時、日、星期、月和年,一個月小與31天時可以自動調(diào)整,且具有閏年補償功能。~。采用雙電源供電(主電源和備用電源),可設(shè)置備用電源充電方式,提供了對后背電源進行涓細電流充電的能力。DS1302用于數(shù)據(jù)記錄,特別是對某些具有特殊意義的數(shù)據(jù)點的記錄上,能實現(xiàn)數(shù)據(jù)與出現(xiàn)該數(shù)據(jù)的時間同時記錄,因此廣泛應(yīng)用于測量系統(tǒng)中[12]。 DS1302電路連接圖 微控制器模塊 STC12系列單片機簡介宏晶STC12C5410AD單片機是新一代單片機,它主要特點是高速,高可靠,寬電壓,低功耗,超強抗干擾,無法解密[11]。該單片機有以下性能:1) 高速:1個時鐘周期/機器時間,增強8051內(nèi)核,速度比普通51單片快8~12倍。2) 寬電壓:~,~(STC12LE5410AD系列)。3) 低功耗設(shè)計:空閑模式,掉電模式(可由外部中斷喚醒)。4) 工作頻率:0~35MHz,相當(dāng)于普通8051:0~420MHz。5) 12K/10K/8K/6K/4K/2K字節(jié)片內(nèi)的程序Flash存儲器,可以擦寫10萬次以上 6) 512字節(jié)片內(nèi)數(shù)據(jù)存儲器 ,內(nèi)部集成了2K字節(jié)的數(shù)據(jù)Flash存儲器(EEPROM)。7) ISP/IAP,在系統(tǒng)可編程/在應(yīng)用可編程,無需編程器和仿真器。8) 10位ADC,8通道STC12C2052AD為8位ADC,4路PWM可選,4通道捕獲/比較功能(PWM/PCA/CCU)可用來再實現(xiàn)4個定時器或四個外部中斷(支持上升沿/下降沿中斷)9) 6個16位定時器,包括T0、T1,PCA也是4個定時器。10) 硬件看門狗(WTD),高速SPI通訊接口,全雙工異步串行口通訊(UART)兼容普通8051串口。11) 通用I/O口,可以設(shè)置為4種工作模式,有準雙向口/弱上拉,僅為輸入/高阻,開漏,推挽/強上拉。每個I/O口驅(qū)動能力均可達20mA,但整個芯片最大不得超過55mA.選擇STC12C5410AD單片機為主控器件,單片機的片上資源能滿足系統(tǒng)的功能要求,減少了外圍器件,加強了系統(tǒng)的抗干擾能力,提高系統(tǒng)穩(wěn)定性,降低了開發(fā)成本和開發(fā)難度。 單片機系統(tǒng)電路設(shè)計1) MMA7260Q與單片機的接口。單片機STC12C5410AD的P1為通用數(shù)字I/O與12位AD轉(zhuǎn)換器模擬輸入通道復(fù)用端口。、分別與加速度傳感器MMA7260Q三軸向模擬信號輸出XOUT、YOUT、ZOUT連接,實現(xiàn)加速度信號的采集;。 MMA7260Q與MSP430接口示意圖2) 74HC595與單片機接口單片機的 SPI由MISO()、MOSI()、SCLK()和/SS()4根信號線構(gòu)成。由于只是選擇主機模式故/SS信號線不用。 74HC595與單片機接口 其他電路設(shè)計 .鍵盤電路設(shè)計 系統(tǒng)涉及到壓力的上下限報警值的設(shè)定,時間的設(shè)定,由于沒有過多的鍵,考慮到單片機的I/O口,所以用獨立式鍵盤來實現(xiàn)。 接收按鍵信號的時候,會出現(xiàn)前沿和后沿抖動, 采用用軟件延時的辦法消除抖動[13]。 鍵盤電路設(shè)計.聲光報警電路設(shè)計報警功能主要是角度超過設(shè)定的上線報警值或低于設(shè)定的下線報警值時候會發(fā)出報警信號,系統(tǒng)采用較為常用的方案設(shè)計——聲光報警。聲音報警用蜂鳴器來實現(xiàn),光報警采用高亮度紅光LED來實現(xiàn)。報警聲音可以有高低報警,LED閃爍報警[14]。 3 軟件設(shè)計軟件采用Keil uVision3作為下位機系統(tǒng)的開發(fā)平臺。 角度數(shù)據(jù)采集設(shè)計 MMA7260Q輸出為模擬信號,采集過程需進行AD轉(zhuǎn)換。 STC12C5410AD單片機集成有8路高速模數(shù)轉(zhuǎn)換器(ADC)。,它是一種逐次比較型模數(shù)轉(zhuǎn)換器,速度可達到100KHz(10萬次/秒),10位的轉(zhuǎn)換精度,ADC輸入通道與P1口復(fù)用,上電復(fù)位后P1口為弱上拉型I/O口,用戶可以通過軟件設(shè)置將8路中的任何一路設(shè)置為A/D轉(zhuǎn)換,不需作為A/D 使用的口可繼續(xù)作為I/O口使用。A/D采樣率的選擇不能干擾加速度計采樣頻率(11kHz) ,以防混疊誤差。AD轉(zhuǎn)換頻率: 52khz/2=26khzA/D轉(zhuǎn)換結(jié)果計算公式如下: (ADC_DATA[7:0],ADC_LOW2[1:0])= 1024Vin/Vcc其中,Vin為模擬輸入通道輸入電壓,Vcc為單片機實際工作電壓,用單片機工作電壓作為模擬參考電壓。 數(shù)字濾波及工程變換部分 采樣結(jié)束后進行數(shù)字濾波,數(shù)字濾波有多種方式,由于角度變化,可慢可快,所以為了適應(yīng)快速變化的角度的測量,相比之下,采用了均值濾波,由于它實現(xiàn)簡單,占用單片機的資源較少,是一種比較好的選擇。其濾波效果與所選擇的采樣次數(shù)有關(guān),次數(shù)越大,效果越好,但花費時間越長[15]。濾波程序 float filter(void)//AD濾波 平均值濾波 { float sum=0。 float ad_data。 char count。 for(count=0。countN。count++) { sum+=Get_data()。 } return (sum/N)。} 將濾波后的結(jié)果帶入公式: 800 ()就可以得到角度值。以下為程序代碼:int ChengeADtoAngle(float m1) //m1為數(shù)字量{ float q2,q1。 q1=(m1/1023)*4335。 //q1為得到的電壓值 4335為實際單片機的電壓值 q2=((q11650)/800)。 //分子分母同時擴大1000倍 return(*asin(q2))。 // 將角度 擴大10倍}為了觀察角度的變化及對角度的歷史數(shù)據(jù)經(jīng)行分析,需要將該數(shù)據(jù)與出現(xiàn)該數(shù)據(jù)的時間同時記錄。這種記錄對數(shù)據(jù)的分析及對異常數(shù)據(jù)出現(xiàn)的原因的查找具有重要意義若采用單片機計時,一方面占用硬件資源,另一方面需要設(shè)置中斷、查詢等,同樣耗費單片機資源。DS1302時鐘芯片可以用于時間記錄,很好地解決了這個問題。STC12C5410AD單片機內(nèi)部集成了2K字節(jié)的數(shù)據(jù)Flash存儲器(EEPROM),地址范圍是2800H~2FFFH。這2K字節(jié)的數(shù)據(jù)Flash存儲器分為4個扇區(qū),每個扇區(qū)包含512字節(jié)。數(shù)據(jù)Flash擦除只有扇區(qū)擦除,沒有字節(jié)擦除。對于數(shù)據(jù)Flash存儲器的操作有三個基本命令,分別是字節(jié)讀、字節(jié)編程和扇區(qū)擦除。進行字節(jié)編程時,只能將“1”改為“0”,或“1”保持為“1”,“0”保持為“0”??紤]到數(shù)據(jù)Flash只有扇區(qū)擦除,所以將數(shù)據(jù)按扇區(qū)存儲,不按字節(jié)數(shù)存儲。 角度數(shù)據(jù)分為整數(shù)和小數(shù)部分存儲,這是由于用UART傳輸方便而定的。角度數(shù)據(jù)再加上時間標簽共9個字節(jié)。稱之為一個數(shù)據(jù)塊。每個扇區(qū)可存儲56個數(shù)據(jù)塊??紤]到數(shù)據(jù)存儲空間有限,于是采取的這樣的存儲方法:采樣的角度值與上一次的角度值比較,如果相差不大的話,則舍棄本次角度值,如果相差很大,則經(jīng)進行存儲。 數(shù)據(jù)存儲子程序部分子程序//扇區(qū)擦除功能void sector_erase(unsigned int addr) //送地址{ ISP_CONTR = 0x83。 //系統(tǒng)工作時鐘12Mhz 打開IAP功能 ISP_CMD = 0x03。 //3為扇區(qū)擦除功能 ISP_ADDRH = addr8。 //地址右移八位取高地址 ISP_ADDRL = addramp。0x00ff。 EA=0。 //以免中斷打斷 ISP_TRIG = 0x46。 ISP_TRIG = 0xb9。 EA=1。 iap_disable()。}//字節(jié)編程void byte_program(unsigned int addr, char dat) //送地址addr 和數(shù)據(jù) dat{ ISP_CONTR = 0x83。 ISP_CMD = 0x02。 //2為字節(jié)編程 ISP_ADDRH = addr8。 ISP_ADDRL = addramp。0x00ff。 ISP_DATA = dat。 EA=0。 ISP_TRIG = 0x46。 ISP_TRIG = 0xb9。 EA=1。 iap_disable()。}//字節(jié)讀功能unsigned char byte_read(unsigned int addr) //送地址{ unsigned char dat。 ISP_CONTR = 0x83。 ISP_CMD = 0x01。 //1為字節(jié)讀功能 ISP_ADDRH = addr8。 ISP_ADDRL = addramp。0x00ff。 EA=0。 ISP_TRIG = 0x46。 ISP_TRIG = 0xb9。 dat= ISP_DATA。 EA=1。 iap_disable()。 return(dat)。} DS1302軟件設(shè)計DS1302是SPI總線驅(qū)動方式。它要向寄存器寫入控制字,還需要讀取相應(yīng)寄存器的數(shù)據(jù)。1) DS1302的控制字節(jié)表 DS1302的控制字1RAMA4A3A2A1A0RD/CK/WR DS1302 的控制字如圖所示。控制字節(jié)的最高有效位(位7)必須是邏輯1,如果它為0,則不能把數(shù)據(jù)寫入DS1302中。位6如果為0,則表示存取日歷時鐘數(shù)據(jù),為1表示存取RAM數(shù)據(jù)。位5至位1指示操作單元的地址。最低有效位(位0)如為0表示要進行寫操作,為1表示進行讀操作,控制字節(jié)總是從最低位開始輸出。2) 數(shù)據(jù)輸入輸出(I/O) 在控制指令字輸入后的下一個SCLK時鐘的上升沿時,數(shù)據(jù)被寫入DS1302,數(shù)據(jù)輸入從低位即位0開始。同樣,在緊跟8位的控制指令字后的下一個SCLK脈沖的下降沿讀出DS1302的數(shù)據(jù),讀出數(shù)據(jù)時從低位0位到高位7。3) DS1302的寄存器 DS1302有12個寄存器,其中有7個寄存器與日歷、時鐘相關(guān),存放的數(shù)據(jù)位為BCD碼形式,其日歷、時間寄存器及其控制字見表2。此外,DS1302 還有年份寄存器、控制寄存器、充電寄存器、時鐘突發(fā)寄存器及與RAM相關(guān)的寄存器等。 DS1302的控制字和各寄存器名稱命令字取值范圍寫操作讀操作 秒寄存器80H81H0099 分寄存器82H83H0099 時寄存器84H85H1—12或0023 日寄存器86H87H01—28,29 月寄存器88H89H0112 周寄存器8AH8BH0107 年寄存器8CH8DH0099開始變量初始化使DS1302不具有寫保護復(fù)位產(chǎn)生1個高電平寫DS1302地址延時一段時間向該地址寫數(shù)據(jù)復(fù)位產(chǎn)生1個高電平數(shù)據(jù)寫完?寫DS1302地址延時一段時間讀該地址寫數(shù)據(jù)數(shù)據(jù)讀完?顯示數(shù)據(jù) DS1302實時時鐘流程圖部分程序://Ds1302void DS1302InputByte(unsigned char d) //實時時鐘寫入一字節(jié)(內(nèi)部函數(shù)){ unsigned char i。 ACC = d。 for(i=8。 i0。 i) { DS1302_IO = ACC0。 DS1302_CLK = 1。 DS1302_CLK = 0。 ACC = ACC 1。 } }unsigned char DS1302OutputByte(void) //實時時鐘讀取一字節(jié)(內(nèi)部函數(shù)){ unsigned char i。 for(i=8。 i0。 i) { ACC = ACC 1。 ACC7 = DS1302_IO。 DS1302_CLK = 1。 DS1302_CLK = 0。 } return(ACC)。 }void Write1302(unsigned char ucAd
點擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1