任務(wù)七用單片機(jī)和可編程并行接口控制交通燈_第1頁(yè)
任務(wù)七用單片機(jī)和可編程并行接口控制交通燈_第2頁(yè)
任務(wù)七用單片機(jī)和可編程并行接口控制交通燈_第3頁(yè)
任務(wù)七用單片機(jī)和可編程并行接口控制交通燈_第4頁(yè)
任務(wù)七用單片機(jī)和可編程并行接口控制交通燈_第5頁(yè)
已閱讀5頁(yè),還剩93頁(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、教學(xué)導(dǎo)航教學(xué)導(dǎo)航任務(wù)單任務(wù)單任務(wù)準(zhǔn)備任務(wù)準(zhǔn)備案例示范案例示范知識(shí)梳理與總結(jié)知識(shí)梳理與總結(jié)任務(wù)作業(yè)任務(wù)作業(yè)教教知識(shí)重點(diǎn)(1)外部總線結(jié)構(gòu)、鎖存器、總線驅(qū)動(dòng)器 (2)存儲(chǔ)器芯片結(jié)構(gòu)及存儲(chǔ)器的擴(kuò)展(3)8255A結(jié)構(gòu)及工作方式、控制字的設(shè)置 知識(shí)難點(diǎn)存儲(chǔ)器擴(kuò)展芯片地址確定、8255A工作方式的應(yīng)用推薦教學(xué)方式以任務(wù)入手,通過(guò)8255A控制交通燈系統(tǒng)這一任務(wù)的實(shí)現(xiàn),讓讀者掌握單片機(jī)輸入/輸出口擴(kuò)展、存儲(chǔ)器擴(kuò)展、8255A的應(yīng)用。建議學(xué)時(shí)8學(xué)時(shí)學(xué)學(xué)推薦學(xué)習(xí)方法通過(guò)硬件電路設(shè)計(jì)及制作、軟件編程、仿真調(diào)試與系統(tǒng)運(yùn)行,理解相關(guān)理論知識(shí),學(xué)會(huì)應(yīng)用。必須掌握的理論知識(shí)(1)外部總線結(jié)構(gòu)、鎖存器、總線驅(qū)動(dòng)器 (2)

2、存儲(chǔ)器芯片結(jié)構(gòu)及存儲(chǔ)器擴(kuò)展的方法(3)擴(kuò)展的存儲(chǔ)器芯片地址范圍的確定 (4)8255A結(jié)構(gòu)及工作方式、控制字的設(shè)置必須掌握的技能(1)利用相關(guān)芯片擴(kuò)展I/O口及存儲(chǔ)器擴(kuò)展技術(shù); (2)8255A三種工作方式的應(yīng)用任務(wù)任務(wù)描述描述用8255做輸出口,控制十二個(gè)發(fā)光二極管亮滅,模擬交通燈系統(tǒng)。初始態(tài)為四個(gè)路口的紅燈全亮之后,東西路口的綠燈亮,南北路口的紅燈亮,東西路口方向通車(chē);延時(shí)20s,東西路口的綠燈閃爍3次后熄滅,黃燈亮3s后,東西路口紅燈亮,而同時(shí)南北路口的綠燈亮,南北路口方向開(kāi)始通車(chē);南北路口的綠燈閃爍3次后熄滅,黃燈亮3s后,再切換到南北路口紅燈亮,東西路口的綠燈亮,東西方向通車(chē);之后重

3、復(fù)以上過(guò)程。任務(wù)任務(wù)要求要求1、自行設(shè)計(jì)利用8255做輸出口連接十二個(gè)發(fā)光二極管實(shí)現(xiàn)交通燈功能的電路圖;2、按上述設(shè)計(jì)的電路圖設(shè)計(jì)交通燈控制系統(tǒng)程序。實(shí)現(xiàn)實(shí)現(xiàn)方法方法(1)利用Proteus仿真軟件對(duì)設(shè)計(jì)的電路及程序進(jìn)行調(diào)試;(2)繪制電路板,焊接元件;(3)硬件仿真,燒錄程序。7.1 7.1 單片機(jī)簡(jiǎn)單單片機(jī)簡(jiǎn)單I/OI/O擴(kuò)展擴(kuò)展7.2 7.2 存儲(chǔ)器的擴(kuò)展存儲(chǔ)器的擴(kuò)展7.3 8255A7.3 8255A可編程并行可編程并行I/OI/O接口接口7.1.1 7.1.1 外部總線結(jié)構(gòu)外部總線結(jié)構(gòu)地址鎖存器A15A8A7A0D7D0數(shù)據(jù)總線數(shù)據(jù)總線DB控制總線CB并行串行中斷輸入計(jì)數(shù)脈沖復(fù)位RX

4、DTXDINT0INT1T0T1RESETP1P2P0ALEWRRDPSENEA8051地址地址總線總線AB1.1.地址總線地址總線 傳送存儲(chǔ)單元或外設(shè)的地址P0P0口低口低8 8位地址總線位地址總線(一般需要加一級(jí)鎖存器)P2P2口高口高8 8位地址總線位地址總線2.2.數(shù)據(jù)總線數(shù)據(jù)總線P0P0提供數(shù)據(jù)線,傳送數(shù)據(jù)、指令和信息提供數(shù)據(jù)線,傳送數(shù)據(jù)、指令和信息 P0P0口分時(shí)復(fù)用分時(shí)復(fù)用的雙向數(shù)據(jù)總線雙向數(shù)據(jù)總線和低低8 8位地址總線位地址總線3 . 3 . 控制總線控制總線用來(lái)傳送各種控制信息用來(lái)傳送各種控制信息 / :片外數(shù)據(jù)存儲(chǔ)器RAM和外設(shè)接口的讀寫(xiě)控制信號(hào)。 PSEN :片外程序存儲(chǔ)

5、器的讀控制; ALE :地址鎖存控制;下降沿鎖存P0口的低8位地址 EA :片內(nèi)/片外程序存儲(chǔ)器選擇信號(hào),EA=0時(shí),只訪問(wèn)外部程序存儲(chǔ)器RDWR1 . 1 . 地址鎖存器地址鎖存器帶三態(tài)緩沖輸出:帶三態(tài)緩沖輸出:74LS373、8282帶清除端帶清除端 :74LS273D0D1D2D3D4D5D6D7LEOEQ0Q1Q2Q3Q4Q5Q6Q774LS373 3 4 7 81314171811 2 5 6 912151619 1 ALED0D1D2D3D4D5D6D7STBOEQ0Q1Q2Q3Q4Q5Q6Q78282 1 2 3 45678119 1918171615141312 VCCGND

6、1020D0D1D2D3D4D5D6D7CLKCLRQ0Q1Q2Q3Q4Q5Q6Q774LS273 3 4 7 813141718111 2 5 6 9121516191 ALE10k8282的功能表和74LS373相似,表中的G端和8282的STB端對(duì)應(yīng)輸入輸入 輸出輸出 OELEDQLHHHLHLLLLQ不變H高阻態(tài)74LS273只有清除端為高電平才具鎖存功能,鎖存器控制為CLK,上升沿鎖存數(shù)據(jù)。單片機(jī)ALE(下降沿鎖存地址)引腳需接反相器輸入 輸出 CLRCLKDQLL HHHHLLHLQ不變當(dāng)單片機(jī)外接芯片較多,超出總線負(fù)載能力,必須加 總線驅(qū)動(dòng)器。驅(qū)動(dòng)器可增強(qiáng)單片機(jī)對(duì)外圍接口電路的驅(qū)

7、動(dòng)能力,而且可以起到對(duì)負(fù)載波動(dòng)的隔離作用根據(jù)驅(qū)動(dòng)的方向可分為單向總線驅(qū)動(dòng)器和雙向總線驅(qū)動(dòng)器 單向驅(qū)動(dòng)器74LS244、74LS241用于地址總線驅(qū)動(dòng) 雙向驅(qū)動(dòng)器74LS245用于數(shù)據(jù)總線驅(qū)動(dòng)1A121A241A361A482A1112A2132A3152A4171Y1181Y2161Y3141Y4122Y192Y272Y352Y431G12G1974LS24410231617198765418191112131415&A0A1B0A2A3A4A5A6A7DIRB3B4B5B6B720B1B274LS245+5VPSENRDGGND(1)用74LS377擴(kuò)展8位輸出口 圖7-4為利用鎖存

8、器74LS377擴(kuò)展的簡(jiǎn)單輸出口的接口電路。74LS377為帶有允許輸出端的8D鎖存器。D7D0為其輸入端口,輸出端口為Q7Q0,CLK為時(shí)鐘控制端,上升沿鎖存。圖中P0口的P0.0和P0.1引腳分別作為地址選擇線與兩個(gè)74LS377的片選控制端相連,使得兩個(gè)74LS377的口地址分別為0XFFFE和0XFFFD。當(dāng)某一個(gè)74LS377該輸出口被選中,且CLK端電平正跳時(shí),P0口數(shù)據(jù)鎖存到74LS377的輸出端,從而實(shí)現(xiàn)數(shù)碼管的靜態(tài)顯示。 #include#include#define addr377_1 XBYTE0XFFFE#define addr377_2 XBYTE0XFFFDunsi

9、gned char led10=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82, 0 xf8,0 x80,0 x90;unsigned time=0,count=20;void main() addr377_1= addr377_2=led0; TMOD=01; TH0=-500008; TL0=-50000; EA=1;ET0=1; TR0=1; while(1);void isr_time() interrupt 1 TH0=-500008;TL0=-50000; count-; if(count=0) count=20; time=(time+1)%6

10、0; addr377_1=ledtime /10; addr377_2=ledtime %10; 案例13:用單片機(jī)擴(kuò)展口控制流水燈 P2.7、P2.6引腳分別與片選控制G端相連,以選通鎖存器#includesbit p27=P27;sbit p26=P26;sbit p36=P36;unsigned char cword=0 xfe;void main() unsigned int i,j; p27=1;p26=0;p36=0; while(1) for(i=0;i0;j-); cword = (cword1)|1; P0=cword; cword=0 xfe; p27 =p27; p26=

11、p26; P2.7和 相“或”控制信息的輸入RD#include#include#define addr244 XBYTE0X3FFF /74LS244的地址為3FFFHvoid main()unsigned char mdata; while(1) mdata=addr244; /從74LS244中讀取數(shù)據(jù)(按鍵的開(kāi)合狀態(tài)) P1=mdata; 7.2.1 7.2.1 程序存儲(chǔ)器的擴(kuò)展程序存儲(chǔ)器的擴(kuò)展7.2.2 7.2.2 數(shù)據(jù)存儲(chǔ)器的擴(kuò)展數(shù)據(jù)存儲(chǔ)器的擴(kuò)展7.2.3 7.2.3 存儲(chǔ)器的綜合擴(kuò)展存儲(chǔ)器的綜合擴(kuò)展地址總線是單向輸入的,其數(shù)目與芯片容量有關(guān)。 如容量為2K8時(shí),地址線有11根,即

12、211=2048。 容量為16K8時(shí),地址線有14根,即214。數(shù)據(jù)線是雙向的,即可輸入,也可輸出,其數(shù)目與數(shù)據(jù)位數(shù)有關(guān)。 如2K8的芯片,其數(shù)據(jù)線有8根;控制線主要有讀/寫(xiě)控制線與片選線兩種。由于可以擴(kuò)展多個(gè)存儲(chǔ)芯片,需要用片選信號(hào)來(lái)確定哪個(gè)芯片被選中。讀/寫(xiě)控制線決定芯片進(jìn)行讀/寫(xiě)操作。 Mask ROM型:掩膜ROMOPTROM型:一次可編程ROMEPROM型:可擦除可編程ROME2PROM型:電可擦除可編程ROMFlash ROM型:閃速只讀存儲(chǔ)器典型的典型的EPROMEPROM芯片(芯片(IntelIntel公司):公司):2716(2K2716(2K8)8)、2732(42732(

13、4 K K8)8)、 2764(82764(8 K K8)8)、27128(1627128(16 K K8)8)、27256(3227256(32 K K8)8)、27512(6427512(64 K K8)8)等。等。 在這些芯片上均設(shè)有玻璃窗口,在紫外線下照射20分鐘左右,存儲(chǔ)器的各位信息均變?yōu)?,通過(guò)相應(yīng)的編程器將工作程序固化到這些芯片中,便可成為MCS-51的外部程序存儲(chǔ)器。 2716的存儲(chǔ)容量為16384(2K8)位,24線的雙列直插式器件,單一5V供電,運(yùn)行時(shí)最大功耗為252mW,維持功耗為132mW,讀出時(shí)間最大為450ns。 2716O0O7數(shù)據(jù)線: 傳送存儲(chǔ)單元內(nèi)容。根數(shù)與單

