C51 C52單片機(jī)實(shí)現(xiàn)減法秤_第1頁
C51 C52單片機(jī)實(shí)現(xiàn)減法秤_第2頁
C51 C52單片機(jī)實(shí)現(xiàn)減法秤_第3頁
C51 C52單片機(jī)實(shí)現(xiàn)減法秤_第4頁
C51 C52單片機(jī)實(shí)現(xiàn)減法秤_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、課程設(shè)計(jì)論文課 程 名 稱  單片機(jī)減法秤報(bào)告 學(xué)    院       電子與電氣      專    業(yè)         自動(dòng)化        班    級(jí)    &

2、#160;   11自動(dòng)C1   學(xué)    號(hào)      學(xué) 生 姓 名                單片機(jī)減法秤設(shè)計(jì)報(bào)告一、方案設(shè)計(jì)1、采用高精度電阻應(yīng)變式壓力傳感器,測量量程0-5kg,測量精度達(dá)5g。2、采用電子秤專用模擬/數(shù)字(A/D)轉(zhuǎn)換器芯片hx711對傳感器信號(hào)進(jìn)行調(diào)理轉(zhuǎn)換,HX711 采用了海芯科技集

3、成電路專利技術(shù),是一款專為高精度電子秤而設(shè)計(jì)的24 位A/D 轉(zhuǎn)換器芯片。3、采用STC89C52單片機(jī)作為主控芯,實(shí)現(xiàn)稱重、計(jì)算價(jià)格等主控功能。4、采用128*64漢字液晶屏顯示稱重重量、單價(jià)、總價(jià)等信息。5、采用4*4矩陣鍵盤進(jìn)行人機(jī)交互,鍵盤容量大,操作便捷。6、具有超量程報(bào)警功能,可以通過蜂鳴器和LED燈報(bào)警。7、系統(tǒng)通過USB電源供電,單片機(jī)程序也可通過USB線串行下載。8.黑金剛配套的 28BYJ485V 驅(qū)動(dòng)的 4 相 5 線的步進(jìn)電機(jī)二、硬件設(shè)計(jì)1、硬件方案(一):稱重傳感器感稱重傳感器感應(yīng)被測重力,輸出微弱的毫伏級(jí)電壓信號(hào)。該電壓信號(hào)經(jīng)過電子秤專用模擬/數(shù)字(A/D)轉(zhuǎn)換器芯

4、片hx711對傳感器信號(hào)進(jìn)行調(diào)理轉(zhuǎn)換。HX711 采用了海芯科技集成電路專利技術(shù),是一款專為高精度電子秤而設(shè)計(jì)的24 位A/D 轉(zhuǎn)換器芯片,內(nèi)置增益控制,精度高,性能穩(wěn)定。HX711芯片通過2線串行方式與單片機(jī)通信。單片機(jī)讀取被測數(shù)據(jù),進(jìn)行計(jì)算轉(zhuǎn)換,再液晶屏上顯示出來。電阻應(yīng)變式傳感器測量原理如圖2所示。圖3 測量電橋原理(二)、電子秤專用24位AD轉(zhuǎn)換芯片HX711及其電路該芯片與后端MCU 芯片的接口和編程非常簡單,所有控制信號(hào)由管腳驅(qū)動(dòng),無需對芯片內(nèi)部的寄存器編程。輸入選擇開關(guān)可任意選取通道A 或通道B,與其內(nèi)部的低噪聲可編程放大器相連。通道A 的可編程增益為128 或64,對應(yīng)的滿額度

5、差分輸入信號(hào)幅值分別為±20mV或±40mV。通道B 則為固定的32 增益,用于系統(tǒng)參數(shù)檢測。芯片內(nèi)提供的穩(wěn)壓電源可以直接向外部傳感器和芯片內(nèi)的A/D 轉(zhuǎn)換器提供電源,系統(tǒng)板上無需另外的模擬電源。芯片內(nèi)的時(shí)鐘振蕩器不需要任何外接器件。上電自動(dòng)復(fù)位功能簡化了開機(jī)的初始化過程。 HX711內(nèi)部方框圖如圖4所示。其外部管腳如圖5所示。圖4 HX711內(nèi)部方框圖本課題設(shè)計(jì)的HX711電路如圖7所示:(三)步進(jìn)電機(jī)選擇步進(jìn)電機(jī)的主要特性:1、 步進(jìn)電機(jī)必須加驅(qū)動(dòng)才可以運(yùn)轉(zhuǎn), 驅(qū)動(dòng)信號(hào)必須為脈沖信號(hào),沒有脈沖的時(shí)候, 步進(jìn)電機(jī)靜止, 如果加入適當(dāng)?shù)拿}沖信號(hào), 就會(huì)以一定的角度(稱為步角

6、)轉(zhuǎn)動(dòng)。轉(zhuǎn) 動(dòng)的速度和脈沖的頻率成正比。2、 步進(jìn)電機(jī)具有瞬間啟動(dòng)和急速停止的優(yōu)越特性3、 改變脈沖的順序,可以方便的改變轉(zhuǎn)動(dòng)的方向。因此,目前打印機(jī),繪圖儀,機(jī)器人,等等設(shè)備都以步進(jìn)電機(jī)為動(dòng)力核心。1、如果不考慮數(shù)據(jù)鎖存功能,步進(jìn)電機(jī)的擴(kuò)展板電路可以簡化為下圖:程序設(shè)計(jì)(四)、單片機(jī)STC89C52及其電路(1) STC89C52 單片機(jī)概述STC89C52系列單片機(jī)是宏晶科技生產(chǎn)的單時(shí)鐘/機(jī)器周期(1T)的單片機(jī),是高速/低功耗/超強(qiáng)抗干擾的新一代8051單片機(jī),指令代碼完全兼容傳統(tǒng)8051,但速度快8-12倍,內(nèi)部集成MAX810專用復(fù)位電路。本課題設(shè)計(jì)的電子秤的單片機(jī)應(yīng)用電路如圖9所示

