找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 9536|回复: 16
打印 上一主题 下一主题
收起左侧

如果你自认为高手就来试试这个!

[复制链接]
跳转到指定楼层
楼主
ID:3619 发表于 2008-8-25 21:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最简单的流水肯定难不倒自认为高手的您啦,题目也是非常的简单,8个流水灯,要求第一个1/8亮,第二个2/8亮,第三个3/8亮第四个4/8亮,一直到第八个8/8亮也就是全亮!也许您说了,单片机是数字电路,没有模拟的信号,不可能作到半亮半不亮的状态,其实也不完全是这个样子的.好好想办法还是有的!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:4574 发表于 2008-8-25 23:43 | 只看该作者
我不是什么高手,但感觉该题不是很难,
可以使用2 个不同的变量,一个控制8个流水灯的公共线电源,另一个变量控制相应部分的另一端就可以了吧
就象动态控制LED显示一样。
  
回复

使用道具 举报

板凳
ID:4611 发表于 2008-8-27 14:37 | 只看该作者

可不可以用串电阻限流的方法啊!就好像电气工程里电动机串电阻降压启动那样? 有时间试试!楼主应该给点提示啊!

回复

使用道具 举报

地板
ID:4649 发表于 2008-8-28 10:28 | 只看该作者
用方波占空比来控制LED亮度  LED视频大屏幕就是这样控制的
回复

使用道具 举报

5#
ID:3271 发表于 2008-8-28 12:36 | 只看该作者
PWM技术
回复

使用道具 举报

6#
ID:4689 发表于 2008-8-29 19:28 | 只看该作者
看看
回复

使用道具 举报

7#
ID:5074 发表于 2008-9-8 16:55 | 只看该作者
其实我觉得用动态扫描就OK,
控制好亮灯的时间长度和灭灯的时间长度,
就应该可以控制亮度
回复

使用道具 举报

8#
ID:5141 发表于 2008-9-10 10:52 | 只看该作者
看不懂  不过 过几天就会了
回复

使用道具 举报

9#
ID:891089 发表于 2021-4-9 11:22 | 只看该作者
pwm正解
回复

使用道具 举报

10#
ID:856401 发表于 2021-4-10 07:59 来自手机 | 只看该作者
PWM脉宽调制
回复

使用道具 举报

11#
ID:347856 发表于 2021-4-11 20:59 | 只看该作者
#include <REG52.H>
#define uchar unsigned char
#define uint unsigned int

sbit light1=P1^7;
sbit light2=P1^6;
sbit light3=P1^5;
sbit light4=P1^4;
sbit light5=P1^3;
sbit light6=P1^2;
sbit light7=P1^1;
sbit light8=P1^0;
                                                                                                                                                                                                                                                                                                                                                                               

void Timer0 () interrupt 1
{
    static uchar count;
        TH0=(65536-4500)/256; //装初值12M晶振定时50ms数为5000
        TL0=(65536-4500)%256;
        count++;

        if(count==1){light1=1;light2=1;light3=1;light4=1;light5=1;light6=1;light7=1;light8=0;}         
        if(count==2){light1=1;light2=0;light3=0;light4=0;light5=0;light6=0;light7=0;light8=0;}  
        if(count==3){light1=1;light2=1;light3=1;light4=1;light5=1;light6=0;light7=0;light8=0;}  
        if(count==4){light1=0;light2=1;light3=0;light4=0;light5=0;light6=0;light7=0;light8=0;}  
        if(count==5){light1=1;light2=0;light3=1;light4=1;light5=1;light6=1;light7=0;light8=0;}  
        if(count==6){light1=1;light2=1;light3=0;light4=0;light5=0;light6=0;light7=0;light8=0;}  
        if(count==7){light1=1;light2=1;light3=1;light4=1;light5=0;light6=0;light7=0;light8=0;}  
        if(count==8){light1=1;light2=1;light3=1;light4=0;light5=0;light6=0;light7=0;light8=0;count=0;}  
}


void main()
{
        TMOD=0x11;        //将定时器0设置成工作方式1
        TH0=(65536-4500)/256; //装初值12M晶振定时50ms数为5000
        TL0=(65536-4500)%256;


        EA=1; //开总中断
        ET0=1; //开中断
        TR0=1;//开关计时器0

        while(1)
   {

    }
}

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

12#
ID:69115 发表于 2021-4-12 00:34 | 只看该作者
用PWM方法,8级分辨率就行了.
koboman 的PWM写的不错.
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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