模吧

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

[单片机课堂] 第四课:听话的单片机

  [复制链接]
发表于 2016-9-9 16:37:38 | 显示全部楼层
群主辛苦了,坐等更新
回复 支持 0 反对 1

使用道具 举报

 楼主| 发表于 2016-9-13 01:09:09 | 显示全部楼层
本帖最后由 我爱萝丽爱萝丽 于 2016-9-13 01:11 编辑

1.2 闪出七种色彩!

在学会了怎么控制LED的亮灭后,你有什么想法呢?是不是已经按捺不住想要写点更复杂的程序了?

我们先把每个LED的控制引脚都定义好:
sbit LED_R=P3^4;//定义红灯
sbit LED_G=P3^3;//定义绿灯
sbit LED_B=P3^2;//定义蓝灯


然后按照三原色的混合原理,控制每一种色彩吧:




  1. #include<reg51.h>


  2. sbit LED_R=P3^4;//定义红灯
  3. sbit LED_G=P3^3;//定义绿灯
  4. sbit LED_B=P3^2;//定义蓝灯


  5. void Delay1000ms()                //@12.000MHz
  6. {
  7.         unsigned char i, j, k;

  8.         //_nop_();删去此处
  9.         //_nop_();
  10.         i = 46;
  11.         j = 153;
  12.         k = 245;
  13.         do
  14.         {
  15.                 do
  16.                 {
  17.                         while (--k);
  18.                 } while (--j);
  19.         } while (--i);
  20. }


  21. main()
  22. {
  23.         
  24.         while(1)
  25.         {
  26.                 LED_R=1;
  27.                 LED_G=0;
  28.                 LED_B=0;
  29.                 Delay1000ms();//红色亮1秒
  30.                 //空一行为了让程序更清晰
  31.                 LED_R=1;
  32.                 LED_G=1;
  33.                 LED_B=0;
  34.                 Delay1000ms();//黄色亮1秒
  35.                
  36.                 LED_R=0;
  37.                 LED_G=1;
  38.                 LED_B=0;
  39.                 Delay1000ms();//绿色亮1秒
  40.                
  41.                 LED_R=0;
  42.                 LED_G=1;
  43.                 LED_B=1;
  44.                 Delay1000ms();//青色亮1秒
  45.                
  46.                 LED_R=0;
  47.                 LED_G=0;
  48.                 LED_B=1;
  49.                 Delay1000ms();//蓝色亮1秒
  50.                
  51.                 LED_R=1;
  52.                 LED_G=0;
  53.                 LED_B=1;
  54.                 Delay1000ms();//紫色亮1秒
  55.                
  56.                 LED_R=1;
  57.                 LED_G=1;
  58.                 LED_B=1;
  59.                 Delay1000ms();//白色亮1秒
  60.         }
  61.         
  62. }
复制代码


回复 支持 1 反对 1

使用道具 举报

发表于 2016-9-13 13:51:16 | 显示全部楼层
全力支持,写的太好了,够细,完全能懂
回复 支持 1 反对 0

使用道具 举报

发表于 2016-9-16 00:04:42 | 显示全部楼层
看懂啦,哈哈
回复 支持 0 反对 1

使用道具 举报

发表于 2016-10-4 19:01:21 | 显示全部楼层
知识点11的内容是不是写错了
知识点(11) 引脚驱动能力
单片机输出低电平时,能提供的电流大概20ma。
单片机在输出高电平时,电流就很小了,不到1ma。(也有别的模式,这个以后会讲)
(单片机在通电后,引脚的默认输出都是高电平)

点评

哪里有问题?  详情 回复 发表于 2016-10-10 12:20
回复 支持 1 反对 0

使用道具 举报

发表于 2016-10-7 22:48:44 | 显示全部楼层
详细易懂。。。  每天看一点   然后就能自己做航灯了
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2016-10-10 12:20:56 | 显示全部楼层
oplover 发表于 2016-10-4 19:01
知识点11的内容是不是写错了
知识点(11) 引脚驱动能力
单片机输出低电平时,能提供的电流大概20ma。