7、:圖9 STC89C52單片機(jī)電路(五)、液晶屏電路圖10 LCD顯示電路液晶屏電路如圖10所示。LCD_CS、LCD_RES、LCD_RS、LCD_SDA、LCD_SCK為液晶模塊與單片機(jī)接口的控制線。CS_ZK、SCK_ZK、SO_ZK和SI_ZK為字庫和單片機(jī)接口的控制線。(六)、矩陣鍵盤電路矩陣鍵盤電路如圖11所示:圖11 矩陣鍵盤電路圖中4*4矩陣鍵盤可以顯示0-9數(shù)字、小數(shù)點(diǎn)和五個(gè)功能鍵。鍵盤行掃描信號(hào)為ROW1ROW4,列掃描信號(hào)為COL1COL4。(七)電源電路本設(shè)計(jì)采用USB接口供電,電源電壓5V。同時(shí),USB接口通過內(nèi)含PL2303芯片的轉(zhuǎn)換電路對單片機(jī)進(jìn)行程序編寫。其電路

8、原理如圖所示。(八)軟件設(shè)計(jì)主程序軟件流程如圖21所示。 圖21 主程序流程圖 3、主程序下面介紹main.c主程序編寫,其他程序略。#include "main.h"#include "HX711.h"#include "LCD1602.h"unsigned char code CCW8=0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09; /unsigned char code CW8=0x09,0x01,0x03,0x02,0x06,0x04,0x0c,0x08;unsigned long HX711

9、_Buffer = 0;unsigned long Weight_Maopi = 0;long Weight_Shiwu = 0;unsigned char KEY_NUM = 0;char Target_Count = 0;unsigned char Target_Buffer2 = 0x00,0x00;char target = 0;unsigned char wucha =1;bit Flag_ERROR = 0;bit Flag_OK = 0;#define GapValue 378 /378void main()Init_LCD1602();LCD1602_write_com(0x8

