最近学了一些单片机的知识 但是纸上得来终觉浅 绝知此事要躬行 我觉得还是写一写工程比较好
所以有了这篇博客 花费了我三个小时
B站视频演示
整体图形就这样 我只设置了两个路口的红绿灯 而且只有直行 没有设置左转之类的
然后的话 功能就是 红灯绿灯都是9秒倒计时 每次红灯绿灯结束后 都会闪烁3秒的黄灯 具体看上面的演示视频 大概这个意思
在编写代码的时候出现的问题 定义i的时候 为什么要定义在函数代码的第一行 我不知道 我没有在第一行定义 i 然后就报错了 我就试了一段时间才发现的
现在想知道两位的数码管怎么使用的 以后再说吧
麻了麻了 溜了溜了
#include<reg51.h>
unsigned char num[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
void dalay(unsigned int n){
int i=0,j=0;
for(i=0;i<n;i++)
for(j=0;j<120;j++);
}
void solve(){
int i=0;
for(i=0;i<8;i++){
P0=~(0x01<<i);
dalay(1000);
}
}
void leftgreen(){
int i=0;
P2=~(0x01);
P3=~(0x04);
for(i=0;i<10;i++){
P0=num[9-i];
dalay(1000);
}
}
void leftred(){
int i=0;
P2=~(0x02);
P3=~(0x01);
for(i=0;i<10;i++){
P0=num[9-i];
dalay(1000);
}
}
void yellow(){
int i=0;
for(i=0;i<4;i++){
P0=num[3-i];
P2=~(0x04);
P3=~(0x02);
dalay(500);
P2=0xFF;
P3=0xFF;
dalay(500);
}
}
void main(){
while(1){
P0=num[0];
dalay(1000);
leftgreen();
P2=0xFF;P3=0xFF;
P0=num[0];
dalay(1000);
yellow();
P0=num[0];
P2=0xFF;P3=0xFF;
dalay(1000);
leftred();
P0=num[0];
P2=0xFF;P3=0xFF;
yellow();
P0=num[0];
P2=0xFF;P3=0xFF;
}
}
|