单片机入门-C51语言手动和自动控制红绿LED交通灯的实现视频教学
介绍了利用C51语言手动和自动控制红绿LED交通灯的实现,提供视频教学如下:
视频加载中...
代码如下:
#include<reg51.h>
sbit L1=P1^0;
sbit L2=P1^1;
sbit L3=P1^2;
sbit L4=P1^3;
sbit BTN1=P0^0;
sbit BTN2=P0^1;
void delay();
void main()
{
while(1)
{
if(BTN1==0)
{
L1=1;
L2=0;
L3=0;
L4=1;
}
if(BTN2==0)
{
L1=0;
L2=1;
L3=1;
L4=0;
}
if(BTN1==1&&BTN2==1)
{
L1=1;
L2=0;
L3=0;
L4=1;
delay();
L1=0;
L2=1;
L3=1;
L4=0;
delay();
}
}
}
void delay()
{
unsigned char i;
unsigned int j;
for(j=10000;j>0;j--)
for(i=124;i>0;i--);
}
电路图如下:
C51单片机4
上一个程序是一个小灯亮一段时间然后熄灭一段时间,如果把小灯变成电机抽水就可以隔一段时间抽一些水,或者旋转带动齿轮,用法多样。
这次我们做8个小灯,同时亮,然后同时熄灭。这里我们的头文件中已经声明了P2端口,
P2包括P2.7--P2.0八个端口,单片机通电初始化P2口从高位到低位就是11111111,八个1.
#include<reg52.h> // 引用头文件
unsigned int i; // 定义一个变量 i
void main( ) // 程序开始执行的地方
{
while(1) // 循环语句,只有小括号中不为零就一直循环,
如果这里不加这句 我在这篇文章下面解释
{
P2=0x00; // 下面有解释
for(i=0;i<50000;i++); // 上一个程序有详细执行过程,C51单片机3中
P2=0xff; //
for(i=0;i<50000;i++); //上一个程序有详细执行过程,C51单片机3中
}
}
这个程序和上节课的一样就是直接控制了8个小灯的亮灭,在这里引入了一个进制的内容,我们的IO口,就是单独的任意一个端口和灯一样,有两种状态 灯的状态就是亮或者灭,反应到端口上就是0或者1,为什么在是0的时候小灯亮呢?这里其实是因为我用的是PNP型三极管如果有不明白的可以给我发个私信或者评论的时候说一下,我会专门解释一下,或者拍个小视频,让大家一看就明白。有很多知识都是一看就明白,但是看这些名字就感觉头大。
while(1)这一句如果不加可以吗? 不可以那样你会发现程序指挥执行一遍,8个小灯点亮一段时间,然后8个小灯熄灭一段时间,后面单片机就会不知道干什么了。如果只想点亮,不用熄灭那就只写P2=0x00就可以了。但是这个while(1)不可以省略。
这个程序和上节课的一样就是直接控制了8个小灯的亮灭,在这里引入了一个进制的内容,
0x00代表的是16进制,我们计数的时候是从0,1,2,3,4,5,6,7,8,9下一个就是10了,
16进制就是0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F这16个数下一个进位就是10了,然后就是11,12,13,14,15,16,17,18,19,1A,1B,1C,1D,1E,1F再仅为就是20。
2进制就是0,1,下一个进位10,11,再进位20可是20中有2还需要进一位就是100我再重新数一下就是0,1,10,11,100,101,110,111,1000,1001,1010,1011,1100,
1101,1110,1111
我们的IO口,就是单独的任意一个端口和灯一样,有两种状态 灯的状态就是亮或者灭,反应到端口上就是0或者1,就这两种状态。
我们让P2.0端口这8个端口为0时 就是0000 0000这8位都是0 在C语言中我们用16进制表示,8个0就是0x00,前面的0x代表是16进制的写法,如果用10进制就是0,这一条其实也可以写成P2=0; 不过我也没有这样写过,不符合我们应用时候的习惯,后面多用几次就知道为什么按照16进制写了。
0xFF 代表的是八个1111 1111
16进制的0等于2进制的0, 16进制的1等于2进制的1,
16进制的2等于2进制的10, 16进制的3等于2进制的11,
16进制的4等于2进制的100 , 16进制的5等于2进制的101,
16进制的6等于2进制的110, 16进制的7等于2进制的111,
16进制的8等于2进制的1000, 16进制的9等于2进制的1001,
16进制的A等于2进制的1010, 16进制的B等于2进制的1011,
16进制的B等于2进制的1011, 16进制的C等于2进制的1100,
16进制的D等于2进制的1101, 16进制的E等于2进制的1110,
16进制的F等于2进制的1111,
一个F代表4个1 那么2个 FF就是1111 1111
相关问答
c51单片机 好学吗?作为一款经典的单片机,c51单片机的学习曲线相对来说比较平缓。它具有较强的易上手性和灵活性,适合初学者学习使用。同时,c51单片机也是广泛应用于嵌入式系统设...
怎么在 单片机C51 语言中使用AT指令?1.首先,需要将AT指令封装成一个函数,该函数需要能够处理应答,并解析应答结果。2.将AT指令封装为一个函数后,就可以在C51程序中使用该函数了,根据...1.首...
请教各位大虾! c51单片机 中while(1)的用法?while(1){}的话,就是不断执行大括号里的程序;while(1);的话就是程序到此停止,后面的不再执行了,除了中断,再也不动了,就一个分号的区别,分号干掉就...while(...
c51单片机 编程?南邻更可念,布破冬未赎。白毛浮绿水,红掌拨清波。窗含西岭千秋雪,门泊东吴万里船。月下飞天镜,云生结海楼。月出惊山鸟,时鸣春涧中.千山鸟飞绝,万径人...
c51 开发板 单片机 智能小车如何供电?1.C51开发板单片机智能小车可以通过多种方式供电。2.首先,可以使用电池供电,选择合适的电池电压和容量,通过电源模块或电池座连接到开发板上。其次,可以使...
c51单片机 能控制电动助力车车速吗?c51单片机能控制电动助力车车速具有良好的脚踏骑行功能,能实现人力骑行、电动或电助力功能;3.最高车速不超过20公里每小时;4.整车重量不大于40公斤...
c51单片机 直接输出正弦波信号?可以的,正弦波信号通过NE555之类的简单芯片就能够生成,并且具有一定的频率可控性。例如:555正弦波信息发生器电路图。既然问题是“C51单片机输出正弦波”,...
c51单片机 对p1口的操作是读还是写操作?51单片机很简单的啊,读的话,直接设置一个变量,比如:unsignedchari;i=P1;直接把P1口的数据给变量,即完成了对P1口的读数据。如果要输出数据;unsigned...
单片机c51 和a51有什么区别?你这是在keil的安装文件夹里看到的可执行文件吧?c51是C语言的编译文件,a51是汇编语言的编译文件。但这两个文件并不能直接点击执行的。其实,也不必管是什么...
C51单片机 中断系统的工作过程?c51单片机中断系统包括请求、响应、执中断服务程序和退出4个工作过程。中断请求需要在程序中事先设置允许/禁止、优先级、请求模式等。响应中断时,单片机会在...