10、0);LCD1602_write_word("Welcome to use!");while(K1);Delay_ms(1000);while(K1=0)motor_cw();LCD1602_write_com(0x80);LCD1602_write_word(" Weight: ");LCD1602_write_com(0x80+0x40);LCD1602_write_word(" Target: 0000 g");Get_Maopi(); while(1)Get_Weight();LCD1602_write_com(0x80+0x

11、0a);LCD1602_write_word("ERROR ");elseLCD1602_write_com(0x80+0x0a);LCD1602_write_data(Weight_Shiwu/1000 + 0X30);LCD1602_write_data(Weight_Shiwu%1000/100 + 0X30);LCD1602_write_data(Weight_Shiwu%100/10 + 0X30);LCD1602_write_data(Weight_Shiwu%10 + 0X30);LCD1602_write_word(" g");if(Fl

12、ag_OK = 1&&(target>Weight_Shiwu+wucha) motor_ccw(); /電機(jī)逆轉(zhuǎn) if(target<=Weight_Shiwu+wucha)Flag_OK=0;if(Flag_OK=0)KEY_NUM = Scan_Key();if( KEY_NUM != 0x55)if(KEY_NUM = 16)Get_Maopi();if(KEY_NUM = 15)while(K1);Delay_ms(1000);while(K1=0)motor_cw();if(KEY_NUM = 12)Target_Count-;if( Target_Co

13、unt < 0)Target_Count = 0;Target_BufferTarget_Count = 0; switch(Target_Count)case 0:LCD1602_write_com(0x80+0x40+0x0a);LCD1602_write_data(' ');break;case 1:LCD1602_write_com(0x80+0x40+0x0b);LCD1602_write_data('0');break;default : break;if(KEY_NUM = 13)target = Target_Buffer0 * 10 +

14、Target_Buffer1;Flag_OK = 1;f(KEY_NUM >= 0 && KEY_NUM <= 9) Target_BufferTarget_Count = KEY_NUM;switch(Target_Count)case 0:LCD1602_write_com(0x80+0x40+0x0c);LCD1602_write_data(Target_Buffer0 + 0x30);break;case 1:LCD1602_write_com(0x80+0x40+0x0d);LCD1602_write_data(Target_Buffer1 + 0x30)

15、;break;default : break;LCD1602_write_com(0x80+0x40+0x0d);LCD1602_write_data('g');Target_Count+;if( Target_Count >= 2)Target_Count = 2;unsigned char Scan_Key()unsigned char temp = 0;unsigned char com = 0x55 , com1 = 0 , com2 = 0;P1=0xf0;if(P1!=0xf0)com1=P1;P1=0x0f;com2=P1; P1=0xf0;while(P1

16、!=0xf0); temp=com1|com2;if(temp=0xee)com=1;/數(shù)字1if(temp=0xed)com=4;/數(shù)字4if(temp=0xeb)com=7;/數(shù)字7if(temp=0xe7)com=11;if(temp=0xd7)com=0;/數(shù)字0if(temp=0xb7)com=14;/備用鍵*號(hào)鍵if(temp=0xde)com=2; /數(shù)字2if(temp=0xdd)com=5; /數(shù)字5if(temp=0xdb)com=8;/數(shù)字8if(temp=0xbe)com=3;/數(shù)字3if(temp=0xbd)com=6; /數(shù)字6if(temp=0xbb)com=9;

17、/數(shù)字9if(temp=0x7e)com=16;/數(shù)字A鍵,去皮功能 if(temp=0x7d)com=15;/數(shù)字B鍵清除鍵,二次測量if(temp=0x7b)com=12;/數(shù)字C輸入單價(jià)錯(cuò)誤時(shí)返回上一步if(temp=0x77)com=13;/數(shù)字D鍵,計(jì)算總價(jià) return(com);Weight_Shiwu = HX711_Read();Weight_Shiwu = Weight_Shiwu - Weight_Maopi;if(Weight_Shiwu > 0)Weight_Shiwu = (unsigned int)(float)Weight_Shiwu/GapValue);

18、 if(Weight_Shiwu > 5000)Flag_ERROR = 1;elseFlag_ERROR = 0;elseWeight_Shiwu = 0;Flag_ERROR = 1;void Get_Maopi()Weight_Maopi = HX711_Read(); void Delay_ms(unsigned int n)unsigned int i,j;for(i=0;i<n;i+)for(j=0;j<123;j+);void delay500us(void) int j;for(j=0;j<57;j+) ;void di(void) / unsigned

19、 int y;for(y=0;y<250;y+)beep=0;Delay_ms(1);beep=1;Delay_ms(1);void motor_ccw(void) / unsigned char i,j;for(j=0;j<2;j+) /for(i=0;i<8;i+) /F1=CCWi&0x01;F2=CCWi&0x02;F3=CCWi&0x04;F4=CCWi&0x08;Delay_ms(10);void motor_cw(void) unsigned char i,j;for(j=0;j<5;j+) for(i=0;i<8;i

20、+) F1=CWi&0x01;F2=CWi&0x02;F3=CWi&0x04;F4=CWi&0x08;Delay_ms(1);(九)操作與使用1、上電運(yùn)行下載完成后程序自動(dòng)運(yùn)行,或重上電后程序正常運(yùn)行,如圖所示。圖23 上電運(yùn)行圖2、鍵盤操作說明4*4矩陣鍵盤定義如下7 8 9 D(清0)4 5 6 C(電機(jī)反轉(zhuǎn))1 2 3 B(電機(jī)正轉(zhuǎn))14(未定義) 0 15(.) A(確定價(jià)格)其中:l 鍵09為數(shù)字鍵,用于單價(jià)設(shè)定。l 鍵15為小數(shù)點(diǎn),也用于單價(jià)設(shè)定。l B鍵為電機(jī)正轉(zhuǎn),每次設(shè)定數(shù)值后,請先按清B鍵,以驅(qū)動(dòng)電機(jī)轉(zhuǎn)動(dòng)。C鍵為電機(jī)反轉(zhuǎn),當(dāng)達(dá)到設(shè)定值時(shí),按下該鍵電機(jī)開始向反方向轉(zhuǎn)動(dòng)3、常用使用步驟:l 打開電源,屏幕顯示電子秤初始化成功,此時(shí)重量和單價(jià)為0,金額為空;l 通過數(shù)字鍵和小數(shù)點(diǎn)鍵鍵入搖確定的稱重?cái)?shù)值,完成后按下電機(jī)轉(zhuǎn)動(dòng)鍵。l 在支架上稱出搖秤的數(shù)值,液晶屏顯示重量(單位為g),當(dāng)?shù)竭_(dá)設(shè)定值時(shí)電

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論