模吧

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

2765查看 | 15回复

[单片机课堂] 萝莉第五课七色灯实验

[复制链接]
发表于 2016-9-13 17:35:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
  1. <font size="6" color="#ff0000">/*</font>
复制代码


萝莉第五课七色灯实验 萝莉 作者:ldy7474 9770
萝莉第五课七色灯实验 萝莉 作者:ldy7474 4524
 楼主| 发表于 2016-9-13 17:37:38 | 显示全部楼层
本帖最后由 ldy7474 于 2016-9-13 17:43 编辑

#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit LED_B=P1^1;//定义蓝灯
sbit LED_R=P1^0;//定义红灯
sbit LED_G=P3^7;//定义绿灯

void Delay1ms()                //@12.000MHz
{
        uchar i, j;

        i = 12;
        j = 169;
        do
        {
                while (--j);
        } while (--i);
}

void delay_n_ms(uint n) //自己定义的延时n毫秒函数
{
        while(n)         
        {
                Delay1ms();
                n=n-1;//每循环一次n减小1
        }   
}


main()
{        uint y;
   y=800;//这里我吧延时函数的值改成了变量
delay_n_ms(y); 以后修改y的值就可以调节闪烁的频率不用在一个个去修改
        
        while(1)
        {         
                LED_R=1;
                LED_G=0;
                LED_B=0;
                        //        LED_k=0;
                delay_n_ms(y);//红色亮0.1秒
                                                                        
                LED_R=1;
                LED_G=1;
                LED_B=0;
                delay_n_ms(y);//黄色亮0.1秒
               
                LED_R=0;
                LED_G=1;
                LED_B=0;
                delay_n_ms(y);//绿色亮0.1秒
                 
                LED_R=0;
                LED_G=1;
                LED_B=1;
                delay_n_ms(y);//青色亮0.1秒
               
                LED_R=0;
                LED_G=0;
                LED_B=1;
                delay_n_ms(y);//蓝色亮0.1秒
               
                LED_R=1;
                LED_G=0;
                LED_B=1;
                delay_n_ms(y);//紫色亮0.1秒
               
                LED_R=1;
                LED_G=1;
                LED_B=1;
                delay_n_ms(y);//白色亮1.0秒
                                
               
        }
        
}
发表于 2016-9-13 18:23:39 | 显示全部楼层
我靠,还会改萝丽的程序,你写几个程序出来大家分享一下,萝丽一个人教,很累的,你分担点
 楼主| 发表于 2016-9-13 18:44:01 来自手机 | 显示全部楼层
yrj 发表于 2016-9-13 18:23
我靠,还会改萝丽的程序,你写几个程序出来大家分享一下,萝丽一个人教,很累的,你分担点
...

阁下抬爱了    其心可嘉
但是能力有限
我到是想  可惜心有余而力不足
发个贴是全当交作业  至于修改程序  只是修改下引脚定义  主机不同接口不一样得改下才能运行  

发表于 2016-9-13 18:49:17 | 显示全部楼层
ldy7474 发表于 2016-9-13 18:44 萝莉第五课七色灯实验 萝莉 作者:机甲老顽童 9325
阁下抬爱了    其心可嘉
但是能力有限
我到是想  可惜心有余而力不足

你比初学的懂得多,弄点小程序大家学习下,可以减轻萝丽的负担,萝丽负责高级点的
发表于 2016-9-13 19:55:04 | 显示全部楼层
本帖最后由 Loki 于 2016-9-13 19:58 编辑
ldy7474 发表于 2016-9-13 17:37
#include
#include
#define uint unsigned int

我觉得楼主可以这样改个程序,反正还有个引脚没用到,你再接一个按键开关,检测到低电平Y加100,或者啥的,加多少变多少自己定,然后可以设置个上限,过了就重置,重置成啥也是自己定义,用到的语句大概有这些
  1. sbit YY=P...//就是那个没用到的引脚,看你这单片机引脚那么多,你也可以弄2个开关,1个加1个减,道理都是一样的, while(1)
  2. {
  3. if(YY==0)Y++;//这句就是检测到低电平时改变Y的语句了,也可以改成别的值,你开心就好
  4. }
复制代码



发表于 2016-9-13 19:59:50 | 显示全部楼层
先占位'在学习
发表于 2016-9-13 20:26:08 | 显示全部楼层
ldy7474 发表于 2016-9-13 17:37
#include
#include
#define uint unsigned int

好像你定义了变量 y的值,那么  //紫色亮0.1秒 //白色亮1.0秒 这些不成立了,所有的灯都亮相同时间了...萝丽老师的用意就是想表达如何让其中一个颜色亮的跟其他的不同
发表于 2016-9-13 20:29:05 | 显示全部楼层
大神                           
发表于 2016-9-13 21:11:45 | 显示全部楼层
路过帮顶
发表于 2016-9-14 00:30:41 | 显示全部楼层
好牛掰的程序猿,在下表示看不懂

 楼主| 发表于 2016-9-14 03:11:48 来自手机 | 显示全部楼层
Loki 发表于 2016-9-13 19:55
我觉得楼主可以这样改个程序,反正还有个引脚没用到,你再接一个按键开关,检测到低电平Y加100,或者啥的 ...

呵呵以后会一步步完善现在刚学好多东西都没捋顺  脑袋不好使思路容易打结呵呵
 楼主| 发表于 2016-9-14 03:17:54 来自手机 | 显示全部楼层
枫飞秋语 发表于 2016-9-13 20:26
好像你定义了变量 y的值,那么  //紫色亮0.1秒 //白色亮1.0秒 这些不成立了,所有的灯都亮相同时间了...萝 ...

嗯?  让其中一个灯亮的时间不同这个也简单把延时函数单独调用就好  我这样改是为控制电机做准备  验证一下所学  
发表于 2016-9-14 09:59:17 | 显示全部楼层
ldy7474 发表于 2016-9-14 03:17
嗯?  让其中一个灯亮的时间不同这个也简单把延时函数单独调用就好  我这样改是为控制电机做准备  验证一 ...

嗯。。有道理。。。如果都是同一延时的,单独定义个变量的确方便很多!
发表于 2016-9-15 01:21:17 | 显示全部楼层
高手在线。
发表于 2016-9-20 00:12:26 | 显示全部楼层
你的硬件没加三极管8050,亮度如何?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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