




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
單片機雙機通信系統(tǒng)-畢業(yè)設(shè)計匯編(完整版)資料(可以直接使用,可編輯優(yōu)秀版資料,歡迎下載)
單片機雙機通信系統(tǒng)-畢業(yè)設(shè)計匯編(完整版)資料(可以直接使用,可編輯優(yōu)秀版資料,歡迎下載)成都信息工程學院電子工程學院[電子技術(shù)綜合設(shè)計]總結(jié)報告題目:單片機雙機通信系統(tǒng)專業(yè):生物醫(yī)學工程班級:2021級1班姓名:指導教師:胡老師評分:2021年12月20日目錄1 項目計劃 11.1 項目背景 11.2 方案設(shè)計可行性分析 1需求分析 1可行性分析 11.3 項目執(zhí)行計劃 22 設(shè)計說明 32.1 方案設(shè)計 32.2 硬件設(shè)計原理 4單片機系統(tǒng) 4時鐘模塊 5電平轉(zhuǎn)換 6數(shù)碼管顯示 7按鍵模塊 72.3 各單元模塊設(shè)計流程圖 8硬件總設(shè)計框圖 8程序設(shè)計 9按鍵程序設(shè)計 9串口程序設(shè)計 113 調(diào)試說明 113.1 調(diào)試方法及步驟 113.2 調(diào)試數(shù)據(jù) 123.3 故障分析 143.4 設(shè)計注意事項: 144 總結(jié) 155 參考文獻 156 附錄 16項目計劃項目背景單片機作為微型計算機的一個分支,其功能強、體積小、應用靈活等諸多優(yōu)點,在工業(yè)控制、儀器儀表、通信、家用電器和國際科技等各個領(lǐng)域得到廣泛的應用,隨著集成電路技術(shù)的不斷發(fā)展,單片機的性能也在不斷提高其應用的范圍必將越來越寬廣。然而,隨著單片機在工業(yè)自動化控制、智能儀器中的廣泛應用,單片機已經(jīng)逐漸滿足需要,多機協(xié)同工作已經(jīng)成為重要的發(fā)展趨勢,多機應用的關(guān)鍵就在于多級之間的互相通信、互傳數(shù)據(jù)信息。單片機和計算機的共同發(fā)展下,單片機的應用從獨立的單片機向網(wǎng)絡(luò)發(fā)展,由計算機和單片機構(gòu)成的多機網(wǎng)絡(luò)系統(tǒng)也是單片機技術(shù)發(fā)展的一個方向。單片機多機通信是指由兩臺以上的單片機組成的網(wǎng)絡(luò)結(jié)構(gòu),可以通過串行通信方式共同實現(xiàn)對某一過程的最終控制。隨著計算機技術(shù)的發(fā)展,多機通信技術(shù)也在不斷的發(fā)展,現(xiàn)在發(fā)展比較成熟的還有光纖通信等。由于計算機的飛速發(fā)展和控制系統(tǒng)的復雜化,多機通信已經(jīng)越來越成為人們熱門話題之一。目前,單片機多機通信的形式較多,但通??煞譃樾切汀h(huán)型、串行總線型和主從式多機型四種。方案設(shè)計可行性分析分析1.設(shè)計任務a.設(shè)計兩個單片機系統(tǒng);b.兩單片機之間可以進行遠距離通信;c.能夠通過數(shù)碼管顯示時間;d.能夠通過按鍵設(shè)置本機和對方的時間。2.設(shè)計要求a.基本要求:設(shè)計兩個小系統(tǒng),能實現(xiàn)有線互相通信(互設(shè)時間+數(shù)據(jù)共享)。b.擴展要求:遠距離通信或無線通信,并能實現(xiàn)校驗。a.市場可行性分析單片機作為微型計算機的一個分支,其功能強、體積小、應用靈活等諸多優(yōu)點,在工業(yè)控制、儀器儀表、通信、家用電器和國際科技等各個領(lǐng)域得到廣泛的應用。b.技術(shù)可行性分析本項目在設(shè)計上思路簡單,已設(shè)計出合理的實際方案,可以實現(xiàn)基礎(chǔ)要求和擴展要求,并達到比較好的效果。c.資源可行性分析資源有人力資源和材料資源,已考慮到各個階段所需人才類型及數(shù)量,完全可以保證項目實施的有條不紊。d.經(jīng)濟成本可行性分析本項目設(shè)計結(jié)構(gòu)簡單,材料在原理圖設(shè)計完成后導師派發(fā)。材料易購,成本還是較為合適。e.項目風險分析從項目整體上來說考慮各方面較為全面,風險指數(shù)已經(jīng)降到最低,可以實施。項目執(zhí)行計劃下表為本項目進行的時間進度及人員分配情況:表1.1工程進度工程名稱工期(天)開始時間提交時間人員安排原理圖設(shè)計3彭躍秒PCB布局3彭躍秒程序設(shè)計32021.10.20鈕麗媛設(shè)計說明書2張惠琳安裝、調(diào)試2鈕麗媛安裝調(diào)試說明書1張惠琳項目提交1鈕麗媛表1.2材料清單序號名稱型號規(guī)格號位數(shù)量1單片機STC89C52RC40C(PDIP40)U12片2接口芯片MAX232CPEU22片3四聯(lián)數(shù)碼管3461ASSEG12個4時鐘芯片DS1302NLY12個5二極管D12個5按鍵立式6*6*5(4腳黑)S1、S2、S36個6電池LITIUMCELLCR12203V2個7晶振11.0592MHz、32.765MHzY1、A14個8電阻10KR12個9電解電容10uF、100uFC3、C64個10瓷片電容30pF、104C5、C714個11連接線DB9公頭1.5mDB91根12上拉電阻1KP12個11底座DIP40、DIP16、DIP8U1、U2、NLY13個12指示燈LED顯示燈、紅LED2個13排針若干設(shè)計說明方案設(shè)計通過兩個STC89C52單片機為核心設(shè)計通信系統(tǒng)。單片機都帶有串口,系統(tǒng)要求遠距離通信,所以有對外連接的串口相互之間的數(shù)據(jù)共享。單片機的并行端口也能相互連接來進行數(shù)據(jù)通信。要求互設(shè)時間,可以在IO口連接一時鐘模塊,這里選擇DS1302時鐘芯片實現(xiàn),需要用到按鍵對時間設(shè)置,顯示則各自需要數(shù)碼管。在本次設(shè)計中硬件部分:對于兩片89C52采用RS232進行雙機通信硬件的連接方法如圖所示。電平轉(zhuǎn)換芯片采用MAX232,其連接一般采用雙絞線。發(fā)送方的數(shù)據(jù)由串行口TXD段輸出,經(jīng)過電平轉(zhuǎn)換芯片MAX232將TTL電平轉(zhuǎn)換為RS232電平輸出,經(jīng)過傳輸線將信號傳送到接收端。接收方也使用MAX232芯片進行電平轉(zhuǎn)換后,信號到達接收方串行口的接收端。接受方接收后在數(shù)碼管上顯示接收的信息。為提高抗干擾能力,還可以在輸入輸出端加光耦合進行光電隔離。軟件部分:通過通信協(xié)議進行發(fā)送和接收。初始時兩個數(shù)碼管顯示初始值。單片機A對B進行時間設(shè)置前要先對自己設(shè)置時間,此時顯示標志;設(shè)置之后需對B設(shè)時間,再顯示標志開始。通過通信協(xié)議進行發(fā)送接收,A機在設(shè)置時可在B機上同時看到顯示。與主機發(fā)送來的檢驗和進行比較,若檢驗和相同則發(fā)送字符給主機TXDAT89C52RXDR2IN T2INTXDAT89C52RXDR2IN T2IN MAX232T2OUT R2OUTTXDAT89C52RXDT2IN T2OUT MAX232R2OUT R2IN硬件設(shè)計原理2.2.1單片機系統(tǒng)STC89C52芯片:有8k字節(jié)Flash,512字節(jié)RAM,32位I/O口線,看門狗定時器,內(nèi)置4KBEEPROM,MAX810復位電路,3個16位定時器/計數(shù)器,4個外部中斷,一個7向量4級中斷結(jié)構(gòu)(兼容傳統(tǒng)51的5向量2級中斷結(jié)構(gòu)),全雙工串行口??臻e模式下,CPU停止工作,允許RAM、定時器/計數(shù)器、串口、中斷繼續(xù)工作。掉電保護方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機一切工作停止,直到下一個中斷或硬件復位為止。最高運作頻率35MHz,6T/12T可選。單片機有32根輸入/輸出線,組成4個8位并行輸入/輸出接口,分別稱為P0口、P1口、P2口、P3口。每個接口都由鎖存器、輸出驅(qū)動器和輸入緩沖器組成。P0口和P2口還可用于對外部存儲器訪問的地址和數(shù)據(jù)總線。P0口作為I/O接口使用時,輸出級屬于開漏電路,必須接上拉電阻才有高電平輸出。在TXD和RXD處接一個下載口下載程序。單片機最小系統(tǒng)或稱為最小應用系統(tǒng),是指利用單片機自身的資源,用最少的輔助元件組成一個可以工作的系統(tǒng)。包括電源(地)、晶振(一般使用11.0592MHz或者12MHz)和復位電路。圖2.1單片機最小系統(tǒng)振蕩電路:如圖可見,由兩個30pF的電容與11.0592MHz的晶振構(gòu)成穩(wěn)定的自激振蕩器,屬于內(nèi)時鐘方式。這兩個電容對頻率有微調(diào)的作用,為減少寄生電容,振蕩器和電容應盡可能安裝得與單片機芯片靠近。復位電路:在RST復位輸入上接入10uF電容至VCC端,在接一個10K電阻接地,組成上電復位電路。上電原理是,在加電時,Vcc通過電容提供給RST端一個短暫的高電平信號,此后該高電平信號隨Vcc對電容的充電過程而逐漸回落,即RST高電平持續(xù)時間取決于電容的充電時間。上電時,vcc的上升時間約為10ms,而振蕩器的起振時間取決于振蕩頻率。DS1302時鐘模塊芯片簡介:實時時鐘電路DS1302是一種具有涓細電流充電能力的電路,主要特點是采用串行數(shù)據(jù)傳輸,可為掉電保護電源提供可編程的充電功能,并且可以關(guān)閉充電功能。采用普通32.768kHz晶振。工作電壓為2.5V~5.5V。本項目采用三線接口通過5、6、7腳與CPU進行同步通信。DS1302內(nèi)部有一個31×8的用于臨時性存放數(shù)據(jù)的RAM寄存器。DS1302的引腳排列,其中Vcc2為主電源,VCC1為后備電源。在主電源關(guān)閉的情況下,也能保持時鐘的連續(xù)運行。DS1302由Vcc1或Vcc2兩者中的較大者供電。當Vcc2大于Vcc1+0.2V時,Vcc2給DS1302供電。當Vcc2小于Vcc1時,DS1302由Vcc1供電。RST是復位/片選線,通過把RST輸入驅(qū)動置高電平來啟動所有的數(shù)據(jù)傳送。當RST為高電平時,所有的數(shù)據(jù)傳送被初始化,允許對DS1302進行操作。如果在傳送過程中RST置為低電平,則會終止此次數(shù)據(jù)傳送,I/O引腳變?yōu)楦咦钁B(tài)。上電運行時,在Vcc>2.0V之前,RST必須保持低電平。只有在SCLK為低電平時,才能將RST置為高電平。I/O為串行數(shù)圖2.2DS1302電路圖據(jù)輸入輸出端(雙向)。SCLK為時鐘輸入端。備用電源Vcc1,可以用電池或者超級電容器(0.1F以上)。如果要長時間保證時鐘正常,選用小型充電電池??梢杂美鲜诫娔X主板上的3.6V充電電池。如果斷電時間較短(幾小時或幾天)時,就可以用漏電較小的普通電解電容器代替。100μF就可以保證1小時的正常走時。DS1302在第一次加電后,必須進行初始化操作。初始化后就可以按正常方法調(diào)整時間。本項目有100μF電解電容,也采用了在備用電源處使用3V的電池供電。二極管的作用是給100uF的電容充放電。下圖是DS1302在本設(shè)計中的原理圖:電平轉(zhuǎn)換用8051串行接口通信,如果兩臺8051單片機之間的距離很近(不超過1.5m),可以采用直接將兩臺8051單片機的串行接口直接相連,利用其自身的TTL電平(0-5V)直接傳輸數(shù)據(jù)信息。如果傳輸距離較遠(超過1.5m),由于傳輸線的阻抗與分布電容,會產(chǎn)生電平損耗和波形畸變,以至于檢測不出數(shù)據(jù)或數(shù)據(jù)出錯。RS-232C對電器特性、邏輯電平和各種信號線功能都作了規(guī)定。
在TxD和RxD上:邏輯1(MARK)=-3V~-15V
,邏輯0(SPACE)=+3~+15V
。在RTS、CTS、DSR、DTR和DCD等控制線上:信號有效(接通,ON狀態(tài),正電壓)=+3V~+15V
,信號無效(斷開,OFF狀態(tài),負電壓)=-3V~-15V
。為了能夠同計算機接口或終端的TTL器件連接,必須在EIA-RS-232C與TTL電路之間進行電平和邏輯關(guān)系的變換。
圖2.3MAX232模塊原理圖最大直接傳輸距離說明:RS-232C標準規(guī)定,若不使用MODEM,在碼元畸變小于4%的情況下,DTE和DCE之間最大傳輸距離為15m(50英尺。DB-9連接器
:
用RS-232總線連接系統(tǒng)有近程通訊方式和遠程通訊方式兩種,近程通訊是指傳輸距離小于15米的通訊,可以用RS-232
電纜直接連接。15米以上的長距離通訊,需要采用調(diào)制調(diào)解器。
計算機和終端用RS-232連接的交叉“發(fā)送數(shù)據(jù)”與“接收數(shù)據(jù)”是交叉相連的,使得兩臺設(shè)備都能正常的發(fā)送和接收。
在于DB9相連時需要考慮RS232串口接線是公頭還是母頭,因為兩單片機的TXD與RXD必須交叉相連。數(shù)據(jù)發(fā)送與接收線:
發(fā)送數(shù)據(jù)(TxD)——通過TxD終端將串行數(shù)據(jù)發(fā)送到MODEM。
接收數(shù)據(jù)(RxD)——通過RxD線終端接收從MODEM發(fā)來的串行數(shù)據(jù)。2.2.4數(shù)碼管顯示數(shù)碼管段選與位選接口如圖所示,設(shè)置強推挽輸出,使數(shù)碼管顯示亮度增加。P0口與數(shù)碼管段選之間接入1k的排阻限流,相比加上拉電阻會減少單片機的功耗。因為上拉電阻在IO口輸出低電平時也會有電流,如果接入限流電阻就會避免這種情況,從而減少功耗。圖2.4數(shù)碼管顯示原理圖2.2.5按鍵模塊本項目有六個按鍵,每個單片機三個。按鍵一端接地另一端接單片機的I/O口。S1、S2、S3分別標志點移位鍵、加1鍵、菜單鍵。圖2.5按鍵原理圖各單元模塊設(shè)計流程圖總設(shè)計框圖兩個單片機通信,每個單片機由四個模塊組成。該項目原理圖及PCB圖是在AltiumDeigner軟件下設(shè)計的。設(shè)計框圖如下圖所示。圖2.6總設(shè)計框圖設(shè)計該項目軟件設(shè)計使用的是Keil編程軟件。圖2.7主程序流程圖 UartInit();//串口初始化 Init_DS1302(5555); //初始化1302 KeyScan(); //按鍵掃描 DisPlayKey(); //按鍵響應操作 GetTime(); //獲取當前ds1302的時間display(DisNum);//顯示當前調(diào)整的時間display(SendNum); //顯示對目標單片機的調(diào)整的時間SendString(UartNum);//發(fā)送調(diào)整時間到目標單片機程序設(shè)計主要是對時間的設(shè)置函數(shù): Write_Data(0x8e,0x00); //寫保護關(guān) Write_Data(0x80,Sec); //初始秒值為50 Write_Data(0x82,Min); //初始分鐘值為59 Write_Data(0x90,0x01); //充電 Write_Data(0xc0,0xf0); //初始化一次標示 Write_Data(0x8e,0x80);按鍵程序設(shè)計按鍵掃描:圖2.8按鍵掃描框圖 if((P1&0xe0)!=0xe0)//掃描按鍵管腳是否有電平變化cKey=P1&0xe0; //讀出鍵值while((P1&0xe0)!=0xe0);//等待按鍵松開按鍵響應:圖2.9按鍵響應框圖voidDisPlayKey(void) //按鍵響應//如果是對自己設(shè)置時間就將自己的時間裝入調(diào)整數(shù)組 if(flag==1) { temp[0]=DisNum/1000; temp[1]=DisNum%1000/100; temp[2]=DisNum%100/10; temp[3]=DisNum%10; }//如果是對對方設(shè)置時間就將發(fā)送時間裝入調(diào)整數(shù)組//根據(jù)鍵值調(diào)整調(diào)整數(shù)組里的數(shù)字//組合調(diào)整后的數(shù)字//更改調(diào)整模式串口程序設(shè)計 圖2.10串口中斷流程圖 SCON=0X50;//串口工作方式1 TMOD=0x20;//設(shè)定定時器1的工作方式為方式2(8位自動重裝) TH1=-3; //設(shè)置串口波特率為9600 TL1=-3; TR1=1; //開啟定時器 ES=1; //開串口中斷//判斷數(shù)據(jù)是否結(jié)束,校驗if(uart_data[num-1]=='*'&&uart_data[num-2]=='*')調(diào)試說明調(diào)試方法及步驟先使用Proteus仿真軟件仿真無誤后將軟件下載到單片機上,再實物調(diào)試。兩單片機中都下載進程序后,數(shù)碼管均顯示初始化值5555;選擇一個主機一個從機,在主機的模塊中按下菜單鍵S3調(diào)整模式此時顯示3333,對主機設(shè)置時間,主機時間從此時開始;按下標志位鍵選擇需要調(diào)整的數(shù),標志位的點在數(shù)字右下角;設(shè)置好主機時間后按下主機菜單鍵,此時顯示4444表示對從機設(shè)置時間;通過標志位鍵和加1鍵設(shè)置從機時間,設(shè)置過程中主機設(shè)置的時間同步通信到從機中;設(shè)置完成后,按下菜單鍵,主機的數(shù)碼管顯示自己的時間,從機的時間從4444模式下被設(shè)置的時間開始。交換主機和從機,重復以上操作,完成本項目的通信操作。注意:主機在對從機設(shè)時間的同時自己也在計時。調(diào)試數(shù)據(jù)下面幾圖為Proteus仿真的步驟及數(shù)據(jù):圖3.1初始化狀態(tài)圖3.2對主機設(shè)置時間圖3.3對從機設(shè)置時間圖3.4完成時間設(shè)置故障分析硬件故障問題是電路板的問題主要有元器件虛焊、損壞和是否接線錯誤;1.電阻虛焊問題:若電阻正常,則通過電阻兩端后應該有一個電壓值。根據(jù)這個原理,用萬用表逐個測量各電阻兩端的電壓,若飄零則說明該電路沒有焊好,短路或者電阻故障,應進一步確認故障原因并處理。2.數(shù)碼管無法顯示:可能是上拉電阻過大,導致顯示不清晰;也可能數(shù)碼管燈管已壞;上拉電阻正負接反。出現(xiàn)亂碼,則可能是碼表不正確,或是程序未做消隱處理。3.單片機不能下進程序:下載時下載口P3.1(TXD)被占用,或下載口排針虛焊。檢查是否為虛焊,若不是,則在TXD處焊接排針引出,通信時用排針帽帶上,下載時不用帽。4.按鍵按下數(shù)碼管的時間不變:按鍵虛焊沒有接入I/O口或中斷程序出錯,或按鍵損壞。檢查是否為損壞,是則換掉;若為虛焊,則按電機問題處理;若為程序出錯可能是每個按鍵功能沒有實現(xiàn)。設(shè)計注意事項:1.串行通信,使用的晶振是11.05926MHZ,波特率是9600
兩塊板子除與DB9的連接線有一個要交叉相連外要嚴格一致。
3.雙機通信的基本原理是對RXD和TXD操作,RS23最大通信距離為15m。
4.DS1302電路中的100uF電容只能保證在1個小時正常走時,要使掉電后再重新下載程序則要加上電池??偨Y(jié)設(shè)計體會和收獲:最初選擇這個項目是因為之前學過微計算機原理,但真正著手才發(fā)現(xiàn)做一個工程不單單是學過理論知識就行的。實際的工程中需要的不僅僅是理論還要考慮實際的細節(jié)以及隊員之間的團結(jié)和合理分工,這個課程考驗了我們自覺性、動手能力與協(xié)作意識的任務,三個臭皮匠賽過諸葛亮,團隊合作時我們更便于取長補短,相互討論收獲更大。通過這個項目的實踐我們補充了之前不熟悉和沒接觸的知識對單片機的通信更加了解,學會使用時鐘芯片和串口芯片。本項目完成了雙機通信的基礎(chǔ)要求和擴展要求,但硬件方面還可以更加完善多使用幾個按鍵和數(shù)碼管。參考文獻1.《單片機微型計算機原理及接口技術(shù)》鄭郁正主編.北京:高等教育出版社,2021.7
2.MCS-51單片機多及通信的組成原理及通信程序云南省邵通地區(qū)郵電局,彭宗乾3.《8051單片機實踐與應用》電子愛好者的電子書附錄1.原理圖圖6.1系統(tǒng)原理圖圖6.2RS232轉(zhuǎn)接板原理圖2.PCB圖圖6.3系統(tǒng)PCB3.實物圖圖6.44.程序代碼/**************************主函數(shù)*****************************/#include"ds1302.h"#include"uart.h"#include"type.h"#include"delay.h"#include"key.h"#include"display.h"voidmain(void){ uint16_ttimenum,NewTime; uint8_tUartNum[10]; UartInit();//串口初始化 Init_DS1302(5555); //初始化1302 EA=1; //開總中斷 while(1) { KeyScan(); //按鍵掃描 DisPlayKey(); //按鍵響應操作 if(flag==0) //菜單0 { GetTime(); //獲取當前ds1302的時間//轉(zhuǎn)換時間秒 timenum=(DateTime[0]>>4)*10+(DateTime[0]&0x0f);//轉(zhuǎn)換時間分 timenum+=(DateTime[1]>>4)*1000+(DateTime[1]&0x0f)*100; display(timenum);//顯示當前時間 DisNum=3333; //初始化標志位3333 SendNum=4444; //初始發(fā)送標志位4444 } if(flag==1) //菜單1 { display(DisNum);//顯示當前調(diào)整的時間 Init_DS1302(DisNum);//用當前調(diào)整的時間初始化ds1302 } if(flag==2) //菜單2 { display(SendNum); //顯示對目標單片機的調(diào)整的時間 //將調(diào)整的時間轉(zhuǎn)換成字符UartNum[0]=(SendNum/1000)+'0'; UartNum[1]=(SendNum%1000/100)+'0'; UartNum[2]=(SendNum%100/10)+'0'; UartNum[3]=(SendNum%10)+'0'; UartNum[4]='*';//通信結(jié)束標志位 UartNum[5]='*'; UartNum[6]='\0'; SendString(UartNum);//發(fā)送調(diào)整時間到目標單片機 } if(uart_flag==1) //串口接收標志位 { NewTime=0; //接收到的設(shè)置時間//將接收到的字符時間轉(zhuǎn)換成數(shù)字 NewTime=(uart_data[0]-'0')*1000 +(uart_data[1]-'0')*100 +(uart_data[2]-'0')*10 +(uart_data[3]-'0'); Init_DS1302(NewTime);//用接收到的新時間初始化1302 uart_flag=0; //標志位置零 } }}/**************************串口程序*****************************/#include"uart.h"staticuint8_tnum=0;bitbusy=0;uint8_tuart_flag;uint8_tuart_data[20];voidUartInit(void){ SCON=0X50;//串口工作方式1 TMOD=0x20;//設(shè)定定時器1的工作方式為方式2(8位自動重裝) TH1=-3; //設(shè)置串口波特率為9600 TL1=-3; TR1=1; //開啟定時器 ES=1; //開串口中斷}voidSendData(uint8_tdat){while(busy);//等待當前字符發(fā)送結(jié)束 SBUF=dat; //發(fā)送數(shù)據(jù)busy=1;}/****************************************/*函數(shù)名稱:字符串發(fā)送函數(shù)/*函數(shù)功能:發(fā)送一串字符/*入口參數(shù):字符串首地址/*調(diào)用方式:SendString("asdfghjk");*****************************************/voidSendString(uint8_t*s){while(*s!='\0'){SendData(*s++);//發(fā)送字符}}voidUART_SER(void)interrupt4 //串口中斷{if(RI) //判斷若為收{(diào)RI=0; uart_data[num]=SBUF;//讀取SBUF到uart_DATA數(shù)組 num++;//判斷數(shù)據(jù)是否結(jié)束,校驗 if(uart_data[num-1]=='*'&&uart_data[num-2]=='*') { uart_flag=1; //將串口新數(shù)據(jù)標志位置1 num=0; //清零數(shù)組num } }if(TI) //判斷若為發(fā){TI=0;busy=0;}}/**************************DS1302*****************************/#include"ds1302.h"uint8_tDateTime[7];voidWrite_A_Byte_TO_DS1302(uint8_tdat){ uint8_ti; SCLK=0; //初始時鐘線置為0 _nop_(); _nop_(); _nop_();//開始傳輸8個字節(jié)的數(shù)據(jù) for(i=0;i<8;i++) {//取最低位,注意DS1302的數(shù)據(jù)和地址都是從最低位開始傳輸?shù)? IO=dat&0x01; _nop_(); _nop_(); _nop_(); SCLK=1; //時鐘線拉高,制造上升沿,SDA的數(shù)據(jù)被傳輸 _nop_(); _nop_(); _nop_(); SCLK=0; //時鐘線拉低,為下一個上升沿做準備 dat>>=1; //數(shù)據(jù)右移一位,準備傳輸下一位數(shù)據(jù) }}uint8_tGet_A_Byte_FROM_DS1302(void){ uint8_ti,dat; _nop_(); _nop_(); _nop_(); for(i=0;i<8;i++) { dat>>=1; //要返回的數(shù)據(jù)左移一位 if(IO==1) //當數(shù)據(jù)線為高時,證明該位數(shù)據(jù)為1 dat|=0x80; //要傳輸數(shù)據(jù)的當前值置為1,若不是,則為0 SCLK=1; //拉高時鐘線 _nop_(); _nop_(); _nop_(); SCLK=0; //制造下降沿 _nop_(); _nop_(); _nop_(); } returndat; //返回讀取出的數(shù)據(jù)}uint8_tRead_Data(uint8_taddr){ uint8_tdat; RST=0; SCLK=0; RST=1;Write_A_Byte_TO_DS1302(addr); dat=Get_A_Byte_FROM_DS1302();SCLK=1; RST=0; returndat;}voidGetTime(void){ uint8_ti,addr=0x81; for(i=0;i<7;i++) { DateTime[i]=Read_Data(addr); _nop_(); _nop_(); _nop_(); addr+=2; }}voidInit_DS1302(uint16_tnum){ uint8_ttemp[4],Sec,Min; temp[0]=num/1000; temp[1]=num%1000/100; temp[2]=num%100/10; temp[3]=num%10; Min=temp[0]*16+temp[1]; Sec=temp[2]*16+temp[3]; Write_Data(0x8e,0x00); //寫保護關(guān) Write_Data(0x80,Sec); //初始秒值為50 Write_Data(0x82,Min); //初始分鐘值為59 //Write_Data(0x84,0x17);//初始為24小時模式初始時間為23點 //Write_Data(0x86,0x19);//19日 Write_Data(0x90,0x01); //充電 Write_Data(0xc0,0xf0); //初始化一次標示 Write_Data(0x8e,0x80);}voidWrite_Data(uint8_tcmd,uint8_tdat){ RST=0; //初始CE線置為0 SCLK=0; //初始時鐘線置為0 RST=1; //初始CE置為1,傳輸開始//傳輸命令字,要寫入的時間/日歷地址 Write_A_Byte_TO_DS1302(cmd); //寫入要修改的時間/日期 Write_A_Byte_TO_DS1302(dat); SCLK=1; //時鐘線拉高 RST=0; //讀取結(jié)束,CE置為0,結(jié)束數(shù)據(jù)的傳輸}/**************************按鍵程序****************************/#include"key.h"uint8_t wei=0;uint16_t DisNum=0;uint16_t SendNum=1234;uint8_t cKey=7;uint8_t flag=0;voidKeyScan(void){ //掃描按鍵管腳是否有電平變化 if((P1&0xe0)!=0xe0) { cKey=P1&0xe0; //讀出鍵值 while((P1&0xe0)!=0xe0);//等待按鍵松開 if(cKey==0xc0) //P2.1按下- { wei++; if(wei==4) { wei=0; } } if(cKey==0xa0) //P2.2按下+ { cKey=3; } if(cKey==0x60) //P2.2按下+ { cKey=5; } } }voidDisPlayKey(void) //按鍵響應{ uint8_ttemp[4];//如果是對自己設(shè)置時間就將自己的時間裝入調(diào)整數(shù)組 if(flag==1) { temp[0]=DisNum/1000; temp[1]=DisNum%1000/100; temp[2]=DisNum%100/10; temp[3]=DisNum%10; } if(flag==2) //如果是對對方設(shè)置時間就將發(fā)送時間裝入調(diào)整數(shù)組 { temp[0]=SendNum/1000; temp[1]=SendNum%1000/100; temp[2]=SendNum%100/10; temp[3]=SendNum%10; } //根據(jù)鍵值調(diào)整調(diào)整數(shù)組里的數(shù)字 if(wei==0) { if(cKey==3) { temp[0]+=1; if(temp[0]==10) { temp[0]=0; } cKey=7; } } if(wei==1) { if(cKey==3) { temp[1]+=1; if(temp[1]==10) { temp[1]=0; } cKey=7; } } if(wei==2) { if(cKey==3) { temp[2]+=1; if(temp[2]==10) { temp[2]=0; } cKey=7; } } if(wei==3) { if(cKey==3) { temp[3]+=1; if(temp[3]==10) { temp[3]=0; } cKey=7; } } if(flag==1) //組合調(diào)整后的數(shù)字 { DisNum=temp[0]*1000+ temp[1]*100+ temp[2]*10+ temp[3]; } if(flag==2) { SendNum=temp[0]*1000+ temp[1]*100+ temp[2]*10+ temp[3]; } if(cKey==5)//更改調(diào)整模式 { flag++; if(flag==3) { flag=0; } cKey=7; } }/***********************數(shù)碼管顯示*****************************/#include"display.h"uint8_tcodeacLEDCS[4]={0xef,0xdf,0xbf,0x7f}; uint8_tcodeacLedSegCode[10]={0x5f,0x44,0x9d,0xd5,0xc6,0xd3,0xdb,0x45,0xdf,0xd7};voiddisplay(int16_tdisnum){ uint8_ti,acLED[4]; acLED[0]=acLedSegCode[disnum/1000];//取出千位 acLED[1]=acLedSegCode[disnum%1000/100];//取出百位 acLED[2]=acLedSegCode[disnum%100/10]; //取出十位 acLED[3]=acLedSegCode[disnum%10]; //取出個位 for(i=0;i<4;i++) { P0=acLED[i];//顯示相應的數(shù)字 P2|=0xf0; //前四位置1后四位不變 if(i==wei) { P0|=0x20;//表示小數(shù)點 } P2&=acLEDCS[i];//位選 Delay(2); P2=0xff;//消隱 }}/***********************延時*****************************/#include"delay.h"voidDelay(uint16_ttime){ uint16_ti,j; for(i=0;i<time;i++) { for(j=0;j<100;j++) { ; } }}單片機控制直流電機調(diào)速系統(tǒng)設(shè)計摘要隨著社會的發(fā)展,電機可調(diào)速廣泛的應用于工農(nóng)業(yè)、交通運輸業(yè)以及我們的日常生活。早起的電機調(diào)速主要基于模擬電路的調(diào)速。模擬電路的設(shè)計一方面難度大、調(diào)試復雜,另一方面加之元器件易老化,這對于調(diào)速系統(tǒng)廣泛普及起到一定的制約作用。隨著電力技術(shù)、微處理器技術(shù)、自動控制技術(shù)的發(fā)展,使得PWM脈寬調(diào)制技術(shù)得到空前的發(fā)展。本系統(tǒng)的設(shè)計正是PWM脈寬調(diào)制技術(shù)在直流電機調(diào)速的應用。研究這一技術(shù),對于生產(chǎn)和生活有著積極意義。本文首先對系統(tǒng)架構(gòu)進行介紹,讓讀者從宏觀上把握系統(tǒng)的設(shè)計思想。然后分別介紹構(gòu)成系統(tǒng)的各個模塊的內(nèi)容和選型。接著介紹硬件電路的設(shè)計和軟件程序的設(shè)計思想。最后對系統(tǒng)的功能進行測試,并記錄測試結(jié)果。關(guān)鍵詞PWM;微處理器;自動控制技術(shù);SinglechipmicrocomputercontroldcmotorspeedcontrolsystemdesignAbstractWiththedevelopmentofthesociety,adjustablespeedmotoriswidelyusedinindustryandagriculture,transportation,andourdailylife.Gettingupearlyismainlybasedontheanalogcircuitofmotorspeedcontrol.Analogcircuitdesignontheonehand,difficultandcomplexdebugging,aging,ontheotherhand,combinedwiththecomponentsforthespeedcontrolsystemwidelypopularizeplayedarole.Astheelectrictechnology,microprocessortechnology,thedevelopmentofautomaticcontroltechnology,thePWMpulsewidthmodulationtechnologygetunprecedenteddevelopment.ThedesignofthissystemisthePWMpulsewidthmodulationtechnologyintheapplicationofdcmotorspeedcontrol.Researchthetechnology,hasapositivemeaningforproductionandlife.Thispaperintroducesthesystemarchitecture,letthereaderfromonmacroscopictograspthedesignideasofthesystem.Thenintroducedrespectivelyconstitutethecontentofeachmoduleandthechoiceofthesystem.Thenintroducesthedesignofhardwarecircuitandsoftwareprogramdesignthought.Finallytestthefunctionofthesystem,andrecordtestresults.KeywordsPWM;microprocessor;automaticcontroltechnology;目錄TOC\o"1-3"\h\u23791緒論 11161(一)本課題研究的背景及意義 16569(二)本課題擬要解決的問題與預期達到的目標 114254(三)本課題的行文結(jié)構(gòu)安排 222493一、系統(tǒng)架構(gòu)與方案選擇 21742(一)系統(tǒng)架構(gòu) 27726(二)方案選擇性 310132二、硬件電路設(shè)計 625164(一)單片機系統(tǒng)電路設(shè)計 6246511.單片機最小系統(tǒng)電路設(shè)計 6309882.液晶顯示電路設(shè)計 1024316(二)電機驅(qū)動電路與光電計數(shù)電路設(shè)計 119030(三)按鍵電路設(shè)計 128200三、軟件設(shè)計 142319(一)軟件總流程圖 1415238(二)LCD1602程序設(shè)計 1531021四、系統(tǒng)測試 1710243(一)按鍵面板定義 1728502(二)系統(tǒng)測試 1715437五、結(jié)論 1820803致謝 1912479參考文獻 20緒論(一)本課題研究的背景及意義電氣傳動可以簡單的分為兩大類,第一類是直流電氣傳動,第二類是交流電氣傳動。電機作為一種動力裝置,在直流電氣傳動與交流電氣傳動中扮演重要角色。交流電氣傳動,顧名思義,就是用交流電機作為動力輸出裝置的電氣傳動,直流電氣傳動是采用直流電機作為動力輸出裝置的電氣傳動。交流電機,由于無需換向器的設(shè)計,因此使得結(jié)構(gòu)簡單,這對于生產(chǎn)和使用普及、維護維修方面都優(yōu)于直流電機。但是交流電機本身不能進行調(diào)速,必須借助變頻設(shè)備得以調(diào)節(jié)轉(zhuǎn)速。直流電機由于其構(gòu)造機理與交流電機不同,使得直流電機能進行平滑的調(diào)速,而且重要的一點是無需增加額外的調(diào)速裝置,只要改變直流電機勵磁電壓即可實現(xiàn)速度的調(diào)節(jié)。隨著社會的發(fā)展,電機可調(diào)速廣泛的應用于工農(nóng)業(yè)、交通運輸業(yè)以及我們的日常生活。早起的電機調(diào)速主要基于模擬電路的調(diào)速。模擬電路的設(shè)計一方面難度大、調(diào)試復雜,另一方面加之元器件易老化,這對于調(diào)速系統(tǒng)廣泛普及起到一定的制約作用。隨著微處理技術(shù)的發(fā)展,使得數(shù)字化的調(diào)速成為現(xiàn)實。微處理器,可以進行復雜的邏輯分析、處理,強大的數(shù)據(jù)處理能力,這些使得模擬電路不能與之媲美,同時讓數(shù)字電路在一定范圍內(nèi)更加真實的接近模擬電路。微處理器,由于其自身的集成性,使得在很大程度上不受外界因素,如溫度、濕度、噪音等影響,極大的提高了系統(tǒng)的穩(wěn)定性。更重要的一點是基于微處理器的系統(tǒng),能更好的自動化控制,解放勞動了,提高生產(chǎn)效率。單片機是微處理器的一大分支,從早期的8位單片機發(fā)展今天的16位,甚至32位。從早期CPU外圍需搭載較多復雜的功能電路到今天的一片單片機即是一個系統(tǒng)。基于單片機控制的直流電機調(diào)速系統(tǒng),使得電機調(diào)速由模擬走向數(shù)字化,這使得電機調(diào)速又進了一個新的臺階。隨著電力技術(shù)、微處理器技術(shù)、自動控制技術(shù)的發(fā)展,使得PWM脈寬調(diào)制技術(shù)得到空前的發(fā)展。本系統(tǒng)的設(shè)計正是PWM脈寬調(diào)制技術(shù)在直流電機調(diào)速的應用。研究這一技術(shù),對于生產(chǎn)和生活有著積極意義。(二)本課題擬要解決的問題與預期達到的目標本課題,主要有一下幾點需要解決的問題(1)針對系統(tǒng)的難易程度、控制方便、性價比等因素選型單片機,學習單片機的相關(guān)理論知識、開發(fā)流程、開發(fā)言語、開發(fā)工具等。(2)研究PWM脈寬調(diào)制技術(shù)理論知識,結(jié)合單片機的硬件資源,用編程語言實現(xiàn)PWM脈寬調(diào)制,最終對直流電機的速度進行調(diào)節(jié)。(3)一般單片機IO口的驅(qū)動能力有限,不能直接驅(qū)動直流電機,因此就要設(shè)計直流電機驅(qū)動電路,在設(shè)計中,要充分考慮系統(tǒng)的功能,如直流電機的正反轉(zhuǎn)、起停等進行電路設(shè)計。本課題預期達到的目標能通過鍵盤輸入裝置改變電機樞電壓的波形的占空比,從而實現(xiàn)調(diào)速。能在電機運行的過程中實現(xiàn)正反轉(zhuǎn)的切換、能在任何時候?qū)崿F(xiàn)電機的起停。能在液晶上實時顯示直流電機轉(zhuǎn)速和當前樞電壓的占空比(PWM)。(三)本課題的行文結(jié)構(gòu)安排1.系統(tǒng)架構(gòu)與方案選擇:從整體上把握系統(tǒng)架構(gòu)的設(shè)計,使讀者在研究本論文的伊始能有一個較為清晰的系統(tǒng)概念。同時這也是至上而下、模塊化的設(shè)計思想。對系統(tǒng)中設(shè)計的模塊進行分析說明。2.硬件電路設(shè)計:在分析完系統(tǒng)架構(gòu)中每個模塊的功能后,針對具體的功能進行具體的電路設(shè)計。3.軟件設(shè)計:在搭好的硬件平臺上進行軟件設(shè)計,進行軟硬件的聯(lián)合調(diào)試,不斷修改設(shè)計,最終滿足設(shè)計要求。4.系統(tǒng)測試:系統(tǒng)設(shè)計完成以后要對功能呢進行評估、測試。一、系統(tǒng)架構(gòu)與方案選擇(一)系統(tǒng)架構(gòu)圖1:基于單片機的直流電機調(diào)速系統(tǒng)架構(gòu)圖如上圖所示為本系統(tǒng)主要由六個模塊組成,分別是單片機系統(tǒng)模塊、液晶顯示模塊、按鍵模塊、電機驅(qū)動模塊、直流電機模塊、光電技術(shù)模塊。單片機系統(tǒng)模塊:為本系統(tǒng)的核心。這也是是嵌入式系統(tǒng)的共性之一,將微處理器嵌入到系統(tǒng)之中,系統(tǒng)的功能可裁剪。可以根據(jù)不同的應用領(lǐng)域需用不同架構(gòu)、不同等級的單片機。在本系統(tǒng)中,單片機主要用于產(chǎn)生PWM波形,通過改變占空比,使得電機樞電壓的平均值改變,從而達到調(diào)速的目的。同時,本系統(tǒng)需要對電機速度進行檢測,這就要求單片機具有測速功能。一個系統(tǒng)需要具有良好的交互性和用戶體驗,故本系統(tǒng)設(shè)置有按鍵輸入,用戶可以通過按鍵切換不同的功能。同時,用戶可以通過液晶顯示屏,實時的觀察直流電機樞電壓的占空比以及電機當前的速度。鍵盤模塊:一個良好的嵌入式設(shè)計需要具有輸入輸出系統(tǒng),鍵盤模塊即使本系統(tǒng)的輸入系統(tǒng)。當用戶按下按鍵,單片機IO通過檢測按鍵的狀態(tài)(電平值)得知用戶觸發(fā)的是哪一個按鍵,繼而轉(zhuǎn)向?qū)墓δ堋碛墟I盤的設(shè)計,還能在軟件調(diào)試起到很大的幫助,可以通過按鍵改變程序的流向,通過按鍵的觸發(fā),知道程序運行到哪里了。液晶模塊:為輸出系統(tǒng)。單獨一個單片機,雖然在運行著,但是卻不能向外界傳達直觀信息,這樣的系統(tǒng)是需要改進的。用于液晶顯示屏的系統(tǒng),可以將必要的信息實時的顯示在液晶屏上,用戶一是可以獲取信息,二是可以判斷系統(tǒng)的運行狀態(tài)。電機驅(qū)動模塊:因為單片機IO口的驅(qū)動能力很小,不能直接驅(qū)動直流電機,所以必須設(shè)計電機驅(qū)動電路。電機驅(qū)動電路屬H橋電路較為常見,采用H橋電路,使得電路的換向更加方便。直流電機模塊:電機作為PWM脈寬調(diào)制的對象,可以模擬該技術(shù)真實環(huán)境下的使用,同時可以驗證本系統(tǒng)的設(shè)計是否正確。光電計數(shù)模塊:當前較為常用的測速的方式有測周法與測頻法。不管哪一種方式,都需要在直流電擊上取得反饋信息。光電技術(shù)模塊上有一對紅外光電對射管、一個編碼盤,這樣電機轉(zhuǎn)動的時候就是讓光電技術(shù)模塊對外輸出脈沖。通過技術(shù)或者測量脈沖寬度即可達到測速的目的。(二)方案選擇性1.微處理器選型:方案一:ARM:ARM既是一個公司的名字,也是該公司推出的一種微處理器架構(gòu)。早期ARM公司也出售ARM架構(gòu)的芯片,后來將這一方案出售給各大公司,使得ARM架構(gòu)的芯片百花齊放,涌現(xiàn)出ARM7、ARM9、ARM11等系列產(chǎn)品。ARM是RISC(精簡指令集)設(shè)計,本身屬于32位的微處理器,但其兼容16位指令集。單周期指令、流水線執(zhí)行、大多數(shù)據(jù)都在寄存器中執(zhí)行等特點使得ARM具有更高的處理速度。ARM應用于高端的嵌入式、教育、移動應用等領(lǐng)域。ARM雖說有這么對有點,但是開發(fā)在一定程度上有難度,開發(fā)周期較長,且相對于中低端的嵌入式領(lǐng)域,ARM沒有性價比方便的競爭力。方案二FPGA:FPGA是在可編程器件的基礎(chǔ)上發(fā)展起來的新型產(chǎn)物,作為一種半定制電路出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點。FPGA芯片具有容量大、集成度高、靈活性強等優(yōu)點,可以完成極其復雜的時序和組合邏輯電路功能。在信號處理方面、數(shù)據(jù)傳輸方面、視屏圖像處理等領(lǐng)域中得到廣泛的運用。不過FPGA的開發(fā)投資大,只適用于產(chǎn)品研發(fā)驗證階段,不適合量產(chǎn)。且同樣具有開發(fā)平臺搭建復雜、開發(fā)難度較大等不足。方案三單片機:是將計算機的功能部件裁剪后在一塊半導體硅片上集成CPU、存儲器、各種輸入輸出接口的芯片,結(jié)構(gòu)框圖為圖二所示。單片機產(chǎn)生于20世紀70年代,從當時的4位8位單片機發(fā)展到現(xiàn)的16位、32位。單片機已經(jīng)滲透到我們生活的各個圖2單片機內(nèi)部結(jié)構(gòu)框圖領(lǐng)域,有它作為控制核心開發(fā)的產(chǎn)品比比皆是。單片機具有體積小,重量輕,抗干擾能力強,對運行環(huán)境要求不高,價格低廉,可靠性高,靈活性好,在我國的應用經(jīng)久不衰,積累了豐富的開發(fā)經(jīng)驗。不僅如此,現(xiàn)在部分高檔的單片機,已經(jīng)將諸如ADC模塊、SPI模塊、IIC模塊等實用電路集成到一塊芯片中,系統(tǒng)的集成度有很大的提升,也方便了用戶的開發(fā),只要一塊芯片即可完成復雜的邏輯控制。開發(fā)平臺較為容易搭建、開發(fā)難度小、周期短。綜上所述,選擇單片機作為本系統(tǒng)的微處理器。集體選用宏晶公司的STC系統(tǒng)中的STC89C52單片機,其具體的資源以及電路設(shè)計將在硬件電路部分做說明。2.液晶顯示方案選型:方案一:數(shù)碼管:數(shù)碼管是一系列LED發(fā)光二極管的集合。目前七段、八段居多。數(shù)碼管是根據(jù)點亮不同的LED點來顯示數(shù)字和簡單的字符。數(shù)碼管又有共陰極與共陽極之分。共陰極就是將所有LED燈的陰極接在一起,共陰極接低電平,這樣只要在某個LED的陽極給高電平,就可以點亮某個LED燈,不同的點亮的LED燈的組合可以構(gòu)成數(shù)字或者簡單字符的圖形。共陽極就是將所有LED燈的陽極連在一起,共陽極接高電平,這樣只要在某個LED的陰極給低電平,就可以點亮某個LED燈,不同的點亮的LED燈的組合可以構(gòu)成數(shù)字或者簡單字符的圖形。但是由于數(shù)碼管的顯示原理,決定了它只能顯示數(shù)字和簡單英文字符,顯示信息有限,只適用于低端的、顯示信息不多的設(shè)備上。方案二:液晶顯示:LCD通過控制像素點偏振光出射與否而達到顯示目的。一般LCD像素點很多,可以通過像素點組合成任意字符和簡單圖案?,F(xiàn)在LCD已經(jīng)替代CRT成為主流,價格也已經(jīng)下降了很多,并已充分的普及。由于液晶是以像素點來成像,決定了它可以顯示很多信息。綜上所述:由于本系統(tǒng)顯示字符信息比較多,所以選用液晶顯示器作為本系統(tǒng)的顯示模塊。具體選用LCD1602,其硬件電路將會在硬件電路設(shè)計部分做說明。3輸入系統(tǒng)方案的選擇方案一:紅外遙控:是基于紅外線通信原理的無線按鍵輸入方式。將待發(fā)送的基帶信號加載到38K載波信號上進行調(diào)制傳輸,接收時對信號進行解調(diào)操作,提取基帶信號。紅外遙控在很多場合有著實用意義。紅外遙控器為了區(qū)分按鍵,將每個按鍵編碼傳輸,這就要接收部分有解碼的模塊,一般是軟件解碼,解碼部分的程序設(shè)計比較復雜。方案二:按鍵輸入:如圖,當K1按下,按鍵閉合,將單片機P1.0IO口拉低至低電平。單片機內(nèi)通過讀取P1.0的電平狀態(tài),即可知道此時是否有按鍵觸發(fā),即是否有外界信息的輸入。圖3按鍵觸發(fā)原理圖綜上所述:選擇硬件電路和軟件實現(xiàn)方便的機械按鍵作為本系統(tǒng)的輸入模塊。4測速方案的選擇方案一:M法:M法即是測量在閘門時間內(nèi)光電計數(shù)的脈沖數(shù)。單片機計數(shù)器最大的技術(shù)范圍為65535次,假設(shè)閘門時間為1S,最大的計數(shù)頻率為1秒鐘65535次,本系統(tǒng)使用的光電編碼有四個孔,即是電機轉(zhuǎn)一圈可以產(chǎn)生4個脈沖。這樣可以算出能測的電機的最大轉(zhuǎn)速為:983025R\Min。該方案實用于高速轉(zhuǎn)速的電機,且閘門時間設(shè)置越長,測量精度越高。方案二:測T法:測量兩個脈沖之間的時間,從而計算出頻率,繼而得出轉(zhuǎn)速。綜上所述:測M硬件電路實現(xiàn)比較簡單,編程也方便,在一定誤差范圍內(nèi)選擇測M法4電機驅(qū)動的選型方案一:繼電器控制:通過控制兩個繼電器斷開與關(guān)閉,可以實現(xiàn)電機的正反轉(zhuǎn)控制,繼電器也應用在一些電機轉(zhuǎn)向控制的項目中。由于繼電器是弱點控制強電的裝置,電壓電流在繼電器斷開后處于絕對關(guān)閉狀態(tài),所以其適應范圍廣。但是繼電器觸點與彈片接觸需要一定時間,這在高速應用場合顯得不足,特別是在PWM調(diào)速的應用中,需要其具有很快的開關(guān)速度。方案二:基于晶體管或者MOS管的H橋電路:H橋是經(jīng)典的電機驅(qū)動電路,可以使用4個晶體管或者MOS管搭建該電路。由于晶體管或者MOS管快關(guān)速度非???,可以在一定范圍內(nèi)實現(xiàn)平滑的速度控制。電路簡單,性價比高。綜上所述:選擇H橋電路作為本系統(tǒng)的電機驅(qū)動方案。二、硬件電路設(shè)計(一)單片機系統(tǒng)電路設(shè)計1.單片機最小系統(tǒng)電路設(shè)計圖4STC89C52系列單片機內(nèi)部結(jié)構(gòu)圖如上圖所示,為STC89C52單片機的內(nèi)部結(jié)構(gòu)圖,單片機內(nèi)部采用單總線的結(jié)構(gòu)設(shè)計,分別是地址總線、數(shù)據(jù)總線和控制總線。STC89C52單片機屬于增強型8051單片機,可以在6時鐘每機器周期和12時鐘每機器周期中選擇,其完全兼容低版本的8051單片機。有四個通用輸入輸出IO口,即是P0口、P1口、P2口、P3口。可以方便的實現(xiàn)數(shù)據(jù)讀和寫,這些IO在工業(yè)自動化控制方面起到很高的作用。其中P0作為地址總線使用的時候是真正的雙向口,無需在單片機外部增設(shè)上拉電阻。但是在將P0口作為通用輸入輸出口使用時,由于P0口內(nèi)部無上拉電阻,所以要在其外部設(shè)計上拉電阻。P1口、P2口、P3口是準雙向IO口,其內(nèi)部都設(shè)置了上拉電路,無需在單片機外部增設(shè)上拉電阻。P3除了具有通用IO的功能,其引腳還會根據(jù)程序的設(shè)計變?yōu)樘胤NIO口,如全雙工異步串行通信的發(fā)送口與接收口,外部中斷觸發(fā)口、計數(shù)器計數(shù)脈沖輸入口等。STC89C52內(nèi)設(shè)兩個外部中斷,可以通過軟件編程設(shè)置中斷觸發(fā)模式,分別可以設(shè)置低電平觸發(fā)和下降沿觸發(fā)。即是當打開外部中斷,單片機就開始檢測外部中斷輸入口,當引腳上出現(xiàn)低電平或者下降沿的時候,即觸發(fā)外部中斷,單片機停止當前執(zhí)行的程序,轉(zhuǎn)去執(zhí)行外部中斷程序代碼,待外部中斷程序執(zhí)行完成以后,單片機又回到起初停止的地方繼續(xù)執(zhí)行。這就是一個完整的中斷過程。STC89C52還設(shè)置了三個定時計數(shù)器,其中定時計數(shù)器3是增強型8051單片機特有的。定時計數(shù)器0和定時計數(shù)器1是傳統(tǒng)單片機所固有的。定時計數(shù)器0和定時計數(shù)器1可以設(shè)置四種工作方式,最大的定時時間為65.535ms,最大的計數(shù)個數(shù)為65535次。定時計數(shù)器的實質(zhì)就是一個加1計數(shù)器,當選用內(nèi)部時鐘作為計數(shù)脈沖源時,比如在12M晶振模式下,就知道每計數(shù)一個所需的時間,這樣當計數(shù)完成后就知道計數(shù)完成所需的時間。當選用外部脈沖作為計數(shù)時鐘源時,可以實現(xiàn)對外部事件的計數(shù)。STC89C52自帶一個通用異步串行輸入輸出口即UART,可以異步全雙工與外界進行同行,這使得單片機的應用由單機本地工作模式轉(zhuǎn)向多級聯(lián)網(wǎng)工作模式,擴展了單片機的應用范圍,使得其應用更加廣泛和靈活。單片機最下系統(tǒng)主要包含三個部分:電源電路、晶振電路、復位電路圖5STC89C52系列單片機最小系統(tǒng)圖(1)電源電路單片機的地20腳與第40為電源腳,其中第40腳接3.8V-5V的電源Vcc,第20腳為電源地。31腳EA腳為內(nèi)外存儲器選擇腳,低電平有效,當接高電平時,單片機選用內(nèi)部存儲器,當接低電平時,單片機可選用外部存儲器。由于本系統(tǒng)不加外部程序存儲器,所以將EA接高電平。(2)晶振電路單片機之所有能有條不紊的運行著,得益于晶振電路。本系統(tǒng)使用的為11.0592Mhz的晶體振蕩器,該振蕩器給單片機提供時鐘基準,單片機的運行嚴格的按照時鐘基準執(zhí)行。如下圖所示,30PF的電容是輔助晶振起振,是一個經(jīng)驗值。圖6STC89C52系列單片機晶振電路(3)復位電路圖7STC89C52系列單片機復位電路系統(tǒng)上電,由于電容兩端電壓不能突變,故一開始單片機復位腳為高電平。然后電容通過R21形成回路進行充電,待沖完電后,電容兩端為“上正下負”,即單片機復位腳為低電平。這個過程即為上電復位。單片機運行過程中,可以按下按鍵,強制給復位引腳兩個機器周期以上的高電平,使單片機復位。所謂復位,是指讓單片機從初始狀態(tài)開始運行。因為有時程序會進入死循環(huán),不通過復位,無法繼續(xù)執(zhí)行程序。2.液晶顯示電路設(shè)計圖8液晶電路圖9LCD1602引腳說明根據(jù)LCD1602的規(guī)格書設(shè)計電路,其中RS、R/W、EN為控制引腳,DB0~DB7為數(shù)據(jù)引腳。在V0輸出接一個10K的電位器,可以調(diào)節(jié)背光亮度。(二)電機驅(qū)動電路與光電計數(shù)電路設(shè)計圖10電機驅(qū)動電路與光電計數(shù)電路電機驅(qū)動電路主要部分是L9110,L9110是專用馬達控制芯片。其內(nèi)部具有兩通道推挽式放大器,其特點是將分立元件集成于芯片之中,使得無需搭建復雜的外圍電路,使得驅(qū)動電路的性能得到提高。兩個通道兼容TTL/COM電平,每同擔具有800mA的電路輸出能力,峰值電流高達1.5A。兩通道的切換,可以很好的實現(xiàn)電機正反轉(zhuǎn)的控制。L9110內(nèi)部實質(zhì)就是一個H橋電路,一個H橋電路由四個晶體管管或者MOS管組成。圖11典型H橋電路如圖所示為H橋電路的示意圖,要使電路M轉(zhuǎn)動,必須使處于對角線上的兩個三極管導通,這樣,只要對H橋電路提供兩個控制信號,就可以很方便的實現(xiàn)電機正反轉(zhuǎn)的控制。當控制信號為PWM信號時,就可以進行速度調(diào)節(jié)控制。電機樞電壓的計算公式可以簡單的看做是U=K×Vcc,其中K為樞電壓波形占空比,Vcc為電源電壓,占空比可在1-100%中進行變化,這樣就會導致最終到電機兩極的電壓發(fā)生變化,這樞電壓的變化,將直接使電機速度發(fā)生變化。這一個過程就稱為PWM脈寬調(diào)制技術(shù)在直流電機速度調(diào)節(jié)方面的應用。PWM脈寬調(diào)制,就是改變電機樞電壓的波形的占空比,使得樞電壓平均值可以改變,這樣我們只要改變占空比,就可以使得速度可調(diào)節(jié)。電路中一大一小的電容為濾波電容,470UF的電容濾除外界5V電源的低頻成分,104PF的電容濾除外界5V電源的高頻成分,這樣盡可能的讓后面整個用電系統(tǒng)得到干凈的、穩(wěn)定的電源供電。在電機上安置一個帶槽的編碼盤,這樣當槽剛好達到光電對射管處,光電三極管接收到來著紅外發(fā)光二極管發(fā)出的光,從而導通接地,對外則輸出一個高電平的脈沖。本系統(tǒng)編碼盤上設(shè)置有四個槽,這樣電機轉(zhuǎn)一圈,可以產(chǎn)生4個脈沖,在一閘門時間內(nèi)對這些脈沖計數(shù),再將這些數(shù)據(jù)在單片機中進行運算,最終得出速度。本系統(tǒng)的設(shè)計將閘門時間設(shè)為1S,這樣使用計數(shù)器計數(shù)在1S時間內(nèi)光電計數(shù)器傳來的脈沖信號,用總的脈沖信號(三)按鍵電路設(shè)計圖12按鍵電路本系統(tǒng)使用的按鍵電路也叫獨立按鍵,這個命名是區(qū)別于矩陣鍵盤,矩陣鍵盤在這里不做介紹。如圖所示,按鍵的一端接單片機IO口,另外一端接低電平。這樣當有按鍵按下時,IO口被拉低為低電平,單片機內(nèi)部檢測IO口狀態(tài),某一時刻發(fā)現(xiàn)某一IO口被拉低,則證明該IO口所接的按鍵被按下,則執(zhí)行相應的操作。一個按鍵對應一個功能,按鍵按下即為觸發(fā),單片機執(zhí)行按鍵按下后的程序代碼段即為響應。由于是機械式鍵盤,在按鍵按下或者松開的過程,會有抖動,如果不加以處理,會讓單片機出現(xiàn)誤判斷。這種情況可以通過軟件或者硬件電路加以解決。本系統(tǒng)使用軟件消抖的方式,即是當按鍵按下,單片機讀取IO口狀態(tài),初步確定按鍵按下了,然后延時10ms,再次讀取IO口狀態(tài),如果還是表示按鍵按下,最后判定按鍵確實按下了,這段延時就消除了按鍵抖動。三、軟件設(shè)計(一)軟件總流程圖圖13單片機控制直流電機調(diào)速系統(tǒng)程序流程圖總圖如圖所示,在開始的開始部分,進行各種初始化,本系統(tǒng)只要設(shè)計液晶模塊的初始化和單片機內(nèi)部資源的初始化,內(nèi)部資源的初始化主要是定時計數(shù)器0和定時計數(shù)1的初始化。程序設(shè)計中,將定時技術(shù)器0設(shè)置為定時模式,定時時間為1ms。定時計數(shù)器1設(shè)置工作在計數(shù)模式,最大的計數(shù)范圍為65535次。在程序設(shè)計中,采用軟件定時形成1s的閘門時間,1s的定時時間到,讀取計數(shù)數(shù)值,將這個計數(shù)數(shù)值除以4,得出電機在1秒鐘所轉(zhuǎn)的圈數(shù)。再將1秒鐘所轉(zhuǎn)的圈數(shù)乘以60就可以得出1分鐘電機所轉(zhuǎn)過的圈數(shù)。轉(zhuǎn)速的定義剛好就是1分鐘電機所轉(zhuǎn)的圈數(shù)。對于PWM控制電機轉(zhuǎn)速的程序設(shè)這樣設(shè)計的。將一個脈沖波形的周期設(shè)置為1ms×10=10ms,轉(zhuǎn)換成頻率就是100Hz,這個頻率可以使電機速度更加平穩(wěn),切換速度更加平滑。在程序設(shè)計中設(shè)置一個占空比變量,改變占空比,就是改變這個變量的值,這個變量的值在1-10,對應的占空比就為1-100%。一開始,單片機IO口輸入高電平給電機驅(qū)動電路,控制電機朝一個方向轉(zhuǎn)動,定時器開始計時。與此同時在程序中一直判斷是否到改變電平狀態(tài)的點,若達到,則控制單片機IO口輸出低電平。然后以這種方式不斷循環(huán),最終產(chǎn)生連續(xù)不斷的PWM波形。(二)LCD1602程序設(shè)計圖14液晶初始化流程圖如圖所示,完成LCD1602的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025飲料分銷代理合同
- 2025銷售勞動合同模板
- 2025公司服裝供貨合同
- 2025維修合同 設(shè)備維修合同
- 2025辦公室租賃合同附加協(xié)議
- 瓷磚銷售類勞動合同協(xié)議
- 班干部任職合同協(xié)議
- 病人護理中介合同協(xié)議
- 電力作業(yè)人員合同協(xié)議
- 皮卡配件供貨合同協(xié)議
- 非洲自然災害
- 2023詩詞大會知識競賽200題題庫(含答案)
- TL226 大眾試驗測試標準
- 2023借款協(xié)議書Word模板
- 生產(chǎn)設(shè)備拆除工程施工方案
- (完整版)年產(chǎn)30萬噸合成氨合成工段工藝設(shè)計畢業(yè)論文
- 無障礙公共設(shè)施建設(shè)的問題及其對策研究
- 臨床醫(yī)學(???畢業(yè)綜合考復習題
- 石家莊市存量房買賣合同
- 思想道德與法治2023版教學設(shè)計第六章 學習法治思想 提升法治素養(yǎng)
- 自來水廠調(diào)試方案
評論
0/150
提交評論