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

正文內容

基于單片機的超生波測距系統(tǒng)課程設計-預覽頁

2025-08-09 16:23 上一頁面

下一頁面
 

【正文】 18 8 總結 18 參考文獻 19 附錄一:源程序 20 附錄 二 :實物圖 26 2 1 引言 近年來,隨著電子測量技術的發(fā)展,運用超聲波作出精確測量已成可能??稍诓煌h(huán)境中進行距離準確度在線標定,可直接用于水、酒、糖、飲料等液位控制,可進行差值設定,直接顯示各種液位罐的液位、料位高度。 3 方案論證 根據(jù)本題設計要求,確定了本系統(tǒng)的原理框圖如圖 31所示。 方案 2:由單片機控制集成超聲波測距模塊 HCSR04,通過用一 IO 口發(fā)一個10us 以上的高電平給集成模塊控制口,就可以在接收口等待高電平輸出,一 有輸出就可以開定時器計時 ,當此口變?yōu)榈碗娖綍r就可以讀定時器的值,并由單片機實時檢測。 因此本 超聲波測距系統(tǒng)的設計采用方案 2。 方案 2:采用 MCS51 單片機。 4 溫度采集模塊的方案 采用溫度傳感器 DS18B20。此外 DS18B20 可直接將溫度轉化成串行數(shù)字信號供處理器處理,可以簡化硬件電路和提高可靠性。 顯示模塊 的方案 方案一:選用數(shù)碼管顯示 , 用普通的數(shù)碼管顯示簡單的數(shù)字、字母 , 數(shù)碼管分時顯示距離和溫度。 式中: s 為超聲波傳播距離 的一半, h 為發(fā)射探頭和接受探頭之間的距離。 5 系統(tǒng)設計 本系統(tǒng)選用的模塊包括:單片機 最小系統(tǒng)模塊、 溫度采集模塊、 超聲波測距模塊、 LCD1602 顯示模塊 。單片機的外部復位有上電復位和按鍵電平復位。 STC89C52 內部有一個反相振蕩放大器, XTAL1 和 XTAL2 分別是該反向振蕩放大器的 輸入端和輸出端。DS18B20 溫度傳感器是單總線的結構,和單片機的通訊只需要 一個 I/O 口, 可以 設置 DS18B20 溫度傳感器的總線和單片機 7 的通訊接口。寫命令包括液晶的光標顯示 /不顯示、光標閃爍 /不閃爍、需不需要移動屏幕、在液晶什么位置顯示等 。 ( 4) 給 E 一個高脈沖將數(shù)據(jù)送入液晶控制器,完成寫操作。 表 53: 溫度分辨率設置表 R1 R0 分辨率 溫度最大轉換時間 0 0 9 位 0 1 10 位 1 0 11 位 375ms 1 1 12 位 750ms 由于本 系統(tǒng)的主要誤差是溫度影響聲速,故對溫度采集的精度要求較高 ,所以選擇 DS18B20 的分辨率位 12 位,在 12位分辨率的時候的溫度采集精度是 度,滿足系統(tǒng)精度的要求, 所以 R1 和 R0 的設置分別為 R1=1,R0=1。 測距時,被測物體的面積不少于 平方米且要盡量平整。 DS=0。 i=4。 DS=0。i++。 return (dat)。i=8。 //將一個字節(jié)數(shù)據(jù)返回 } void tmpwritebyte(uchar dat) //寫一個字節(jié) { uint i。j=8。 if(testb) // 寫 1部分 { DS=0。 i=8。 while(i0)i。 } } } void tmpchange(void) //發(fā)送溫度轉換命令 { 16 dsreset()。 //發(fā)送溫度轉換命令 } int tmp() //獲得溫度 { int temp。 tmpwritebyte(0xcc)。 temp=b。 return temp。 EN=1。 P0=Data。 EN=0。//7*5 2*16。//清屏 } void display(uint temp) //顯示 函數(shù) { uchar ge,shi,bai,qian,i。 ge=temp%10。i++) write_data(table1[i])。 write_data(ge+0x30)。i++) write_data(table2[i])。i++) write_data(table3[i])。 //光標第二行第 12 列 for(i=0。當溫差較大時,前后兩次測距的誤差肯定前后相差較大,故本設計采用了溫度補償?shù)姆椒▉頊p少溫度的影響。在實際測量中,性能指標也達到了設計要求。 sbit EN=P2^0。 int succeed_flag。 uchar timeL。 uchar code table2[]=MM。x0。 } void delayb(uint count) //溫度延時 { uint i。 } } void delay_20us()//微秒延時 { uchar a 。 } 21 void write_(uchar mon) //1602 寫指令函數(shù) { RS=0。 delay(1)。 delay(1)。 } void init_1602() { RW=0。 八位數(shù)據(jù)接口 write_(0x0c)。 qian=temp/1000。 write_(0x80)。 write_data(qian+0x30)。 write_(0x80+11)。 write_(0x80+0x40)。 write_data(ly_dis[0]+0x30)。i1。 i=103。 while(i0)i。 i++。 dat=DS。 } uchar tmpread(void) //讀一個字節(jié) { uchar i,j,dat。i++) { j=tmpreadbit()。 uchar j。j++) { testb=datamp。 i++。 while(i0)i。 DS=1。 //初始化 DS18B20 delayb(1)。 uchar a,b。 tmpwritebyte(0xbe)。 temp=8。 //返回溫度值 } void main() { uint distance。 //打開總中斷 0 TMOD=0x10。 //得到十進制溫度值,因為 DS18B20 可以精確到 度,這里取整數(shù)顯示 ly_dis[0]=ltemp/10。 Speed=*ltemp+。 //延時 20us Trig=0。 EX0=1。 //計數(shù)溢出標志 TR1=1。 //關閉外部中斷 0 if(succeed_flag==1) { time=timeH*256+timeL。 } } //外部中斷 0,用做判斷回波電平 void exter() interrupt 0 // 外部中斷 0 是 0 號 { EX0=0。//至成功測量的標志 } //定時器 1 中斷 ,用做超聲波測距計時 void timer1() interrupt 3 { TH
點擊復制文檔內容
研究報告相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1