




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
PAGE1杭州電子科技大學設計報告課程名稱:短學期PCB電路設計學生姓名:學生學號:學生班級:專業:實驗日期:基于51單片機的稱重系統設計設計要求:89C52單片機最小系統的構成及設計;(包括:時鐘、復位、電源、單片機、按鍵和顯示等)在此基礎上完成稱重系統的設計,稱重量程為0~80噸,誤差正負100kg。A為稱重系統選擇合適的4個壓力傳感器,注意量程和誤差。B設計放大電路,以便單片機對其信號進行后續處理。C用7段數碼管或其他顯示模塊進行重量的顯示,單位為:kg。D根據應用場合設計擴展功能(加分選做設計部分)電源系統電源系統系統流程圖:51單片機壓力傳感器采集信號51單片機壓力傳感器采集信號上位機MAX232上位機MAX232放大器放大模擬信號放大器放大模擬信號按鍵調節按鍵調節A/D轉換A/D轉換數碼管顯示數碼管顯示復位復位蜂鳴器蜂鳴器晶振晶振主要設計內容和功能:本設計研究的是一基于51單片機的稱重系統,稱重范圍為0到80噸,承重范圍較大,可以廣泛地運用于汽車過磅,貨物稱重,也可以用來測體重。本設計主要通過壓力傳感器采集貨物重量信息,產生電壓信號,通過運算放大器的放大,再經過一系列的A/D轉換、單片機的處理,把貨物的重量顯示到數碼管上。如果有需要,也可以通過串口通信模塊把數據到PC上位機中,再由計算機分析處理數據。本設計可以通過按鍵來選擇稱重的最大量程,如果超過選擇的最大量程,則會有蜂鳴器發出警報。方案論證:傳感器:壓力傳感器選用MPX2200壓強為200KPa時對應的最大電壓為40mv,所以傳感器底座面積設置為1平方米。40mv時對應的重量為20噸。放大器設計:量程為80噸,最大電壓對應20噸,故需要4個放大器,由于器件及參數限制,輸出電壓為4V左右,最大輸入電壓40mV,故放大倍數為100倍。故電阻成100倍關系。傳感器采集的信號從Header2端口輸入。仿真結果:從圖中可以看到增益為101倍。A/D轉換:因為設計要求為誤差100kg,最大電壓時對應重量為20噸,20×1000/100=200。2^8=256>200。故采用8位A/D轉換器。本設計可以采用ADC0809轉換器。ADC0809各引腳說明:IN0~IN3:從四個運放接四路模擬量輸入。D0~D7:8位數字量的輸出,D0~D7分別接單片機的P10~P17端。ADDA、ADDB、ADDC:3位地址輸入線,用于選通8路模擬輸入中的一路。ALE:地址鎖存允許信號,輸入端,高電平有效。START:A/D轉換啟動脈沖輸入端,輸入一個正脈沖(至少100ns寬)使其啟動(脈沖上升沿使0809復位,下降沿啟動A/D轉換)。EOC:A/D轉換結束信號,輸出端,當A/D轉換結束時,此端輸出一個高電平(轉換期間一直為低電平)。OE:數據輸出允許信號,輸入端,高電平有效。當A/D轉換結束時,此端輸入一個高電平,才能打開輸出三態門,輸出數字量。CLK:時鐘脈沖輸入端。要求時鐘頻率不高于640KHz。REF(+)、REF(-):基準電壓。VCC:接+5V電源。GND:接地。按鍵設置:兩個按鍵分別接單片機的P06和P07I/O口。當按鍵沒有按下,I/O口端的信號為高電平;當按鍵按下,I/O口端的信號為低電平,當單片機采集到低電平信號,根據程序做出調節量程的相關反應。數碼管顯示:因為本設計要求測量重量范圍為0到80噸,且可以測量較小的重量,如體重(約為幾十千克),所以對顯示的位數要求較高,故采用六個八段數碼管(最小可以顯示到0.1kg)。因為數碼管位的顯示要用掉單片機的8個I/O口,控制顯示位又要用掉6個I/O口,對單片機的資源消耗較多,為節省單片機資源可以使用一個74LS138數據選擇器,用3個I/O口來控制6個數碼管的顯示,這樣就可以節約3個I/O口。拓展功能:超重報警:當測量的重物超過設置的量程,蜂鳴器報警。用蜂鳴器的一段接VCC,另一端接PNP三極管的發射極,三極管的基極通過一個電阻再接單片機的一個I/O口,三極管的集電極接地,這樣就可以通過單片機I/O口的高低電平實現對蜂鳴器的控制。串口通信:本設計中通訊模塊的主要功能是將STC89C52單片機采集到的數據,通過串口傳輸到RS-232中,最后在上位機中得以顯示。由于標準串口的電平規定是接收時電平范圍在+/-3~+/-15V之間,發送時電平范圍在+/-5~+/-15V之間,而一般單片機系統的工作時候的電壓是+3.3V或+5V,由于單片機的電平輸出范圍并不能滿足一般的標準串口電平的基本要求,所有串口端口不能直接與PC上位機的串口端相連接,若要進行連接,則必須對單片機系統的工作電壓經過電平轉換。所以必須要經過MAX232芯片進行電平轉換。模塊圖如下:MUC的串口MUC的串口MAX232PC機串口本設計采用的MAX232芯片是美國公司為電腦的RS-232標準串口專門設計的單電源電平轉換芯片,使用的是+5V單電源供電。MAX232芯片的引腳功能圖如下圖所示。MAX232引腳功能分為三個部分,分別為電荷泵電路部分、數據轉換通道部分和供電部分。電荷泵電路部分由電容和1、2、3、4、5、6引腳構成,其功能是給RS232的串口兩個+12V和-12V的電源。數據轉換通道部分又分成第一數據通道和第二數據通道,其中第一數據通道是由11、12、13、14引腳構成,而第二數據通道是由7、8、9、10引腳構成,TTL/CMOS的相關數據從11引腳、10引腳輸入,由芯片功能轉換成為RS232數據,再從7引腳、14引腳送到電腦串口插頭中;隨后電腦串口插頭的RS232數據由13引腳、8引腳輸入再轉換為TTL/CMOS的數據后,從12引腳、9引腳進行輸出。供電部分由15腳和16腳組成,15引腳接地,16引腳接+5V。供電系統:由于本系統中元器件所需要的最大電壓為+/-12V(運算放大器OP37AZ),本設計采用+/-12V供電。又由于該系統中單片機及AD轉換芯片及液晶顯示器所需供電電壓均為5V。電壓,所以要保證系統穩定可靠的工作,需要設計一個可以穩定提供5V電壓的供電系統。可以采用三端穩壓器件LM7805作為系統電源的穩壓器件以保證系統電壓為穩定的直流5V電壓,輸入12V電壓輸出5V電壓,系統電源輸入接口要加濾波電容以確保工作電壓穩定。電路仿真:此仿真為驗證運放放大增益為200。用一個20mv的直流電壓源代替輸入信號,輸出信號從外接電阻采集。仿真軟件為Multisin12.0。仿真結果:輸入為40mv,輸出為4.04V,約為101倍。原理圖:PCB圖:規則檢查:規則檢查時,由于封裝原因,J1的兩個焊盤外徑132mil過大,超過了最大焊盤外徑100mil,違法了規則,通過修改焊盤規則解決。收獲與體會:在實際設計過程中,遇到很多問題,對軟件和單片機都不太熟悉,但通過互聯網和查閱資料,對這單片機最小系統和整個稱重系統有了初步了解,學會了設計簡單的單片機系統,把以前所學的東西應用起來。也學會了使用AltiumDesigner6.9和Multisim12.0軟件。特別是AD,之前沒有用過,通過這幾天看書和自學,可以繪制該系統的原理圖和PCB圖,完成設計要求。這對以后設計電路有很大的幫助。
中南民族大學學生課程設計報告課程名稱:C程序設計語言選題名稱:通訊錄管理年級:專業:信息管理與信息系統學號:姓名:指導教師:完成地點:管理學院綜合實驗室完成日期:1.課程設計的目的為了熟練掌握C語言的語法特點、及其數據結構,提高自身編寫程序的能力。通過課程設計實現理論知識與實際情況的結合,使所學知識能夠在現實社會中起到一定的作用,防止所編寫的程序脫離實際,讓程序可以更好的發揮作用,以便減輕實際工作中所遇到的繁瑣步驟,提高現實工作中的效率。此外通過課程設計提高邏輯思考能力和解決實際問題的能力。程序設計是公認的、最能直接有效地訓練學生的創新思維,培養分析問題、解決問題能力的學科之一。其次課程設計有利于治學態度的培養。程序設計中,語句的語法和常量變量的定義都有嚴格的要求,有時輸了一個中文標點、打錯了一個字母,編譯就不通過,程序無法正常運行。因此,程序設計初學階段,學生經常會犯這樣的錯誤,可能要通過幾次乃至十多次的反復修改、調試,才能成功,但這種現象會隨著學習的深入而慢慢改觀。這當中就有一個嚴謹治學、一絲不茍的科學精神的培養,又有一個不怕失敗、百折不撓品格的鍛煉。通訊錄信息管理系統是生活中不可缺少的部分編寫了一個通訊錄信息管理系統是十分必要的。本程序設計具有通訊信息的錄入,進行保存、查找、刪除等功能,操作界面簡潔美觀,易于操作。程序用了條件、循環、指針、結構體等知識點,綜合了文件的打開和保存編寫的。可運用于小的管理軟件。軟件運用菜單實現交互式管理,用戶輕松的按鍵既可實現對軟件的操作,操作簡單易懂,功能豐富,可以很好的滿足的需要。通過對通訊錄管理系統的設計,進一步理解和掌握C語言這門課程的知識點,能夠熟練的調用各種函數,把各種C語句有機的結合起來,提高自己C語言程序設計的能力,為今后解決實際問題打下良好基礎。2.設計方案論證2.1設計思路建立一個函數,用來添加、顯示、刪除、查詢通訊錄等信息,完成通訊錄的功能。主函數可以調用六個子函數,分別完成添加記錄、顯示記錄、刪除記錄、查詢記錄、退出系統等功能。在主函數中可以以1、2、3、4、0數字鍵分別可以執行某個功能模塊。退出程序刪除記錄查詢記錄顯示退出程序刪除記錄查詢記錄顯示記錄添加記錄通訊錄管理系統 2.2程序設計2.2.1根據圖1定義數據類型建立函數typedefstruct { charscore;/*編號*/ charname[10];/*姓名*/ charnum[15];/*號碼*/ charemail[20]; /*郵箱*/ charage[8]; /*年齡*/ charadds[20]; /*住址*/ }Person;2.2.2主函數及其流程圖Y定義主函數main()和一系列的功能函數,只有通過這些函數才可實現程序的功能。每次使用都會調用主函數。主函數主要是利用switch語句對數據進行處理,流程圖如下:Y添加記錄選擇1開始N選擇2YYYYNNNN退出系統查詢記錄刪除記錄顯示記錄選擇0選擇4選擇3添加記錄選擇1開始N選擇2YYYYNNNN退出系統查詢記錄刪除記錄顯示記錄選擇0選擇4選擇3結束結束2.2.3增加函數及其流程圖.添加通訊錄記錄流程圖:.顯示通訊錄記錄流程圖:.刪除通訊錄記錄流程圖:.查詢通訊錄記錄流程圖:2.3源程序#include<stdio.h>#include<stdlib.h>#include<string.h>typedefstruct { charscore;/*編號*/ charname[10];/*姓名*/ charnum[15];/*號碼*/ charemail[20]; /*郵箱*/ charage[8]; /*年齡*/ charadds[20]; /*住址*/ }Person;Personpe[80];intmenu_select() { charc; do{ system("cls"); printf("\t\t*****通訊錄*****\n"); printf("\t\t┌───────┐\n"); printf("\t\t│1.添加記錄│\n"); printf("\t\t│2.顯示記錄│\n"); printf("\t\t│3.刪除記錄│\n"); printf("\t\t│4.查詢記錄│\n"); printf("\t\t│0.退出程序│\n"); printf("\t\t└───────┘\n"); printf("\t\t請您選擇(0-4):"); c=getchar(); }while(c<'0'||c>'4'); return(c-'0'); }intInput(Personper[],intn){ inti=0; charsign,x[10]; while(sign!='n'&&sign!='N') { printf("\t編號:"); scanf("\t%d",&per[n+i].score); printf("\t姓名:"); scanf("\t%s",per[n+i].name); printf("\t年齡:"); scanf("\t%s",per[n+i].age); printf("\t電話號碼:"); scanf("\t%s",per[n+i].num); printf("\t通訊住址:"); scanf("\t%s",per[n+i].adds); printf("\t電子郵箱:"); scanf("\t%s",per[n+i].email); gets(x); printf("\n\t是否繼續添加?(Y/N)"); scanf("\t%c",&sign); i++; } return(n+i);}voidDisplay(Personper[],intn){ inti; printf("\n");/*格式*/ printf("編號姓名年齡電話號碼通訊地址電子郵箱\n"); printf("\n"); for(i=1;i<n+1;i++) { printf("%-5d%-8s%-6s%-13s%-15s%-15s\n",per[i-1].score,per[i-1].name,per[i-1].age,per[i-1].num,per[i-1].adds,per[i-1].email); if(i>1&&i%10==0) { printf("\t\n"); printf("\t"); system("pause"); printf("\t\n"); } } printf("\n"); system("pause");}intDelete_a_record(Personper[],intn){ chars[20]; inti=0,j; printf("\t請輸入想刪除記錄中的名字:"); scanf("%s",s); while(strcmp(per[i].name,s)!=0&&i<n)i++; if(i==n) { printf("\t通訊錄中沒有此人!\n"); return(n); } for(j=i;j<n-1;j++) { strcpy(per[j].num,per[j+1].num); strcpy(per[j].name,per[j+1].name); strcpy(per[j].age,per[j+1].age); strcpy(per[j].adds,per[j+1].adds); strcpy(per[j].email,per[j+1].email); per[j].score=per[j+1].score; } printf("\t\t\t已經成功刪除!\n"); return(n-1);}voidQuery_a_record(Personper[],intn){ intm; printf("\t\n請選擇查詢方式:\n");printf("\t┌──────┐\n");printf("\t│1姓名│\n");printf("\t│2電話│\n");printf("\t│3地址│\n");printf("\t│4返回│\n");printf("\t└──────┘\n");printf("請選擇:");scanf("%d",&m);while(m!=1&&m!=2&&m!=3&&m!=4){ printf("輸入錯誤,請重新選擇:"); scanf("%d",&m); } if(m==1) { chars[20]; inti=0; printf("\t請輸入想查詢的姓名:"); scanf("\t%s",s); while(strcmp(per[i].name,s)!=0&&i<n)i++; if(i==n) { printf("\t通訊錄中沒有此人!\n"); return; } printf("\t此人編號:%d\n",per[i].score); printf("\t此人年齡:%s\n",per[i].age); printf("\t電話號碼:%s\n",per[i].num); printf("\t通訊地址:%s\n",per[i].adds); printf("\t電子郵箱:%s\n",per[i].email); }; if(m==2) { chars[20]; inti=0; printf("\t請輸入想查詢的電話:"); scanf("\t%s",s); while(strcmp(per[i].num,s)!=0&&i<n)i++; if(i==n) { printf("\t通訊錄中沒有此人!\n"); return; } printf("\t此人編號:%d\n",per[i].score); printf("\t此人姓名:%s\n",per[i].name); printf("\t此人年齡:%s\n",per[i].age); printf("\t通訊地址:%s\n",per[i].adds); printf("\t電子郵箱:%s\n",per[i].email); }; if(m==3) { chars[20]; inti=0; printf("\t請輸入想查詢的地址:"); scanf("\t%s",s); while(strcmp(per[i].adds,s)!=0&&i<n)i++; if(i==n) { printf("\t通訊錄中沒有此人!\n"); return; } printf("\t此人編號:%d\n",per[i].score); printf("\t此人姓名:%s\n",per[i].name); printf("\t此人年齡:%s\n",per[i].age); printf("\t電話號碼:%s\n",per[i].num); printf("\t電子郵箱:%s\n",per[i].email); };}voidChange(Personper[],intn){ chars[20]; inti=0; printf("\t請輸入想修改的記錄中的名字:"); scanf("%s",s); while(strcmp(per[i].name,s)!=0&&i<n)i++; if(i==n) { printf("\t通訊錄中沒有此人!\n"); return; } printf("\t編號:"); scanf("\t%d",&per[i].score); printf("\t姓名:"); scanf("\t%s",per[i].name); printf("\t年齡:"); scanf("\t%s",per[i].age); printf("\t電話號碼:"); scanf("\t%s",per[i].num); printf("\t通訊住址:"); scanf("\t%s",per[i].adds); printf("\t電子郵箱:"); scanf("\t%s",per[i].email); printf("\t修改成功!");}voidWritetoText(Personper[],intn){ inti=0; FILE*fp;/*定義文件指針*/ charfilename[20];/*定義文件名*/ printf("\t保存到文件\n");/*輸入文件名*/ printf("\t請輸入所保存的文件名:"); scanf("\t%s",filename); if((fp=fopen(filename,"w"))==NULL) { printf("\t無法打開文件\n"); system("pause"); return; } fprintf(fp,"******************************************通訊錄******************************************\n"); fprintf(fp,"編號姓名年齡電話號碼通訊地址電子郵箱\n"); fprintf(fp,"\n"); while(i<n) { fprintf(fp,"%-3d\t%-6s\t%-3s\t%-13s\t%-20s\t%-20s\n",per[i].score,per[i].name,per[i].age,per[i].num,per[i].adds,per[i].email); i++; } fprintf(fp,"\n"); fprintf(fp,"***************************************共有%d條記錄****************************************\n",n); fclose(fp);/*關閉文件*/ printf("保存成功!\n");}voidmain(){ intn=0; for(;;) { switch(menu_select()) { case1: printf("\n\t添加記錄到通訊錄\n"); n=Input(pe,n); break; case2: printf("\n\t\t\t通訊錄記錄表\n"); Display(pe,n); break; case3: printf("\n\t從通訊錄中刪除記錄\n"); n=Delete_a_record(pe,n); printf("\t"); system("pause"); break; case4: printf("\n\t在通訊錄中查找記錄\n"); Query_a_record(pe,n); printf("\t"); system("pause"); break; case0: printf("\n\t\t謝謝使用,再見!\n"); printf("\n\t\t"); system("pause"); exit(0); } }}3.設計結果與分析3.1運行程序將源程序編譯、鏈接后生成可執行文件,運行該文件會看到如圖所示界面。運行主函數時,首先調用函數menu();,該函數主要是利用輸
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 商業銀行金融科技人才培養策略報告:2025年金融科技人才領導力培養方案設計
- 2025年醫院電子病歷系統在醫療數據共享中的應用優化報告
- 鄉村旅游基礎設施提升與旅游市場細分與精準營銷策略報告
- 2025年醫藥企業研發外包(CRO)在臨床試驗數據分析中的質量控制挑戰報告
- 2025年醫藥企業CRO模式下的臨床試驗安全性評價與風險控制報告001
- 農村金融服務體系金融科技與農村金融風險管理優化研究報告
- 循環生態種養殖項項目可行性研究報告寫作模板-備案審批
- 爆破安全規程試題及答案
- 保密法考試題及答案
- 2025年乳制品行業奶源質量追溯系統與品牌形象塑造報告001
- 艾梅乙反歧視培訓課件
- 浙江省杭州市2024-2025學年高二下學期6月期末教學質量檢測英語試題(含答案)
- 2025年河南省中考地理試題(含答案)
- 2025安全生產月一把手講安全公開課三十二(91P)
- DB64-266-2018 建筑工程資料管理規程
- 人教鄂教版六年級下冊科學期末專題訓練:實驗題、綜合題(含答案)
- 2025屆湖北省武漢市武昌區南湖中學英語七年級第二學期期末達標檢測試題含答案
- 2025年度安全生產月培訓課件
- 2025課件:紅色基因作風建設七一黨課
- 2025春季學期國開電大本科《人文英語4》一平臺機考真題及答案(第七套)
- 2025年河北省萬唯中考定心卷生物(一)
評論
0/150
提交評論