|
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei.png (60.36 KB, 下載次數(shù): 60)
下載附件
2021-4-28 21:27 上傳
51hei.png (42.93 KB, 下載次數(shù): 45)
下載附件
2021-4-28 21:28 上傳
51hei.png (20.69 KB, 下載次數(shù): 53)
下載附件
2021-4-28 21:28 上傳
單片機(jī)源程序如下:
- #include <reg52.h> //調(diào)用單片機(jī)頭文件
- #define uchar unsigned char //無符號字符型 宏定義 變量范圍0~255
- #define uint unsigned int //無符號整型 宏定義 變量范圍0~65535
- #include <intrins.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;
- sbit DCMOTOR=P3^3; //L298電機(jī)驅(qū)動控制引腳
- 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 DCmotorOpen();
- void DCmotorClose();
- void motor_ting(uint n);
- #include "lcd1602.h"
- /***********************1ms延時函數(shù)*****************************/
- void delay_1ms(uint q)
- {
- uint i,j;
- for(i=0;i<q;i++)
- for(j=0;j<120;j++);
- }
- /****步進(jìn)電機(jī)驅(qū)動模塊****/
- void delay(uint ms)
- {
- uint t;
- while(ms--)
- for(t=0;t<120;t++);
- }
- void motor_zz(uint n)
- {
- uint i,j;
- for(i=0;i<5*n;i++)
- {
- for(j=0;j<8;j++)
- {
- P2=zz[j];
- LED=1;
- delay(20);
- }
- }
- }
- void motor_fz(uint n)
- {
- uint i,j;
- for(i=0;i<5*n;i++)
- {
- for(j=0;j<8;j++)
- {
- P2=fz[j];
- LED=0;
- delay(20);
- }
- }
- }
- void motor_ting(uint n)
- {
- P2=0x00;
- delay(2000);
- }
- 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;
- }
- unsigned int num_2_led(unsigned int num)
- {
- int i;
- unsigned int ret=0;
- if (num >= 16)
- return 0xFFFF;
- for(i=0;i<num;i++)
- {
- ret |= 1<<i;
- }
- return ret;
- }
- void key() //獨(dú)立按鍵程序
- {
- if(!K1) // 汽車進(jìn)入
- {
- delay_1ms(20);
- if(!K1)
- {
- while(!K1);
- motor_zz(1);//步進(jìn)電機(jī)啟動開閘門
- motor_ting(2);
- if(num_car==16)
- {
- beep=0; delay_1ms(200); beep=1;
- }
- if(num_car<16)
- {
- num_car++;
- motor_fz(1);//步進(jìn)電機(jī)啟動開閘門
- if(num_car>=6)
- {
- DCmotorOpen();
- }
- 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);
- motor_ting(2);
- if(num_car>=1)
- {
- num_car--;
- 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));
- }
- }
- /***********************手動修改小區(qū)內(nèi)停車位*************************************/
- if(!K3) // 人工調(diào)節(jié)
- {
- delay_1ms(20);
- if(!K3)
- {
- while(!K3);
- if(num_car<16)
- {
- num_car++;
- }
- 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);
- }
- }
- if(!K4) // // 人工調(diào)節(jié)
- {
- delay_1ms(20);
- if(!K4)
- {
- while(!K4);
- if(num_car>=1)
- {
- num_car--;
- }
- 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);
- }
- }
- }
- void DCmotorOpen()
- {
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
滿分51hei設(shè)計單片機(jī)的停車場車位管理系統(tǒng).7z
(3.09 MB, 下載次數(shù): 219)
2021-4-28 17:24 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
|