发 帖  
原厂入驻New
[经验]

实现LED点亮与熄灭的程序

2021-1-20 15:52:57  2053 LED
分享
1
  在上个程序中“LED=0”,再加上一句“led=1”,是不是就可以实现LED点亮与熄灭,形成闪烁效果?
  我们试着将这个程序写出来,然后下载观察效果,一起见证奇迹,硬件电路与上节一样。
  当我们把程序写成这样的时候
  1.程序设计3.5.1(不完善程序)
  #include《reg52.h》 //52系列单片机头文件。
  sbit led=P1^0;//声明LED接在P1.0这里需要注意区分大小写
  void main() //主函数
  {
  led=0; //led也就是P1.0接口输出低电平
  led=1; //led也就是P1.0接口输出高电平
  while(1); //程序停止到这里
  }
  硬件电路参照图
   1.png
  观察效果,为什么没有点亮呢?程序什么地方出错了?原因是单片机运行速度太快,LED刚点亮就熄灭了,肉眼是根本无法观察出效果的。如何解决呢?LED点亮后,让单片机运行一段延时程序,然后LED再熄灭,然后再延时一段时间。还要做一个小小的变动,需要将“while(1)”这个语句放到别的位置,放到什么地方呢?别着急,先学习while循环语句。
  2.C语言基础知识
  while循环语句
  格式:
  while(表达式)
  {
  语句(可以没有语句);
  }
  运行步骤:先判断表达式,如果为真(非0即可),即执行大括号内的语句,否则跳出执行后面的语句。
  上节程序中while(1);括号内是1,永远为真,一直执行语句。
  上节的程序中“while(1);”,怎么没有大括号?原因是大括号内没有语句,大括号就省略了,完整语句如下:
  While(1)
  {
  }
  (1)用while循环语句编写简单延时程序
  举例,while(a--);
  a--是什么意思,等同于a=a–1,其中a是变量,比如将a换为3,while(a--);是这样工作的,先判断表达式,a=3–1,等于2,非零,执行一次空语句,继续判断a=2–1,等于1,非零,执行一次空语句,继续判断a=1–1等于0,跳出循环体。
  (2)变量
  上面提到a,它就是变量,它随着程序的运行数字不断变化,变量是相对于常量而言,比如数字66,100等不会变化。使用变量需要先定义类型,
   2.png
  变量类型
  (3)延时函数
  void delay(unsigned int a)
  {
  while(a--);
  }
  unsigned int a中a的变量是无符号整型,范围是0~65535。delay(英语单词延时)是自己起的名字,要一目了然,一看就知道是延时函数,当然你也可以用拼音“yanshi”代替。
  延时函数应该写在主函数之前,程序需要调用时将“delay(a);”中的(a)直接写成数字。你如果定义变量a是无符号字符型,那调用延时函数时,变量a只能在0~255范围。

邓家林 2021-1-22 11:22:37
好久没玩单片机了,但记得当初用51点LED的时候,每个操作之后是需要延时的,因为芯片的操作很快,人眼不可能反应得过来,甚至某些元器件都反应不过来。电的传输虽然快但也是需要时间的。
回复

举报

评论

高级模式
您需要登录后才可以回帖 登录 | 注册

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
发经验
关闭

站长推荐 上一条 /8 下一条

快速回复 返回顶部 返回列表