14、元數(shù)據(jù)位數(shù)相同。A0A10地址線:選擇芯片內(nèi)部一個(gè)存儲(chǔ)單元。根數(shù)由存儲(chǔ)器容量決定。CE片選線:選擇存儲(chǔ)器芯片。CE無(wú)效,其他信號(hào)線不起作用。OE:數(shù)據(jù)讀選通線,Vcc:+5V主電源Vpp:編程電源(+25V)GND:接地端P2.2P2.0P0.78031P0.0ALE PSEN.D7 Q7 373D0 Q0 G控制線控制線11根地址線根地址線 8根數(shù)據(jù)線根數(shù)據(jù)線(1) 單片單片2716存儲(chǔ)器擴(kuò)展電路存儲(chǔ)器擴(kuò)展電路A10A8A7A0 2716O7O0OE CE GNDEA1)1)地址總線的連接地址總線的連接P0.0P0.0P0.7 P0.7 和和P2.0P2.0P2.2P2.2連接地址總線A0A

15、10低低8 8位地址信號(hào)位地址信號(hào)AB0AB0AB7AB7,高,高3 3位地址信號(hào)位地址信號(hào)AB8AB8AB10AB102)2)數(shù)據(jù)總線的連接數(shù)據(jù)總線的連接P0.0P0.0P0.7P0.7連接數(shù)據(jù)總線連接數(shù)據(jù)總線D0D0D7D7PSEN連接OE:片外程序存儲(chǔ)器讀控制信號(hào)ALE連接鎖存器G:地址鎖存允許控制信號(hào)EA接地:選擇片外程序存儲(chǔ)器PCL輸出有效PCLP0P2RD/WRPSENALE指令輸入PCLPCL輸出有效PCL指令輸入第一機(jī)器周期PCL輸出有效指令輸入第二機(jī)器周期PCL輸出有效指令輸入PCL指令輸入PCL指令輸入PCL輸出有效PCL不執(zhí)行MOVX指令數(shù)據(jù)輸入執(zhí)行MOVX指令最大擴(kuò)展容

