新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > PIC单片机C语言程序设计(13)

PIC单片机C语言程序设计(13)

作者:时间:2013-02-05来源:网络收藏

1. 硬件电路和功能

  (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从十余只到数十只不等,所以对于所有外接有高亮度LED的I/O 口,我们都增加了功率管输出驱动接1:3电路,且外接高亮度LED数量不同(即电流大小的不同),驱动电路亦有所不同。

  (2)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所示的可控制自行车动态显示的图形。该电路工作时,通过控制排列在自行车车轮上的LED分时亮灭,来使人看到好象自行车在转动似的图像, 以提示人或非机动车可以通行。

  ④ 管理圆形绿色高亮LED的端口位。

  利用RB4和RB5外接的单向可控硅SCR3及V3等相关电路,控制如图56所示的绿色高亮LED圆形指示灯,以提示运行机动车通行。

  ⑤ 管理圆形红色高亮LED的端口位。

  利用RB6和RB7外接的单向可控硅SCR4及V4等相关电路,控制如图56所示的红色高亮LED圆形指示灯,以提示禁止机动车通行。

  需要说明的是, 图56中的圆形图案是红、绿灯共用的。布线时,应将红、绿色高亮LED相间排列,利用程序,控制红、绿灯LED分时显示即可。

  上述各I/O 口的工作,全部受软件(程序)控制。由程序按照各交通路口的规范,控制各高亮LED指示灯图案分时工作,使交通路口的行人、车辆安全有序地通行。

  2.C语言程序流程图和C程序

  按照图57所示电路,我们可以绘制出城市交通路口直行方向的红、绿灯显示C语言程序流程如图58所示。横行方向的红、绿灯显示C语言程序流程与之相同。此流程图可为大家编辑C语言程序提供思路。

图58



评论


相关推荐

技术专区

关闭