久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標(biāo)題:
基于51單片機(jī)的十字路口信號(hào)燈設(shè)置 Proteus仿真代碼
[打印本頁(yè)]
作者:
65423..+
時(shí)間:
2020-6-24 08:44
標(biāo)題:
基于51單片機(jī)的十字路口信號(hào)燈設(shè)置 Proteus仿真代碼
紅綠燈共有五個(gè)階段,直行和右轉(zhuǎn)、左轉(zhuǎn)、人行道、紅燈、黃燈。數(shù)字鍵盤(pán)按1~5可以調(diào)節(jié)相對(duì)應(yīng)階段的時(shí)間,按#和*可以暫停所所有信號(hào)燈
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei截圖20200624082839.png
(78.85 KB, 下載次數(shù): 70)
下載附件
2020-6-24 08:31 上傳
單片機(jī)源程序如下:
#include "reg51.h"
#include "intrins.h"
typedef unsigned char uchar;
sbit X_forward = P1^0;
sbit X_left = P1^1;
sbit X_rignt = P1^2;
sbit Y_forward = P1^3;
sbit Y_left = P1^4;
sbit Y_rignt = P1^5;
sbit X_red = P1^6;
sbit X_yellow = P1^7;
sbit Y_yellow = P3^0;
sbit Y_red = P3^1;
sbit Y_red_people = P3^2;
sbit Y_green_people = P3^3;
sbit X_red_people = P3^4;
sbit X_green_people = P3^5;
uchar dir = 0; // x--0; y--1;
uchar dat[] = {0,0};//ge,shi,y(f,l,r,s),x(f,l,r,s) //0-s 1-f 2-l 3-r
char dx[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
int red_sj = 5;
int yellow_sj = 3;
int green_sj = 5;
int left_sj = 5;
int right_sj = 5;
int people_sj = 5;
int num = 0;
uchar jd = 2;
int state;
int cmd;
char key_value[] = {
0x3d,0x73,0x75,0x76,
0x6b,0x6d,0x6e,0x5b,
0x5d,0x5e,0x3b,0x3e
};
void ledDisplay(){
uchar j,i;
for(j=0;j<4;j++)
{
i = P3;
i &= 0x3f;
i |= ((j<<6)&0xc0);
P3 = i;
P0 = dx[dat[j>1?j-2:j]];
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
P0 = 0x00;
}
}
void init(){ //初始化
IE = 0x02; //允許定時(shí)器0中斷;
TMOD = 0x01; //定時(shí)器0工作方式1
TH0 = 0xDF;
TL0 = 0x72;
EA = 1; //開(kāi)中斷
}
void set_state(uchar shi,uchar ge,uchar dirY,uchar dirX,uchar x_red,uchar x_yellow,uchar y_red,uchar y_yellow,uchar x_people,uchar y_people)
{
dat[1] = ge;
dat[0] = shi;
switch(dirY)
{
case 0: Y_forward=1;Y_left=1;Y_rignt=1;break;
case 1: Y_forward=0;Y_left=1;Y_rignt=0;break;
case 2: Y_forward=1;Y_left=0;Y_rignt=1;break;
case 3: Y_forward=1;Y_left=1;Y_rignt=0;break;
}
switch(dirX)
{
case 0: X_forward=1;X_left=1;X_rignt=1;break;
case 1: X_forward=0;X_left=1;X_rignt=0;break;
case 2: X_forward=1;X_left=0;X_rignt=1;break;
case 3: X_forward=1;X_left=1;X_rignt=0;break;
}
X_red = x_red;
X_yellow = x_yellow;
Y_red = y_red;
Y_yellow = y_yellow;
switch(x_people)
{
case 0: X_green_people = 1;X_red_people = 0;break;
case 1: X_green_people = 0,X_red_people = 1;break;
}
switch(y_people)
{
case 0: Y_green_people = 1;Y_red_people = 0;break;
case 1: Y_green_people = 0,Y_red_people = 1;break;
}
}
void key_chuli(int i)
{
if(state==0)
{
cmd = i;
state = 1;
}else if(state==1)
{
switch(cmd)
{
case 1:red_sj = i;break;
case 2:yellow_sj = i;break;
case 3:green_sj = i;break;
case 4:left_sj= i;break;
case 5:right_sj= i;break;
case 6:people_sj= i;break;
}
state = 2;
}else if(state==2)
{
switch(cmd)
{
case 1:red_sj *= 10; red_sj += i;break;
case 2:yellow_sj *= 10; yellow_sj += i;;break;
case 3:green_sj *= 10; green_sj += i;;break;
case 4:left_sj *= 10; left_sj += i;;break;
case 5:right_sj *= 10; right_sj += i;;break;
case 6:people_sj *= 10; people_sj += i;;break;
}
state = 0;
}
}
void key_san(void)
{
int i;
char wz;
P2 = 0x07;
if(P2!=0x07){
_nop_();
if(P2!=0x07){
wz = P2;
P2 = 0x78;
wz |= (P2&0x78);
for(i=0;i<12;i++){
if(key_value[i]==wz){
if(i>9)
{
set_state(0,0,0,0,0,1,0,1,0,0);
TR0 = 0;
while(1)
{
ledDisplay();
}
}else
{
key_chuli(i);
P2 = 0x07;
while(P2!=0x07);
}
}
}
}
}
}
void main(void)
{
init();
TR0 = 1;
while(1)
{
key_san();
ledDisplay();
}
}
void chuli(void)
{
if(dir)
{
switch(jd)
{
case 1:set_state((red_sj/10)%10,red_sj%10,0,0,0,1,0,1,0,0);break;
case 2:set_state((yellow_sj/10)%10,yellow_sj%10,0,0,0,1,1,0,0,0);break;
case 3:set_state((green_sj/10)%10,green_sj%10,1,0,0,1,1,1,0,0);break;
case 4:set_state((left_sj/10)%10,left_sj%10,2,0,0,1,1,1,0,0);break;
case 5:set_state((people_sj/10)%10,people_sj%10,0,0,1,1,1,1,0,1);break;
}
}else
{// shi, ge, dirY, dirX, x_red, x_yellow, y_red, y_yellow, x_people, y_people
switch(jd)
{
case 1:set_state((red_sj/10)%10,red_sj%10,0,0,0,1,0,1,0,0);break;
case 2:set_state((yellow_sj/10)%10,yellow_sj%10,0,0,1,0,0,1,0,0);break;
case 3:set_state((green_sj/10)%10,green_sj%10,0,1,1,1,0,1,0,0);break;
case 4:set_state((left_sj/10)%10,left_sj%10,0,2,1,1,0,1,0,0);break;
case 5:set_state((people_sj/10)%10,people_sj%10,0,0,1,1,0,1,1,0);break;
}
}
}
void time_chuli(void)
{
if(dat[0]==0&dat[1]==0)
{
……………………
…………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
紅綠燈 - 副本 - 副本 (2).rar
(234.65 KB, 下載次數(shù): 13)
2020-6-24 08:41 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
欧美三区在线观看
|
av无遮挡
|
国产免费一二三区
|
亚洲在线一区二区三区
|
精品福利一区二区三区
|
久久久久久久夜
|
中文av网站
|
欧美啪啪
|
久久久91
|
91精品久久久久久久久久入口
|
男人天堂99
|
成人福利电影
|
福利视频亚洲
|
国产福利91精品一区二区三区
|
91精品国产自产在线老师啪
|
日韩一区二区三区在线播放
|
免费人成在线观看网站
|
日日干综合
|
自拍视频在线观看
|
亚洲一区二区三区免费观看
|
久久精品亚洲精品国产欧美
|
欧美性极品xxxx做受
|
国产精品久久久乱弄
|
每日更新av
|
中文字幕免费视频
|
精品欧美一区二区久久久伦
|
婷婷福利视频导航
|
欧美一区二区三区四区视频
|
综合另类
|
caoporn视频在线
|
羞羞视频免费在线观看
|
伊人网站在线观看
|
91视频亚洲
|
chinese中国真实乱对白
|
亚洲成人免费
|
久久人人爽人人爽
|
一级黄色片网址
|
亚洲精品在线视频
|
日韩欧美在线不卡
|
国产精品日韩在线
|
精品一区二区三区免费视频
|