單片機(jī)IO口模擬串行實(shí)現(xiàn)數(shù)據(jù)通信.doc
《單片機(jī)IO口模擬串行實(shí)現(xiàn)數(shù)據(jù)通信.doc》由會(huì)員分享,可在線閱讀,更多相關(guān)《單片機(jī)IO口模擬串行實(shí)現(xiàn)數(shù)據(jù)通信.doc(24頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
目錄 1設(shè)計(jì)任務(wù)與要求...............................................1 2總體方案設(shè)計(jì).................................................1 2.1串行通信的方式設(shè)計(jì).......................................1 2.1.1并行I/O口............................................1 2.1.2通信的基本原理.......................................2 2.1.3 89C51的串行口.......................................5 2.1.4 用IO口模擬串口通信..................................7 2.2 數(shù)碼管顯示設(shè)計(jì)...........................................7 2.3 LED燈顯示設(shè)計(jì)...........................................8 3單元電路設(shè)計(jì)................................................8 3.1硬件設(shè)計(jì)...............................................8 3.1.1復(fù)位電路設(shè)計(jì).......................................10 3.1.2時(shí)鐘電路...........................................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ù)通信的源程序............15 4系統(tǒng)仿真....................................................18 5收獲與體會(huì)..................................................20 6參考文獻(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 通過(guò)PC機(jī)的鍵盤(pán)輸入字符,并傳送給單片機(jī),由單片機(jī)接收后,發(fā)達(dá)給PC機(jī),由PC機(jī)加以顯示。 l 單片機(jī)接收由鍵盤(pán)輸入的數(shù)據(jù)后,如果是數(shù)字,則由數(shù)碼管顯示,并由LED燈表示其ASCII碼,如果是其他字符,則由僅由LED燈顯示其ASCII碼。 2總體方案設(shè)計(jì) 2.1串行通信的方式設(shè)計(jì) 本設(shè)計(jì)要求用單片機(jī)的IO口來(lái)模擬串口的串行通信,因此有必要先簡(jiǎn)要介紹一下單片機(jī)的IO和通信的基本原理與串行口P3.0和P3.1。 2.1.1并行I/O口 MCS-51單片機(jī)共有4個(gè)雙向的8位并行I/O端口(Port),分別記作P0-P3,共有32根口線,各口的每一位均由鎖存器、輸出驅(qū)動(dòng)器和輸入緩沖器所組成。實(shí)際上P0-P3已被歸入特殊功能寄存器之列。這四個(gè)口除了按字節(jié)尋址以外,還可以按位尋址。由于它們?cè)诮Y(jié)構(gòu)上有一些差異,故各口的性質(zhì)和功能有一些差異。 P0口是雙向8位三態(tài)I/O口,此口為地址總線(低8位)及數(shù)據(jù)總線分時(shí)復(fù)用口,可驅(qū)動(dòng)8個(gè)LS型TTL負(fù)載。P1口是8位準(zhǔn)雙向I/O口,可驅(qū)動(dòng)4個(gè)LS 型負(fù)載。P2口是8位準(zhǔn)雙向I/O口,與地址總線(高8位)復(fù)用,可驅(qū)動(dòng)4個(gè)LS型TTL負(fù)載。P3口是8位準(zhǔn)雙向I/O口,是雙功能復(fù)用口,可驅(qū)動(dòng)4個(gè)LS型TTL負(fù)載。P1口、P2口、P3口各I/O口線片內(nèi)均有固定的上拉電阻,當(dāng)這3個(gè)準(zhǔn)雙向I/O口做輸入口使用時(shí),要向該口先寫(xiě)“1”,另外準(zhǔn)雙向I/O口無(wú)高阻的“浮空”狀態(tài),故稱(chēng)為雙向三態(tài)I/O 口。 2.1.2通信的基本原理 串行通信只用一位數(shù)據(jù)線傳送數(shù)據(jù)的位信號(hào),即使加上幾條通信聯(lián)絡(luò)控制線,也用不了很多電纜線。因此串行通信適合遠(yuǎn)距離數(shù)據(jù)傳送。,如大型主機(jī)與其遠(yuǎn)程終端之間、處于兩地的計(jì)算機(jī)之間采用串行通信就非常經(jīng)濟(jì)。當(dāng)然串行通信要求有轉(zhuǎn)換數(shù)據(jù)格式、時(shí)間控制等邏輯電路,這些電路目前已被集成在大規(guī)模集成電路(稱(chēng)為可編程串行通信控制器),使用很方便。 通信方式有兩種:并行通信和串行通信。通常根據(jù)傳送的的距離決定采用哪種通信方式。例如,在IBM—PC機(jī)與外部設(shè)備(如打印機(jī)等)通信時(shí),距離小于30m,則可采用并行通信方式,當(dāng)距離大于30m時(shí),則要采用串行通信方式。89C51單片機(jī)具有并行和串行兩種基本通信方式。 并行通信是指數(shù)據(jù)的各位同時(shí)進(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)時(shí)就不太合適了。 圖1 兩種通信方式連接 串行通信指數(shù)據(jù)是一位一位按順序傳送的通信方式。它的突出優(yōu)點(diǎn)是只需一對(duì)傳輸線(利用電話線就可以作為傳輸線),這樣大大降低了傳送成本,特別適用于遠(yuǎn)距離通信;其缺點(diǎn)是傳送速度較低。假設(shè)并行傳送N位數(shù)據(jù)所需時(shí)間為T(mén),那么串行傳送的時(shí)間至少為NT,實(shí)際上問(wèn)題總是大于NT的,圖1(b)所示為串行通信方式的連接方法。 串行通信的傳送方式通常有3種:?jiǎn)蜗颍ɑ颍﹩喂づ渲?,只允許數(shù)據(jù)向一個(gè)方向傳送;半雙向(或半雙工)配置,允許數(shù)據(jù)向兩個(gè)方向中的任一方向傳送,但每次只能有一個(gè)站點(diǎn)發(fā)送;全雙向(或全工)配置,允許同時(shí)雙向傳送數(shù)據(jù),因此,全雙工配置是一對(duì)單向配置,它要求兩端的通信設(shè)備都有完整和獨(dú)立的發(fā)送和接收能力。 串行通信有兩種基本的通信方式:異步通信和同步通信。 l 異步通信 在異步通信中,數(shù)據(jù)是一幀一幀(包括一個(gè)字符代碼或一字節(jié)數(shù)據(jù))傳送的,第一幀的數(shù)據(jù)格式如圖2所示。 在幀格式中,一個(gè)字符由4部分組成:起始位、數(shù)據(jù)位、奇偶校驗(yàn)位和停止位。首先是一個(gè)起始位(0),然后是5—8位數(shù)據(jù) (規(guī)定低位在前,高位在后),接下來(lái)是奇偶校驗(yàn)位(可省略),最后是停止位(1)。起始位(0)信號(hào)只占一位,用來(lái)通知接收設(shè)備一個(gè)待接收的字符開(kāi)始到達(dá)。線路上在不傳送字符時(shí)應(yīng)保持為1。接收端不斷檢測(cè)線路的狀態(tài),若連續(xù)為1以后又測(cè)到一個(gè)0,就知道發(fā)來(lái)一個(gè)新字符,應(yīng)馬上準(zhǔn)備接收。字符的起始位還被用作同步接收端的時(shí)鐘,以保證以后的接收能正確進(jìn)行。 起始位后面緊接著是數(shù)據(jù)位,它可以 5位(D0—D4)、6位、7位或8位(D0—D7)。 奇偶校驗(yàn)(D8)只占一位,但在字符中也可以規(guī)定不用奇偶校驗(yàn)位,則這一位就可以省去。也可用這一位(1/0)來(lái)確定這一幀中的字符所代表信息的性質(zhì)(地址/數(shù)據(jù)等)。 停止位用來(lái)表征字符的結(jié)束,它一定是高電位(邏輯1)。停止位可以是1位、1.5位或2位。接收端收到停止位后,知道上一字符已傳送完畢,同時(shí)也為接收下一個(gè)字符作好準(zhǔn)備—只發(fā)再接收到0,就是新字符的起始位。若停止位以后不是緊接著傳送下一個(gè)字符,,則使線路電平保持為高電平(邏輯1)。圖2(a)表示一個(gè)字符緊接一個(gè)字符傳送的情況,上一個(gè)字符的停止位和下一個(gè)字符的起始位是緊鄰的;圖2(b)則是兩個(gè)字符間有空閑位的情況,空閑位為期不遠(yuǎn),線路處于等待狀態(tài)。存在空閑位正是異步通信的特征之一。 例如規(guī)定用ASCII編碼,字符為7位,加1個(gè)奇偶校驗(yàn)位、1個(gè)起始位、1個(gè)停止位,則一幀共10位。 l 同步通信 同步通信中,在數(shù)據(jù)開(kāi)始傳送前用同步字符來(lái)指示(常約定1—2個(gè)),并由時(shí)鐘來(lái)實(shí)現(xiàn)發(fā)送端和接收端同步,即檢測(cè)到規(guī)定的同步字符后,下面就連續(xù)按順序傳送數(shù)據(jù),直到通信告一段落。同步傳送時(shí),字符與字符之間沒(méi)有間隙,也不用起始位和停止位,僅在數(shù)據(jù)塊開(kāi)始時(shí)用同步字符SYNC來(lái)指示。 波特率 波特率,即數(shù)據(jù)傳送速率,表示每秒鐘傳送二進(jìn)制代碼的位數(shù),它的單位是b/s。波特率對(duì)于CPU與外界的通信是很重要的。假設(shè)數(shù)據(jù)傳送速率是120字符/s,而每個(gè)字符格式包含1個(gè)代碼位(1個(gè)起始位、1個(gè)終位、8個(gè)數(shù)據(jù)位)。這時(shí),傳送的波特率為: 10b/字符120字符/s=1200b/s 每一位代碼的傳送時(shí)間Td為波特率的倒數(shù)。 Td=1b/(1200bs-1)=0.833ms 異步通信的傳送速率在50b/s--19200b/s之間,常用于計(jì)算機(jī)到終端機(jī)和打印機(jī)之間的通信、直通電報(bào)以及無(wú)線電通信的數(shù)據(jù)發(fā)送等。 圖2 異步通信的一般數(shù)據(jù)格式 串行通信協(xié)議: 通信協(xié)議是對(duì)數(shù)據(jù)傳送方式的規(guī)定,包括數(shù)據(jù)格式定義和數(shù)據(jù)位定義等。 通信雙方必須遵守統(tǒng)一的通信協(xié)議。串行通信協(xié)議包括同步協(xié)議和異步協(xié)議兩種。 在此只討論異步串行通信協(xié)議和異步串性協(xié)議規(guī)定的字符數(shù)據(jù)的傳送格式。 (1)起始位 通信線上沒(méi)有數(shù)據(jù)被傳送時(shí)處于邏輯1狀態(tài)。當(dāng)發(fā)送設(shè)備要發(fā)送一個(gè)字符數(shù)據(jù)時(shí),首先發(fā)出一個(gè)邏輯0信號(hào),這個(gè)邏輯低電平就是起始位。起始位通過(guò)通信線傳向接收設(shè)備,接收設(shè)備檢測(cè)到這個(gè)邏輯低電平后,就開(kāi)始準(zhǔn)備接收數(shù)據(jù)位信號(hào)。起始位所起的作用就是設(shè)備同步,通信雙方必須在傳送數(shù)據(jù)位前協(xié)調(diào)同步。 (2)數(shù)據(jù)位 當(dāng)接收設(shè)備收到起始位后,緊接著就會(huì)收到數(shù)據(jù)位。數(shù)據(jù)位的個(gè)數(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ù)傳送過(guò)程中,數(shù)據(jù)位從最低有效位開(kāi)始發(fā)送,依次順序在接收設(shè)備中被轉(zhuǎn)換為并行數(shù)據(jù)。 (3)奇偶校驗(yàn)位 數(shù)據(jù)位發(fā)送完之后,可以發(fā)送奇偶校驗(yàn)位。奇偶校驗(yàn)用于有限差錯(cuò)檢測(cè),通信雙方需約定已知的奇偶校驗(yàn)方式。如果選擇偶校驗(yàn),那么組成數(shù)據(jù)位和奇偶位的邏輯1的個(gè)數(shù)必須是偶數(shù);如果選擇奇校驗(yàn),那么邏輯1的個(gè)數(shù)必須是奇數(shù)。 (4)停止位約定 在奇偶位或數(shù)據(jù)位(當(dāng)無(wú)奇偶校驗(yàn)時(shí))之后發(fā)送的是停止位。停止位是一個(gè)字符數(shù)據(jù)的結(jié)束標(biāo)志,可以是1位,1.5位或2位的高電平。接收設(shè)備收到停止位之后,通信線路上便又恢復(fù)邏輯1狀態(tài),直至下一個(gè)字符數(shù)據(jù)的起始位到來(lái)。 (5)波特率設(shè)置 通信線上傳送的所有位信號(hào)都保持一致的信號(hào)持續(xù)時(shí)間,每一位的信號(hào)持續(xù)時(shí)間都由數(shù)據(jù)傳送速度確定,而傳送速度是以每秒多少個(gè)二進(jìn)制位來(lái)衡量的,這個(gè)速度叫波特率。如果數(shù)據(jù)以300個(gè)二進(jìn)制位每秒在通信線上傳送,那么傳送速度為300波特,通常記為300b/s。 2.1.3 89C51的串行口 89C51單片機(jī)除具有4個(gè)8位并行口外,還具有串行接口。此串行接口是一個(gè)全雙工串行通信接口,即能同時(shí)進(jìn)行串行發(fā)送和接收數(shù)據(jù)。它可以作UATR(通用異步接收和發(fā)送器)用,也可以作同步移位寄存器用。使用串行接口可以實(shí)現(xiàn)89C51單片機(jī)系統(tǒng)之間點(diǎn)對(duì)點(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通過(guò)引腳RXD(P3.0,串行數(shù)據(jù)接收端)和引腳TXD(P3.1,串行數(shù)據(jù)發(fā)送端)與外界進(jìn)行通信。其內(nèi)部結(jié)構(gòu)簡(jiǎn)化示意圖如圖3所示。 圖3中有兩個(gè)物理獨(dú)立的接收、發(fā)送緩沖器SBUF,它們占用同一低值99H,可同時(shí)發(fā)送、接收數(shù)據(jù)。發(fā)送緩沖器只能寫(xiě)入,不能讀出;接收緩沖器只能讀出,不能寫(xiě)入。 串行發(fā)送與接收的速率與移位時(shí)鐘同步。89C51用定時(shí)器T1作為串行通信的波特率發(fā)生器,T1溢出率經(jīng)2分頻(或不分頻)后又經(jīng)16分頻作為串行發(fā)送或接收的移位脈沖。移位脈沖的速率即是波特率。 從圖中可看出,接收器是雙緩沖結(jié)構(gòu),在前一個(gè)字節(jié)被從接收緩沖器SBUF讀出之前,第二個(gè)字節(jié)即開(kāi)始被接收(串行輸入至移位寄存器),但是,在第二個(gè)字節(jié)接收完畢而前一個(gè)字節(jié)CPU未讀取時(shí),會(huì)丟失前一個(gè)字節(jié)。 串行口的發(fā)送和接收都是以特殊功能寄存器SBUF的名義進(jìn)行讀或?qū)懙?。?dāng)向SBUF發(fā)“寫(xiě)”命令時(shí)(執(zhí)行“MOV SBUF,A”指令),即是向發(fā)送緩沖器SBUF裝載并開(kāi)始由TXD引腳向外發(fā)送一幀數(shù)據(jù),發(fā)送完便使發(fā)送中斷標(biāo)志位TI=1。 在滿(mǎn)足串行口接收中斷標(biāo)志位RI(SCON.0)=0的條件下,置允許接收位REN(SCON.4)=1就會(huì)接收一幀數(shù)據(jù)進(jìn)入移位寄存器,并裝載到接收SBUF中,同時(shí)使RI=1。當(dāng)發(fā)讀SBUF命令時(shí)(執(zhí)行“MOV A,SBUF”命令),便由接收緩沖器(SBUF)取出信息通過(guò)89C51內(nèi)部總線送CPU。 對(duì)于發(fā)送緩沖器,因?yàn)榘l(fā)送時(shí)CPU是主動(dòng)的,不會(huì)產(chǎn)生重疊錯(cuò)誤,一般不需要用雙緩沖器結(jié)構(gòu)來(lái)保持最大傳送速率。 l 串行口控制字及控制寄存器 89C51串行口是可編程接口,對(duì)它初始化編程只用兩個(gè)控制字分別寫(xiě)入特殊功能寄存器SCON(98H)和電源控制寄存器PCON(87H)中即可。 2.1.4 用IO口模擬串口通信 IO口沒(méi)有89C51的串口結(jié)構(gòu),因此IO不能自動(dòng)發(fā)送數(shù)據(jù)和接收數(shù)據(jù),也沒(méi)有發(fā)送中斷標(biāo)志和接收中斷標(biāo)志。而89C51串口還有T1計(jì)時(shí)器的參與,用來(lái)產(chǎn)生波特率。因此,需要在程序中模擬串口的通信方式以及定義數(shù)據(jù)的格式。 模擬串口的通信方式采用方式1,即為10位為一幀數(shù)據(jù)接口,1個(gè)起始位、8位數(shù)據(jù)位(低位在前)和1位停止位,共10位。并且每位持續(xù)的時(shí)間為100us。先發(fā)送或接收起始位0,接著準(zhǔn)備發(fā)送或接收8位數(shù)據(jù)位,最后發(fā)送或接收停止位1。 本設(shè)計(jì)中采用P3.4來(lái)模擬TX串口發(fā)送端口,用P3.5來(lái)模擬RX串口接收端口。因此發(fā)送的10位數(shù)據(jù)由P3.4送出,接收的10位數(shù)據(jù)由P3.5輸入,并等待CPU進(jìn)行處理。 2.2 數(shù)碼管顯示設(shè)計(jì) 本設(shè)計(jì)主要在于顯示,顯示由鍵盤(pán)輸入的字符的ASCII碼,如果是數(shù)字,則由一位LED數(shù)據(jù)管顯示,并由LED燈顯示。若為其他的字符,僅由LED燈顯示。從鍵盤(pán)輸入字符通過(guò)軟件模擬或者通過(guò)PC機(jī)中附件中終端設(shè)備來(lái)顯示。輸入與顯示可以由C函數(shù)庫(kù)存中的函數(shù)printf和scanf來(lái)實(shí)現(xiàn)。 單片機(jī)中通常使用7段LED構(gòu)成字型“8”,另外,還有一個(gè)小數(shù)點(diǎn)發(fā)光二極管,以顯示數(shù)字、符號(hào)及小數(shù)點(diǎn)。這種顯示器有共陰極和共陽(yáng)極兩種。發(fā)光二極管的陽(yáng)極連在一起的(公共端K0)稱(chēng)為共陽(yáng)極顯示器,陰極連在一起的(公共端K0)稱(chēng)為共陰極顯示器。一位顯示器由8個(gè)發(fā)光二極管組成,其中,7個(gè)發(fā)光二極管構(gòu)成字型“8”的各個(gè)筆劃a-g,另一個(gè)小數(shù)點(diǎn)為dp發(fā)光二極管。當(dāng)在某段發(fā)光二極管上施加一定的正向電壓時(shí),該段筆劃即亮;不加電壓則暗。為了保護(hù)各段LED不被損壞,須外加限流電阻。 以共陰極LED為例,各LED公共陰極K0接地。若向個(gè)控制端a、b、…、g、dp順次送入11100001信號(hào),則該顯示器顯示“7.”字型 共陰極與共陽(yáng)極7段LED顯示數(shù)字0-9的編碼(a段為最低位,dp點(diǎn)為最高位)。如表1所示。 表1 共陰極和共陽(yáng)極7段LED顯示字型編碼表 顯示字符 0 1 2 3 4 5 6 7 8 9 共陰極 段選碼 3F (B) 06 (36) 5B (DB) 4F (CF) 66 (F6) 6D (FD) 7D (FD) 07 (87) 7F (FF) 6F (EF) 共陽(yáng)極 段選碼 C0 (40) F9 (79) A4 (24) B0 (30) 99 (19) 92 (12) 82 (02) F8 (78) 80 (00) 90 (10) LED顯示器有靜態(tài)顯示和動(dòng)態(tài)顯示兩種方式。為了節(jié)省單片機(jī)的外部資源,采用動(dòng)態(tài)顯示技術(shù)。但是,本設(shè)計(jì)只需要采用一位數(shù)碼管顯示ASCII碼,因此無(wú)須采用動(dòng)態(tài)顯示,因?yàn)镻口有鎖存器的功能,只要將待輸出的七段碼輸出到接數(shù)碼管的P口即可無(wú)須重復(fù)掃描。數(shù)碼管的顯示會(huì)維持到下一個(gè)七段碼輸出改變?yōu)橹埂? 2.3 LED燈顯示設(shè)計(jì) LED,即發(fā)光二極管,當(dāng)它的兩端正向?qū)〞r(shí),電阻很小,有電流通過(guò),當(dāng)加反向電壓時(shí),電阻可以看成無(wú)窮大,無(wú)電流通過(guò)。因此它有普通二極管的功能,另外,它的另一個(gè)重要用途是將電信號(hào)變?yōu)楣庑盘?hào),通過(guò)光纜傳輸,然后再用光電二極管接收驅(qū)動(dòng)一光電二極管。 因此,發(fā)光二極管有電平指示作用。在本設(shè)計(jì)中,將LED燈的負(fù)極接到P口,也是為了防止一上電就導(dǎo)通。若將正極接到P口,一上電復(fù)位,P口輸出即為高電平,LED導(dǎo)通,沒(méi)有對(duì)信號(hào)的指示作用。因此,必須將負(fù)極接到P口,然后正極通過(guò)一個(gè)限流電阻接到5V電源。當(dāng)P口輸出高電平時(shí)(包括復(fù)位的高電平),LED燈滅,當(dāng)P口輸出低電平時(shí),LED燈亮,指示輸出為低電平。 3單元電路設(shè)計(jì) 3.1硬件設(shè)計(jì) 本設(shè)計(jì)的總體硬件電路原理圖如下: 圖4 設(shè)計(jì)的總體電路原理圖 3.1.1復(fù)位電路設(shè)計(jì) MCS-51單片機(jī)的復(fù)位是由外部的復(fù)位電路來(lái)實(shí)現(xiàn)的。復(fù)位引腳RST通過(guò)一個(gè)斯密特觸發(fā)器與復(fù)位電路相連,斯密特觸發(fā)器用來(lái)抑制噪聲,在每個(gè)機(jī)器周期的S5P2,斯密特觸發(fā)器的輸出電平由復(fù)位電路采樣一次,然后才能得到內(nèi)部復(fù)位操作所需要的信號(hào)。 上電復(fù)位:上電復(fù)位電路是—種簡(jiǎn)單的復(fù)位電路,只要在RST復(fù)位引腳接一個(gè)電容到VCC,接一個(gè)電阻到地就可以了。上電復(fù)位是指在給系統(tǒng)上電時(shí),復(fù)位電路通過(guò)電容加到RST復(fù)位引腳一個(gè)短暫的高電平信號(hào),這個(gè)復(fù)位信號(hào)隨著VCC對(duì)電容的充電過(guò)程而回落,所以RST引腳復(fù)位的高電平維持時(shí)間取決于電容的充電時(shí)間。為了保證系統(tǒng)安全可靠的復(fù)位,RST引腳的高電平信號(hào)必須維持足夠長(zhǎng)的時(shí)間。 電路圖如圖5所示。 圖5 復(fù)位電路 3.1.2時(shí)鐘電路 時(shí)鐘是單片機(jī)的心臟,單片機(jī)各功能部件的運(yùn)行都是以時(shí)鐘頻率為基準(zhǔn),有條不紊的一拍一拍地工作。因此,時(shí)鐘頻率直接影響單片機(jī)的速度,時(shí)鐘電路的質(zhì)量也直接影響單片機(jī)系統(tǒng)的穩(wěn)定性。常用的時(shí)鐘電路有兩種方式:一種是內(nèi)部時(shí)鐘方式,另一種為外部時(shí)鐘方式。本文用的是內(nèi)部時(shí)鐘方式。 電路圖如圖6所示。 圖6 時(shí)鐘電路 MCS-51單片機(jī)內(nèi)部有一個(gè)用于構(gòu)成振蕩器的高增益反相放大器,該高增益反向放大器的輸入端為芯片引腳XTAL1,輸出端為引腳XTAL2。這兩個(gè)引腳跨接石英晶體振蕩器和微調(diào)電容,就構(gòu)成一個(gè)穩(wěn)定的自激振蕩器。 3.1.3 顯示電路設(shè)計(jì) 本設(shè)計(jì)的顯示電路包括兩部分,即數(shù)碼管顯示部分和LED燈顯示部分。 數(shù)碼管顯示電路如圖7所示。 圖7 數(shù)碼管顯示電路 采用P0口作為段碼輸出端口,由于只有一位數(shù)碼管顯示,位選端可以直接接地,一直處于選通狀態(tài)。另外,P0有特殊的物理結(jié)構(gòu),即漏極開(kāi)路電路,所以得在輸出端接上拉電阻,通過(guò)上拉電阻接到5V電源,上拉電阻一般采用1K大小。 數(shù)碼管顯示子程序比較簡(jiǎn)單,只要通過(guò)查表找到對(duì)應(yīng)的七段碼,輸出到數(shù)碼管,就可以顯示出想要的符號(hào)或數(shù)字。如輸入的數(shù)字為9,經(jīng)過(guò)查找共陰極的七段碼表找到Dis_Table[9],即0x6f,將0x6f,即01101111B對(duì)應(yīng)的dpgfedcba輸出到P0口,即gfdcba六段為高電平,顯示為亮,即顯示數(shù)字9。 LED燈顯示電路如圖8所示。 圖8 LED燈顯示電路 LED燈顯示由P1口來(lái)完成,由于是低電平輸出有效,即燈滅才表示輸出的是高電平,因此不符合習(xí)慣,需要對(duì)將要輸出的段碼進(jìn)行取反運(yùn)算。 比如從鍵盤(pá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ī)的高級(jí)語(yǔ)言或數(shù)據(jù)庫(kù)語(yǔ)言對(duì)數(shù)據(jù)進(jìn)行整理及統(tǒng)計(jì)等復(fù)雜處理;或者實(shí)現(xiàn)PC機(jī)對(duì)遠(yuǎn)程前沿單片機(jī)進(jìn)行控制。 在實(shí)現(xiàn)計(jì)算機(jī)與計(jì)算機(jī)、計(jì)算機(jī)與外設(shè)間的串行通信時(shí),通常采用標(biāo)準(zhǔn)通信接口、這樣就能很方便地把各種計(jì)算機(jī)、外部設(shè)備、測(cè)量?jī)x器等有機(jī)地連接起來(lái),進(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è)備(簡(jiǎn)稱(chēng)DCE)。 RS-232C提供了單片機(jī)與單片機(jī)、單片機(jī)與PC機(jī)間串行數(shù)據(jù)通信的標(biāo)準(zhǔn)接口。通信距離可達(dá)到 15 m。 為了保證二進(jìn)制數(shù)據(jù)能夠正確傳送,設(shè)備控制準(zhǔn)確完成,有必要使所用的信號(hào)電平保持一致。為滿(mǎn)足此要求,RS-232C標(biāo)準(zhǔn)規(guī)定了數(shù)據(jù)和控制信號(hào)的電壓范圍。由于RS-232C是在TTL集成電路之前研制的,所以它的電平不是+5V和地,而是采用負(fù)邏輯,規(guī)定+3V—15V之間的任意電壓表示邏輯0電平,-3V—15V之間的任意電壓表示邏輯1電平。 本設(shè)計(jì)中采用MAX232芯片,電路如圖9所示。 圖9 電路轉(zhuǎn)換電路圖 此電路圖中,從MAX232芯片中兩路發(fā)送接收中任選擇一路作為接口。應(yīng)注意其發(fā)送、接收的引腳要對(duì)應(yīng)。如果使T1 IN接單片機(jī)的發(fā)送端TXD,也就是T0,則PC機(jī)的RS—232的接收端RXD一定要對(duì)應(yīng)接T1 OUT引腳。同時(shí),R1 OUT接單片機(jī)的RXD引腳,PC機(jī)的RS—232的發(fā)送端TXD對(duì)應(yīng)妝R1 IN引腳。 3.2 軟件設(shè)計(jì) 3.2.1 程序設(shè)計(jì)流程圖. 發(fā)送字符串1和2 初始化四個(gè)P口 由PC機(jī)顯示字符串1和字符串2,并準(zhǔn)備接收數(shù)據(jù) 接收PC機(jī)鍵盤(pán)輸入的數(shù)據(jù) 在P1口用LED顯示接收到的字符的ASCII碼 用數(shù)碼管顯示數(shù)字字符 接收到的字符為數(shù)字? 發(fā)送字符到PC機(jī),并由PC機(jī)顯示 發(fā)送換行字符 接收到回車(chē)鍵 開(kāi)始 圖10 程序設(shè)計(jì)流程圖 本設(shè)計(jì)的主要程序部分是發(fā)送和接收數(shù)據(jù),即發(fā)送和接收10位數(shù)據(jù)。在數(shù)據(jù)發(fā)送和接收時(shí),關(guān)鍵在于延時(shí),延時(shí)的長(zhǎng)短決定了波特率,即數(shù)據(jù)傳送的速率。識(shí)別此數(shù)據(jù)傳送完和是否開(kāi)始傳送的標(biāo)志是起始位和停止位。因此在發(fā)送數(shù)據(jù)前要發(fā)送起始位0,然后再發(fā)送8位數(shù)據(jù),最后發(fā)送1位停止位。接收時(shí),是否是新的數(shù)據(jù),即是否決定接收數(shù)據(jù),得判定是否為起始位0,接收完后,再判定接收的是否為停止位1。 3.2.2 單片機(jī)IO口模擬串口實(shí)現(xiàn)數(shù)據(jù)通信的源程序 單片機(jī)IO口模擬串口實(shí)現(xiàn)數(shù)據(jù)通信的源程序如下: #include- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來(lái)的問(wèn)題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁(yè)顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開(kāi)word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 單片機(jī) IO 模擬 串行 實(shí)現(xiàn) 數(shù)據(jù)通信
鏈接地址:http://m.appdesigncorp.com/p-6625647.html