【51单片机】【protues仿真】基于51单片机停车场的车位管理系统

发布于:2025-09-10 ⋅ 阅读:(20) ⋅ 点赞:(0)

目录

一、主要功能

二、使用步骤

三、硬件资源

四、软件设计

五、实验现象

一、主要功能

1、LCD1602液晶显示
2、统计并显示停车场现有车辆数和已停放过车辆数
3、按键设置总车位数以及剩余车位数
4、统计并显示累计驶入和累计驶出车辆数
5、用16个LED灯模拟停车位
6、车位停满报警

二、使用步骤

基于51单片机的停车场车位管理系统,显示模块显示当前车位信息,步进电机和led指示灯模拟车进入或出去停车场的状态改变。

三、硬件资源

1、51单片机核心模块
2、按键模块
3、红外对管模块、步进电机模块
4、蜂鸣器模块
5、LED指示灯模块
6、LCD1602显示模块

四、软件设计

#include <reg52.h>            
#define uchar unsigned char  
#define uint  unsigned int   
#include <intrins.h>
#include "lcd1602.h"

sbit K1=P1^0;
sbit K2=P1^1;

sbit K3=P1^2;
sbit K4=P1^3;

sbit beep = P1^7;   //蜂鸣器IO口定义
sbit LED=P3^4;
sbit SH = P3^5;
sbit ST = P3^6;
sbit DS = P3^7;

uchar num_jin;
uchar num_chu;
uchar num_car;
uchar code zz[]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};  
uchar code fz[]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01};   
     
void motor_ting();


/***********************1ms延时函数*****************************/
void delay_1ms(uint q)
{
    uint i,j;
    for(i=0;i<q;i++)
        for(j=0;j<120;j++);
}

void write_74hc595(unsigned int num)
{
    int i;    
    ST = 0;
    for(i=0; i<16; i++)
    {
        SH = 0;
        if (num & 0x0001)
        {
            DS = 1;
        }
        else
        {
            DS = 0;
        }
        SH = 1;
        num >>= 1;
    }
    ST = 1;
}

void key()     //独立按键程序
{
    if(!K1)         
      {
        delay_1ms(20);
        if(!K1)
         {
         while(!K1); 
               if(num_car==16)    
                 { 
                     beep=0;     
                     delay_1ms(1000); 
                     delay_1ms(1000); 
                     delay_1ms(1000);                          
                     beep=1;
                 }
                 if(num_car<16)     
                 { 
                        num_car++; 
                      motor_zz(1);//步进电机启动开闸门
                    motor_ting();//开启停留时间
                        motor_fz(1);//步进电机启动关闸门             
                        if(num_jin<=255) 
                        { 
                            num_jin++;
                        }  
                 }
                 write_sfm2(1,4,num_jin); 
               write_sfm2(1,12,num_chu);  
                 write_sfm2(2,4,num_car); 
                 write_sfm2(2,12,16-num_car);  
                 write_74hc595(num_2_led(num_car));
          }
    }    
    if(!K2)         
{
        delay_1ms(20);
        if(!K2)
          {
        while(!K2);
                motor_zz(1);
        if(num_car>=1) 
       {    
                    num_car--;  
                    motor_zz(1);//步进电机启动开闸门
                    motor_ting();//开启停留时间
                    motor_fz(1);//步进电机启动关闸门    
          if(num_chu<=255) 
         {   
           num_chu++;
         }  
        }    
            write_sfm2(1,4,num_jin); 
              write_sfm2(1,12,num_chu);  
              write_sfm2(2,4,num_car); 
            write_sfm2(2,12,16-num_car);  
              write_74hc595(num_2_led(num_car));
          }
    }       
}            

/***************主函数*****************/
void main()
{
      LED=0; 
    init_1602();
    write_string(1,0,"Jin:    Chu:");
    write_string(2,0,"Car:      P:");
    write_sfm2(1,4,num_jin); 
    write_sfm2(1,12,num_chu);  
    write_sfm2(2,4,num_car); 
    write_sfm2(2,12,16-num_car);  
    write_74hc595(0);
    while(1)
    {
      key();                    //独立按键程序
    }
}
 

五、实验现象

演示视频:


网站公告

今日签到

点亮在社区的每一天
去签到