16、量64K外擴(kuò)多片存儲(chǔ)器進(jìn)行的選擇:片選:選存儲(chǔ)器芯片,片選信號(hào)區(qū)別不同芯片的地址空間。字選: 選中該芯片中的相應(yīng)存儲(chǔ)器單元(1)線選法單片機(jī)剩余高位地址總線直接連接各存儲(chǔ)器片選線。 各芯片間地址不連續(xù) 有相當(dāng)數(shù)量的地址不能使用,否則造成片選混亂(2)地址譯碼法 單片機(jī)剩余高位地址總線通過(guò)地址譯碼器輸出片選信號(hào)。各存儲(chǔ)器芯片的地址空間:各存儲(chǔ)器芯片的地址空間:ABi :15141312 111098 7 6 5 4 3 2 1 0 15141312 1110 98 7 6 5 4 3 2 1 0:1100 0000 0000 00001100 0111 1111 1111=C000HC7FFH:

17、1010 0000 0000 00001010 0111 1111 1111=A000HA7FFH :0110 0000 0000 00000110 0111 1111 1111=6000H67FFH A0A7 A8A10D0D7CEOE2716(I)A0A7 A8A10D0D7CEOE2716(II)A0A7 A8A10D0D7CEOE2716(III)O0O7GD0D7OE74LS373P0.0P0.7PSEN P2.7P2.6P2.5ALEP2.2P2.080513-8地址譯碼器:74LS138譯碼法選址就是利用地址譯碼器對(duì)系統(tǒng)的片外高位地址進(jìn)行譯碼,以其譯碼輸出作為存儲(chǔ)器芯片的片選信號(hào)

