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

正文內(nèi)容

基于單片機的數(shù)據(jù)采集系統(tǒng)設計—畢業(yè)設計論文(已改無錯字)

2023-04-10 11:57:24 本頁面
  

【正文】 發(fā)送數(shù)據(jù)子程序 putc_to_serialport()、鍵盤掃描子程序 Keys_Scan()、 LED 數(shù)據(jù)顯示子程序 Display_Result(int d)、延時子程序 Delay()、主機串口接受中斷子程序Serial_INT() interrupt 4。 ( 1)主程序 主程序?qū)ο到y(tǒng)進行初始化,主要是進行定時 /計數(shù)的初始化,然后調(diào)用鍵盤掃描程序 Keys_Scan(),再根據(jù)按下的鍵來調(diào)用 向串口發(fā)送數(shù)據(jù)子程序putc_to_serialport()將相應的數(shù)據(jù)發(fā)送給串 行口。當沒有鍵按下時,則送一個數(shù) F 給 LED 顯示器。其流程圖見圖 ( 2)向串口發(fā)送數(shù)據(jù)子程序 putc_to_serialport() 該程序首先將數(shù)據(jù)發(fā)送到串行口,當 T1=0 時,表明傳送結(jié)束。其流程圖如 所示 ( 3) 鍵盤掃描子程序 Keys_Scan() 該程序是先將行選好,然后再選定列就可以確定到具體的哪一個按鍵。其流程圖如圖 所示 ( 4) LED 顯示程序 Display_Result(int d) 該子程序用的數(shù)碼管動態(tài)顯示方式。先將單片機的 口選通進行位選 ,然后將位選的值發(fā)送給單片 機 P1 口。接著將單片機的 口選通進行段選,然后將要顯示的數(shù)字的值發(fā)送給 P0 口。然后調(diào)用延時,接著將 、 口置 0,下面是重復上面的過程,直到要顯示的數(shù)字全部顯示在數(shù)碼上。其流程圖如 所示。 ( 5) 主機串口接受中斷子程序 Serial_INT() interrupt 4。 當 RI =1 時,接受串口過來的數(shù)據(jù),并對該數(shù)據(jù)進行 X*05H/0FFH 的處理,接下來用處理過的數(shù)據(jù)調(diào)用 LED 顯示程序 Display_Result(int d)。如圖 所示 23 圖 圖 向串口發(fā)送數(shù)據(jù)子程序 putc_to_serialport() 數(shù)據(jù)發(fā)送到串行口 當 T1=0 時,則傳送結(jié)束 TI=0 開 始 初始化 啟動定時器 1 開中斷 再根據(jù)掃描到的鍵盤號,發(fā)送相應的數(shù)據(jù)給串口, 調(diào)用一個 Display()在 LED 上顯示 F 判斷是否有按鍵按下 Y N 24 圖 鍵盤掃描子程序 Keys_Scan() 開始 先將低 4 位置 1選定 4 行 然后判斷該按鍵發(fā)生在哪一列 是否有按鍵按下 Y N 將列數(shù)賦給 KeyNo KeyNo=16 將高 4 位置 1 選定 4 列 再判斷發(fā)生在那一行 0— 3 行分別附加起始值 0, 4, 8, 12 返回 25 圖 LED 顯示程序 Display_Result(int d) 圖 主機串口接受中 斷子程序 Serial_INT() interrupt 4 從機部分程序設計 該部分的程序包括一個主程序、三個子程序,三個子程序分別為 從機串口接受中斷函數(shù) Serial_INT() interrupt 4 、向串口發(fā)送數(shù)據(jù)子程序putc_to_SerialPort(uchar c)和模數(shù)轉(zhuǎn)換子程序 ADCON。 ( 1)主程序 主程序是進行系統(tǒng)的初始化,由于主從兩個單片機要進行通信,所以兩個單開始 顯示個位 顯示十分位 顯示百分位 顯示小數(shù)點 結(jié)束 開始 接受數(shù)據(jù) 對數(shù)據(jù)進行相關處理 調(diào)用 Display_Result(m) 26 片機的初始化應該是相同的,并調(diào)用 A/D 轉(zhuǎn)換。其流程圖如圖 所示 ( 2) 從機串口接受中斷函數(shù) Serial_INT() interrupt 4 因為發(fā)送完成和接受到新字節(jié)都會觸發(fā)串口中斷,因此串口中斷程序里用if(RI)來表示接受中斷,然后將 RI 清 0。再判斷接受到的數(shù)據(jù)第 4 位是否為 1,如果為 1,則按照主機發(fā)送過來的通道進行采集,如果為 0,則調(diào)用循環(huán)采集程序。如圖 所示 (3)模數(shù)轉(zhuǎn)換子程序 ADCON 先要選通 ADC0809,又因為 ADC0809 具有 8 個通道,利用 For 循環(huán)進行 8次采集 ,接下來選擇轉(zhuǎn)換通道, F8H~FFH 用以選擇輸入模擬信號的通道 IN0~IN7的選擇,首先從第一個通道開始,然后執(zhí)行一條讀取轉(zhuǎn)換結(jié)果的指令, 再將轉(zhuǎn)換得到的結(jié)果送給串行口,再依次循環(huán),將通道號自增 1,直到 8 個通道全部轉(zhuǎn)換完。其流程圖如圖 所示 (4)向串口發(fā)送數(shù)據(jù)子程序 putc_to_SerialPort(uchar c) 程序首先將數(shù)據(jù)發(fā)送到串行口,當 T1=0 時,表明傳送結(jié)束。如圖 所示 圖 主程序 開始 初始化 啟動定時器 1 開中斷 調(diào)用 Adcon() 結(jié)束 27 圖 從機串口接受中斷函數(shù) Serial_INT() interrupt 4 圖 ADCON 開始 選定通道號 開始轉(zhuǎn)換 轉(zhuǎn)換結(jié)束將得到的數(shù)據(jù)發(fā)送給串口 結(jié)束 開始 接收串口數(shù)據(jù) 判斷接受到的數(shù)據(jù)第 4 位是否為 1 Y N 按選定的通道號采集 選定循環(huán)采集方式 結(jié)束 28 第五章 調(diào)試結(jié)果 這個系統(tǒng)是一個主從式的數(shù)據(jù)采集系統(tǒng)。系統(tǒng)調(diào)試以程序為主,硬件調(diào)試應先檢測電路的焊接是否正確,然后用外用表檢測或通電檢測其是否有短路或斷路。軟件調(diào)試包括調(diào)試程序和對硬件準確性的調(diào)試。 在整個系統(tǒng)中,主機用到了 9個按鍵,按鍵 0按下后,發(fā)送一個 00H 的數(shù)據(jù)給從機,而從機接收到這個信號就開始調(diào)用一個循環(huán)采集方式,然后從機采集完數(shù)據(jù)后再將轉(zhuǎn)換好的數(shù)據(jù)和采集線路的通道號發(fā)送給主機并用 LED 數(shù)據(jù)顯示器顯示出來;按鍵 18用于選擇采集方式,分別 送相應的采集線路的通道號給從機,然后再將從機轉(zhuǎn)換好的數(shù)據(jù)和采集線路的通道號發(fā)送給主機并用 LED 數(shù)據(jù)顯示器顯示出來;當主機沒有按鍵按下時,則發(fā)送一個數(shù) 0 給 LED。 29 參考文獻 [1] 嚴潔 .單片機原理及其接口技術 .機械工業(yè)出版社, 2021, 65105 [2] 范紅剛 .51單片機自學筆記 .北京航空航天大學出版社, 2021 [3] 高云 .基于 MSP430 的溫室多路數(shù)據(jù)采集系統(tǒng) .農(nóng)機化研究, 2021, [4] 常鐵原,王欣,陳文軍 . 多路數(shù)據(jù)采集系統(tǒng)的設計 .電子技術應用, 2021, [5] 葉紅海,李麗敏 .基于單片機的多路數(shù)據(jù)采集系統(tǒng)的設計與實現(xiàn) .2021, [6] 彭偉 .單片機 C語言程序設計實訓 100 例 .電子工業(yè)出版社, 2021, 4648,104110 [7] 楊居義,楊曉琴,王益斌等 .單片機課程設計指導 .清華大學出版社, 2021,135141 [8] 劉剛,秦永左,朱杰斌 .單片機原理及應用 .北京大學出版社, 2021, 7698,134155 [9] 林祝亮,武林,楊金華 .基于雙單片機的多路數(shù)據(jù)采集系統(tǒng)設計 .儀器儀表學報, 2021, [10] 元增民, 張文希 .單片機原理與應用基礎 .國防科技大學出版社, 2021,205266 30 附錄 主機部分程序 include define uchar unsigned char define uint unsigned int sbit k1=P3^4。 sbit smgd=P2^6。 sbit smgk=P2^7。 uchar Pre_KeyNo=16,KeyNo=16。 uchar code LEDData[]={0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07, 0X7F,0X6F,0X77,0X7C,0X39,0X5E,0X79, 0X71} /*****延時子程序 *****/ void Delay(uint x) { uchar i。 while(x) for(i=0。i120。i++)。 } /**************LED 顯示子程序 ***************/ void Display_Result(int d) { smgk=1。 P0=0X7C。 smgd=1。 P0=LEDData[d/100]。 //顯示百位 Delay(5)。 smgd=0。 smgk=0。 smgk=1。 P0=0X7D。 smgd=1。 P0=LEDData[d/10%10]。 //顯示十位 Delay(5)。 smgd=0。 smgk=0。 P0=0x7E。 smgd=1。 P0=LEDData[d%10]。 //顯示個位 Delay(5)。 smgk=0。 smgd=0。 31 smgk=1。 P0=0X7C。 smgd=1。 P0=0x80。 //顯示小 數(shù)點 Delay(5)。 smgd=0。 smgk=0。 } /************鍵盤掃描子程序 **************/ void Keys_Scan() { uchar Tmp,An。 P3=0XF0。 //低四位置 1,放入 4 行 Delay(1)。 An=P3^0XF0。 //按鍵后 11110000 將變成XXXX0000, X 中有一個為0, 3 個仍為 1,而異或操作會 把 3 個 1 變成 0,唯一的0 變成 1 Tmp=An4。 //該表達式將高 4 位移到低四位 swith(Tmp) //判斷按鍵發(fā)生在哪列 { case 1:KeyNo=0。break。 case 2:KeyNo=1。break。 case 4:KeyNo=2。break。 case 8:KeyNo=3。break。 default: KeyNo=16。 //無鍵按下 } P3=0X0F。 //高 4 位置 0,放入 4 列 Delay(1)。 Tmp=P3^0xF0。 // 按鍵后 00001111 將變成0000XXXX, X 中有一個為0, 3 個仍為 1,而異或操作會把 3 個 1 變成 0,唯一的0 變成 1 switch(Tmp) //0— 3 行分別附加起始值 0, 4,8, 12 { case 1:KeyNo+=0。break。 case 2:KeyNo+=4。break。 case 4:KeyNo+=8。break。 case 8:KeyNo+=12。break。 } 32 } /********向串口發(fā)送數(shù)據(jù)子程序 *********/ void putc_to_serialport(uchar C) { SBUF=C。 while(T1==0)。 TI=0。 } Display() { smgK=1。 P1=0X01。 Smgd=1。 P0=OXOF。 } /*******主程序 *******/ void main() { P0=0x00。 SCON=0x50。 //串口工作于方式 1 TMOD=0x20。 //T1 工作于模式 2 PCON=0x00。 //波特率不加倍 TH1=0xFD。 //波特率為 9600 TL1=0xFD。 TI=RI=0。 TR1=1。 //啟動
點擊復制文檔內(nèi)容
試題試卷相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1