




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、1.單片機串行通信的概述在通信領域內,有兩種數據通信方式:并行通信和串行通信。隨著計算機網絡化和微機分級分布式應用系統的發展,通信的功能越來越重要。通信是指計算機與外界的信息傳輸,既包括計算機與計算機之間的傳輸,也包括計算機與外部設備,如終端、打印機和磁盤等設備之間的傳輸。 串行通信是指使用一條數據線,將數據一位一位地依次傳輸,每一位數據占據一個固定的時間長度。其只需要少數幾條線就可以在系統間交換信息,特別使用于計算機與計算機、計算機與外設之間的遠距離通信。 使用串口通信時,發送和接收到的每一個字符實際上都是一次一位的傳送的,每一位為1或者為0。在串行通信中,把通信接口只能發送或接收的單向傳送
2、辦法叫單工傳送;而把數據在甲乙兩機之間的雙向傳遞,稱之為雙工傳送。在雙工傳送方式中又分為半雙工傳送和全雙工傳送。半雙工傳送是兩機之間不能同時進行發送和接收,任一時該,只能發或者只能收信息。51系列單片機有一個可編程的全雙工串行通信接口,它可作異步接收發送器用,也可做同步移位寄存器用,其幀格式可有8位、10位或11位,并能設置各種波特率,給使用帶來很大的靈活性。51系列單片機有兩個物理上獨立的接收、發送緩沖器sbuf,它們只占用同一地址99h,可同時發送、接送數據。發送緩沖器只能 寫入,不能讀出,接收緩沖器只能讀出、不能寫入。串行發送接收的速率與波特率發生器產生的移位脈沖同頻。51系列單片機用定
3、時器t1或直接用cpu時鐘作為通信波特率發生器的輸入,在串行接口的不同工作方式中,波特率發生器從兩個輸入信號中選擇一個分頻,產生移位脈沖來同步串口的接收和發送,移位脈沖的速率即是波特率。接收器是雙緩沖結構,在前一個字節被從接收緩沖器sbuf讀出之前,第二字節即開始被接收 。但是,若在第二個字節接收完畢后,前一個字節還未被cpu讀取的話 ,第二個字就會覆蓋第一個字節,造成第一個字節的丟失。接收器是雙緩沖結構,串行口的發送和接收都是以特殊功能寄存器sbuf的名義進行讀或寫的。8051串行口可設置四種工作方式,可有8位,10位和11位幀格式。方式0以8位數據為一幀,不設起始位和停止位,先發送最低位。
4、方式1以10位為一幀傳輸,設有1個起始位“0”,8個數據位和1一個停止位“1”。方式2和3以11位為1幀傳輸,設有1個起始“0”,8個數據位,1個附加第九位和1個停止們“1”,附加第九位由軟件置1或清0。發送時在tb8中,接收時送入rb8中。2串行通信程序設計2.1程序設計流程圖 設定t1和scon設定發送數據地址指針和塊長度計數器開中斷開關ea允許串行口中斷發送等待中斷清t1修改數據地址指針和塊長度計數器全部數據發送完發送中斷返回清ea或esyn主程序中斷服務程序(a)中斷方式發送程序主程序設定t1和scon置位ren允許接收開中斷開關ea允許串行口中斷等待中斷中斷服務程序清r1接收數據數據
5、送接收緩沖器數據塊接收完清ea或es中斷返回ny設定接收緩沖區首址置接收數據個數計數器(b)中斷方式接收程序圖2.1串行通信中斷方式流程圖2.2自發自收程序org 0000hmov tmod,#20hmov th1,#0cchmov tl1,#0cch ;設定波特率setb tr1mov scon,#50habc : clr ti mov p1,#0feh ;led滅 acall day ;延時 mov a,#0ffh mov sbuf,a ;發送數據ffh jnb ri, $ ;ri1等待 clr ri mov a,sbuf ;接收數據,a=ffh mov p1,a ;燈亮 jnb ti,
6、$ ;ti1等待 acall day ;延時 sjmp abcday: mov r0,#0dal: mov r1,#0 djnz r1, $ djnz r0,dal ret end2.3發送程序及分析org 0000h ljmp mainorg 0023hljmp sub1main:mov scon,#50h mov tmod,#20h mov tl1,#0fdh mov th1,#0fdh mov ie,#90h setb tr1ini: mov sbuf,#55h mov r1,#0ffhloop:nop djnz r1,loop jnb f0,ini mov r0,#21h mov sb
7、uf,20hsub1:jnb ri,lab0 mov a,sbuf cjne a,#55h,lab1 setb f0 clr rilab1:retilab0:mov sbuf,r0 inc r0 cjne r0,#24h,lab2 clr eslab2:clr ti reti end主程序中:指令mov scon,#50h的意義是將數據50h送入特殊功能寄存器scon中,即設置串口工作于方式1,不允許多機通信,允許接收/發送數據第9位和接收數據第9位在方式1中未用,可以為任意值,在這里我們讓它為0,串口發送/接收無中斷請求。指令mov tmod,#20h的意義為將數據20h送入特殊功能寄存器t
8、mod中,即定時器1的啟動與引腳int1無關,定時記數器1當定時器用,工作于方式2由于定時器0在這個例子中未用,所以可以任意設置 。指令mov tl1,#ofdh的意義是給定時器1的低8位賦初值。指令mov th1,#ofddh的意義是給定時器1的高8位賦初值 ,因為定時器1工作方式2,即自動重裝方式,所以定時器的高低8位都賦相同的初值,這個初值由串口工作方式1的波特率計算公式確定。指令mov ie,#90h的意義為打開中斷允許總開關和串口中斷允許。指令setb tr1的意義為啟動定時器1,使波特率發生器開始產生移位脈沖和采樣脈沖。指令mov sbuf,#55h的意義為將數據55h送入發送緩沖
9、器sbuf中并通知串口發送。指令mov r1,#offh的意義是將數據offh送入工作寄存器r1中,這條指令的意圖是為下面這段循環程序設置循環次數。指令nop什么事都不做,只占用cpu的 時間。指令djnz r1,loop的意義為先將r1中的值減1,再判斷r1中的值,如果不為0,則跳轉到標號為loop的地方,發果為0,則順序運行下一條指令,顯然這四條指令就構成一段延時程序,這段延時程序的延時時間應大于單片機1的串口中斷服務程序的處理時間與單片機2的中斷服務程序處理時間之和。指令jnb f0,ini的意義是如果程序狀態字psw中的f0位為0則表明接收端未準備好,所以程序跳轉到標事情為ini的地方
10、去再次發送詢問信號,如果f0為1則表明接收端已準備好,所以程序往下運行。指令mov r0,#21h的意義為給r0賦初值21h,r0當間址寄存器用,其內容為下次將要發送數據的地址。指令mov sbuf,20h的意義為將內部數據存儲器20h中的數據送入發送緩沖器sbuf并啟動串口發送裝置。指令ljmp $的意義為跳轉到本指令,即主程序運行到這里就進入了死循環。中斷服務程序中:指令jnb ri,labo的意義為如果本次串口中斷是一次接收中斷 ,則表明接收緩沖器sbuf中存放的是單片機2的應答信號,程序應順序執行下一條指令,處理單片機2的應答,如果本次串口中斷為一次發送中斷,則應跳轉到標號為labo的
11、地方去執行發送數據程序 。指令mov a,sbuf的意義為將單片機2發送來的應答信號取入累加器中。指令cjne a,#55h,lab1的意義是如果單片機2發送來的應答信號為55h,表明單片機2已處于“準備好”狀態,則程序順序運行 ,若單片機2送來的應答信號不為55h,則程序什么都不做,跳轉到標號lab1執行返回指令 。指令setb f0的意義為對用戶標志位f0置1,從而告訴主程序單片機2已處于“準備好”狀態指令clr ri的意義為清除接收中斷申請標志,為下一次中斷的發生作準備。指令reti的意義為中斷返回。指令mov sbuf,ro的意義為從間址r0所指定的內部數據存儲器中取一個數據發送。指令
12、inc r0的意義為將待傳送數據的地址指針r0的內容加1,使其指向下一個待發送的數據。指令cjne r0,#24h,lab2的意義為判斷四個數據是否都已發送完,若已發送完則順序執行下一條關中斷,若未發送完則跳轉到標號lab2。指令clr es的意義為禁止串口中斷。指令clr ti的意義為清除串口接收中斷申請標志。指令reti的意義為中斷返回。end是一條偽指令,其意義為告訴編譯系統程序到此結束。2.4接收程序及分析org 0000hljmp mainorg 0023hljmp sub1main:mov scon,#50h mov tmod,#20h mov tl1,#0fdh mov th1,
13、#0fdh mov ie,#90h mov r0,#33h setb tr1 ljmp $sub1:jb f0,lab2mov a,sbufcjne a,#55h,lab1setb f0clr rimov sbuf,#55hlab1:retilab2:mov r0,sbuf inc r0 cjne r0,#37h,lab3 clr eslab3:clr ri reti end單片機2的主程序只起初始化串口的作用,這里不再講述。單片機2的中斷服務程序 :指令jb f0,lab2的意義為如果f0為0,表明當前接收數據為單片機1送過來的查詢信號,則程序順序往下運行,執行信號處理程序 。若f0為1,表
14、明當前接收到的數據為單片機1送來的有效數據,程序跳轉到標號lab2去執行程序,將接收到的數據放入r0指示的數據緩沖區中 。指令mov a,sbuf將單片機1送過來的查詢信號從接收緩沖器sbuf中取出。指令cjne a,#55h,lab1的意義為若單片機1送過來的數據為55h將標志位f0置1,否則跳轉到標號lab1處執行中斷返回指令。指令setb f0的意義為對標志位f0置1,其意義為:下一次接收到的數據為有效數據。指令clr ri清除接收中斷申請標志。指令mov sbuf,#55h的意義為發送應答信號。指令reti的意義為中斷返回。指令mov r0,sbuf的意義為將串口中斷接收緩沖器中的數據
15、放入間接地址指針r0指定的內部數據存儲器單元中。指令inc r0將地址指針的內容加1,使其指向一個新地址,用以存放下一次接收的數據。指令cjne r0,#37h,lab3判斷四個數據是否接收完,若已接收完,則順序執行下一條指令否則跳轉到標號lab3。指令clr es關閉串口中斷。指令clr ri清除串口接收中斷申請標志。指令reti為中斷返回。end是一條偽指令,其意義為告訴編譯系統程序到此結束。3.電路的設計3.1自發自收電路圖3.1自發自收電路3.2串行通信電路圖3.2串行通信電路4仿真及結果分析利用軟件將程序編譯生成 hex 文件,輸入到單片機中,用proteus進行仿真。自發自收電路仿
16、真結果為發光二極管不停閃爍。雙機串行通信電路仿真結果如下圖:圖4.1仿真結果圖(1)圖4.2仿真結果圖(2)數碼管按0,1,2,1f順序顯示,結果符合要求。5.心得體會課程設計是培養學生綜合運用所學知識,發現,提出,分析和解決實際問題,鍛煉實踐能力的重要環節,是對學生實際工作能力的具體訓練和考察過程.隨著科學技術發展的日新日異,單片機已經成為當今計算機應用中空前活躍的領域, 在生活中可以說得是無處不在。因此作為二十一世紀的大學來說掌握單片機的開發技術是十分重要的。回顧起此次單片機課程設計,至今我仍感慨頗多,的確,從選題到定稿,從理論到實踐,在整整一星期的日子里,可以說得是苦多于甜,但是可以學到很多很多的的東西,同時不僅可以鞏固了以前所學過的知識,而且學到了很多在書本上所沒有學到過的知識。通過這次課程設計使我懂得了理論與實際相結合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結合起來,從理論中得出結論,才能真正為社會服務,從而提高自己的實際動手能力和獨立思考的能力。在設計的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會遇到過各種各樣的問題,同時在設計的過程中發現了自己的不足之處,對以前所學過的知識理解得不夠深刻,掌握得不夠牢固,比如說51系列芯片的使用,proteus軟件的應用技巧,對
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 店面形象規范管理辦法
- 工程全面預算管理辦法
- 外地常駐員工管理辦法
- 維修費用控制管理辦法
- 私人扶貧基金管理辦法
- 育嬰師職業簡介課件模板
- 消防培訓師課件
- 2025年滌綸高彈絲項目提案報告
- 腸道健康養生課件
- 腸癌術后護理
- 化學實驗室安全風險識別、控制與事故應急處置2
- 國有企業集中采購管理模式改進研究
- 《小學生網絡安全教育》課件
- 【中學】【主題班會】護紅色根脈 圓復興夢想
- 2025-2030中國共享按摩椅行業市場深度調研及投資前景與投資策略研究報告
- 自然照護理念體位管理
- 二次供水試題及答案
- 耐高溫有機硅樹脂合成及改性技術
- 國家開放大學漢語言文學本科《中國現代文學專題》期末紙質考試第三大題分析題庫2025春期版
- 全國職業院校技能大賽高職組(生產事故應急救援賽項)選拔賽考試題庫500題(含答案)
- DBJ50-T-098-2019 城市綠化養護質量標準
評論
0/150
提交評論