流星划过夜空,在你默默许愿的同时,是不是也在想,能否通过学习单片机来模拟实现这种效果呢?一起行动,寻找流星的感觉。
![a382337b71595f23c8651b99cf8b0867.png](https://i-blog.csdnimg.cn/blog_migrate/e16ffc7115662afc1ceec5b414040b0c.jpeg)
流星雨电路图
![51cda64b7ef085dfdf0ee3f5fdc15213.png](https://i-blog.csdnimg.cn/blog_migrate/579eede74a36135ecf79f734c1ca8f2a.jpeg)
元器件清单
 以下是程序设计
#include//头文件
void delay_ms(unsigned int a)//延时函数
{
unsigned int i,j;
for(i=a;i>0;i--)
for(j=110;j>0;j--);
}
void main()//主函数
{
P1=0XFE;//11111110
delay_ms(50);
P1=0XFD;//11111101
delay_ms(50);
P1=0XFB;
delay_ms(50);
P1=0XF7;
delay_ms(50);
P1=0XEF;
delay_ms(50);
P1=0XDF;
delay_ms(50);
P1=0XBF;
delay_ms(50);
P1=0X7F;
delay_ms(50);
P1=0XFF;
while(1);
}
程序解释
“delay_ms(50);”数值可以自己更改,取值“50”实现流星的效果更好,自己修改体验,达到最佳效果。P1八个I/O口分别与八个LED的负极相连,
C语言基础知识
(1)总线操作
程序没有定义led的I/O,在主程序中直接采用总线操作。
P1一共有8个I/O,分别是P1.7、P1.6、P1.5、P1.4、P1.3、P1.2、P1.1、P1.0,其中P1.7、P1.6、P1.5、P1.4称为高四位,P1.3、P1.2、P1.1、P1.0称为低四位。从高位往低位排列,比如连接P1.0的LED点亮,其他的都熄灭,用0与1来表示,就是1111 1110(二进制),将高四位与低四位分别换算为十六进制(0XFE)。
(2)二进制与十六进制转换
告诉大家一个二进制转换十六进制的办法。打开电脑中的计算器。点击“二级制”,填写需要转换的二级制。
![8bc647d1fe885556a16ae5925c3d4041.png](https://i-blog.csdnimg.cn/blog_migrate/d91ed3a83a4314f835d18c12c5513bcd.jpeg)
如图填入需要转化的二级制
点击计算器“十六进制”,转化结果
![74169c56672f94b5c7bef61bdb990481.png](https://i-blog.csdnimg.cn/blog_migrate/e57982a90ef44a8798c8d5b33a6fab5e.jpeg)
十六进制转换结果
1111 1110转换结果是FE,为什么程序中要写0XFE。
因为FE是十六进制,0X只是说明其后面跟的数是十六进制,X、F、E不分大小写。