九九热最新网址,777奇米四色米奇影院在线播放,国产精品18久久久久久久久久,中文有码视频,亚洲一区在线免费观看,国产91精品在线,婷婷丁香六月天

歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁 裝配圖網(wǎng) > 資源分類 > DOC文檔下載  

單片機(jī)IO口模擬串行實(shí)現(xiàn)數(shù)據(jù)通信.doc

  • 資源ID:6625647       資源大?。?span id="24d9guoke414" class="font-tahoma">332.50KB        全文頁數(shù):24頁
  • 資源格式: DOC        下載積分:9.9積分
快捷下載 游客一鍵下載
會員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要9.9積分
郵箱/手機(jī):
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機(jī)號,方便查詢和重復(fù)下載(系統(tǒng)自動生成)
支付方式: 支付寶    微信支付   
驗(yàn)證碼:   換一換

 
賬號:
密碼:
驗(yàn)證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會被瀏覽器默認(rèn)打開,此種情況可以點(diǎn)擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預(yù)覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標(biāo)題沒有明確說明有答案則都視為沒有答案,請知曉。

單片機(jī)IO口模擬串行實(shí)現(xiàn)數(shù)據(jù)通信.doc

目錄1設(shè)計(jì)任務(wù)與要求.1總體方案設(shè)計(jì).1 2.1串行通信的方式設(shè)計(jì).1 2.1.1并行I/O口.12.1.2通信的基本原理.22.1.3 89C51的串行口.5 2.1.4 用IO口模擬串口通信.7 2.2 數(shù)碼管顯示設(shè)計(jì).7 2.3 LED燈顯示設(shè)計(jì).8單元電路設(shè)計(jì).8 3.1硬件設(shè)計(jì).8 3.1.1復(fù)位電路設(shè)計(jì).10 3.1.2時鐘電路.10 3.1.3 顯示電路設(shè)計(jì).11 3.1.4電平轉(zhuǎn)換電路.12 3.2軟件設(shè)計(jì).14 3.2.1 程序設(shè)計(jì)流程圖.14 3.2.2 單片機(jī)IO口模擬串口實(shí)現(xiàn)數(shù)據(jù)通信的源程序.154系統(tǒng)仿真.185收獲與體會.206參考文獻(xiàn).21單片機(jī)IO口模擬串口實(shí)現(xiàn)數(shù)據(jù)通信1設(shè)計(jì)任務(wù)與要求本設(shè)計(jì)為單片機(jī)IO口模擬串口實(shí)現(xiàn)數(shù)據(jù)通信,它可以用單片機(jī)的IO口實(shí)現(xiàn)單片機(jī)RX和TX的功能。具體要求如下:l 用單片機(jī)的P3.4和P3.5分別模擬RX和TX的串行通信功能,能夠接收和發(fā)送數(shù)據(jù)。l 通過PC機(jī)的鍵盤輸入字符,并傳送給單片機(jī),由單片機(jī)接收后,發(fā)達(dá)給PC機(jī),由PC機(jī)加以顯示。l 單片機(jī)接收由鍵盤輸入的數(shù)據(jù)后,如果是數(shù)字,則由數(shù)碼管顯示,并由LED燈表示其ASCII碼,如果是其他字符,則由僅由LED燈顯示其ASCII碼。總體方案設(shè)計(jì)2.1串行通信的方式設(shè)計(jì)本設(shè)計(jì)要求用單片機(jī)的IO口來模擬串口的串行通信,因此有必要先簡要介紹一下單片機(jī)的IO和通信的基本原理與串行口P3.0和P3.1。2.1.1并行I/O口MCS-51單片機(jī)共有4個雙向的8位并行I/O端口(Port),分別記作P0-P3,共有32根口線,各口的每一位均由鎖存器、輸出驅(qū)動器和輸入緩沖器所組成。實(shí)際上P0-P3已被歸入特殊功能寄存器之列。這四個口除了按字節(jié)尋址以外,還可以按位尋址。由于它們在結(jié)構(gòu)上有一些差異,故各口的性質(zhì)和功能有一些差異。P0口是雙向8位三態(tài)I/O口,此口為地址總線(低8位)及數(shù)據(jù)總線分時復(fù)用口,可驅(qū)動8個LS型TTL負(fù)載。P1口是8位準(zhǔn)雙向I/O口,可驅(qū)動4個LS 型負(fù)載。P2口是8位準(zhǔn)雙向I/O口,與地址總線(高8位)復(fù)用,可驅(qū)動4個LS型TTL負(fù)載。P3口是8位準(zhǔn)雙向I/O口,是雙功能復(fù)用口,可驅(qū)動4個LS型TTL負(fù)載。P1口、P2口、P3口各I/O口線片內(nèi)均有固定的上拉電阻,當(dāng)這3個準(zhǔn)雙向I/O口做輸入口使用時,要向該口先寫“1”,另外準(zhǔn)雙向I/O口無高阻的“浮空”狀態(tài),故稱為雙向三態(tài)I/O 口。2.1.2通信的基本原理串行通信只用一位數(shù)據(jù)線傳送數(shù)據(jù)的位信號,即使加上幾條通信聯(lián)絡(luò)控制線,也用不了很多電纜線。因此串行通信適合遠(yuǎn)距離數(shù)據(jù)傳送。,如大型主機(jī)與其遠(yuǎn)程終端之間、處于兩地的計(jì)算機(jī)之間采用串行通信就非常經(jīng)濟(jì)。當(dāng)然串行通信要求有轉(zhuǎn)換數(shù)據(jù)格式、時間控制等邏輯電路,這些電路目前已被集成在大規(guī)模集成電路(稱為可編程串行通信控制器),使用很方便。通信方式有兩種:并行通信和串行通信。通常根據(jù)傳送的的距離決定采用哪種通信方式。例如,在IBMPC機(jī)與外部設(shè)備(如打印機(jī)等)通信時,距離小于30m,則可采用并行通信方式,當(dāng)距離大于30m時,則要采用串行通信方式。89C51單片機(jī)具有并行和串行兩種基本通信方式。并行通信是指數(shù)據(jù)的各位同時進(jìn)行傳送(發(fā)送或接收)的通信方式。其優(yōu)點(diǎn)是傳送速度高;缺點(diǎn)是數(shù)據(jù)有多少位,就需要多少根傳送線。例如,89C51單片機(jī)與打印機(jī)之間的數(shù)據(jù)傳送就屬于并行通信。圖1所示為89C51單片機(jī)與外設(shè)之間8位數(shù)據(jù)并行通信的連接方法。并行通信在位數(shù)多、傳送距離又遠(yuǎn)時就不太合適了。 圖1 兩種通信方式連接串行通信指數(shù)據(jù)是一位一位按順序傳送的通信方式。它的突出優(yōu)點(diǎn)是只需一對傳輸線(利用電話線就可以作為傳輸線),這樣大大降低了傳送成本,特別適用于遠(yuǎn)距離通信;其缺點(diǎn)是傳送速度較低。假設(shè)并行傳送N位數(shù)據(jù)所需時間為T,那么串行傳送的時間至少為NT,實(shí)際上問題總是大于NT的,圖1(b)所示為串行通信方式的連接方法。串行通信的傳送方式通常有3種:單向(或)單工配置,只允許數(shù)據(jù)向一個方向傳送;半雙向(或半雙工)配置,允許數(shù)據(jù)向兩個方向中的任一方向傳送,但每次只能有一個站點(diǎn)發(fā)送;全雙向(或全工)配置,允許同時雙向傳送數(shù)據(jù),因此,全雙工配置是一對單向配置,它要求兩端的通信設(shè)備都有完整和獨(dú)立的發(fā)送和接收能力。串行通信有兩種基本的通信方式:異步通信和同步通信。l 異步通信在異步通信中,數(shù)據(jù)是一幀一幀(包括一個字符代碼或一字節(jié)數(shù)據(jù))傳送的,第一幀的數(shù)據(jù)格式如圖2所示。在幀格式中,一個字符由4部分組成:起始位、數(shù)據(jù)位、奇偶校驗(yàn)位和停止位。首先是一個起始位(0),然后是58位數(shù)據(jù) (規(guī)定低位在前,高位在后),接下來是奇偶校驗(yàn)位(可省略),最后是停止位(1)。起始位(0)信號只占一位,用來通知接收設(shè)備一個待接收的字符開始到達(dá)。線路上在不傳送字符時應(yīng)保持為1。接收端不斷檢測線路的狀態(tài),若連續(xù)為1以后又測到一個0,就知道發(fā)來一個新字符,應(yīng)馬上準(zhǔn)備接收。字符的起始位還被用作同步接收端的時鐘,以保證以后的接收能正確進(jìn)行。起始位后面緊接著是數(shù)據(jù)位,它可以 5位(D0D4)、6位、7位或8位(D0D7)。奇偶校驗(yàn)(D8)只占一位,但在字符中也可以規(guī)定不用奇偶校驗(yàn)位,則這一位就可以省去。也可用這一位(1/0)來確定這一幀中的字符所代表信息的性質(zhì)(地址/數(shù)據(jù)等)。停止位用來表征字符的結(jié)束,它一定是高電位(邏輯1)。停止位可以是1位、1.5位或2位。接收端收到停止位后,知道上一字符已傳送完畢,同時也為接收下一個字符作好準(zhǔn)備只發(fā)再接收到0,就是新字符的起始位。若停止位以后不是緊接著傳送下一個字符,則使線路電平保持為高電平(邏輯1)。圖2(a)表示一個字符緊接一個字符傳送的情況,上一個字符的停止位和下一個字符的起始位是緊鄰的;圖2(b)則是兩個字符間有空閑位的情況,空閑位為期不遠(yuǎn),線路處于等待狀態(tài)。存在空閑位正是異步通信的特征之一。例如規(guī)定用ASCII編碼,字符為7位,加1個奇偶校驗(yàn)位、1個起始位、1個停止位,則一幀共10位。l 同步通信 同步通信中,在數(shù)據(jù)開始傳送前用同步字符來指示(常約定12個),并由時鐘來實(shí)現(xiàn)發(fā)送端和接收端同步,即檢測到規(guī)定的同步字符后,下面就連續(xù)按順序傳送數(shù)據(jù),直到通信告一段落。同步傳送時,字符與字符之間沒有間隙,也不用起始位和停止位,僅在數(shù)據(jù)塊開始時用同步字符SYNC來指示。波特率 波特率,即數(shù)據(jù)傳送速率,表示每秒鐘傳送二進(jìn)制代碼的位數(shù),它的單位是b/s。波特率對于CPU與外界的通信是很重要的。假設(shè)數(shù)據(jù)傳送速率是120字符/s,而每個字符格式包含1個代碼位(1個起始位、1個終位、8個數(shù)據(jù)位)。這時,傳送的波特率為: 10b字符120字符s1200bs每一位代碼的傳送時間Td為波特率的倒數(shù)。 Td1b(1200bs-1)0.833ms異步通信的傳送速率在50b/s-19200b/s之間,常用于計(jì)算機(jī)到終端機(jī)和打印機(jī)之間的通信、直通電報以及無線電通信的數(shù)據(jù)發(fā)送等。 圖2 異步通信的一般數(shù)據(jù)格式串行通信協(xié)議: 通信協(xié)議是對數(shù)據(jù)傳送方式的規(guī)定,包括數(shù)據(jù)格式定義和數(shù)據(jù)位定義等。通信雙方必須遵守統(tǒng)一的通信協(xié)議。串行通信協(xié)議包括同步協(xié)議和異步協(xié)議兩種。在此只討論異步串行通信協(xié)議和異步串性協(xié)議規(guī)定的字符數(shù)據(jù)的傳送格式。(1)起始位通信線上沒有數(shù)據(jù)被傳送時處于邏輯1狀態(tài)。當(dāng)發(fā)送設(shè)備要發(fā)送一個字符數(shù)據(jù)時,首先發(fā)出一個邏輯0信號,這個邏輯低電平就是起始位。起始位通過通信線傳向接收設(shè)備,接收設(shè)備檢測到這個邏輯低電平后,就開始準(zhǔn)備接收數(shù)據(jù)位信號。起始位所起的作用就是設(shè)備同步,通信雙方必須在傳送數(shù)據(jù)位前協(xié)調(diào)同步。(2)數(shù)據(jù)位當(dāng)接收設(shè)備收到起始位后,緊接著就會收到數(shù)據(jù)位。數(shù)據(jù)位的個數(shù)可以是5、6、7或8。IBM-PC中經(jīng)常采用7位或8位數(shù)據(jù)傳送,89C51串行口采用8位或9位數(shù)據(jù)傳送。這些數(shù)據(jù)位被接收到移位寄存器中,構(gòu)成傳送數(shù)據(jù)字符。在字符數(shù)據(jù)傳送過程中,數(shù)據(jù)位從最低有效位開始發(fā)送,依次順序在接收設(shè)備中被轉(zhuǎn)換為并行數(shù)據(jù)。(3)奇偶校驗(yàn)位數(shù)據(jù)位發(fā)送完之后,可以發(fā)送奇偶校驗(yàn)位。奇偶校驗(yàn)用于有限差錯檢測,通信雙方需約定已知的奇偶校驗(yàn)方式。如果選擇偶校驗(yàn),那么組成數(shù)據(jù)位和奇偶位的邏輯1的個數(shù)必須是偶數(shù);如果選擇奇校驗(yàn),那么邏輯1的個數(shù)必須是奇數(shù)。(4)停止位約定 在奇偶位或數(shù)據(jù)位(當(dāng)無奇偶校驗(yàn)時)之后發(fā)送的是停止位。停止位是一個字符數(shù)據(jù)的結(jié)束標(biāo)志,可以是1位,1.5位或2位的高電平。接收設(shè)備收到停止位之后,通信線路上便又恢復(fù)邏輯1狀態(tài),直至下一個字符數(shù)據(jù)的起始位到來。(5)波特率設(shè)置 通信線上傳送的所有位信號都保持一致的信號持續(xù)時間,每一位的信號持續(xù)時間都由數(shù)據(jù)傳送速度確定,而傳送速度是以每秒多少個二進(jìn)制位來衡量的,這個速度叫波特率。如果數(shù)據(jù)以300個二進(jìn)制位每秒在通信線上傳送,那么傳送速度為300波特,通常記為300b/s。2.1.3 89C51的串行口89C51單片機(jī)除具有4個8位并行口外,還具有串行接口。此串行接口是一個全雙工串行通信接口,即能同時進(jìn)行串行發(fā)送和接收數(shù)據(jù)。它可以作UATR(通用異步接收和發(fā)送器)用,也可以作同步移位寄存器用。使用串行接口可以實(shí)現(xiàn)89C51單片機(jī)系統(tǒng)之間點(diǎn)對點(diǎn)的單機(jī)通信和89C51與系統(tǒng)機(jī)(如IBM-PC機(jī)等)的單機(jī)或多機(jī)通信。通信和89C51與系統(tǒng)機(jī)(如IBM-PC機(jī)等)的單機(jī)或多機(jī)通信。圖3 串行口內(nèi)部結(jié)構(gòu)示意圖l 結(jié) 構(gòu)89C51通過引腳RXD(P3.0,串行數(shù)據(jù)接收端)和引腳TXD(P3.1,串行數(shù)據(jù)發(fā)送端)與外界進(jìn)行通信。其內(nèi)部結(jié)構(gòu)簡化示意圖如圖3所示。圖3中有兩個物理獨(dú)立的接收、發(fā)送緩沖器SBUF,它們占用同一低值99H,可同時發(fā)送、接收數(shù)據(jù)。發(fā)送緩沖器只能寫入,不能讀出;接收緩沖器只能讀出,不能寫入。串行發(fā)送與接收的速率與移位時鐘同步。89C51用定時器T1作為串行通信的波特率發(fā)生器,T1溢出率經(jīng)2分頻(或不分頻)后又經(jīng)16分頻作為串行發(fā)送或接收的移位脈沖。移位脈沖的速率即是波特率。從圖中可看出,接收器是雙緩沖結(jié)構(gòu),在前一個字節(jié)被從接收緩沖器SBUF讀出之前,第二個字節(jié)即開始被接收(串行輸入至移位寄存器),但是,在第二個字節(jié)接收完畢而前一個字節(jié)CPU未讀取時,會丟失前一個字節(jié)。串行口的發(fā)送和接收都是以特殊功能寄存器SBUF的名義進(jìn)行讀或?qū)懙?。?dāng)向SBUF發(fā)“寫”命令時(執(zhí)行“MOV SBUF,A”指令),即是向發(fā)送緩沖器SBUF裝載并開始由TXD引腳向外發(fā)送一幀數(shù)據(jù),發(fā)送完便使發(fā)送中斷標(biāo)志位TI=1。在滿足串行口接收中斷標(biāo)志位RI(SCON.0)=0的條件下,置允許接收位REN(SCON.4)=1就會接收一幀數(shù)據(jù)進(jìn)入移位寄存器,并裝載到接收SBUF中,同時使RI=1。當(dāng)發(fā)讀SBUF命令時(執(zhí)行“MOV A,SBUF”命令),便由接收緩沖器(SBUF)取出信息通過89C51內(nèi)部總線送CPU。 對于發(fā)送緩沖器,因?yàn)榘l(fā)送時CPU是主動的,不會產(chǎn)生重疊錯誤,一般不需要用雙緩沖器結(jié)構(gòu)來保持最大傳送速率。l 串行口控制字及控制寄存器89C51串行口是可編程接口,對它初始化編程只用兩個控制字分別寫入特殊功能寄存器SCON(98H)和電源控制寄存器PCON(87H)中即可。2.1.4 用IO口模擬串口通信 IO口沒有89C51的串口結(jié)構(gòu),因此IO不能自動發(fā)送數(shù)據(jù)和接收數(shù)據(jù),也沒有發(fā)送中斷標(biāo)志和接收中斷標(biāo)志。而89C51串口還有T1計(jì)時器的參與,用來產(chǎn)生波特率。因此,需要在程序中模擬串口的通信方式以及定義數(shù)據(jù)的格式。模擬串口的通信方式采用方式1,即為10位為一幀數(shù)據(jù)接口,1個起始位、8位數(shù)據(jù)位(低位在前)和1位停止位,共10位。并且每位持續(xù)的時間為100us。先發(fā)送或接收起始位0,接著準(zhǔn)備發(fā)送或接收8位數(shù)據(jù)位,最后發(fā)送或接收停止位1。本設(shè)計(jì)中采用P3.4來模擬TX串口發(fā)送端口,用P3.5來模擬RX串口接收端口。因此發(fā)送的10位數(shù)據(jù)由P3.4送出,接收的10位數(shù)據(jù)由P3.5輸入,并等待CPU進(jìn)行處理。2.2 數(shù)碼管顯示設(shè)計(jì)本設(shè)計(jì)主要在于顯示,顯示由鍵盤輸入的字符的ASCII碼,如果是數(shù)字,則由一位LED數(shù)據(jù)管顯示,并由LED燈顯示。若為其他的字符,僅由LED燈顯示。從鍵盤輸入字符通過軟件模擬或者通過PC機(jī)中附件中終端設(shè)備來顯示。輸入與顯示可以由C函數(shù)庫存中的函數(shù)printf和scanf來實(shí)現(xiàn)。單片機(jī)中通常使用7段LED構(gòu)成字型“8”,另外,還有一個小數(shù)點(diǎn)發(fā)光二極管,以顯示數(shù)字、符號及小數(shù)點(diǎn)。這種顯示器有共陰極和共陽極兩種。發(fā)光二極管的陽極連在一起的(公共端K0)稱為共陽極顯示器,陰極連在一起的(公共端K0)稱為共陰極顯示器。一位顯示器由8個發(fā)光二極管組成,其中,7個發(fā)光二極管構(gòu)成字型“8”的各個筆劃a-g,另一個小數(shù)點(diǎn)為dp發(fā)光二極管。當(dāng)在某段發(fā)光二極管上施加一定的正向電壓時,該段筆劃即亮;不加電壓則暗。為了保護(hù)各段LED不被損壞,須外加限流電阻。以共陰極LED為例,各LED公共陰極K0接地。若向個控制端a、b、g、dp順次送入11100001信號,則該顯示器顯示“7.”字型共陰極與共陽極7段LED顯示數(shù)字0-9的編碼(a段為最低位,dp點(diǎn)為最高位)。如表1所示。表1 共陰極和共陽極7段LED顯示字型編碼表顯示字符0123456789共陰極段選碼3F(B)06(36)5B(DB)4F(CF)66(F6)6D(FD)7D(FD)07(87)7F(FF)6F(EF)共陽極段選碼C0(40)F9(79)A4(24)B0(30)99(19)92(12)82(02)F8(78)80(00)90(10)LED顯示器有靜態(tài)顯示和動態(tài)顯示兩種方式。為了節(jié)省單片機(jī)的外部資源,采用動態(tài)顯示技術(shù)。但是,本設(shè)計(jì)只需要采用一位數(shù)碼管顯示ASCII碼,因此無須采用動態(tài)顯示,因?yàn)镻口有鎖存器的功能,只要將待輸出的七段碼輸出到接數(shù)碼管的P口即可無須重復(fù)掃描。數(shù)碼管的顯示會維持到下一個七段碼輸出改變?yōu)橹埂?.3 LED燈顯示設(shè)計(jì)LED,即發(fā)光二極管,當(dāng)它的兩端正向?qū)〞r,電阻很小,有電流通過,當(dāng)加反向電壓時,電阻可以看成無窮大,無電流通過。因此它有普通二極管的功能,另外,它的另一個重要用途是將電信號變?yōu)楣庑盘?,通過光纜傳輸,然后再用光電二極管接收驅(qū)動一光電二極管。因此,發(fā)光二極管有電平指示作用。在本設(shè)計(jì)中,將LED燈的負(fù)極接到P口,也是為了防止一上電就導(dǎo)通。若將正極接到P口,一上電復(fù)位,P口輸出即為高電平,LED導(dǎo)通,沒有對信號的指示作用。因此,必須將負(fù)極接到P口,然后正極通過一個限流電阻接到5V電源。當(dāng)P口輸出高電平時(包括復(fù)位的高電平),LED燈滅,當(dāng)P口輸出低電平時,LED燈亮,指示輸出為低電平。單元電路設(shè)計(jì)3.1硬件設(shè)計(jì) 本設(shè)計(jì)的總體硬件電路原理圖如下:圖4 設(shè)計(jì)的總體電路原理圖3.1.1復(fù)位電路設(shè)計(jì)MCS-51單片機(jī)的復(fù)位是由外部的復(fù)位電路來實(shí)現(xiàn)的。復(fù)位引腳RST通過一個斯密特觸發(fā)器與復(fù)位電路相連,斯密特觸發(fā)器用來抑制噪聲,在每個機(jī)器周期的S5P2,斯密特觸發(fā)器的輸出電平由復(fù)位電路采樣一次,然后才能得到內(nèi)部復(fù)位操作所需要的信號。上電復(fù)位:上電復(fù)位電路是種簡單的復(fù)位電路,只要在RST復(fù)位引腳接一個電容到VCC,接一個電阻到地就可以了。上電復(fù)位是指在給系統(tǒng)上電時,復(fù)位電路通過電容加到RST復(fù)位引腳一個短暫的高電平信號,這個復(fù)位信號隨著VCC對電容的充電過程而回落,所以RST引腳復(fù)位的高電平維持時間取決于電容的充電時間。為了保證系統(tǒng)安全可靠的復(fù)位,RST引腳的高電平信號必須維持足夠長的時間。電路圖如圖5所示。圖5 復(fù)位電路3.1.2時鐘電路時鐘是單片機(jī)的心臟,單片機(jī)各功能部件的運(yùn)行都是以時鐘頻率為基準(zhǔn),有條不紊的一拍一拍地工作。因此,時鐘頻率直接影響單片機(jī)的速度,時鐘電路的質(zhì)量也直接影響單片機(jī)系統(tǒng)的穩(wěn)定性。常用的時鐘電路有兩種方式:一種是內(nèi)部時鐘方式,另一種為外部時鐘方式。本文用的是內(nèi)部時鐘方式。電路圖如圖6所示。 圖6 時鐘電路MCS-51單片機(jī)內(nèi)部有一個用于構(gòu)成振蕩器的高增益反相放大器,該高增益反向放大器的輸入端為芯片引腳XTAL1,輸出端為引腳XTAL2。這兩個引腳跨接石英晶體振蕩器和微調(diào)電容,就構(gòu)成一個穩(wěn)定的自激振蕩器。3.1.3 顯示電路設(shè)計(jì)本設(shè)計(jì)的顯示電路包括兩部分,即數(shù)碼管顯示部分和LED燈顯示部分。 數(shù)碼管顯示電路如圖7所示。圖7 數(shù)碼管顯示電路采用P0口作為段碼輸出端口,由于只有一位數(shù)碼管顯示,位選端可以直接接地,一直處于選通狀態(tài)。另外,P0有特殊的物理結(jié)構(gòu),即漏極開路電路,所以得在輸出端接上拉電阻,通過上拉電阻接到5V電源,上拉電阻一般采用1K大小。數(shù)碼管顯示子程序比較簡單,只要通過查表找到對應(yīng)的七段碼,輸出到數(shù)碼管,就可以顯示出想要的符號或數(shù)字。如輸入的數(shù)字為9,經(jīng)過查找共陰極的七段碼表找到Dis_Table9,即0x6f,將0x6f,即01101111B對應(yīng)的dpgfedcba輸出到P0口,即gfdcba六段為高電平,顯示為亮,即顯示數(shù)字9。LED燈顯示電路如圖8所示。圖8 LED燈顯示電路LED燈顯示由P1口來完成,由于是低電平輸出有效,即燈滅才表示輸出的是高電平,因此不符合習(xí)慣,需要對將要輸出的段碼進(jìn)行取反運(yùn)算。比如從鍵盤輸入數(shù)字7,ASCII碼為37,即00110111B,取反后,為11001000B,將此碼輸出到P1口,則P1.0、P1.1、P1.2和P1.4、P1.5亮,亮的位表示1,即顯示的是37。3.1.4電平轉(zhuǎn)換電路利用89C51單片機(jī)的串行口與PC機(jī)的串行口COM1或COM2進(jìn)行串行通信,將單片機(jī)采集的數(shù)據(jù)傳送到PC機(jī)中,由PC機(jī)的高級語言或數(shù)據(jù)庫語言對數(shù)據(jù)進(jìn)行整理及統(tǒng)計(jì)等復(fù)雜處理;或者實(shí)現(xiàn)PC機(jī)對遠(yuǎn)程前沿單片機(jī)進(jìn)行控制。在實(shí)現(xiàn)計(jì)算機(jī)與計(jì)算機(jī)、計(jì)算機(jī)與外設(shè)間的串行通信時,通常采用標(biāo)準(zhǔn)通信接口、這樣就能很方便地把各種計(jì)算機(jī)、外部設(shè)備、測量儀器等有機(jī)地連接起來,進(jìn)行串行通信。ELA RS-232C是目前最常用的串行接口標(biāo)準(zhǔn),用于實(shí)現(xiàn)計(jì)算機(jī)與計(jì)算機(jī)之間、計(jì)算機(jī)與外設(shè)之間的數(shù)據(jù)通信。該標(biāo)準(zhǔn)的目的是定義數(shù)據(jù)終端設(shè)備(DTE)之間接口的電氣特性。一般的串行通信系統(tǒng)是指微機(jī)和調(diào)制解調(diào)器(modem),如圖7-20。調(diào)制解調(diào)器叫數(shù)據(jù)電路終端設(shè)備(簡稱DCE)。 RS-232C提供了單片機(jī)與單片機(jī)、單片機(jī)與PC機(jī)間串行數(shù)據(jù)通信的標(biāo)準(zhǔn)接口。通信距離可達(dá)到 15 m。為了保證二進(jìn)制數(shù)據(jù)能夠正確傳送,設(shè)備控制準(zhǔn)確完成,有必要使所用的信號電平保持一致。為滿足此要求,RS-232C標(biāo)準(zhǔn)規(guī)定了數(shù)據(jù)和控制信號的電壓范圍。由于RS-232C是在TTL集成電路之前研制的,所以它的電平不是+5V和地,而是采用負(fù)邏輯,規(guī)定+3V15V之間的任意電壓表示邏輯0電平,-3V15V之間的任意電壓表示邏輯1電平。本設(shè)計(jì)中采用MAX232芯片,電路如圖9所示。圖9 電路轉(zhuǎn)換電路圖此電路圖中,從MAX232芯片中兩路發(fā)送接收中任選擇一路作為接口。應(yīng)注意其發(fā)送、接收的引腳要對應(yīng)。如果使T1 IN接單片機(jī)的發(fā)送端TXD,也就是T0,則PC機(jī)的RS232的接收端RXD一定要對應(yīng)接T1 OUT引腳。同時,R1 OUT接單片機(jī)的RXD引腳,PC機(jī)的RS232的發(fā)送端TXD對應(yīng)妝R1 IN引腳。 3.2 軟件設(shè)計(jì) 3.2.1 程序設(shè)計(jì)流程圖.發(fā)送字符串1和2初始化四個P口由PC機(jī)顯示字符串1和字符串2,并準(zhǔn)備接收數(shù)據(jù)接收PC機(jī)鍵盤輸入的數(shù)據(jù)在P1口用LED顯示接收到的字符的ASCII碼用數(shù)碼管顯示數(shù)字字符接收到的字符為數(shù)字?發(fā)送字符到PC機(jī),并由PC機(jī)顯示發(fā)送換行字符接收到回車鍵開始圖10 程序設(shè)計(jì)流程圖 本設(shè)計(jì)的主要程序部分是發(fā)送和接收數(shù)據(jù),即發(fā)送和接收10位數(shù)據(jù)。在數(shù)據(jù)發(fā)送和接收時,關(guān)鍵在于延時,延時的長短決定了波特率,即數(shù)據(jù)傳送的速率。識別此數(shù)據(jù)傳送完和是否開始傳送的標(biāo)志是起始位和停止位。因此在發(fā)送數(shù)據(jù)前要發(fā)送起始位0,然后再發(fā)送8位數(shù)據(jù),最后發(fā)送1位停止位。接收時,是否是新的數(shù)據(jù),即是否決定接收數(shù)據(jù),得判定是否為起始位0,接收完后,再判定接收的是否為停止位1。 3.2.2 單片機(jī)IO口模擬串口實(shí)現(xiàn)數(shù)據(jù)通信的源程序單片機(jī)IO口模擬串口實(shí)現(xiàn)數(shù)據(jù)通信的源程序如下:#include <reg52.h>#include <string.h>#include <intrins.h>typedef unsigned char uchar;typedef unsigned int uint;#define DISPLAY P0 #define LED P1 sbit TX = P34;sbit RX = P35;uchar code Dis_Table =0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07, 0x7F,0x6F,0x77,0x7C,0x39,0x5e,0x79,0x71; /0xed,0x88,0xb5,0xb9,0xd8,0x79,0x7d,0xa8,0xfd,0xf9;uchar Buf=0;uchar temp;bit Flag=0;void DelayMs(uint t) uchar i; while(t-) for(i = 0; i < 112; i+); void Uart_Delay() uchar t = 7;while(t-)_nop_(); void Intial() P1 = 0xFF; P2 = 0xFF; P0 = 0x00; P3 = 0xFF;void IOsend_char( unsigned char ch ) unsigned char h, da , temp; da = ch; TX = 0; Uart_Delay(); for( h = 0; h < 8; h+ ) temp = da & 0x01; TX = temp; da = _cror_( da,1 ); Uart_Delay(); TX = 1; Uart_Delay(); void IOsend_string( unsigned char *str ) unsigned char k, l; l = strlen( str ); for( k = 0; k <= l; k+ ) IOsend_char( *( str+k ) );void IOrec_char(void)unsigned char h, da = 0; while( RX ) ; Uart_Delay(); Uart_Delay(); for( h = 0; h < 7; h+ ) if( RX ) da |= 0x80; else da |= 0x00; da = _cror_( da,1 ); Uart_Delay(); _nop_();_nop_();_nop_();_nop_(); Uart_Delay(); Buf=da;main() uchar tab1= "WLECOME!rn" uchar tab2= "Da Cong,Please Press Keyboard!rn" uchar n; Intial(); IOsend_string(tab1); IOsend_string(tab2); while(1) IOrec_char(); P0 = 0x00; P1 = Buf; P2=0x02; if(Buf >= 0x30 && Buf <= 0x39)n = Buf & 0x0F;DISPLAY = Dis_Tablen;IOsend_char(Buf);DelayMs(1);DelayMs(1);if(Buf = 0x0D) IOsend_char(0x0A);DelayMs(1);DelayMs(1); 4系統(tǒng)仿真1.本設(shè)計(jì)protues電路仿真圖如圖11:圖11 程序設(shè)計(jì)流程圖 2.下圖為輸入數(shù)字6時的顯示情況。從圖可以看出,數(shù)碼管顯示6,LED燈為00110110B,即54H,也就是數(shù)字6的ASCII。圖12 輸入數(shù)字6時的仿真圖3.下圖為輸入大寫字母E時的顯示情況。從圖中我們可以看出,數(shù)碼管不顯示,LED燈為01000101B,即69H,也就是大寫字母E的ASCII。 圖13 輸入大寫字母E時的仿真圖4.下圖為輸入小寫字母a時的顯示情況。從圖中我們可以看出,數(shù)碼管不顯示,LED燈為01100001B,即97H,也就是小寫字母a的ASCII。圖14 輸入小寫字母a時的仿真圖5收獲與體會在學(xué)完單片機(jī)剛好一個學(xué)期以后,進(jìn)行了這次課程設(shè)計(jì),也是我第一次利用單片機(jī)進(jìn)行系統(tǒng)地設(shè)計(jì)。基于單片機(jī)IO口模擬串口實(shí)現(xiàn)數(shù)據(jù)通信是比較普遍的一個課題,在參考了多個設(shè)計(jì)以后,我獨(dú)立地完成了此設(shè)計(jì),感覺收獲頗豐。單片機(jī)是電子信息工程專業(yè)的一門非常重要的課程,它涉及到了現(xiàn)代工業(yè)的各個領(lǐng)域。此設(shè)計(jì)基本上運(yùn)用到了單片機(jī)的主要資源,如P口的輸出,數(shù)碼管的靜態(tài)顯示技術(shù)。此外,雖然在很久以前就已經(jīng)學(xué)完了C語言,但是學(xué)習(xí)單片機(jī)的過程中,用的是匯編語言,本次設(shè)計(jì)利用的是C語言,在對C語言比較生疏的情況下進(jìn)行此次課程設(shè)計(jì)有助于復(fù)習(xí)C語言的基本知識。在做本設(shè)計(jì)的過程中,自己的編程能力得到了很大地提高,也把設(shè)計(jì)與工程實(shí)踐聯(lián)系起來了。在設(shè)計(jì)完后,需要仿真系統(tǒng),利用 KeilC編寫并調(diào)試程序,然后利用proteus華電路圖并進(jìn)行仿真。在此設(shè)計(jì)前,這兩個軟件只是掌握了一些基本操作,完全是了解的水平,keilc自己學(xué)習(xí)和向同學(xué)請教,proteus更是也很陌生。完成此設(shè)計(jì)后,基本上掌握了運(yùn)用這兩個軟件開發(fā)作品。6參考文獻(xiàn)1李朝青. 單片機(jī)原理及接口技術(shù)(第三版)M.北京:北京航空航天大學(xué)出版社,2010年2靳達(dá).單片機(jī)應(yīng)用系統(tǒng)開發(fā)實(shí)例導(dǎo)航M.北京:人民郵電出版社,2010年3譚浩強(qiáng).C語言程序設(shè)計(jì)(第三版)M.北京:清華大學(xué)出版社,2005年4唐穎.單片機(jī)原理與應(yīng)用及C51程序設(shè)計(jì) M.北京:清華大學(xué)出版社,2011年

注意事項(xiàng)

本文(單片機(jī)IO口模擬串行實(shí)現(xiàn)數(shù)據(jù)通信.doc)為本站會員(w****2)主動上傳,裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng)(點(diǎn)擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因?yàn)榫W(wǎng)速或其他原因下載失敗請重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!