18、,將地址劃分為連續(xù)的地址空間塊,避免了地址的間斷。(1)完全譯碼:地址譯碼器使用了全部地址線,地址與存儲(chǔ)單元一一對(duì)應(yīng)。 (2)部分譯碼:地址譯碼器僅使用了部分地址,地址與存儲(chǔ)單元不是一一對(duì)應(yīng)。部分譯碼也會(huì)浪費(fèi)大量的存儲(chǔ)單元,對(duì)于要求存儲(chǔ)器容量較大的微機(jī)系統(tǒng),一般不采用。但對(duì)于單片機(jī)系統(tǒng)來(lái)說(shuō),由于實(shí)際需要的存儲(chǔ)器容量不大,采用部分譯碼器可以簡(jiǎn)化譯碼電路。 A0A7 A8A10D0D7CEOE2716(III)A0A7 A8A10D0D7CEOE2716(II)A0A7 A8A10D0D7CEOE2716(I)O0O7GD0D7OE74LS373P0.0P0.7PSEN P2.5P2.4P2.3A

19、LEP2.2P2.08051各存儲(chǔ)器芯片的地址空間:各存儲(chǔ)器芯片的地址空間:AbAbi i: : 15151414131312 12 111110109 9 8 8 7 7 6 6 5 5 4 4 3 3 2 2 1 1 0 0 1515141413131212 111110109 9 8 8 7 7 6 6 5 5 4 4 3 3 2 2 1 1 0 0 :000000 000 0000 0000 0000000 0000 000000000000 0 0111 1111 1111=0000H111 1111 1111=0000H07FFH07FFH:00000000 1 1000 0000

20、 0000000 0000 000000000000 1 1111 1111 1111=0800H111 1111 1111=0800H0FFFH 0FFFH :00000101 0 0000 0000 0000000 0000 000000000101 0 0111 1111 1111=1000H111 1111 1111=1000H17FFH 17FFH C Y0 B Y1 A Y2 G2AG2B G1+5V138vMCS-51MCS-51系列單片機(jī)的內(nèi)部一般都僅有系列單片機(jī)的內(nèi)部一般都僅有128128字節(jié)字節(jié)或或256256字節(jié)的字節(jié)的RAMRAM數(shù)據(jù)存儲(chǔ)器。數(shù)據(jù)存儲(chǔ)器。v數(shù)據(jù)存儲(chǔ)器和程

21、序存儲(chǔ)器使用相同的數(shù)據(jù)存儲(chǔ)器和程序存儲(chǔ)器使用相同的64KB64KB地地址空間,但兩者卻是相互獨(dú)立的的存儲(chǔ)空間址空間,但兩者卻是相互獨(dú)立的的存儲(chǔ)空間,具有各自獨(dú)立的控制信號(hào)線和讀寫(xiě)操作指,具有各自獨(dú)立的控制信號(hào)線和讀寫(xiě)操作指令。同時(shí),外部的數(shù)據(jù)存儲(chǔ)器和其它令。同時(shí),外部的數(shù)據(jù)存儲(chǔ)器和其它I/OI/O接口接口芯片的擴(kuò)展統(tǒng)一編址。芯片的擴(kuò)展統(tǒng)一編址。典型的SRAM芯片有Intel公司的: 6216(2K8)、6264(8K8)、62128(16K8)等存儲(chǔ)器的外部信號(hào)線: I/O0I/O7:8位數(shù)據(jù)線 A0A12: 13位地址線: CE1片選線1:低電平有效 CE2片選線2:高電平有效 OE:讀選通

22、信號(hào)輸入線 WE:寫(xiě)允許信號(hào)輸入線CE1CE2WEOE方式D0D71 未選中高阻抗0 未選中高阻抗0111輸出禁止高阻抗0101寫(xiě) Din011 0讀 Dout(1)(1)單片單片62646264數(shù)據(jù)存儲(chǔ)器擴(kuò)展數(shù)據(jù)存儲(chǔ)器擴(kuò)展ABABi i : 15151414131312 12 111110109 98 8 7 7 6 6 5 5 4 4 3 3 2 2 1 1 0 0 15151414131312 12 111110109 98 8 7 7 6 6 5 5 4 4 3 3 2 2 1 1 0 0 :0100100 0000 0000 00000 0000 0000 00000100100 0

23、111 1111 1111=4000H0 0111 1111 1111=4000H5FFFH5FFFH:0010010 1000 0000 00000 1000 0000 00000010010 1111 1111 1111=2000H0 1111 1111 1111=2000H3FFFH 3FFFH :0000000 0000 0000 00000 0000 0000 00000000001 1111 1111 1111=0000H1 1111 1111 1111=0000H1FFFH1FFFHO0O7GD0D7OE74LS373+5VC Y0 B Y1 A Y2 G2AG2B G1138A

24、0A7 A8A10D0D7CE1OE6264(I)WEA0A7 A8A10D0D7CE1OE6264(II)WEA0A7 A8A10D0D7CE1OE6264(III)WEP0.0P0.7RD P2.7P2.6P2.5ALEP2.4P2.08051WR #includeunsigned char xdata DATABUFF100 _at_ 0 x00; /外部RAM,地址從0000H開(kāi)始void delay();void main()unsigned char cword; int i; for(i=0;i100;i+) DATABUFFi=i; for(i=0;i0;i-) for(j=1

25、00;j0;j-);(1)點(diǎn)擊仿真按鈕,系統(tǒng)開(kāi)始全速運(yùn)行,可以看到寫(xiě)入P1的數(shù)據(jù)由P1連接的發(fā)光二極管以二進(jìn)制形式顯示。(2)點(diǎn)擊暫停按鈕,系統(tǒng)暫時(shí)停下來(lái)了,點(diǎn)擊“Debug”菜單下的“Memory Contents-U3”子菜單,這時(shí)系統(tǒng)將彈出“Memory Contents-U3”窗口,A7 A0 懸 浮P2 P1指 令 輸 入 懸 浮PSENP0P2RDALES1 P1P2 P1S2第 一 個(gè) 機(jī) 器 周 期地 址 A15 A8P2 P1S3P2 P1S4S5數(shù) 據(jù) 輸 入 懸 浮P2 P1P2 P1S61)外部數(shù)據(jù)存儲(chǔ)器讀周期)外部數(shù)據(jù)存儲(chǔ)器讀周期P2 P1 A7 A0 S2S1PSE

