單片機(jī)IO口模擬串行實(shí)現(xiàn)數(shù)據(jù)通信_(tái)第1頁(yè)
單片機(jī)IO口模擬串行實(shí)現(xiàn)數(shù)據(jù)通信_(tái)第2頁(yè)
單片機(jī)IO口模擬串行實(shí)現(xiàn)數(shù)據(jù)通信_(tái)第3頁(yè)
單片機(jī)IO口模擬串行實(shí)現(xiàn)數(shù)據(jù)通信_(tái)第4頁(yè)
單片機(jī)IO口模擬串行實(shí)現(xiàn)數(shù)據(jù)通信_(tái)第5頁(yè)
已閱讀5頁(yè),還剩20頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、目錄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燈顯示

2、設(shè)計(jì).。.。.。.。.。.。.。.。.。.。.。.8單元電路設(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

3、 單片機(jī)IO口模擬串口實(shí)現(xiàn)數(shù)據(jù)通信的源程序.。.。.。154系統(tǒng)仿真.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.185收獲與體會(huì)。.。.。.。.。.。.。.。.。.。.。.。.。.。.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的功能.具體要求如下:用單片機(jī)的P3。4和P3。5分別模擬RX和TX的串行通信功能,能夠接收和發(fā)送數(shù)據(jù)。通過(guò)PC機(jī)的鍵盤輸入字符,并傳送給單片機(jī),由單片機(jī)接收后,發(fā)達(dá)給PC機(jī),由PC機(jī)

4、加以顯示。單片機(jī)接收由鍵盤輸入的數(shù)據(jù)后,如果是數(shù)字,則由數(shù)碼管顯示,并由LED燈表示其ASCII碼,如果是其他字符,則由僅由LED燈顯示其ASCII碼.總體方案設(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口MCS51單片機(jī)共有4個(gè)雙向的8位并行I/O端口(Port),分別記作P0-P3,共有32根口線,各口的每一位均由鎖存器、輸出驅(qū)動(dòng)器和輸入緩沖器所組成.實(shí)際上P0-P3已被歸入特殊功能寄存器之列.這四個(gè)口除了按字節(jié)尋址以外,還可以按位尋址.由于它們?cè)诮Y(jié)構(gòu)上有一些

5、差異,故各口的性質(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),故稱為雙向三態(tài)I/O 口。2。1。2通信的基本原理串行通信只用一位數(shù)據(jù)線傳送數(shù)據(jù)的位信號(hào),即使加上幾

6、條通信聯(lián)絡(luò)控制線,也用不了很多電纜線.因此串行通信適合遠(yuǎn)距離數(shù)據(jù)傳送.,如大型主機(jī)與其遠(yuǎn)程終端之間、處于兩地的計(jì)算機(jī)之間采用串行通信就非常經(jīng)濟(jì)。當(dāng)然串行通信要求有轉(zhuǎn)換數(shù)據(jù)格式、時(shí)間控制等邏輯電路,這些電路目前已被集成在大規(guī)模集成電路(稱為可編程串行通信控制器),使用很方便.通信方式有兩種:并行通信和串行通信。通常根據(jù)傳送的的距離決定采用哪種通信方式。例如,在IBMPC機(jī)與外部設(shè)備(如打印機(jī)等)通信時(shí),距離小于30m,則可采用并行通信方式,當(dāng)距離大于30m時(shí),則要采用串行通信方式。89C51單片機(jī)具有并行和串行兩種基本通信方式。并行通信是指數(shù)據(jù)的各位同時(shí)進(jìn)行傳送(發(fā)送或接收)的通信方式。其優(yōu)點(diǎn)是

7、傳送速度高;缺點(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,那么串行傳送的時(shí)間至少為NT,實(shí)際上問(wèn)題總是大于NT的,圖1(b)所示為串行通信方式的連接方法.串行通信的傳送方式通常有3種:?jiǎn)蜗颍ɑ颍﹩喂づ渲茫?/p>

8、只允許數(shù)據(jù)向一個(gè)方向傳送;半雙向(或半雙工)配置,允許數(shù)據(jù)向兩個(gè)方向中的任一方向傳送,但每次只能有一個(gè)站點(diǎn)發(fā)送;全雙向(或全工)配置,允許同時(shí)雙向傳送數(shù)據(jù),因此,全雙工配置是一對(duì)單向配置,它要求兩端的通信設(shè)備都有完整和獨(dú)立的發(fā)送和接收能力。串行通信有兩種基本的通信方式:異步通信和同步通信。異步通信在異步通信中,數(shù)據(jù)是一幀一幀(包括一個(gè)字符代碼或一字節(jié)數(shù)據(jù))傳送的,第一幀的數(shù)據(jù)格式如圖2所示.在幀格式中,一個(gè)字符由4部分組成:起始位、數(shù)據(jù)位、奇偶校驗(yàn)位和停止位。首先是一個(gè)起始位(0),然后是58位數(shù)據(jù) (規(guī)定低位在前,高位在后),接下來(lái)是奇偶校驗(yàn)位(可省略),最后是停止位(1)。起始位(0)信號(hào)

9、只占一位,用來(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位(D0D4)、6位、7位或8位(D0D7)。奇偶校驗(yàn)(D8)只占一位,但在字符中也可以規(guī)定不用奇偶校驗(yàn)位,則這一位就可以省去。也可用這一位(1/0)來(lái)確定這一幀中的字符所代表信息的性質(zhì)(地址/數(shù)據(jù)等)。停止位用來(lái)表征字符的結(jié)束,它一定是高電位(邏輯1)。停止位可以是1位、1。5位或2位.接收端收到停止位后,知道上一字符

10、已傳送完畢,同時(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位。同步通信 同步通信中,在數(shù)據(jù)開(kāi)始傳送前用同步字符來(lái)指示(常約定12個(gè)),并由時(shí)鐘來(lái)實(shí)現(xiàn)發(fā)送端和接收端同步,即檢測(cè)到規(guī)定的同步字符后,下面就連續(xù)按順序

11、傳送數(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字符s1200bs每一位代碼的傳送時(shí)間Td為波特率的倒數(shù). Td1b(1200bs-1)0.833ms異步通信的傳送速率在50b/s-19200b/s之間,常用于計(jì)算機(jī)到終端機(jī)和打印機(jī)之間的通信、直通電報(bào)以及無(wú)

12、線電通信的數(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è)備收到起始位后,緊接著

13、就會(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)志,可以

14、是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ā)送器)用,也可以作同步移位寄存

15、器用。使用串行接口可以實(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ī)(如IBMPC機(jī)等)的單機(jī)或多機(jī)通信。圖3 串行口內(nèi)部結(jié)構(gòu)示意圖結(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ā)生器,

16、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。在滿足串行口接收中斷標(biāo)志位RI(SCON。0)=0的條件下,置允許接收位RE

17、N(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)保持最大傳送速率。串行口控制字及控制寄存器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ā)送

18、中斷標(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ì)主要在于顯示,顯示由鍵盤輸入的字符的ASCII碼

19、,如果是數(shù)字,則由一位LED數(shù)據(jù)管顯示,并由LED燈顯示。若為其他的字符,僅由LED燈顯示。從鍵盤輸入字符通過(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)稱為共陽(yáng)極顯示器,陰極連在一起的(公共端K0)稱為共陰極顯示器。一位顯示器由8個(gè)發(fā)光二極管組成,其中,7個(gè)發(fā)光二極管構(gòu)成字型“8”的各個(gè)筆劃a-g,另一個(gè)小數(shù)點(diǎn)為dp發(fā)光二極管。當(dāng)在某段發(fā)光二極管上施加一定

20、的正向電壓時(shí),該段筆劃即亮;不加電壓則暗.為了保護(hù)各段LED不被損壞,須外加限流電阻。以共陰極LED為例,各LED公共陰極K0接地。若向個(gè)控制端a、b、g、dp順次送入11100001信號(hào),則該顯示器顯示“7。”字型共陰極與共陽(yáng)極7段LED顯示數(shù)字09的編碼(a段為最低位,dp點(diǎn)為最高位)。如表1所示.表1 共陰極和共陽(yáng)極7段LED顯示字型編碼表顯示字符0123456789共陰極段選碼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

21、)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)橹埂?.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ā)光二

