产品选型

单片机c51视频 单片机入门-C51语言手动和自动控制红绿LED交通灯的实现视频教学

小编 2024-11-24 产品选型 23 0

单片机入门-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个工作过程。中断请求需要在程序中事先设置允许/禁止、优先级、请求模式等。响应中断时,单片机会在...

猜你喜欢