26、N指 令 輸 入 懸 浮P0P2WRALE P1P2 P1S6S4S3S5地 址 A15 A8P2 P1P2 P1數(shù) 據(jù) 輸 出P2 P1P2 P1第 一 個(gè) 機(jī) 器 周 期地 址 或懸 浮地址總線和數(shù)據(jù)總線公用片外ROM用到PSEN,片外RAM用到RD與WE 各芯片地各芯片地址是多少?址是多少?數(shù)據(jù)端口數(shù)據(jù)端口A A、B B、C C(包含包含I/OI/O數(shù)據(jù)鎖存器,控制寄存器和數(shù)據(jù)鎖存器,控制寄存器和狀態(tài)寄存器)狀態(tài)寄存器)端口A:包括一個(gè) 8 位的數(shù)據(jù)輸出鎖存/緩沖器和一個(gè)8位的數(shù)據(jù)輸入鎖存器,可作為數(shù)據(jù)輸入或輸出端口,并工作于三種方式中的任何一種。端口B:包括一個(gè)8位的數(shù)據(jù)輸出鎖存/緩沖

27、器和一個(gè)8位的數(shù)據(jù)輸入緩沖器,可作為數(shù)據(jù)輸入或輸出端口,作數(shù)據(jù)輸入口時(shí),沒(méi)有鎖存功能。 端口B不能工作于方式2。端口C: 結(jié)構(gòu)和B口相同,但在方式字控制下分為兩個(gè)4位的端口,每個(gè)4位端口都有4位的鎖存器, 用來(lái)配合端口A與端口B鎖存輸出控制信號(hào)和輸入狀態(tài)信號(hào)1 . 8255A組成結(jié)構(gòu)組成結(jié)構(gòu)A A組控制和組控制和B B組控制電路組控制電路 實(shí)現(xiàn)對(duì)8255A端口工作方式的控制 A組:PA和PC47 B組:PB和PC03 數(shù)據(jù)總線緩沖器數(shù)據(jù)總線緩沖器 三態(tài)雙向8位緩沖器,8255A和單片機(jī)數(shù)據(jù)總線接口讀讀/ /寫(xiě)控制邏輯電路寫(xiě)控制邏輯電路單片機(jī)控制信號(hào)(RD、WR、RESET)地址總線控制信號(hào)(A

28、1、A0)片選信號(hào)(CS)電源和地線:VCC、GND與單片機(jī)相連的引腳(14條)RESET 復(fù)位信號(hào),高電平有效CS 片選信號(hào),低電平有效RD 讀信號(hào),低電平有效WR 寫(xiě)信號(hào),低電平有效D7D0 雙向三態(tài)數(shù)據(jù)線,和單片機(jī)數(shù)據(jù)總線相連A1、A0 端口選擇信號(hào)與外設(shè)相連的引腳(24條)PA7PA0: A口輸入/輸出引腳PB7PB0: B口輸入/輸出引腳PC7PC0: C口輸入/輸出引腳 CS A1 A0 RD WR 工作狀態(tài) 0 0 0 0 0 0 0 0 0 00010011101001011000111101111000011讀A口讀B口讀C口寫(xiě)A口寫(xiě)B(tài)口寫(xiě)C口寫(xiě)控制字寄存器芯片未選中非法狀態(tài)

29、非法狀態(tài)1. 1. 方式方式0 0基本的輸入基本的輸入/ /輸出方式輸出方式不需要任何聯(lián)絡(luò)(選通、握手)信號(hào),相當(dāng)于該端口在單片機(jī)與外設(shè)之間建立一個(gè)直接的數(shù)據(jù)通信, 端口A、B、C都可作為輸入或輸出口使用。應(yīng)用場(chǎng)合:無(wú)條件傳送數(shù)據(jù):默認(rèn)為傳送數(shù)據(jù)的雙方均已準(zhǔn)備好。查詢方式傳送數(shù)據(jù):可以由程序定義C口的某些位作為聯(lián)絡(luò)信號(hào)線,以配合A口、B口完成查詢方式下的數(shù)據(jù)傳送。無(wú)論是輸入還是輸出都通過(guò)應(yīng)答關(guān)系實(shí)現(xiàn), 這時(shí)端口A或B用作數(shù)據(jù)口,端口C的一部分引腳用作握手信號(hào)線與中斷請(qǐng)求線。 若端口A、B只有一個(gè)工作于方式1, 另一個(gè)端口和端口C的其它位可工作于方式0若端口A和B同時(shí)工作于方式1,端口C余下的兩

30、位還可用于傳送數(shù)據(jù)或控制信號(hào)等。A口方式1輸入組態(tài) B口方式1輸入組態(tài)A口方式1輸出組態(tài) B口方式1輸出組態(tài)wINTE:中斷允許信號(hào)wINTR:中斷請(qǐng)求信號(hào) 項(xiàng) 目 PC7PC6PC5PC4PC3PC2PC1PC0輸入方式 I/OI/OIBFASTBAINTRASTBB BIBFBINTRB輸出方式OBFAACKAI/OI/OINTRAACKBOBFBINTRB輸入選通信號(hào),有效時(shí),外設(shè)把數(shù)據(jù)送至A口或B口的輸入鎖存器輸入緩沖器滿信號(hào),有效時(shí),表示數(shù)據(jù)已送入輸入鎖存器,尚未被單片機(jī)取走。它由 信號(hào)置位,由 信號(hào)的上升沿復(fù)位。 STBRD輸出緩沖器滿信號(hào),有效時(shí),表示A口或B口已經(jīng)接收到了來(lái)自單