22、極管有電平指示作用。在本設(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燈亮,指示輸出為低電平。單元電路設(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,斯密

23、特觸發(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í)鐘頻率直接

24、影響單片機(jī)的速度,時(shí)鐘電路的質(zhì)量也直接影響單片機(jī)系統(tǒng)的穩(wěn)定性.常用的時(shí)鐘電路有兩種方式:一種是內(nèi)部時(shí)鐘方式,另一種為外部時(shí)鐘方式。本文用的是內(nèi)部時(shí)鐘方式。電路圖如圖6所示。 圖6 時(shí)鐘電路MCS51單片機(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ù)碼管顯示,位選端可以直接接地,一直

25、處于選通狀態(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_Table9,即0 x6f,將0 x6f,即01101111B對(duì)應(yīng)的dpgfedcba輸出到P0口,即gfdcba六段為高電平,顯示為亮,即顯示數(shù)字9.LED燈顯示電路如圖8所示.圖8 LED燈顯示電路LED燈顯示由P1口來(lái)完成,由于是低電平輸出有效,即燈滅才表示輸出的是高電平,因此不符合習(xí)慣,需要對(duì)將要輸出

26、的段碼進(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ī)的高級(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)行串行通

27、信.ELA RS232C是目前最常用的串行接口標(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)稱DCE)。 RS232C提供了單片機(jī)與單片機(jī)、單片機(jī)與PC機(jī)間串行數(shù)據(jù)通信的標(biāo)準(zhǔn)接口。通信距離可達(dá)到 15 m。為了保證二進(jìn)制數(shù)據(jù)能夠正確傳送,設(shè)備控制準(zhǔn)確完成,有必要使所用的信號(hào)電平保持一致。為滿足此要求,RS232C標(biāo)準(zhǔn)規(guī)定了數(shù)據(jù)和控制信號(hào)的電壓范圍.由于RS232C是在TTL集成電路之前研制的,所以它的電平不是+5V和地,

28、而是采用負(fù)邏輯,規(guī)定+3V-15V之間的任意電壓表示邏輯0電平,3V15V之間的任意電壓表示邏輯1電平。本設(shè)計(jì)中采用MAX232芯片,電路如圖9所示。圖9 電路轉(zhuǎn)換電路圖此電路圖中,從MAX232芯片中兩路發(fā)送接收中任選擇一路作為接口。應(yīng)注意其發(fā)送、接收的引腳要對(duì)應(yīng).如果使T1 IN接單片機(jī)的發(fā)送端TXD,也就是T0,則PC機(jī)的RS232的接收端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)備接收

29、數(shù)據(jù)接收PC機(jī)鍵盤輸入的數(shù)據(jù)在P1口用LED顯示接收到的字符的ASCII碼用數(shù)碼管顯示數(shù)字字符接收到的字符為數(shù)字?發(fā)送字符到PC機(jī),并由PC機(jī)顯示發(fā)送換行字符接收到回車鍵開(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口模擬串口

30、實(shí)現(xiàn)數(shù)據(jù)通信的源程序單片機(jī)IO口模擬串口實(shí)現(xiàn)數(shù)據(jù)通信的源程序如下:#include include intrins。htypedef unsigned char uchar;typedef unsigned int uint;#define DISPLAY P0 #define LED P1 sbit TX = P34;sbit RX = P35;uchar code Dis_Table =0 x3F,0 x06,0 x5B,0 x4F,0 x66,0 x6D,0 x7D,0 x07, 0 x7F,0 x6F,0 x77,0 x7C,0 x39,0 x5e,0 x79,0 x71; /0 xe

31、d,0 x88,0 xb5,0 xb9,0 xd8,0 x79,0 x7d,0 xa8,0 xfd,0 xf9;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 = 0 xFF; P2 = 0 xFF; P0 = 0 x00; P3 = 0 xFF;void IOsend_char( unsigned char ch ) unsigned char h, da , temp; da = ch; TX = 0; Uart_Delay(); for( h = 0; h = 0 x30 &

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論