#include <reg52.h> //调用单片机头文件 #define uchar unsigned char //无符号字符型 宏定义 变量范围0~255 #define uint unsigned int //无符号整型 宏定义 变量范围0~65535 //数码管段选定义 0 1 2 3 4 5 6 7 8 9 uchar code smg_du[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0xdf,0xdb // A B C D E F 不显示 }; //断码 uchar dis_smg[8] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8}; bit flag_100ms,flag_1s; bit flag_stop = 1; //用做到了相应的楼停下 sbit beep = P2^6; sbit xia = P2^0; sbit zhong = P2^1; sbit shang = P2^2; uchar value2; sbit led1 = P1^7; //8个发光二极管定义 sbit led2 = P1^6; sbit led3 = P1^5; sbit led4 = P1^4; sbit led5 = P1^3; sbit led6 = P1^2; sbit led7 = P1^1; sbit led8 = P1^0; uchar dt_1; //1楼电梯标志位 uchar dt_2; //2楼电梯标志位 uchar dt_3; //3楼电梯标志位 uchar dt_4; //4楼电梯标志位 uchar dt_5; //5楼电梯标志位 uchar dt_6; //6楼电梯标志位 uchar dt_7; //7楼电梯标志位 uchar dt_8; //8楼电梯标志位 uchar dt_value = 1; //电梯到哪一层的变量 uchar dt_s_x ; //电梯上下的标志位 /***********************1ms延时函数*****************************/ void delay_1ms(uint q) { uint i,j; for(i=0;i<q;i++) for(j=0;j<120;j++); } /********************独立按键程序*****************/ uchar key_can; //按键值 void key() //独立按键程序 { static uchar key_new; key_can = 20; //按键值还原 P3 |= 0xff; if(P3 != 0xff) //按键按下 { delay_1ms(1); //按键消抖动 if((P3 != 0xff) && (key_new == 1)) { //确认是按键按下 key_new = 0; switch(P3) { case 0xfe: key_can = 1; break; //得到按键值 case 0xfd: key_can = 2; break; //得到按键值 case 0xfb: key_can = 3; break; //得到按键值 case 0xf7: key_can = 4; break; //得到按键值 case 0xef: key_can = 5; break; //得到按键值 case 0xdf: key_can = 6; break; //得到按键值 case 0xbf: key_can = 7; break; //得到按键值 case 0x7f: key_can = 8; break; //得到按键值 } } } else key_new = 1; } void key_with() { if(key_can == 1) { led1 = 1; //点亮发光二极管 dt_1 = 1; // } if(key_can == 2) { led2 = 1; //点亮发光二极管 dt_2 = 1; } if(key_can == 3) { led3 = 1; //点亮发光二极管 dt_3 = 1; } if(key_can == 4) { led4 = 1; //点亮发光二极管 dt_4 = 1; } if(key_can == 5) { led5 = 1; //点亮发光二极管 dt_5 = 1; } if(key_can == 6) { led6 = 1; //点亮发光二极管 dt_6 = 1; } if(key_can == 7) { led7 = 1; dt_7 = 1; } if(key_can == 8) { led8 = 1; dt_8 = 1; } } /*********************当电梯不动时、判断是向上、还是向下**********************/ void tiandi_shang_xia() { static uchar value; if(dt_s_x == 0) { flag_stop = 1; if(dt_value == 1) //电梯在第1层停下不走了 { value = dt_2 + dt_3 + dt_4 + dt_5 + dt_6 + dt_7 + dt_8; if(value != 0) { dt_s_x = 1; //电梯向上 shang = 0; //显示上 zhong = 0; xia = 1; } } if(dt_value == 2) //电梯在第2层停下不走了 { value = dt_3 + dt_4 + dt_5 + dt_6 + dt_7 + dt_8; if(value != 0) { dt_s_x = 1; //电梯向上走 shang = 0; //显示上 zhong = 0; xia = 1; } value = dt_1; if(value != 0) { dt_s_x = 2; //电梯向下走 xia = 0; //显示下 zhong = 0; shang = 1; } } if(dt_value == 3) //电梯在第3层停下不走了 { value = dt_4 + dt_5 + dt_6 + dt_7 + dt_8; if(value != 0) { dt_s_x = 1; //电梯向上走 shang = 0; //显示上 zhong = 0; xia = 1; } value = dt_1 + dt_2; if(value != 0) { dt_s_x = 2; //电梯向下走 xia = 0; //显示下 zhong = 0; shang = 1; } } if(dt_value == 4) //电梯在第4层停下不走了 { value = + dt_5 + dt_6 + dt_7 + dt_8; if(value != 0) { dt_s_x = 1; //电梯向上走 shang = 0; //显示上 zhong = 0; xia = 1; } value = dt_1 + dt_2 + dt_3; if(value != 0) { dt_s_x = 2; //电梯向下走 xia = 0; //显示下 zhong = 0; shang = 1; } } if(dt_value == 5) //电梯在第5层停下不走了 { value = dt_6 + dt_7 + dt_8; if(value != 0) { dt_s_x = 1; //电梯向上走 shang = 0; //显示上 zhong = 0; xia = 1; } value = dt_1 + dt_2 + dt_3 + dt_4; if(value != 0) { dt_s_x = 2; //电梯向下走 xia = 0; //显示下 zhong = 0; shang = 1; } } if(dt_value == 6) //电梯在第6层停下不走了 { value = dt_7 + dt_8; if(value != 0) { dt_s_x = 1; //电梯向上走 shang = 0; //显示上 zhong = 0; xia = 1; } value = dt_1 + dt_2 + dt_3 + dt_4 + dt_5; if(value != 0) { dt_s_x = 2; //电梯向下走 xia = 0; //显示下 zhong = 0; shang = 1; } } if(dt_value == 7) //电梯在第7层停下不走了 { value = dt_8; if(value != 0) { dt_s_x = 1; //电梯向上走 shang = 0; //显示上 zhong = 0; xia = 1; } value = dt_1 + dt_2 + dt_3 + dt_4 + dt_5 + dt_6; if(value != 0) { dt_s_x = 2; //电梯向下走 xia = 0; //显示下 zhong = 0; shang = 1; } } if(dt_value == 8) //电梯在第8层停下不走了 { value = dt_8; if(value != 0) { dt_s_x = 1; //电梯向上走 shang = 0; //显示上 zhong = 0; xia = 1; } value = dt_1 + dt_2 + dt_3 + dt_4 + dt_5 + dt_6; if(value != 0) { dt_s_x = 2; //电梯向下走
- 粉丝: 1
- 资源: 2
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助