31、片機(jī)的數(shù)據(jù),外設(shè)可以取走該數(shù)據(jù)。它由 信號(hào)上升沿置為有效,由 的有效信號(hào)置為高電平。 WRACK外設(shè)收到輸出數(shù)據(jù)后的響應(yīng)信號(hào),有效時(shí),表示外設(shè)已經(jīng)接收到了A口或B口的數(shù)據(jù),同時(shí)置位 信號(hào)。OBF僅適用于端口A, PA7PA0作為雙向的數(shù)據(jù)總線端口C有5條引腳用作A的握手信號(hào)線和中斷請(qǐng)求線B口和C口余下的3位仍可工作于方式0或1A組方式選擇0 0 方式00 1方式11方式2端口A1輸入0輸出端口C(上半部1輸入0輸出1. 1. 方式選擇控制字方式選擇控制字 B組方式選擇0方式01方式1端口B1輸入0輸出端口C(下半部)1輸入0輸出標(biāo)志位D71D7D6D5D4D3D2D1D0D7D6D5D4D3D

32、2D1D0標(biāo)志位D70 未使用位選擇000PC0001PC1010PC2011PC3100PC4101PC5110PC6111PC70復(fù)位1置位 A口:0111 1111 1111 1100B 7FFCH B口:0111 1111 1111 1101B 7FFDH C口:0111 1111 1111 1110B 7FFEH D口:0111 1111 1111 1111B 7FFFH實(shí)例7-1:用8255A芯片擴(kuò)展MCS51單片機(jī)的并行I/O接口,由圖示可知8255A芯片A口、B口、C口和控制字寄存器的地址分別為7FFCH、7FFDH、7FFEH和7FFFH,現(xiàn)要求其3個(gè)數(shù)據(jù)端口均工作在方式0,

33、其中A口和C口的高4位作為輸出口,B口和C口的低4位作為輸入口。根據(jù)題意,A口方式0輸出:D6D5D4000 B口方式0輸入: D2D101 C口的高4位輸出: D30 C口的低4位輸出: D01因此8255A的工作方式控制字為10000011B,即83H#include#include#define addrc XBYTE0 x7FFFvoid main() addrc=0 x83; 解:根據(jù)C口按位置位/復(fù)位控制字的格式,對(duì)PC7位置0其控制字為0EH,對(duì)PC5位置1其控制字為0BH。#include#include#define addrc XBYTE0 x7FFFvoid main()

34、 addrc=0 x0E; addrc=0 x0B; 8255A工作在基本的輸入輸出方式下,A口、B口均可置為輸入方式或輸出方式,但不能既作輸入又作輸出;在工作方式0下,C口不提供固定的聯(lián)絡(luò)信號(hào),C口的高4位和低4位也可分別設(shè)置為輸入方式或輸出方式。#include#include#define addra XBYTE0 xFFF8 #define addrb XBYTE0 xFFF9 #define addrcon XBYTE0 xFFFB void main() unsigned char cdata; addrcon=0 x90; while(1) cdata=addra; addrb=

35、cdata; 小技巧:18255A的負(fù)載能力有限,因此外接I/O設(shè)備時(shí)要接總線驅(qū)動(dòng)器,本例用的是74LS240。28255A的、A1、A0分別接74LS373的Q2、Q1、Q0,則其A口、B口、控制字寄存器的地址的最后三位為000、001和011,不用地址位設(shè)為1,則地址分別為FFF8H、FFF9H、FFFBH。8255A工作在選通的輸入輸出方式下,A口、B口由編程可分別設(shè)定為輸入口或輸出口,而C口則分為兩部分,分別用作A口和B口的控制信號(hào)和同步信號(hào),為8255A與CPU或外部設(shè)備之間傳送狀態(tài)信息及中斷請(qǐng)求信號(hào)。 開(kāi)發(fā)任何一個(gè)應(yīng)用系統(tǒng),都必須以市場(chǎng)需求為前提。因此,在系統(tǒng)設(shè)計(jì)前,首先要進(jìn)行廣泛

36、的市場(chǎng)調(diào)查,了解該系統(tǒng)的市場(chǎng)應(yīng)用概況,分析系統(tǒng)當(dāng)前存在的問(wèn)題,研究系統(tǒng)的市場(chǎng)前景,確定系統(tǒng)開(kāi)發(fā)設(shè)計(jì)的目的和目標(biāo)。在此基礎(chǔ)上,再對(duì)系統(tǒng)的具體實(shí)現(xiàn)進(jìn)行規(guī)劃,包括應(yīng)該采集的信號(hào)的種類(lèi)、數(shù)量、范圍,輸出信號(hào)的匹配和轉(zhuǎn)換,控制算法的選擇,技術(shù)指標(biāo)的確定等。 在對(duì)應(yīng)用系統(tǒng)進(jìn)行總體設(shè)計(jì)時(shí),應(yīng)根據(jù)應(yīng)用系統(tǒng)提出的各項(xiàng)技術(shù)性能指標(biāo),擬訂出性價(jià)比最高的一套方案。首先,應(yīng)根據(jù)任務(wù)的繁雜程度和技術(shù)指標(biāo)要求選擇機(jī)型。選定機(jī)型后,再選擇系統(tǒng)中要用到的其它外圍元器件,如傳感器、執(zhí)行器件等。 在總體方案設(shè)計(jì)過(guò)程中,對(duì)軟件和硬件進(jìn)行分工是一個(gè)重要的環(huán)節(jié)。用硬件實(shí)現(xiàn)速度比較快,節(jié)省CPU的時(shí)間,但系統(tǒng)的硬件接線復(fù)雜、系統(tǒng)成本較高。

37、用軟件實(shí)現(xiàn)則較為經(jīng)濟(jì),但要更多地占用CPU的時(shí)間,原則上,能夠由軟件實(shí)現(xiàn)的任務(wù)就盡量用軟件來(lái)實(shí)現(xiàn),以降低成本,簡(jiǎn)化硬件結(jié)構(gòu)。如果系統(tǒng)回路多、實(shí)時(shí)性要求強(qiáng),則要考慮用硬件完成。同時(shí),還要求大致規(guī)定各接口電路的地址、軟件的結(jié)構(gòu)和功能、上下位機(jī)的通信協(xié)議、程序的駐留區(qū)域及工作緩沖區(qū)等。總體方案一旦確定,系統(tǒng)的大致規(guī)模及軟件的基本框架就確定了。 硬件的設(shè)計(jì)是根據(jù)總體設(shè)計(jì)要求,在選擇完單片機(jī)機(jī)型的基礎(chǔ)上,具體確定系統(tǒng)中所要使用的元件,并設(shè)計(jì)出系統(tǒng)的電路原理圖,經(jīng)過(guò)必要的實(shí)驗(yàn)后完成工藝結(jié)構(gòu)設(shè)計(jì)、電路板制作和樣機(jī)的組裝。主要硬件設(shè)計(jì)包括: 1)單片機(jī)電路設(shè)計(jì):主要完成時(shí)鐘電路、復(fù)位電路、供電電路的設(shè)計(jì)。 2

