登录|立即注册|使用QQ帐号登录
论坛 > 51单片机
发帖|
看1696|回0|收藏
楼主 ID:1020560 只看他
2022-4-22 20:43
客车载客计数器设计
1、设计一个设计器用以统计客车人数。
2、乘客的上下车检测用按键代替,其中上车按键每按下一次表示上车1人,下车按键每按下一次表示下车1人。
3、通过2位数码管显示车内乘客数。
4、当乘客数大于10人时,红色报警灯闪烁。

电路原理图如下:
20220422204054.png
单片机源程序如下:

代码:

  1. #include <reg51.h>
  2. nnsigned char code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
  3. sbit K1=P3^0;
  4. sbit K2=P3^1;
  5. sbit LED_led=P1^7;
  6. sbit A1=P2^0;
  7. sbit B1=P2^1;
  8. sbit buzz=P3^7;

  9. unsigned char cos=0,shi=0;
  10. int num=0;
  11. /*延时函数*/
  12. void delay(int i)
  13. {
  14. int x,y;
  15. for(x=0;x<i;x++)
  16. for(y=0;y<120;y++);  
  17. }
  18. /*按键控制子函数*/
  19. void key()
  20. {
  21.     if(K1==0)
  22.     {
  23.           delay(500);
  24.           num=num+1;
  25.           if(num>99)
  26.           num=0;
  27.         }
  28.         if(K2==0)
  29.         {
  30.           delay(500);
  31.           num=num-1;
  32.           if(num<0)
  33.           num=0;
  34.         }
  35. }
  36. /*数码管显示函数*/
  37. void display()
  38. {

  39.         A1=0;
  40.         B1=0;
  41.     cos=num%10;//个位
  42.         shi=num/10;//十位
  43.         

  44.         B1=1;
  45.     P0=tab[cos];
  46.     delay(10);
  47.         B1=0;

  48.         A1=1;
  49.         P0=tab[shi];
  50.         delay(10);
  51.         A1=0;
  52.         
  53. }
  54. /*主函数*/
  55. void main()
  56. {
  57.   LED_led=1;
  58.   while(1)
  59.   {
  60.      key();
  61.          display();
  62.          if(num>10)
  63.          {
  64.            LED_led=0;
  65.            buzz=0;
  66.            delay(10);
  67.            LED_led=1;
  68.          
  69.          }
  70.          else
  71.          {
  72.            LED_led=1;
  73.            buzz=1;
  74.          }
  75.   }
  76. }


51黑电子论坛

Powered by Discuz! X3.1

首页|标准版|触屏版|电脑版