哪里有问题?
回复 支持 0 反对 1

使用道具 举报

发表于 2016-10-10 20:54:07 | 显示全部楼层

单片机输出低电平时,允许流入的电流大概20ma。这样说更容易理解吧。
回复 支持 0 反对 1

使用道具 举报

发表于 2016-10-11 09:09:07 | 显示全部楼层
我爱萝丽爱萝丽 发表于 2016-10-10 12:20 第四课:听话的单片机  作者:oplover 8972
哪里有问题?

低电平时电流输出大高电平时电流小

点评

说法上确实有不严谨,低电平是流入电流  详情 回复 发表于 2016-10-12 10:42
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2016-10-12 10:42:19 | 显示全部楼层
oplover 发表于 2016-10-11 09:09
低电平时电流输出大高电平时电流小

说法上确实有不严谨,低电平是流入电流
回复 支持 1 反对 0

使用道具 举报

发表于 2016-10-13 15:34:28 | 显示全部楼层
下课了,老师辛苦了!
回复 支持 0 反对 1

使用道具 举报

发表于 2016-11-5 15:15:21 | 显示全部楼层
通俗易懂吖,第四课:听话的单片机  作者:mijklm 9873 第四课:听话的单片机  作者:mijklm 4543 又激发我继续学习单片机第四课:听话的单片机  作者:mijklm 5692 第四课:听话的单片机  作者:mijklm 1168
回复 支持 1 反对 0

使用道具 举报

发表于 2016-11-6 21:14:49 | 显示全部楼层
学习了                                   
回复 支持 1 反对 0

使用道具 举报

发表于 2016-11-10 13:45:35 | 显示全部楼层
勉强看得懂,看来C语言已经忘得差不多了。。。
回复 支持 0 反对 1

使用道具 举报

发表于 2016-11-14 15:10:29 | 显示全部楼层

感谢分享感谢分享
回复 支持 0 反对 1

使用道具 举报

发表于 2016-11-21 11:05:52 | 显示全部楼层
while (--k);
                } while (--j);
        } while (--i);
这个是干嘛用的

点评

延时,后面你就懂了  详情 回复 发表于 2016-11-21 12:37
回复 支持 0 反对 1

使用道具 举报

 楼主| 发表于 2016-11-21 12:37:16 | 显示全部楼层
半度微凉 发表于 2016-11-21 11:05
while (--k);
                } while (--j);
        } while (--i);

延时,后面你就懂了
回复 支持 1 反对 0

使用道具 举报

发表于 2016-12-23 14:01:42 | 显示全部楼层
楼主加油   楼主加油
回复 支持 0 反对 1

使用道具 举报

发表于 2017-1-8 22:20:57 | 显示全部楼层
谢谢萝莉大神,还是有些不理解这段:
单片机输出低电平时,能提供的电流大概20ma。
单片机在输出高电平时,电流就很小了,不到1ma

点评

就是说默认模式下5V输出电流小,0V流入的电流大  详情 回复 发表于 2017-1-9 15:02
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2017-1-9 15:02:27 | 显示全部楼层
iamchenda 发表于 2017-1-8 22:20
谢谢萝莉大神,还是有些不理解这段:
单片机输出低电平时,能提供的电流大概20ma。
单片机在输出高电平时, ...

就是说默认模式下5V输出电流小,0V流入的电流大

点评

谢谢,意思是说高电平状态,虽然电压高,但是引脚输出的电流小;低电平状态,输出电压是0V,这时候流入单片机VCC引脚上面的电流大,但是,引脚上面的电压是0V,也没有电流输出?  详情 回复 发表于 2017-1-9 21:29
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|关于模吧|APP下载|广告报价|小黑屋|手机版|企业会员|商城入驻|联系我们|模吧 ( 冀公网安备13080502000084号 )

© 2013-2020 Moz8.com 模吧,玩出精彩!