新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > PIC單片機C語言程序設計(13)

PIC單片機C語言程序設計(13)

作者: 時間:2013-02-05 來源:網(wǎng)絡 收藏

1. 硬件電路和功能

 ?。?)硬件電路

  按照上述交通路口紅綠燈指示圖案顯示的要求。用PIC16F877設計的硬件電路如圖57所示。

圖57

  從圖57可知,PIC16F877有40個引腳,其I/O口比PIC16F84A多,完全可以滿足分時顯示上述交通指示圖案的要求。

  需要說明的是,我們在前面的連載文章中介紹程序時,都是以1 8腳的PlC16F84A單片機為例的,通過本實例大家會看到。只要熟悉了PlC16F84A。會很容易掌握其他多引腳的使用方法的。

  由于I/O端1:3每一位的輸出電流有限, 即≤ 20mA, 且PORTA、PORTB和PORTE口輸出電流的總和不得大于200mA,PORTC和PORTD 口輸出電流的總和亦不得大于200mA,而從圖57可以看出,PIC16F877單片機的PORTB的PB0~PB7口和PC0、PC1口外接的高亮度LED從十余只到數(shù)十只不等,所以對于所有外接有高亮度LED的I/O 口,我們都增加了功率管輸出驅(qū)動接1:3電路,且外接高亮度LED數(shù)量不同(即電流大小的不同),驅(qū)動電路亦有所不同。

 ?。?)PIC16F877端口功能位分配

 ?、?管理手掌形紅色高亮LED指示燈的端口位。

  利用PIC16F877的RB0位。外接單向可控硅SCR1(2A)和多個紅色高亮LED (通過布線使多個LED組成圖55a所示的手掌圖形),采用靜止顯示方式。通常,組成交通燈的手掌圖形大約需要·60只~7O只LED,在我們的設計中,RB0口外接的SCR1回路可接多達100只高亮LED。足以滿足設計要求。而RB1位則外接一只PNP型功率三極管V1(2A)和限流電阻R0、偏置電阻R1,組成+24V開關電路,由C程序控制RB0口和RB1 1:3同步定時工作,通過V1的導通或截止來控制是否為SCR1提供+24V工作電壓,從而達到令SCR1回路中的紅色高亮LED定時點亮或關閉的目的。

 ?、?管理仿人形綠色高亮LED指示燈的端13位。

  利用PIC16F877的RB2位,外接單向可控硅SCR2(2A)和多個紅色高亮LED(通過布線使多個LED組成圖55b所示的仿人形圖形),采用靜止顯示方式。組成該圖形大約需要70只LED。而RB3位則外接一只PNP型功率三極管V2(2A)和電阻R2、R3,組成+24V開關電路。

  該電路的工作模式與前面介紹的手掌形指示燈完全相似,此處不再贅述。

 ?、?管理仿自行車形綠色高亮LED指示燈的端口位。

  利用RC0、RC1~RC7位, 外接NPN型功率三極管V5~V1 2和若干綠色高亮LED(通過布線使之組成圖55c所示的可控制自行車動態(tài)顯示的圖形。該電路工作時,通過控制排列在自行車車輪上的LED分時亮滅,來使人看到好象自行車在轉(zhuǎn)動似的圖像, 以提示人或非機動車可以通行。

 ?、?管理圓形綠色高亮LED的端口位。

  利用RB4和RB5外接的單向可控硅SCR3及V3等相關電路,控制如圖56所示的綠色高亮LED圓形指示燈,以提示運行機動車通行。

 ?、?管理圓形紅色高亮LED的端口位。

  利用RB6和RB7外接的單向可控硅SCR4及V4等相關電路,控制如圖56所示的紅色高亮LED圓形指示燈,以提示禁止機動車通行。

  需要說明的是, 圖56中的圓形圖案是紅、綠燈共用的。布線時,應將紅、綠色高亮LED相間排列,利用程序,控制紅、綠燈LED分時顯示即可。

  上述各I/O 口的工作,全部受軟件(程序)控制。由程序按照各交通路口的規(guī)范,控制各高亮LED指示燈圖案分時工作,使交通路口的行人、車輛安全有序地通行。

  2.C語言程序流程圖和C程序

  按照圖57所示電路,我們可以繪制出城市交通路口直行方向的紅、綠燈顯示C語言程序流程如圖58所示。橫行方向的紅、綠燈顯示C語言程序流程與之相同。此流程圖可為大家編輯C語言程序提供思路。

圖58



評論


相關推薦

技術專區(qū)

關閉