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