客车载客计数器设计
1、设计一个设计器用以统计客车人数。
2、乘客的上下车检测用按键代替,其中上车按键每按下一次表示上车1人,下车按键每按下一次表示下车1人。
3、通过2位数码管显示车内乘客数。
4、当乘客数大于10人时,红色报警灯闪烁。
电路原理图如下:
单片机源程序如下:
代码:
- #include <reg51.h>
- nnsigned char code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
- sbit K1=P3^0;
- sbit K2=P3^1;
- sbit LED_led=P1^7;
- sbit A1=P2^0;
- sbit B1=P2^1;
- sbit buzz=P3^7;
- unsigned char cos=0,shi=0;
- int num=0;
- /*延时函数*/
- void delay(int i)
- {
- int x,y;
- for(x=0;x<i;x++)
- for(y=0;y<120;y++);
- }
- /*按键控制子函数*/
- void key()
- {
- if(K1==0)
- {
- delay(500);
- num=num+1;
- if(num>99)
- num=0;
- }
- if(K2==0)
- {
- delay(500);
- num=num-1;
- if(num<0)
- num=0;
- }
- }
- /*数码管显示函数*/
- void display()
- {
- A1=0;
- B1=0;
- cos=num%10;//个位
- shi=num/10;//十位
-
- B1=1;
- P0=tab[cos];
- delay(10);
- B1=0;
- A1=1;
- P0=tab[shi];
- delay(10);
- A1=0;
-
- }
- /*主函数*/
- void main()
- {
- LED_led=1;
- while(1)
- {
- key();
- display();
- if(num>10)
- {
- LED_led=0;
- buzz=0;
- delay(10);
- LED_led=1;
-
- }
- else
- {
- LED_led=1;
- buzz=1;
- }
- }
- }