原创 51单片机大学生入门记录【1-1流水灯】

2024-2-23 21:30 753 7 2 分类: MCU/ 嵌入式 文集: 51单片机
成果展示----流水灯


代码展示

  1. #include <REGX52.H>
  2. void Delay1ms(unsigned int xms) //@12.000MHz
  3. {
  4. unsigned char i, j;
  5. while(xms)
  6. {
  7. i = 2;
  8. j = 239;
  9. do
  10. {
  11. while (--j);
  12. } while (--i);
  13. xms--;
  14. }
  15. }
  16. void main()
  17. {
  18. while(1)
  19. {
  20. P1=0xFE;
  21. Delay1ms(500);
  22. P1=0xFD;
  23. Delay1ms(500);
  24. P1=0xFB;
  25. Delay1ms(500);
  26. P1=0xF7;
  27. Delay1ms(500);
  28. P1=0xEF;
  29. Delay1ms(500);
  30. P1=0xDF;
  31. Delay1ms(500);
  32. P1=0xBF;
  33. Delay1ms(500);
  34. P1=0x7F;
  35. Delay1ms(500);
  36. }
  37. }



硬件解析



我们可以看到8颗LED灯分别接在了P1-P1.7引脚上面,并且都出串联了限流电阻(起保护作用)

P1-P1.7全部都在P1总线上面,所以在代码部分只需要控制P1的"开关"即可控制全部LED灯

并且可以看到,电路采用的是"灌电流"输出,意味着io口相当于接地的作用

所以LED灯低电平点亮,高电平熄灭




代码解析----点亮一个LED


首先我们需要搞清楚,LED灯在什么时候才能点亮,由上面的硬件解析可以得出,LED灯在P1处于低电平时点亮,处于高电平的时候是熄灭状态

所以p1-p1.7在熄灭时候对应的二进制为1111 1111(1为高电平,0为低电平)

p1-p1.7全部都位于1高电平,所以全部熄灭


若二进制为1111 1110 第一位p1为0,其余p1.1-p1.7为1,则p1对应的LED灯亮,因为p1此时为0低电平,其余都为1高电平


所以在代码部分,我们应该写 P1=11111110,但是软件是基于c语言编程的,所以c语言不能识别二进制,所以我们需要把二进制转换成十六进制

11111110转十六进制就是 FE

所以我们在代码上就应该写FE

因为[0]是便于解释器的识别,[x]是十六进制的标志

所以FE前面我们应该把十六进制的前缀加上,则 0xFE

此时上传代码应该可以看到,LED的第一个灯被点亮了



代码解析----循环函数


首先,我们可以在stc-isp里面生成一个1ms的循环函数



然后我们可以自己定义一个函数(xms)

这样我们输入多少,就会循环多少次1ms达到这样一个效果


假如,我xms输入一个500

首先会进行500次循环

每循环一次,函数会自己减去1

则,我输入500,循环一次完成后,就自动变成499次循环


这个函数是软件给我们生成的1ms的循环

如果500次1ms,那就是500ms,相当于0.5秒的循环


所以,我们在main函数里面引用这个延迟函数,然后在延迟函数里面给他定义一个500次

相当于延迟了0.5秒然后跳转到下一步



代码解析----流水灯的循环

我们在知道灯的原理,同时也知道循环的原理之后,就可以做一个相关的流水灯


现在的代码就非常好理解了,在第一个LED灯亮了之后,然后延迟500ms,自动跳到下一个灯,以此类推,一直循环下去


这里再细细讲解一下

第一个灯,对应的二进制为1111 1110  【FE】

第二个灯,对应的二进制为1111 1101  【FD】

第三个灯,对应的二进制为1111 1011  【FB】


。。。以此类推


所以到最后一个灯就应该是 0111 1111   【7E】




总结

51单片机对于新手来说还是比较友好的,基本上懂了LED点亮的原理,以及二进制转换十六进制的方法之后,这个项目就非常容易做了!

而且要理解一下循环函数的原理。简单来说如果我要定时500ms,其实相当于是把1ms循环了500遍这样

最后,祝大家学有所用!


作者: 小恶魔owo, 来源:面包板社区

链接: https://mbb.eet-china.com/blog/uid-me-4067534.html

版权声明:本文为博主原创,未经本人允许,禁止转载!

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
7
关闭 站长推荐上一条 /3 下一条