




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 2013211119班28號曾霜霜單片機設計實驗報告2015年小學期單片機設計實驗報告題目:計價電子秤 班 級: 20 班內序號: 實驗組號: 學生姓名: 指導教師: 期中檢查教師評語指導教師簽字: 年 月 日計價電子秤2013211119班 曾霜霜實驗摘要 本次我們制作的是基于壓力傳感器的既可顯示重物質量又可輸入單價計算總價的計價電子秤。整個系統中,微控制器采用了Microchip公司的PIC16F877A,軟件設計中涉及PORTA0作為模擬量輸入端;用PORTB作為數字量輸入端,連接鍵盤輸入重物的單價;PORTA1-3作為數字輸出端口連接液晶屏使能端,PORTC作為數字輸出端口連接液晶屏
2、,最終顯示重物的種類,單價和總價。概括的說,本實驗是通過壓力傳感器形變后產生的模擬信號經過數模轉換、量化、顯示獲得重物質量,然后輸入單價后進行乘法運算的過程。AbstractIn this experiment, we made a denominated electronic scale based on the pressure sensor, which can automatically display the weight of the heavy, input the unit price and even calculate the total price of the heav
3、y. Throughout the system, the production of the Microchip cord-PIC16F877A is used as the microcontroller. Software design involves PORTA0 as simulation input port, the analog signal to the microcontroller and digital to analog conversion, as a digital enable output port to control the screen with PO
4、RTA1-PORTA3, using PORTB as the digital input port, connect the 4*4 keyboard input weight unit, PORTC as the digital output port is connected with the LCD screen, display the weight categories, unit price and total value.In summary, this experiment was carried out by the analog signal generated by t
5、he pressure sensor deformation after digital to analog conversion, quantization to get the weight display quality, and then enter the unit price after the multiplication process.關鍵字單片機microcontroller 芯片CMOS chip 計價price calculating壓力傳感器pressure sensor 模數轉換analog-digital conversion一 實驗論證與比較1. 壓力傳感器模塊
6、1.1設計思想壓力傳感器是本實驗的核心部分。壓力傳感器利用形變先將壓力信號轉化為模擬電信號輸出到單片機,再由單片機自身的AD轉換功能將其轉化為數字電信號,從而顯示出重物的質量。1.2具體實現1.2.1壓力傳感器此次選用的是外購的電阻應變式壓力傳感器,電源電壓為5V。使用時,將壓力傳感器一端固定在萬用板上,將重物放在它的另一端,使壓力傳感器內部的電阻應變片發生形變,從而改變壓力傳感器的電阻大小,進而改變通過壓力傳感器的電流大小,獲得隨重物質量而改變的模擬電信號。1.2.2差分放大電路由于壓力傳感器輸出電壓過小,為mV級,于是增加了差分放大電路來將輸出電壓放大到V級,該電路由一個LM324作為差分
7、放大裝置,需用12V的直流電作為驅動,最終放大后的模擬信號從LM324的8管腳傳送到PIC16F877A的RA0端口進行模數轉換。此外,該電路通過一個1M的電位計對電源電壓進行分壓以達到調零的目的,另有一個1K的電位計通過調整LM324的放大倍數以達到壓力傳感器的校準功能。1.2.3數模轉換及量化 經單片機AD轉換后,05V的模擬電信號被量化成了0255的八位二進制數。對應電子秤的量程5.000kg,將5000分成256份,于是分度值取20g.2. 鍵盤模塊2.1設計思想 矩陣鍵盤的操作分為兩個部分:一是檢測是否有鍵被按下;二是識別被按下的鍵是哪一只。我們采用“反轉掃描法”同時實現上述兩個部分
8、?;舅枷胧牵合茸屝芯€全部輸出邏輯0,接著讀取列線,得到與按鍵橫向位置對應的4位列碼。如果有鍵被按下,對應的列線必然會讀回邏輯0,;若無鍵按下,則讀取的列碼必定為全1。當有鍵按下時,將從列線上讀取的列碼,再從列線輸出,然后再讀取行線,得到與按鍵縱向位置對應的4位行碼。最后,將先后兩次讀到的行碼和列碼組合到一起,構成可以準確確定按鍵位置的位置碼。2.2具體實現我們利用小鍵盤的09以及A、B這12個按鍵。數字按鍵用來輸入單價,鍵A和鍵B兩個按鍵分別用來清除已輸入的單價和確定已輸入的單價。鍵盤工作的原理是先將鍵盤所用的按鍵每個賦予一個鍵位碼,存在從40H開始的連續地址單元中。在無按鍵按下時,鍵盤輸出
9、低電平,而當有按鍵按下時,對應的輸出對應高電平。利用取反掃描法,檢測鍵盤是否有按鍵按下,一旦有按鍵按下,查找其鍵位碼對應的地址,利用間接尋址法,減去40H即可獲得輸入的按鍵,再轉而輸入到LCD上。3. 液晶顯示屏模塊3.1程序設計思想通常所說的12864LCD顯示塊是所說的點陣液晶顯示模塊,就是由128*64個液晶顯示點組成的一個128列*64行的陣列,所以也就叫成了12864。每個顯示點都對應著有一位二進制數,0表示滅,1表示亮。存儲這些點陣信息的RAM被稱為顯示數據存儲器。如果要顯示某個圖形或漢字就是將相應的點陣信息寫入到對應的存儲單元中。圖形或漢字的點陣信息是由自己設計,這時候問題的關鍵
10、是顯示點在液晶屏上的位置與其在存儲器中的地址之間的關系。3.2具體實現本實驗采用128*64LCD顯示屏顯示重物的重量、單價、以及計算后的總價。RS,R/W,E分別為命令數據選擇控制端口,讀寫控制端口,使能控制端口,將這三個管腳分別連接到單片機的端口PORTA1-PORTA3,從而實現單片機對LCD12864的控制,并口數據DB0-DB7連接到單片機的PORTC0-PORTC7口,實現相互通信。二 系統總體設計框圖系統模塊總體框圖如下: 三 軟件設計介紹1. AD轉換及量化由于壓力傳感器輸出的是模擬信號,需要通過單片機自身的ADC模塊將其轉換成數字信號。在開始AD轉換前,選取PORTA0為模擬
11、輸入通道。只有當模擬信號采集過程完成之后,AD轉換才能開始。獲取到數字信號后,再進行量化進行BCD碼存儲。1.1流程圖1.2代碼分析1.2.1數模轉換部分ADtrans NOP NOP BSF ADCON0,GO ;開始AD轉換,在AD轉換后,ADIF位被置1ADWAIT BTFSC ADCON0,GO ;等待AD轉換過程結束 GOTOADWAIT;如果沒有轉換完畢,則返回繼續檢測MOVF ADRESH,W ;如果轉換完畢,則把AD結果讀到W MOVWF RESULT ;將AD轉換的結果用一個字節存起來 CALL BCD ;進行量化1.2.2量化部分BCDCLRF BAICLRF SHICLR
12、F GE ;三位數量化準備MOVF RESULT,FSKPNZ ;RESULT不為0,則跳到QIUBAIRETURN QIUBAIMOVLW D100 ;對百位進行量化SUBWF RESULT,0BTFSS STATUS,C ;判斷量化是否完成 GOTO QIUSHI ;已完成則量化十位 MOVWF RESULT INCF BAI ;百位加一 GOTO QIUBAI ;量化十位以及個位同理QIUSHI MOVLW D10 SUBWF RESULT,0 BTFSS STATUS,C GOTO QIUGE MOVWF RESULT INCF SHI GOTO QIUSHIQIUGE MOVF RE
13、SULT,0 MOVWF GE RETURN2. 鍵盤輸入模塊框圖 系統默認輸入的單價為099之間的整數(即兩位整數),當輸入單價后,按A鍵可清除之前輸入的數字,按B鍵則為確認,表示輸入單價結束。2.1流程圖2.2代碼分析;- 檢查輸入 -CHECK CALL KEYSCAN COMF VALUE,0 ;位置碼取反送W BTFSC STATUS,2 ;測試有按鍵按下否?有,跳過下條指令 GOTO CHECK CALL DELAY1 CALL KEYSCAN COMF VALUE,0 BTFSC STATUS,2 GOTO CHECK CALL TRANSLATE ;有按鍵按下,調用鍵值翻譯子程
14、序 RETURN;- 掃描鍵盤和按鍵識別子程序-有按鍵按下時寄存器VALUE=按鍵位置碼;無按鍵按下時VALUE=0FFHKEYSCAN BCF STATUS,RP1 BSF STATUS,RP0 BCF OPTION_REG,7 ;啟動B口上拉電阻 MOVLW 0FH MOVWF TRISB ;將端口B設為高4位輸出,低4位輸入 BCF STATUS,RP0 ; MOVLW 00H ;行線全部輸出0(高4位) MOVWF PORTB NOP NOP MOVF PORTB,0 ANDLW 0FH MOVWF VALUE XORLW 0FH ;列碼是否全為1? BTFSC STATUS,Z GO
15、TO NOKEY ;是,無按鍵按下 BSF STATUS,RP0 MOVLW 0F0H MOVWF TRISB;將端口B設為高4位輸入,低4位輸出 BCF STATUS,RP0 MOVF VALUE,0 MOVWF PORTB NOP NOP MOVF PORTB,0 ANDLW 0F0H;屏蔽掉低4位 IORWF VALUE,1;行碼和列碼組合起來并放入VALUE RETURN NOKEY MOVLW 0FFH MOVWF VALUE RETURN;- 掃描鍵盤和按鍵識別子程序-有按鍵按下時寄存器VALUE=按鍵位置碼;無按鍵按下時VALUE=0FFHKEYSCAN BCF STATUS,R
16、P1 BSF STATUS,RP0 BCF OPTION_REG,7 ;啟動B口上拉電阻 MOVLW 0FH MOVWF TRISB ;將端口B設為高4位輸出,低4位輸入 BCF STATUS,RP0 ; MOVLW 00H ;行線全部輸出0(高4位) MOVWF PORTB NOP NOP MOVF PORTB,0 ANDLW 0FH MOVWF VALUE XORLW 0FH ;列碼是否全為1? BTFSC STATUS,Z GOTO NOKEY ;是,無按鍵按下 BSF STATUS,RP0 MOVLW 0F0H MOVWF TRISB;將端口B設為高4位輸入,低4位輸出 BCF STA
17、TUS,RP0 MOVF VALUE,0 MOVWF PORTB NOP NOP MOVF PORTB,0 ANDLW 0F0H;屏蔽掉低4位 IORWF VALUE,1;行碼和列碼組合起來并放入VALUE RETURN NOKEY MOVLW 0FFH MOVWF VALUE RETURN;-將鍵盤位置碼翻譯成對應的數字-TRANSLATE MOVLW 40H;地址指針FSR設置表頭地址 MOVWF FSR ;通過尋址訪問存放對應字符的碼表LOOPT1 MOVF 0,0 XORWF VALUE,0 BTFSC STATUS,2 GOTO LOOPT2 INCF FSR,1 BTFSS FSR
18、,4 GOTO LOOPT1 RETURNLOOPT2 BCF FSR,6 RETURN 3. 計價功能模塊3.1 關鍵思想闡述計價功能的實現,是軟件設計的關鍵。此過程涉及到的關鍵量包括量化后的重物的質量、鍵盤輸入的單價以及最后輸出在顯示屏的總價。其間關鍵的算法就是乘法計算。對于重物的質量,獲得的是5.000以內的小數,在此做去小數點處理,即為四位整數,轉成BCD碼后用四個地址分別存儲四位。對于輸入的單價,先將輸入的數碼轉成對應的數值,然后和重物的質量進行乘法計算獲取總價。3.2流程圖 3.2.1總價計算253.2.2乘法運算數字都是通過BCD碼的形式逐位存儲的。由于本實驗最多只會涉及四位數和
19、兩位數的乘法計算,故所有乘法計算都是通過循環累加來實現的。3.3代碼分析;-BCD量化-ZHUAN MOVLW .19 ;分度值為20 MOVWF MULTI2;19次累加完成*20的整數乘法運算B2 ;逐位累加的過程 MOVF GE,0 ADDWF GE2,0 MOVWF GE2 MOVLW .10 SUBWF GE2,0 BTFSC STATUS,C CALL GEJINYI MOVF SHI,0 ADDWF SHI2,0 MOVWF SHI2 MOVLW .10SUBWF SHI2,0BTFSC STATUS,C CALL SHIJINYIMOVF BAI,0 ADDWF BAI2,0
20、MOVWF BAI2 MOVLW .10 SUBWF BAI2,0 BTFSC STATUS,CCALL BAIJINYIMOVF QIAN,0ADDWF QIAN2,1DECFSZ MULTI2,1GOTO B2RETURN;-進位處理-GEJINYI MOVWF GE2 INCF SHI2 RETURNSHIJINYI MOVWF SHI2 INCF BAI2 RETURNBAIJINYI MOVWF BAI2 INCF QIAN2 RETURN(算總價的乘法運算與稱重部分的同理,在此不再贅述)4. LCD液晶顯示模塊 4.1流程圖 4.2代碼分析 ;-初始化LCD -INITIALLCD
21、;調用延時,剛上電LCD復位不一定有PIC(196MS)CALL DELAY ;清屏命令,數據指針清零,所有顯示清零MOVLW 01HMOVWF PORTC ;調用寫命令程序CALL ENABLE MOVLW 38H MOVWF PORTC CALL ENABLE MOVLW 0CH MOVWF PORTCCALL ENABLE MOVLW 06H MOVWF PORTC CALL ENABLE RETURN;- 顯示要求輸入的信息-SHOWREQUEST MOVLW 80H MOVWF PORTC CALL ENABLE CALL WRITE MOVLW 90H MOVWF PORTC CA
22、LL ENABLE CALL WRITE1 MOVLW 88H MOVWF PORTC CALL ENABLE CALL WRITE2 MOVLW 98H MOVWF PORTC CALL ENABLE CALL WRITE3 RETURN;- 顯示歡迎界面 -WELCOME MOVLW 91H MOVWF PORTC CALL ENABLE CALL WRITE11 MOVLW 89H MOVWF PORTC CALL ENABLE CALL WRITE22 RETURN;-顯示第三行- WRITE3CLRF COUNT WRITE3_A MOVF COUNT,W BSF PCLATH,4
23、CALL T3 BCF PCLATH,4MOVWF TMP1 ;送暫存器 INCF COUNT,1 ;偏移地址加1 MOVF TMP1,W ;判斷是否顯示完所有數據(約定表格做后一個00H做為結束標志) XORLW 00H BTFSC STATUS,Z GOTO ET3 ;全部顯示完成 MOVF TMP1,W BSF PCLATH,3 BSF PCLATH,4;沒有顯示完,把當前查表所得數據送LCD顯示CALL SEND_INS GOTO WRITE3_A ;調用顯示程序ET3 NOP RETURN ;子程序返回四 硬件系統設計1. 系統總體設計 1.1管腳分布圖 1.2系統總體連接 1.3硬
24、件設計電路連接圖2. 壓力傳感器模塊2.1壓力傳感器與單片機的連接問題壓力傳感器內部有電阻應變片,其阻值大小會隨形變大小而改變,從而產生隨壓力而變的電信號,再通過差分放大電路放大電信號。因此,壓力傳感器輸出的是模擬信號。想要能夠得到數字信號,必須利用PIC16F877A自身的RA端口所帶的模數轉換功能。經過查閱,決定選取PORTA0為模擬端口。另外在接PORTA0之前必須接一個分壓電路,來決定模擬信號的分度值,使輸出的數字信號能在想要的范圍內。 2.2差分放大電路圖 3. LCD液晶顯示模塊 2.1液晶顯示模塊 液晶顯示模塊由LCD板(液晶顯示板),PCB板(印刷電路板)和控制驅動電路三部分組
25、成。 2.2與單片機的連接LCD顯示屏與單片機的連接較為復雜,使用時,1、15、20管腳均接地;2、17、19管腳接電源電壓,4、5、6管腳分別接RA1RA3,714管腳分別接RC0RC7;3管腳用來調節液晶屏亮度,需要在3端口接兩個電阻分別接電源和地進行分壓,在實際操作時先用電位計調節到合適阻值后用定值電阻代替,最后選取接電源和接地的電阻分別為6.8k和3.3k。具體連接圖如下: 4. 鍵盤模塊 4.1 鍵盤行列鍵值的確定當無鍵按下時,各行線和各列線相互斷開,各列線保持高電平,當有鍵按下時,則相應的行線和列線相連,識別是哪一個鍵被按下,通常用行掃描法,即依次對每一行進行掃描,先使被掃描的行為
26、低電平,其它所有的行均為高電平,接著檢測各列線的狀態(稱為列碼)。若各列均為高電平,則所按的鍵不在此行,繼續掃描下一行,若列線不全為高電平,則被按的鍵在此行。根據行碼和列碼,就可知被按的鍵的坐標值(又稱位置碼),根據位置碼通過查表就可得到它的鍵值。 4.2與單片機的連接圖五 調試過程 本實驗是由小組成員分工合作完成的。無論是分塊編寫還是整合后的整體運行,都伴隨著不斷地調試。在調試的過程中,雖然遇到了許多的問題,但是也正是這些解決問題的過程,加深了我們對于單片機各模塊以及匯編語言的連接。下面列舉出一些在調試過程中所遇到的問題。1. LCD液晶顯示屏的顯示問題1.1 時延不一致導致的沖突 LCD顯
27、示屏上電復位需要時間,但是未等到顯示屏復位完成單片機就將下一指令傳輸給LCD屏幕,那么LCD液晶屏就會顯示亂碼。 起初,面對此問題我們毫無頭緒,多次單步調試都能正常顯示,然而運行卻會出現亂碼。因為單步調試的過程中或有充足的時延,并不會引起沖突。我們在圖書館里借的書中有對于LCD液晶屏的介紹,了解到液晶屏上電復位的屬性之后,就在程序中添加一個196ms時延,從而解決了沖突的問題,屏幕能夠正常顯示。1.2按鍵后顯示屏顯示亂碼由于實驗中涉及到鍵盤輸入顯示數字的部分,期間出現了很多問題。起初,由于是直接參考課外書中關于LCD液晶屏控制的代碼,并沒有搞懂代碼的意義,尤其是對于使能端的控制,錯誤的“搬運”
28、代碼,導致屏幕無法正常顯示。在程序中,控制像液晶屏傳輸數據和傳輸指令的程序是不同的,RS分別設置為1和0。于是我們認真地研究了一下書中的代碼,并與網上查找的代碼綜合理解了一下。重新開始檢查我們輸入的代碼,在檢查的過程中,我們發現許多地方在調用了像液晶屏送數據顯示的程序后又不小心加上了向LCD顯示屏送指令的語句,這樣造成的后果就是把數字對應的編碼作為指令傳輸給了LCD屏幕,如果正巧數據對應的八位二進制數存在相應的LCD顯示屏控制指令,便會發生意想不到的結果。刪除調用的第二個函數即可。此后,在按鍵輸入時,發現輸入兩個相同的數字以后,屏幕只會顯示一個,經過多次調試后,我們在輸入程序的部分加入了對于輸
29、入數字個數的判定,便解決了這個問題。2. 鍵位碼的選取問題剛開始使用的是實驗箱的鍵盤,由于在鍵盤部分使用的都是指導書提高篇上的代碼,在連接線時,用彩虹線直接連接后按鍵顯示的值與鍵值不對應。附近的小組都是逐線逐端口對應連接。我們嫌麻煩,于是生出了改代碼鍵值的念頭,成功的解決了這一問題,在最后焊接的時候也修改過依次鍵值。3. 代碼整合后分頁問題的解決起初我們都是分別完成代碼,但是整合到一起之后,并不能正常運行,調試整個代碼時,發現程序執行到一半就停止了,在用監視窗觀察了之后,發現時PCLATH指針自動回到了第一句。各種嘗試后仍然沒有解決問題。參考了往年做同樣題目的學長的代碼后,發現學長也遇到了類似
30、的問題,他們增加的翻頁。用到了第3頁和第4頁。我們只能死馬當活馬醫,照著學長的代碼修改自己的程序。結果問題解決了。不過我們的程序并未超長,為何會出現此問題,至今仍感到困惑。此外,由于是新添加的分頁,導致代碼比較混亂,可讀性較差。4. 數模轉換部分的問題由于我們組只有兩個女生,丘老師建議我們購買數模轉換的模塊,從而能夠減少AD轉換軟件編寫的難度,同時也避免了差分放大電路的焊接。我們外購的模塊是HX711數模轉換模塊。 網上針對此模塊的資料較少,起初我打算學習提高篇上的串口通信來寫這一部分的代碼,但是并不了解此模塊工作的機制以及輸出的串行信號的形式??赡苁怯捎谖覍τ诖谕ㄐ艑W習理解并不到位,在寄存
31、器中始終沒有接收到信號,經過多天的修改嘗試也始終無果。最后只能被迫使用單片機自身的數模轉換功能。參考提高篇上的介紹以及代碼,我們組的數模轉換部分完成的比較順利。5. 軟硬件綜合調試我們組的焊接相對比較順利。不過剛開始在焊接電源的時候遇到了一些麻煩,電壓輸出始終為13V,并沒有起到變壓的效果。我們用萬用表逐點測量排查,發現由于在板子后面走線燙到膠皮導致未接到地線。于是整個焊接大部分采用的是板子上方走線的方法。最后,在焊接壓力傳感器放大電路的部分前,我們現在電路板上進行了預實驗。在最后的整體調試時,電子秤的稱重時鐘沒有達到預想的結果,無法調零,且靈敏度較低。因為運算放大器LM324需要正負12V的電源供電,然而實驗室只能提供13V的電源,而且壓力傳感器輸出的模擬信號太小,容易受到干擾。六 實驗心得體會通過這次綜合實驗,我們小組有很多的心得體會,有些關于單片機的,更多的是有關于人與人之間關系方面的。從開始接觸題目到系統的實現,再到設計說明書的完成,每走一步對我來說都是新的嘗試與挑戰。這次課程設計經歷頗多,受益頗多,既讓我鞏固了學過的知識,又獲得了很多新的知識。本次實驗我們做的是計價電子秤,我負責的部分
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 代工外包合同標準文本
- 保利地暖合同標準文本
- 喬木購銷合同標準文本
- 二零二五版廠區租賃協議書
- 二零二五公司內部合伙投資協議書
- 個人茶地出租合同樣本
- 二零二五版人投資入股協議書
- 個人租房合同樣本首
- 保險投保合同標準文本
- “像”-與-“不像”05年度美術教案
- DEEPSEEK了解及使用攻略高效使用技巧培訓課件
- 玉盤二部合唱簡譜
- 《Python程序設計基礎教程(微課版)》全套教學課件
- 骨料檢測知識培訓講義
- DB33∕T 2387-2021 外貿綜合服務企業服務規范
- 農藥經營許可管理制度
- 通用精美電子小報模板(35)
- 浮頭式換熱器設計畢業論文
- MSDS-火花機油
- 全氟己酮項目可行性研究報告寫作范文
- 太陽能光伏系統支架通用技術要求
評論
0/150
提交評論