PIC單片機(jī)C語(yǔ)言程序設(shè)計(jì)(13)
1. 硬件電路和功能
?。?)硬件電路
按照上述交通路口紅綠燈指示圖案顯示的要求。用PIC16F877設(shè)計(jì)的硬件電路如圖57所示。
圖57
從圖57可知,PIC16F877有40個(gè)引腳,其I/O口比PIC16F84A多,完全可以滿足分時(shí)顯示上述交通指示圖案的要求。
需要說(shuō)明的是,我們?cè)谇懊娴倪B載文章中介紹C語(yǔ)言程序時(shí),都是以1 8腳的PlC16F84A單片機(jī)為例的,通過(guò)本實(shí)例大家會(huì)看到。只要熟悉了PlC16F84A。會(huì)很容易掌握其他多引腳PIC單片機(jī)的使用方法的。
由于PIC單片機(jī)I/O端1:3每一位的輸出電流有限, 即≤ 20mA, 且PORTA、PORTB和PORTE口輸出電流的總和不得大于200mA,PORTC和PORTD 口輸出電流的總和亦不得大于200mA,而從圖57可以看出,PIC16F877單片機(jī)的PORTB的PB0~PB7口和PC0、PC1口外接的高亮度LED從十余只到數(shù)十只不等,所以對(duì)于所有外接有高亮度LED的I/O 口,我們都增加了功率管輸出驅(qū)動(dòng)接1:3電路,且外接高亮度LED數(shù)量不同(即電流大小的不同),驅(qū)動(dòng)電路亦有所不同。
?。?)PIC16F877端口功能位分配
① 管理手掌形紅色高亮LED指示燈的端口位。
利用PIC16F877的RB0位。外接單向可控硅SCR1(2A)和多個(gè)紅色高亮LED (通過(guò)布線使多個(gè)LED組成圖55a所示的手掌圖形),采用靜止顯示方式。通常,組成交通燈的手掌圖形大約需要·60只~7O只LED,在我們的設(shè)計(jì)中,RB0口外接的SCR1回路可接多達(dá)100只高亮LED。足以滿足設(shè)計(jì)要求。而RB1位則外接一只PNP型功率三極管V1(2A)和限流電阻R0、偏置電阻R1,組成+24V開(kāi)關(guān)電路,由C程序控制RB0口和RB1 1:3同步定時(shí)工作,通過(guò)V1的導(dǎo)通或截止來(lái)控制是否為SCR1提供+24V工作電壓,從而達(dá)到令SCR1回路中的紅色高亮LED定時(shí)點(diǎn)亮或關(guān)閉的目的。
?、?管理仿人形綠色高亮LED指示燈的端13位。
利用PIC16F877的RB2位,外接單向可控硅SCR2(2A)和多個(gè)紅色高亮LED(通過(guò)布線使多個(gè)LED組成圖55b所示的仿人形圖形),采用靜止顯示方式。組成該圖形大約需要70只LED。而RB3位則外接一只PNP型功率三極管V2(2A)和電阻R2、R3,組成+24V開(kāi)關(guān)電路。
該電路的工作模式與前面介紹的手掌形指示燈完全相似,此處不再贅述。
③ 管理仿自行車形綠色高亮LED指示燈的端口位。
利用RC0、RC1~RC7位, 外接NPN型功率三極管V5~V1 2和若干綠色高亮LED(通過(guò)布線使之組成圖55c所示的可控制自行車動(dòng)態(tài)顯示的圖形。該電路工作時(shí),通過(guò)控制排列在自行車車輪上的LED分時(shí)亮滅,來(lái)使人看到好象自行車在轉(zhuǎn)動(dòng)似的圖像, 以提示人或非機(jī)動(dòng)車可以通行。
?、?管理圓形綠色高亮LED的端口位。
利用RB4和RB5外接的單向可控硅SCR3及V3等相關(guān)電路,控制如圖56所示的綠色高亮LED圓形指示燈,以提示運(yùn)行機(jī)動(dòng)車通行。
⑤ 管理圓形紅色高亮LED的端口位。
利用RB6和RB7外接的單向可控硅SCR4及V4等相關(guān)電路,控制如圖56所示的紅色高亮LED圓形指示燈,以提示禁止機(jī)動(dòng)車通行。
需要說(shuō)明的是, 圖56中的圓形圖案是紅、綠燈共用的。布線時(shí),應(yīng)將紅、綠色高亮LED相間排列,利用C語(yǔ)言程序,控制紅、綠燈LED分時(shí)顯示即可。
上述各I/O 口的工作,全部受軟件(C語(yǔ)言程序)控制。由程序按照各交通路口的規(guī)范,控制各高亮LED指示燈圖案分時(shí)工作,使交通路口的行人、車輛安全有序地通行。
2.C語(yǔ)言程序流程圖和C程序
按照?qǐng)D57所示電路,我們可以繪制出城市交通路口直行方向的紅、綠燈顯示C語(yǔ)言程序流程如圖58所示。橫行方向的紅、綠燈顯示C語(yǔ)言程序流程與之相同。此流程圖可為大家編輯C語(yǔ)言程序提供思路。
圖58
評(píng)論