一、總體設(shè)計(jì)
1.設(shè)計(jì)要求:
兩片單片機(jī)之間進(jìn)行串行通信,發(fā)送端將0~f循環(huán)發(fā)送到接收端,并在接收端顯示。
2.設(shè)計(jì)方案:
本次設(shè)計(jì),對于兩片89C51,采用RS232進(jìn)行雙機(jī)通信。發(fā)送方的數(shù)據(jù)由串行口TXD段輸出,經(jīng)過電平轉(zhuǎn)換芯片MAX232將TTL電平轉(zhuǎn)換為RS232電平輸出,經(jīng)過傳輸線將信號傳送到接收端。接收方也使用MAX232芯片進(jìn)行電平轉(zhuǎn)換后,信號到達(dá)接收方串行口的接收端。接受方接收后,在數(shù)碼管上顯示接收的信息。為提高抗干擾能力,還可以在輸入輸出端加光耦合進(jìn)行光電隔離。
軟件部分,通過通信協(xié)議進(jìn)行發(fā)送接收,主機(jī)先送AAH給從機(jī),當(dāng)從機(jī)接收到AAH后,向主機(jī)回答B(yǎng)BH。主機(jī)收到BBH后就把數(shù)碼表TAB[16]中的10個數(shù)據(jù)送給從機(jī),并發(fā)送檢驗(yàn)和。從機(jī)收到16個數(shù)據(jù)并計(jì)算接收到數(shù)據(jù)的檢驗(yàn)和,與主機(jī)發(fā)送來的檢驗(yàn)和進(jìn)行比較,若檢驗(yàn)和相同則發(fā)送00H給主機(jī);否則發(fā)送FFH給主機(jī),重新接受。從機(jī)收到16個正確數(shù)據(jù)后送到一個數(shù)碼管顯示。
二、硬件設(shè)計(jì)
1.51單片機(jī)串行通信功能
計(jì)算機(jī)與外界的信息交換稱為通信,常用的通信方式有兩種:并行通信和串行通信。51單片機(jī)用4個接口與外界進(jìn)行數(shù)據(jù)輸入與數(shù)據(jù)輸出就是并行通信,并行通信的特點(diǎn)是傳輸信號的速度快,但所用的信號線較多,成本高,傳輸?shù)木嚯x較近。串行通信的特點(diǎn)是只用兩條信號線(一條信號線,再加一條地線作為信號回路)即可完成通信,成本低,傳輸?shù)木嚯x較遠(yuǎn)。
51單片機(jī)的串行接口是一個全雙工的接口,它可以作為UART(通用異步接受和發(fā)送器)用,也可以作為同步移位寄存器用。51單片機(jī)串行接口的結(jié)構(gòu)如下:
(1)數(shù)據(jù)緩沖器(SBUF)
接受或發(fā)送的數(shù)據(jù)都要先送到SBUF緩存。有兩個,一個緩存,另一個接受,用同一直接地址99H,發(fā)送時用指令將數(shù)據(jù)送到SBUF即可啟動發(fā)送;接收時用指令將SBUF中接收到的數(shù)據(jù)取出。
(2)串行控制寄存器(PCON)
SCON用于串行通信方式的選擇,收發(fā)控制及狀態(tài)指示,各位含義如下:
SM0,SM1:串行接口工作方式選擇位,這兩位組合成00,01,10,11對應(yīng)于工作方式0、1、2、3。串行接口工作方式特點(diǎn)見下表
SM2:多機(jī)通信控制位。
REN:接收允許控制位。軟件置1允許接收;軟件置0禁止接收。
TB8:方式2或3時,TB8為要發(fā)送的第9位數(shù)據(jù),根據(jù)需要由軟件置1或清0。
RB9:在方式2或3時,RB8位接收到的第9位數(shù)據(jù),實(shí)際為主機(jī)發(fā)送的第9位數(shù)據(jù)TB8,使從機(jī)根據(jù)這一位來判斷主機(jī)發(fā)送的時呼叫地址還是要傳送的數(shù)據(jù)。
TI:發(fā)送中斷標(biāo)志。發(fā)送完一幀數(shù)據(jù)后由硬件自動置位,并申請中斷。必須要軟件清零后才能繼續(xù)發(fā)送。
RI:接收中斷標(biāo)志。接收完一幀數(shù)據(jù)后由硬件自動置位,并申請中斷。必須要軟件清零后才能繼續(xù)接收。
(3)輸入移位寄存器
接收的數(shù)據(jù)先串行進(jìn)入輸入移位寄存器,8位數(shù)據(jù)全移入后,再并行送入接收SBUF中。
(4)波特率發(fā)生器
波特率發(fā)生器用來控制串行通信的數(shù)據(jù)傳輸速率的,51系列單片機(jī)用定時器T1作為波特率發(fā)生器,T1設(shè)置在定時方式。波特率時用來表示串行通信數(shù)據(jù)傳輸快慢程度的物理量,定義為每秒鐘傳送的數(shù)據(jù)位數(shù)。
(5)電源控制寄存器PCON
其最高位為SMOD。
(6)波特率計(jì)算
當(dāng)定時器T1工作在定時方式的時候,定時器T1溢出率=(T1計(jì)數(shù)率)/(產(chǎn)生溢出所需機(jī)器周期)。由于是定時方式,T1計(jì)數(shù)率= fORC/12。產(chǎn)生溢出所需機(jī)器周期數(shù)=模M-計(jì)數(shù)初值X。
2.MAX232芯片
用8051串行接口通信,如果兩臺8051單片機(jī)之間的距離很近(不超過1.5m),可以采用直接將兩臺8051單片機(jī)的串行接口直接相連,利用其自身的TTL電平(0-5V)直接傳輸數(shù)據(jù)信息。如果傳輸距離較遠(yuǎn)(超過1.5m),由于傳輸線的阻抗與分布電容,會產(chǎn)生電平損耗和波形畸變,以至于檢測不出數(shù)據(jù)或數(shù)據(jù)出錯。此時可利用 RS232標(biāo)準(zhǔn)總線接口,將單片機(jī)輸出的TTL電平轉(zhuǎn)換為RS232標(biāo)準(zhǔn)電平(邏輯1為-15—-5V;邏輯0為+5-—+15V)。用RS232可將傳輸距離提高到15m,如果想遠(yuǎn)距離傳輸,可以采用RS422或者RS485。
電平轉(zhuǎn)換芯片MAX232是美信公司(MAXIM)生產(chǎn),專用于進(jìn)行將TTL電平轉(zhuǎn)換為RS232電平的芯片,MAX232內(nèi)部有泵電源,能將+5V電源電壓在芯片內(nèi)提高到RS232電平所需的+10V或者-10V電平。
圖2.電平轉(zhuǎn)換芯片MAX232
3.整體電路設(shè)計(jì)
最終設(shè)計(jì)電路如下圖3所示,發(fā)送方的數(shù)據(jù)由串行口TXD段輸出,經(jīng)過電平轉(zhuǎn)換芯片MAX232將TTL電平轉(zhuǎn)換為RS232電平輸出,經(jīng)過傳輸線將信號傳送到接收端。接收方也使用MAX232芯片進(jìn)行電平轉(zhuǎn)換后,信號到達(dá)接收方串行口的接收端。接受方接收后,通過P1口在數(shù)碼管上顯示接收的信息。
圖3.串行通信電路
三、軟件設(shè)計(jì)
通過通信協(xié)議進(jìn)行發(fā)送接收,主機(jī)先送AAH給從機(jī),當(dāng)從機(jī)接收到AAH后,向主機(jī)回答B(yǎng)BH。主機(jī)收到BBH后就把數(shù)碼表TAB[16]中的10個數(shù)據(jù)送給從機(jī),并發(fā)送檢驗(yàn)和。從機(jī)收到16個數(shù)據(jù)并計(jì)算接收到數(shù)據(jù)的檢驗(yàn)和,與主機(jī)發(fā)送來的檢驗(yàn)和進(jìn)行比較,若檢驗(yàn)和相同則發(fā)送00H給主機(jī);否則發(fā)送FFH給主機(jī),重新接受。從機(jī)收到16個正確數(shù)據(jù)后送到一個數(shù)碼管顯示。
1.串行通信軟件實(shí)現(xiàn)
(1)串行口工作于方式1;用定時器1產(chǎn)生9600bit/s的波特率,工作于方式2。
(2)功能:將本機(jī)ROM中數(shù)碼表TAB[16]中的16個數(shù)發(fā)送到從機(jī),并保存在從機(jī)內(nèi)部ROM中,從機(jī)收到這16個數(shù)據(jù)后送到一個數(shù)碼管循環(huán)顯示。
(3)通信協(xié)議:主機(jī)首先發(fā)送連絡(luò)信號(AAH),從機(jī)接收到之后返回一個連絡(luò)信號(BBH)表示從機(jī)已準(zhǔn)備好接收。
(4)通信過程使用第九位發(fā)送奇偶校驗(yàn)位。
(5)從機(jī)接收到一個數(shù)據(jù)后,立即進(jìn)行奇偶校驗(yàn),若數(shù)據(jù)沒有錯誤,則返回00H,否則返回FFH。
(6)主機(jī)發(fā)送一個數(shù)據(jù)后,等待從機(jī)返回?cái)?shù)據(jù);若為00H,則繼續(xù)發(fā)送下一個數(shù)據(jù),若為FFH,則重新發(fā)送數(shù)據(jù)。
2.程序流程圖
(1)發(fā)送端程序流程圖
(2)接收方程序流程圖
四、聯(lián)合調(diào)試
在protues上進(jìn)行仿真實(shí)驗(yàn)。首先使用KeilC將編寫完成的程序編譯生成HEX文件,將HEX文件燒錄到兩片單片機(jī)中,進(jìn)行仿真實(shí)驗(yàn),結(jié)果如下圖所示,可以看到,接收端已將接受到的數(shù)據(jù)完整的顯示了出來。
圖4.仿真圖
五、設(shè)計(jì)小結(jié)
經(jīng)過繁忙而又緊張的課程設(shè)計(jì),終于順利的完成了設(shè)計(jì)任務(wù)。雖然在這段時間里每天都那么繁忙,但是在這忙碌的過程中卻得到了許多的收獲。
經(jīng)過課程設(shè)計(jì),在查閱資料的過程中,學(xué)習(xí)了基于單片機(jī)的C語言程序設(shè)計(jì),了解了單片機(jī)串行通信的基本知識,對于以后的學(xué)習(xí)和工作都有很大的益處。
在學(xué)習(xí)的過程中,也遇到了一些困難,比如開始的時候,由于發(fā)送端和接收端的通信協(xié)議沒有做好,導(dǎo)致數(shù)據(jù)不能正確的傳輸,在解決問題的過程中,對于通信協(xié)議的實(shí)現(xiàn)有了深刻的認(rèn)識。
通過這次課程設(shè)計(jì),鍛煉了自己獨(dú)立思考的能力。
1.主機(jī)發(fā)送程序
#include #define uchar unsigned char // 宏定義無符號字符型變量 void init(); // 定義初始化函數(shù) void send(); // 定義發(fā)送函數(shù) ucharTAB[16] ={ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; // 定義數(shù)組函數(shù) 0~F顯示段位值 uchar i,sum; // 定義無符字符變量 I,sum 其中i表示數(shù)據(jù)個數(shù),sum表示校驗(yàn)和 int j; // 定義整形變量 j 等待數(shù)據(jù)發(fā)送時的延時 main() // 主函數(shù)開始執(zhí)行 { init(); // 初始化 send(); // 準(zhǔn)備發(fā)送數(shù)據(jù) } void init(void) 調(diào)用初始化函數(shù)(無返回值) { EA=1; // 打開全局中斷允許 ES=1; // 打開串口中斷允許 TMOD=0x20; // 定義工作方式寄存器的方式和功能 TH1=0xfd; // 配置定時器初值 TL1=0xfd; // 配置定時器初值 PCON=0x00; // 配置電源管理寄存器 主要SMOD位=0 SCON=0x50; // 設(shè)定串行口的工作方式,REN允許串行接收 TR1=1; // 定時器1啟動控制位 } void send(void) // 調(diào)用發(fā)送函數(shù)(數(shù)據(jù)準(zhǔn)備發(fā)送) {do { SBUF=0xaa; // 把0xaa裝入SBUF緩存 while(!TI); // 發(fā)送中斷標(biāo)志位(如果!TI=0即TI=1時,,跳出循環(huán)) TI=0; // 因?yàn)門I為硬件置1,所以要軟件清0 while(!RI); // 接收中斷標(biāo)志位(如果!RI=0即RI=1時,,跳出循環(huán)) RI=0; // 因?yàn)镽I為硬件置1,所以要軟件清0 } while((SBUF^0xbb)!=0); // sbuf 的值不等0,為0xBB就會執(zhí)行下一條語句 // DO while 循環(huán) do { sum=0; // 首先把0賦值給sum即清0 ,sum為校驗(yàn)和 for(i=0;i<=15;i++) // i為數(shù)組中數(shù)據(jù)的位個數(shù),等待有16個數(shù)據(jù)后 { SBUF=TAB[i]; // 把數(shù)裝入緩存器發(fā)送一個數(shù)據(jù) sum+=TAB[i]; // 即 sum=sum+ TAB[i](求校驗(yàn)和,為兩個十六進(jìn)制數(shù)的和) while(!TI); // 在TI=1的時候,跳出循環(huán) TI=0; // TI要軟件清零 } SBUF=sum; // 發(fā)送校驗(yàn)和 while(!RI); //在RI=1的時候,跳出循環(huán) RI=0; // RI要軟件清零 } while(SBUF!=0); // 在SBUF為0時跳出循環(huán) } 從機(jī)發(fā)送程序和主機(jī)差不多,你可以自己想一下看看能不能寫出來。
上一篇:51單片機(jī)超聲波水位控制器設(shè)計(jì)
下一篇:AT89C51單片機(jī)流水燈c語言程序及詳解(掃盲教程)
推薦閱讀
史海拾趣
在電子行業(yè)中,市場競爭激烈、技術(shù)更新?lián)Q代迅速。Data Translation在發(fā)展過程中也遇到了不少挑戰(zhàn)和困難。但公司始終堅(jiān)持以客戶為中心、以技術(shù)創(chuàng)新為驅(qū)動的發(fā)展理念,積極應(yīng)對市場變化和挑戰(zhàn)。公司通過加大研發(fā)投入、優(yōu)化產(chǎn)品結(jié)構(gòu)、拓展市場渠道等方式不斷提升自身的競爭力和適應(yīng)能力。這些努力使公司在面對市場變化和挑戰(zhàn)時能夠保持穩(wěn)健的發(fā)展態(tài)勢。
自1958年成立以來,Chemtronics公司在電子維護(hù)和維修領(lǐng)域不斷進(jìn)取。最初,公司專注于生產(chǎn)一系列清潔劑產(chǎn)品,以其高效清潔能力獲得了市場的認(rèn)可。隨著時間的推移,Chemtronics逐漸將產(chǎn)品線擴(kuò)展至超純?nèi)軇艋壹墑e擦拭棒和擦拭布等領(lǐng)域,進(jìn)而又?jǐn)U展到電子電氣和電信工業(yè)的精密返工和維修工具。這一轉(zhuǎn)變不僅體現(xiàn)了公司對市場需求的敏銳洞察,也彰顯了其不斷創(chuàng)新的精神。
Chemtronics一直堅(jiān)守嚴(yán)格的質(zhì)量標(biāo)準(zhǔn)。公司自早期起就遵循ISO9001:2000的質(zhì)量標(biāo)準(zhǔn)來制造產(chǎn)品,確保每一款產(chǎn)品都達(dá)到同等高質(zhì)量。這種對質(zhì)量的堅(jiān)持不僅贏得了客戶的信任,也為公司在競爭激烈的電子行業(yè)中樹立了良好的口碑。
隨著產(chǎn)品質(zhì)量的不斷提升和技術(shù)的持續(xù)創(chuàng)新,固馳電子開始積極拓展國內(nèi)外市場。公司產(chǎn)品不僅暢銷國內(nèi)市場,為美的、格力、艾美特等知名企業(yè)配套,還大量出口至韓國、俄羅斯、美國、加拿大、德國等國家和地區(qū)。這一過程中,固馳電子憑借其優(yōu)良的品質(zhì)、滿意的價格和完善的服務(wù)贏得了國內(nèi)外客戶的一致好評,品牌影響力顯著提升。
固馳電子深知產(chǎn)品質(zhì)量是企業(yè)生存之本,因此始終將品質(zhì)控制放在首位。公司不僅建立了完善的質(zhì)量管理體系,還通過了ISO9001:2015質(zhì)量管理體系認(rèn)證和美國UL產(chǎn)品認(rèn)證,這標(biāo)志著固馳電子的產(chǎn)品質(zhì)量達(dá)到了國際先進(jìn)水平。此外,公司還積極申請專利,目前已擁有50項(xiàng)國家專利,進(jìn)一步鞏固了其在行業(yè)內(nèi)的技術(shù)領(lǐng)先地位。
隨著全球環(huán)保意識的不斷提高,DIOTECH公司也開始關(guān)注綠色環(huán)保和可持續(xù)發(fā)展問題。公司投入大量研發(fā)資源,成功開發(fā)出了一系列綠色電子產(chǎn)品,這些產(chǎn)品在生產(chǎn)過程中采用了環(huán)保材料和生產(chǎn)工藝,并且具有低功耗、長壽命等特點(diǎn)。這些產(chǎn)品的推出不僅滿足了市場對環(huán)保產(chǎn)品的需求,也提升了公司的社會責(zé)任感和品牌形象。
這些天連續(xù)低溫大霧,紅外對射的外罩上結(jié)了一層冰,為了解決這個問題絞盡腦汁,自制了一個加熱器,就是用電褥子上的電爐絲。剪下一段,在一塊小塑料板上繞幾圈就行了… 查看全部問答∨ |
基于PDA移動導(dǎo)航定位系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).pdf 基于PDA移動導(dǎo)航定位系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).pdf… 查看全部問答∨ |
菜鳥這廂有禮了,關(guān)于flash的基本概念想不明白,求教于各位。 1)扇區(qū)sector 和 塊block 是什么關(guān)系?我用的flash芯片是am29lv160DB,據(jù)手冊有若干不同大小的sector,但是block大小沒有定義,不知道每個sector包含多少個block。 2)擦除大小erase ...… 查看全部問答∨ |
s3c44B0 LCD顯示應(yīng)用程序,漢字從右向左滾動顯示時,屏幕會有明顯閃爍,不明原因~~~ s3c44B0 LCD顯示應(yīng)用程序,漢字從右向左滾動屏幕會有明顯閃爍,不明原因~~~ 可能的原因我分析有兩個: LCD驅(qū)動問題,s3c44B0是帶驅(qū)動,沒動過。 屏自身的問題(sharp5.7寸藍(lán)白屏)。 不知有人做過類似的程序沒?非常期待大家的賜教。 如果有人看 ...… 查看全部問答∨ |
Bitmap MyImage = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height); &nbs ...… 查看全部問答∨ |
看了一些文章,關(guān)于模擬和數(shù)字地還是有一些疑問,請大家多多指教. 1.單點(diǎn)接地一班要求就是在AD處進(jìn)行單點(diǎn)接地,并且明確指出不能 跨越(模擬數(shù)字地)分割線 進(jìn)行信號走線,但是當(dāng)我同時用到DA的時候,DA改放置到數(shù)字區(qū)還是模擬區(qū)呢?并且這時必然 ...… 查看全部問答∨ |
STM8的UART初始化完成后,不能發(fā)送數(shù)據(jù),按例程中的再后面加上這個函數(shù)之后才能發(fā)送,想問一下大俠們,是不是在發(fā)送前還需要什么操作。。 char putchar (char c) { if (c == \'\\n\') { ...… 查看全部問答∨ |
嵌入式系統(tǒng)“中國制造”走向“中國創(chuàng)造” 嵌入式系統(tǒng)是先進(jìn)的半導(dǎo)體技術(shù)、計(jì)算機(jī)技術(shù)、電子技術(shù)以及各種具體應(yīng)用相結(jié)合的產(chǎn)物,是技術(shù)密集、資金密集、高度分散、不斷創(chuàng)新的新型集成知識系統(tǒng)。涵蓋了電子信息技術(shù)、微電子技術(shù)、計(jì)算機(jī)軟件和硬件等多項(xiàng)技術(shù)等領(lǐng)域方面的應(yīng)用。下面就由福州卓 ...… 查看全部問答∨ |
轉(zhuǎn)自http://blog.cechina.cn/ting123/226060/message.aspx# 科普貼收藏了 Quartus II中的Safe State Machine編譯選項(xiàng)對FSM在FPGA中的實(shí)現(xiàn)方式有很大影響。 riple 這一影響在RTL視圖中不可見。 riple 這一選項(xiàng)是否引 ...… 查看全部問答∨ |
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦
- 面壁智能端側(cè)大模型首日上線,英特爾工程師聯(lián)合優(yōu)化實(shí)現(xiàn)2.2倍推理效率躍升
- 瞄準(zhǔn)車規(guī)級碳化硅,理想發(fā)表重要成果
- 車規(guī)級MCU國內(nèi)替代提速
- 博世新獲國內(nèi)頭部車企座艙域控項(xiàng)目定點(diǎn)
- 首款測量電動汽車電機(jī)溫度的傳感器問世,提升對磁鐵的保護(hù)以減少稀土的使用
- Arm開發(fā)出計(jì)算子系統(tǒng) 以加速汽車設(shè)計(jì)的下一代AI芯片的開發(fā)
- 福特汽車申請新專利 或?qū)崿F(xiàn)車庫定向音樂播放
- 泊車場景一定需要超聲波嗎?
- 同星新一代TC1055 Pro開啟車載網(wǎng)絡(luò)測試新時代
- 福特汽車申請新專利 或?qū)⑴鋫浒踩ㄗ粉櫹到y(tǒng)
- EEWORLD 示波器問卷有獎大調(diào)查
- 不可錯過的一次邂逅,TTI攜TE傳感器樣片與你相見!免費(fèi)樣片申請活動開始啦~
- 有獎直播 | 與英飛凌一同革新您的電動汽車溫控系統(tǒng):集成熱管理系統(tǒng)(低壓側(cè))
- 有獎直播 | ST25 NFC新產(chǎn)品及應(yīng)用方案介紹 報名中
- 電源情報站 MPS小程序干貨推薦,下載有好禮!3月活動開始啦~
- TTI&TE直播:傳感器在工業(yè)電機(jī)里的發(fā)展及最新應(yīng)用
- 【摸黑搶樓】贏大禮,關(guān)于示波器的狂想曲!正式開搶!!!
- VISHAY工業(yè)電源主題月 幸運(yùn)闖關(guān)贏大獎!
- 有獎直播 | 德州儀器 C2000™ 系列培訓(xùn)會
- 紅外典型應(yīng)用*技術(shù)分享*趣味尋圖,帶你走進(jìn)紅外世界