38、)擴(kuò)展電路和輸入/輸出通道設(shè)計(jì):主要完成程序存儲(chǔ)器、數(shù)據(jù)存儲(chǔ)器、I/O接口電路、傳感器電路、放大電路、多路開(kāi)關(guān)、A/D轉(zhuǎn)換電路、開(kāi)關(guān)量接口電路、驅(qū)動(dòng)及執(zhí)行機(jī)構(gòu)的設(shè)計(jì)。 3)控制面板設(shè)計(jì):主要完成按鍵、開(kāi)關(guān)、顯示器、報(bào)警等電路的設(shè)計(jì)。 單片機(jī)應(yīng)用系統(tǒng)的軟件設(shè)計(jì)是研制過(guò)程中任務(wù)最繁重的一項(xiàng)工作,難度也比較大。單片機(jī)應(yīng)用系統(tǒng)的軟件主要包括兩大部分:用于管理單片機(jī)微機(jī)系統(tǒng)工作的監(jiān)控程序和用于執(zhí)行實(shí)際具體任務(wù)的功能程序。對(duì)于前者,應(yīng)盡可能利用現(xiàn)成微機(jī)系統(tǒng)的監(jiān)控程序。為了適應(yīng)各種應(yīng)用的需要,許多單片機(jī)開(kāi)發(fā)系統(tǒng)的監(jiān)控軟件功能相當(dāng)強(qiáng),并附有豐富的實(shí)用子程序,可供用戶直接調(diào)用,例如鍵盤(pán)管理程序、顯示程序等。因此

39、,在設(shè)計(jì)系統(tǒng)硬件邏輯和確定應(yīng)用系統(tǒng)的操作方式時(shí),就應(yīng)充分考慮這一點(diǎn)。這樣可大大減少軟件設(shè)計(jì)的工作量,提高編程效率。后者要根據(jù)應(yīng)用系統(tǒng)的功能要求來(lái)編程序。例如,外部數(shù)據(jù)采集、控制算法的實(shí)現(xiàn)、外設(shè)驅(qū)動(dòng)、故障處理及報(bào)警程序等等。軟件設(shè)計(jì)通常采用模塊化程序設(shè)計(jì)、自頂向下的程序設(shè)計(jì)方法。 包括硬件調(diào)試和軟件調(diào)試。硬件調(diào)試的任務(wù)是排除系統(tǒng)的硬件電路故障,包括設(shè)計(jì)性錯(cuò)誤和工藝性故障。軟件調(diào)試是利用開(kāi)發(fā)工具進(jìn)行在線仿真調(diào)試,除發(fā)現(xiàn)和解決程序錯(cuò)誤外,也可以發(fā)現(xiàn)硬件故障。假設(shè)8255A連接一臺(tái)智能設(shè)備(該智能設(shè)備由89C51控制,例如打印機(jī)等),主控機(jī)U1向8255A分別傳送09,8255A接收到將該數(shù)字在智能設(shè)

40、備的數(shù)碼管中閃爍5次,如果8255A工作在方式1,請(qǐng)實(shí)現(xiàn)之。請(qǐng)單擊左圖8255A的A口PA0PA7,連接智能外部設(shè)備的8根數(shù)據(jù)線(本例是U3的P2口),作為輸出口;工作在方式1的中斷方式下,方式控制字為10100000B,即A0H;根據(jù)產(chǎn)生中斷的條件,應(yīng)先置PC6(INTEA)為1,因此,C口的控制字為0DH。#include#include#define addra XBYTE0 xFFF8#define addrcon XBYTE0 xFFFB unsigned char cword=0;void main()addrcon=0 x0D; / PC6(INTEA)置)置1,允許,允許B口中

