#include<reg52.h> #include<intrins.h> sbit P1_0=P1^0; sbit P1_1=P1^1; sbit P1_2=P1^2;本设计为使电动车在跷跷板上按要求准确运行采用了单片机AT89C51最小系统作为电动车的检测和控制系统。通过红外发射接收一体探头检测路面黑色寻迹线,使小车按预定轨道行驶,根据角度传感器检测跷跷板的平衡状态控制电动车使其在跷跷板上达到动态平衡。再加上基于AT89C51单片机的键盘、液晶显示电路,构成了整个系统的硬件总电路。最后通过软件设计,实现了按预定轨道行驶、保持平衡等功能。 #define uint unsigned int #define uchar unsigned char uchar i=0,n=0; uchar code seg[]={ //七段码表 0x3f,0x06,0x5b,0x4f,0x66, //0~4 0x6d,0x7d,0x07,0x7f,0x6f,0x3f}; //5~9 uchar b[6]={0,4,0,0,0,0}; uint sum; void delay_10us(uchar n) {do { _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); }while(--n); } void delay_ms(uint n) {do delay_10us(131); while(--n); } void butt() { uchar but1,but2,but3; but1=P1_0; but2=P1_1; but3=P1_2; while(but1==0) { delay_ms(10); but1=P1_0; if(but1==0) {but1=P1_0; i++; } if(i==4) i=0; while(but1==0){ but1=P1_0;} n=0; } while(but2==0) { delay_ms(10); but2=P1_1; if(but2==0) {but2=P1_1; b[i]++; } if(b[i]==10) b[i]=0; while(but2==0){ but2=P1_1;} n=0; } while(but3==0) { delay_ms(10); but3=P1_2; if(but3==0) {but3=P1_2; b[i]--; } if(b[i]==-1) b[i]=9; while(but3==0){ but3=P1_2;} n=0; } sum=1000*b[3]+100*b[2]+10*b[1]+b[0]; if(n==0) {TI=0; SBUF=seg[b[0]]; while(TI==0); TI=0; SBUF=seg[b[1]]; while(TI==0); TI=0; SBUF=seg[b[2]]; while(TI==0); TI=0; SBUF=seg[b[3]]; while(TI==0); n=1; } }
- 粉丝: 0
- 资源: 41
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助