久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
基于51單片機的自動停車裝置程序(自行車)
[打印本頁]
作者:
AmbitionXN
時間:
2019-6-9 22:18
標題:
基于51單片機的自動停車裝置程序(自行車)
參加比賽的作品,智能停車裝置,實物圖片沒了。只剩下程序了
單片機源程序如下:
#include"key.h"
#include"12864.h"
#include"delay.h"
#include"bjdj.h"
#define uchar unsigned char
#define uint unsigned int
unsigned char TL0_temp; /*暫存TL0的初值*/
unsigned char TH0_temp,count; /*暫存TH0的初值*/
#define CRY_FREQUENCY 11059200 /*CRY_FREQUENCY為晶振頻率,單位為Hz*/
#define INT_CLOCK 100 /*INT_CLOCK為定時值,單位為ms ,此處定義為10ms*/
uchar nmm[6]; //每次MCU采集到的密碼輸入
uchar wei,key;
unsigned char count1,count2,jd1,jd2; //0.5ms次數標識
uchar tcw1[6]={0,0,0,0,0,0};
uchar tcw2[6]={0,0,0,0,0,0};
uchar tcw3[6]={0,0,0,0,0,0};
uchar tcw4[6]={0,0,0,0,0,0};
uchar tcw5[6]={0,0,0,0,0,0};
uchar tcw6[6]={0,0,0,0,0,0};
uchar tcw[6]={0,0,0,0,0,0};
bit allow,genggai,ok,wanbi,retry,close,cbw; //各個狀態位
uchar global_state = 0;
uchar count_num = 0; //輸入的數字個數
sbit dula=P2^6;
sbit pwm1=P1^1;
sbit pwm2=P1^2;
sbit wela = P2^7; //代表鎖控的繼電器IO 高電平關鎖,低電平開鎖
//sbit LEDRED = P3^3; //代表密碼輸入錯誤的紅燈IO 高電平熄滅,低電平點亮
//sbit LEDGREEN = P3^4; //代表密碼輸入正確的綠燈IO 高電平熄滅,低電平點亮
uchar genPasswd[6]; //存儲生成的四位隨機數密碼
uchar inpPasswd[6]; //存儲取包時輸入的四位密碼
void Timer0_init()
{
unsigned long T0_temp; /*暫存T0的初始值 */
T0_temp = 65536-((INT_CLOCK *CRY_FREQUENCY /1000)/12); /*T0初始值計算公式,參考教科書*/
TL0_temp = T0_temp & 0xff;
TH0_temp = T0_temp >> 8;
TL0 = TL0_temp;
TH0 = TH0_temp;
TMOD |= 0x01;
TR0 = 1; /*開定時器0中斷*/
ET0 = 1;
EA = 1; /*開總中斷*/
}
void Time1_Init()
{
TMOD |= 0x10;
ET1=1;
TH1 = 0x0FF;
TL1 = 0x0A4;
TR1=1;
}
void main()
{
uchar i,z,bl,b2;
uint passwd;
uchar tcwa,tcwb,tcwc,tcwd,tcwe,tcwf,tcwz;
uchar key_value = 0;
uchar temp_key_value = 0xff;
jd1=13;
jd2=30;
count1=0;
count2=0;
xa=0;
xb=0;
xc=0;
xd=0;
ya=0;
yb=0;
yc=0;
yd=0;
Timer0_init(); //定時器初始化
Time1_Init();
lcd_init(); //LCD12864初始化
while(1) //進入不斷循環
{
temp_key_value = Calkey_scan(); //讀取矩陣按鍵的鍵值
if(temp_key_value != 0xff)
{
key_value = temp_key_value;
}
switch(global_state)
{
case 0: //初始化狀態
display(2,1," 歡迎使用 "); //顯示歡迎語句 -- "welcome"
display(3,1,"自行車智能停車庫");
for(i = 0;i < 6;i++)
inpPasswd[i] = ' '; //清除剛剛輸入的密碼
if(key_value == 13) //存包按鍵被按下
{
key_value = 0xff; //將按鍵值清除
// Lock = 0; //開鎖
for(i=0;i<6;i++)
{
if(tcw[i]==0) break;
}
passwd =TL0; //采用定時器寄存器的值作為密碼
genPasswd[0] = passwd%100/10+0X30; //存儲密碼
genPasswd[1] = passwd%10+0X30;
passwd =TL0; //采用定時器寄存器的值作為密碼
genPasswd[2] = passwd%100/10+0X30;
genPasswd[3] = passwd%10+0X30;
passwd =TH0; //采用定時器寄存器的值作為密碼
genPasswd[4] = passwd%100/10+0X30;
genPasswd[5] = passwd%10+0X30;
write_com(0x01);
delay_ms(5);
switch(i)
{
case 0: for(z=0;z<6;z++)
{
tcw1[z]=genPasswd[z];
}
tcw[i]=1+0x30;
global_state = 1; //切換運行狀態
bl=1;
break;
case 1: for(z=0;z<6;z++)
{
tcw2[z]=genPasswd[z];
}
tcw[i]=1+0x30;
global_state = 1; //切換運行狀態
bl=2;
break;
case 2: for(z=0;z<6;z++)
{
tcw3[z]=genPasswd[z];
}
tcw[i]=1+0x30;
global_state = 1; //切換運行狀態
bl=3;
break;
case 3: for(z=0;z<6;z++)
{
tcw4[z]=genPasswd[z];
}
tcw[i]=1+0x30;
global_state = 1; //切換運行狀態
bl=4;
break;
case 4: for(z=0;z<6;z++)
{
tcw5[z]=genPasswd[z];
}
tcw[i]=1+0x30;
global_state = 1; //切換運行狀態
bl=5;
break;
case 5: for(z=0;z<6;z++)
{
tcw6[z]=genPasswd[z];
}
tcw[i]=1+0x30;
global_state = 1; //切換運行狀態
bl=6;
break;
case 6: display(2,3,"車位已滿");
global_state = 0;
delay_ms(1900);
break;
}
//display(1,1,"正在停車"); //顯示關門提示語 -- "正在停車"
//delay_ms(1900); //等待關門 大約3秒
// Lock = 1; //關門
}
if(key_value == 14) //取包按鍵被按下
{
key_value = 0xff; //將按鍵值清除
global_state = 2; //切換運行狀態
count_num = 0; //清除數字按鍵變量
write_com(0x01);
delay_ms(5);
display(2,2,"請輸入密碼"); //顯示輸入密碼界面
//display(2,1," ");
for(i = 0;i < 6;i++) //清空輸入的密碼數組
inpPasswd[i] = ' ';
}
break;
case 1: //密碼生成狀態
write_com(0x01);
delay_ms(5);
display(2,2,"請牢記密碼"); //顯示密碼生成界面Passwd
display(3,3,genPasswd);
switch(bl)
{
case 3: jd1=10;
jd2=33;
zuobiaojy(140);
gaodu2(35);
zuobiaox(92);
gaodu1(35);
jd1=21;
jd2=22;
gaodu2(35);
zuobiaojx(92);
jd1=13;
jd2=30;
gaodu1(35);
zuobiaoy(142);
break;
case 4: jd1=10;
jd2=33;
zuobiaojy(132);
gaodu2(35);
zuobiaojx(88);
gaodu1(35);
jd1=21;
jd2=22;
gaodu2(35);
zuobiaox(88);
jd1=13;
jd2=30;
gaodu1(35);
zuobiaoy(132);
break;
case 1: jd1=10;
jd2=33;
zuobiaojy(137);
gaodu2(150);
zuobiaox(95);
gaodu1(27);
jd1=21;
jd2=22;
gaodu2(27);
zuobiaojx(95);
jd1=13;
jd2=30;
gaodu1(150);
zuobiaoy(190);
break;
case 2: jd1=10;
jd2=33;
zuobiaojy(125);
gaodu2(148);
zuobiaojx(93);
gaodu1(23);
jd1=21;
jd2=22;
gaodu2(23);
zuobiaox(93);
jd1=13;
jd2=30;
gaodu1(148);
zuobiaoy(180);
break;
case 5: jd1=10;
jd2=33;
zuobiaojy(394);
gaodu2(148);
zuobiaojx(88);
gaodu1(23);
jd1=21;
jd2=22;
gaodu2(23);
zuobiaox(88);
jd1=13;
jd2=30;
gaodu1(148);
zuobiaoy(394);
break;
case 6: jd1=10;
jd2=33;
zuobiaojy(394);
gaodu2(148);
zuobiaojx(88);
gaodu1(23);
jd1=21;
jd2=22;
gaodu2(23);
zuobiaox(88);
jd1=13;
jd2=30;
gaodu1(148);
zuobiaoy(394);
break;
}
bl=0;
write_com(0x01);
delay_ms(5);
global_state = 0; //返回到初始界面
break;
case 2: //輸入密碼狀態
display(3,3,inpPasswd); //顯示輸入密碼界面
if((key_value >= 0) && (key_value <= 9)) //如果按下的為0-9的數字按鍵
{
if(count_num <= 5) //如果按鍵次數小于6次
{
inpPasswd[count_num] = key_value+0X30; //將按鍵值存入數組,并顯示
count_num++;
}
key_value = 0xff; //將按鍵值清除
}
if(key_value == 15) //清除按鍵被按下
{
key_value = 0xff; //將按鍵值清除
count_num=0;
for(i = 0;i < 6;i++)
inpPasswd[i] = ' '; //清除剛剛輸入的密碼
}
if(key_value == 16) //確認按鍵被按下
{
key_value = 0xff; //將按鍵值清除
for(tcwa = 0;tcwa < 6;tcwa++) //判斷密碼是否正確,判斷車輛位置
{
if(tcw1[tcwa] != inpPasswd[tcwa])
break;
}
for(tcwb = 0;tcwb < 6;tcwb++)
{
if(tcw2[tcwb] != inpPasswd[tcwb])
break;
}
for(tcwc = 0;tcwc < 6;tcwc++)
{
if(tcw3[tcwc] != inpPasswd[tcwc])
break;
}
for(tcwd = 0;tcwd < 6;tcwd++)
{
if(tcw4[tcwd] != inpPasswd[tcwd])
break;
}
for(tcwe = 0;tcwe < 6;tcwe++)
{
if(tcw5[tcwe] != inpPasswd[tcwe])
break;
}
for(tcwf = 0;tcwf < 6;tcwf++)
{
if(tcw6[tcwf] != inpPasswd[tcwf])
break;
}
write_com(0x01);
delay_ms(5);
if(tcwa==6)
{
tcwz=1;
tcw[1]=0;
display(2,1,"一號車位已出車 ");
b2=1;
}
if(tcwb==6)
{
tcwz=2;
tcw[2]=0;
display(2,1,"二號車位已出車 ");
b2=2;
}
if(tcwc==6)
{
tcwz=3;
tcw[3]=0;
display(2,1,"三號車位已出車 ");
b2=3;
}
if(tcwd==6)
{
tcwz=4;
tcw[4]=0;
display(2,1,"四號車位已出車 ");
b2=4;
}
if(tcwe==6)
{
tcwz=5;
tcw[5]=0;
display(2,1,"五號車位已出車 ");
b2=5;
}
if(tcwf==6)
{
tcwz=6;
tcw[6]=0;
display(2,1,"六號車位已出車 ");
b2=6;
}
if(tcwz==0)
{
display(2,3,"密碼錯誤");
delay_ms(2000);
}
switch(b2)
{
case 3:
zuobiaojy(140);
gaodu2(35);
jd1=21;
jd2=22;
zuobiaox(92);
gaodu1(35);
jd1=10;
jd2=33;
gaodu2(35);
zuobiaojx(92);
gaodu1(35);
zuobiaoy(142);
jd1=13;
jd2=30;
break;
case 4:
zuobiaojy(132);
gaodu2(35);
jd1=21;
jd2=22;
zuobiaojx(88);
gaodu1(35);
jd1=10;
jd2=33;
gaodu2(35);
zuobiaox(88);
gaodu1(35);
zuobiaoy(132);
jd1=13;
jd2=30;
break;
case 1: zuobiaojy(137);
gaodu2(150);
jd1=21;
jd2=22;
zuobiaox(95);
gaodu1(27);
jd1=10;
jd2=33;
gaodu2(27);
zuobiaojx(95);
gaodu1(150);
zuobiaoy(190);
jd1=13;
jd2=30;
break;
case 2:
zuobiaojy(125);
gaodu2(148);
jd1=21;
jd2=22;
zuobiaojx(93);
gaodu1(23);
jd1=10;
jd2=33;
gaodu2(23);
zuobiaox(93);
gaodu1(148);
zuobiaoy(180);
jd1=13;
jd2=30;
break;
case 5:
zuobiaojy(394);
gaodu2(148);
jd1=21;
jd2=22;
zuobiaojx(88);
gaodu1(23);
jd1=10;
jd2=33;
gaodu2(23);
zuobiaox(88);
gaodu1(148);
zuobiaoy(394);
jd1=13;
jd2=30;
break;
case 6:
zuobiaojy(394);
gaodu2(148);
jd1=21;
jd2=22;
zuobiaojx(88);
gaodu1(23);
jd1=10;
jd2=33;
gaodu2(23);
zuobiaox(88);
gaodu1(148);
zuobiaoy(394);
jd1=13;
jd2=30;
break;
}
b2=0;
global_state = 0; //返回到初始界面
write_com(0x01);
delay_ms(5);
}
break;
}
}
}
void T0_interrupt(void) interrupt 1
{
TH0 += TH0_temp;
TL0 += TL0_temp;
}
void Time1_Int()interrupt 3
{
TH1 = 0x0FF;
TL1 = 0x0A4;
if(count1<jd1)
pwm1=1;
else
pwm1=0;
if(count2<jd2)
pwm2=1;
else
pwm2=0;
count1=(count1+1);
count1=count1%200; //對40取余是為了保持20ms周期
count2=(count2+1);
count2=count2%200; //對40取余是為了保持20ms周期
}
復制代碼
所有程序51hei提供下載:
智能停車.zip
(105.14 KB, 下載次數: 7)
2019-6-9 22:17 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
黄视频在线网站
|
免费一二区
|
在线免费观看黄a
|
999久久久
|
鸡毛片
|
一级黄色片在线免费观看
|
99精品电影
|
97caoporn国产免费人人
|
亚洲欧美视频
|
国产黄视频在线播放
|
av天天看
|
一级免费毛片
|
久久激情网
|
欧美视频区
|
麻豆毛片
|
韩日精品一区
|
国产精品伦理一区
|
成人三级av
|
在线国产一区
|
99re热这里只有精品视频
|
国产成人精品一区二区三区在线
|
色橹橹欧美在线观看视频高清
|
九九热免费在线观看
|
免费在线观看一级毛片
|
日批免费观看
|
国产精品国产三级国产aⅴ无密码
|
欧美一级视频免费看
|
午夜免费观看
|
欧美日韩国产一区二区
|
久久久青草婷婷精品综合日韩
|
欧美视频二区
|
91久久久久久久久
|
欧美嘿咻
|
日韩一区二区av
|
成人一级黄色毛片
|
久久久日韩精品一区二区三区
|
欧美日韩看片
|
日本黄色大片免费看
|
天天玩天天操天天干
|
自拍视频网
|
亚洲精品二区
|