41、斷口中斷 addrcon=0 xA0; / A口的輸出方式口的輸出方式1 IT1=0;EX1=1;EA=1; addra=cword; while(1);void isr_int1() interrupt 2 cword+; if(cword10) addra=cword; else EX1=0; /*中斷服務(wù)函數(shù):當(dāng)一個(gè)數(shù)字輸出到8255A處理完后,再將下一個(gè)數(shù)字送到8255A再進(jìn)行處理,依次類(lèi)推,直到將9送到8255A處理完成后停止傳送數(shù)據(jù)。*/ 本例中的智能設(shè)備是由89C51控制的,要把從8255A的A口收到的數(shù)據(jù)從P2口接收,再?gòu)腜1口輸出到數(shù)碼管顯示。為了配合8255A的方式1,82

42、55A的PC7連接U3(89C51)的P3.3(外部中斷1的輸入端),PC6連接U3的P3.0,當(dāng)8255A的A口接收到數(shù)據(jù),則將PC7( )變?yōu)榈碗娖?,即可向U3發(fā)出中斷請(qǐng)求,在中斷服務(wù)程序中,讀取P2的值,將P2的值顯示在數(shù)碼管上,延時(shí)一段時(shí)間后數(shù)碼管熄滅達(dá)到閃爍效果,閃爍5次完將P3.0變?yōu)榈碗娖?,?255A的PC6變?yōu)榈碗娖剑?),該引腳的低電平使 置1,當(dāng)返回主程序時(shí),置P3.0為1,則滿足INTRA為1的條件,則該信號(hào)經(jīng)非門(mén)后送到主控機(jī)U1的P3.3,產(chǎn)生外部中斷1的中斷請(qǐng)求。OBFOBFACK#includesbit P30=P30;unsigned char led=0XC0

43、,0XF9,0XA4,0XB0,0X99, 0X92,0X82,0XF8,0X80,0X90;void main() IT1=0;EX1=1;EA=1; while(1) P30=1; void int1() interrupt 2 unsigned char cword,i; int time; P2=0XFF; cword=P2; for(i=0;i0;time-); P1=0 xff; for(time=10000;time0;time-); 本例是利用89C51和數(shù)碼管虛擬一臺(tái)智能設(shè)備,例如打印機(jī),打印機(jī)內(nèi)部是由單片機(jī)控制打印頭運(yùn)動(dòng)實(shí)現(xiàn)打印功能,但在Proteus仿真軟件中無(wú)法仿真打印

44、機(jī),因此筆者設(shè)計(jì)了這樣一個(gè)虛擬的智能設(shè)備。用8255做輸出口,控制十二個(gè)發(fā)光二極管亮滅,模擬交通燈系統(tǒng)。 可由8255A的PA、PB口連接12個(gè)發(fā)光二極管,分別代表四個(gè)路口的紅、綠、黃燈,初始態(tài)為四個(gè)路口的紅燈全亮之后,東西路口的綠燈亮20秒,南北路口的紅燈亮,東西路口方向通車(chē);延時(shí)一段時(shí)間后,東西路口的綠燈熄滅,黃燈開(kāi)始閃爍,每隔0.5s閃爍1次,閃爍3次后,東西路口紅燈亮,而同時(shí)南北路口的綠燈亮20秒,南北路口方向開(kāi)始通車(chē);延時(shí)一段時(shí)間后,南北路口的綠燈熄滅,黃燈開(kāi)始閃爍,每隔0.5s閃爍1次,閃爍6次后,再切換到東西路口的綠燈亮,東西方向通車(chē);之后重復(fù)以上過(guò)程。根據(jù)本任務(wù)的要求,選用AT

45、89S51,配備晶振電路和復(fù)位電路,晶振頻率為12MHz,四個(gè)路口的紅、綠、黃交通燈由8255A控制。為了方便線路連接,8255的PA的低6位分別接西、北路口的紅、黃、綠燈(發(fā)光二極管,采用共陽(yáng)極的連接方式),PB口的低6位分別接?xùn)|、南路口的紅、黃、綠燈,設(shè)計(jì)的原理圖如圖所示。請(qǐng)單擊左圖 參考任務(wù)5中的有關(guān)知識(shí),各路口的燈亮的規(guī)律與PA、PB口的取值有關(guān)系到,其規(guī)律如表所示。規(guī)規(guī) 律律PB5PB5PB4PB4PB3PB3PB2PB2PB1PB1PB0PB0PA5PA5PA4PA4PA3PA3PA2PA2PA1PA1PA0PA0十六十六進(jìn)制進(jìn)制數(shù)數(shù)東東綠綠東東黃黃東東紅紅南南綠綠南南黃黃南南紅紅

46、西西綠綠西西黃黃西西紅紅北北綠綠北北黃黃北北紅紅紅燈全亮紅燈全亮1 11 10 01 11 10 01 11 10 01 11 10 00 x360 x36東西綠燈亮東西綠燈亮, ,南北紅燈亮南北紅燈亮0 01 11 11 11 10 00 01 11 11 11 10 00 x1E0 x1E東西黃燈亮東西黃燈亮, ,南北紅燈亮南北紅燈亮1 10 01 11 11 10 01 10 01 11 11 10 00 x2E0 x2E東西紅燈亮東西紅燈亮, ,南北綠燈亮南北綠燈亮1 11 10 00 01 11 11 11 10 00 01 11 10 x330 x33東西紅燈亮東西紅燈亮, ,南北黃燈亮南北黃燈亮1 11 10 01 10 01 11 11 10 01 10 01 10 x350 x35本任務(wù)涉及兩個(gè)定時(shí)時(shí)間,一是每個(gè)路口的綠燈亮20s,另一個(gè)是黃燈閃

溫馨提示

  • 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)論