找回密码
 立即注册

QQ登录

只需一步,快速开始

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

怎么用51单片机点亮流水灯?

  [复制链接]
跳转到指定楼层
楼主
ID:146902 发表于 2016-11-8 20:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
怎么用51单片机点亮流水灯?求电路图
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:146901 发表于 2016-11-8 21:01 | 只看该作者

#include <REG51.h>
#define uint unsigned int
#define uchar unsigned char
sbit P10=P1^0;
sbit P11=P1^1;
sbit P12=P1^2;
sbit P13=P1^3;
sbit P14=P1^4;
sbit P15=P1^5;
sbit P16=P1^6;
sbit P17=P1^7;
void delay (uint);// 延时函数
void delay (uint x)
{
uchar tw;
while (x-->0)
{
for (tw=0;tw<125;tw++){;}
}
}
void main(void)
{
while( 1)
{
P1=0xff;
delay(50);
P10=0;
delay(50);
P10=1;
P11=0;
delay(50);
P11=1;
P12=0;
delay(50);
P12=1;
P13=0;
delay(50);
P13=1;
P14=0;
delay(50);
P14=1;
P15=0;
delay(50);
P15=1;
P16=0;
delay(50);
P16=1;
P17=0;
delay(50);
}
}
我也刚试验成功。图画的不好,见谅。

评分

参与人数 1黑币 +5 收起 理由
若n1碰到他 + 5 很给力!

查看全部评分

回复

使用道具 举报

板凳
ID:146908 发表于 2016-11-8 21:12 | 只看该作者
简单呢

评分

参与人数 1黑币 +4 收起 理由
若n1碰到他 + 4 赞一个!

查看全部评分

回复

使用道具 举报

地板
ID:138155 发表于 2016-11-9 08:28 | 只看该作者
楼上已经给你贴出来了呀 可以用左移 也可以用右移函数
回复

使用道具 举报

5#
ID:146955 发表于 2016-11-9 08:46 | 只看该作者
就是规律地控制引脚点位的高低
回复

使用道具 举报

6#
ID:51321 发表于 2016-11-9 15:07 | 只看该作者
自己查资料 效果好
回复

使用道具 举报

7#
ID:147040 发表于 2016-11-9 15:16 来自触屏版 | 只看该作者
先赋格初值,直接用左移或右移函数就搞定了。
回复

使用道具 举报

8#
ID:147047 发表于 2016-11-9 15:33 | 只看该作者
讲真,不会是大学作业吧
回复

使用道具 举报

9#
ID:144938 发表于 2016-11-9 16:03 | 只看该作者
简单呢
回复

使用道具 举报

10#
ID:147098 发表于 2016-11-9 19:25 | 只看该作者
还有更简单的;楼上那个定义太复杂了
回复

使用道具 举报

11#
ID:147098 发表于 2016-11-9 19:28 | 只看该作者
本帖最后由 woshishihaode 于 2016-11-9 19:31 编辑

#include<reg51.h>
#include<intrins.h>
void delay(unsigned int i)
{unsigned int k;
for(k=0;k<i;k++);
}
void main()
回复

使用道具 举报

12#
ID:147098 发表于 2016-11-9 19:28 | 只看该作者
{P1=0xfe;while(1){
回复

使用道具 举报

13#
ID:147098 发表于 2016-11-9 19:30 | 只看该作者
本帖最后由 woshishihaode 于 2016-11-9 19:32 编辑

P1=_cror_(P1,1);delay(5000);}}//里面的可更,看你要好快!!--表示分行哈
回复

使用道具 举报

14#
ID:94489 发表于 2016-11-9 20:01 | 只看该作者
#include<reg51.h>
#include<intrins.h>
回复

使用道具 举报

15#
ID:147114 发表于 2016-11-9 20:34 | 只看该作者
给你想要点亮灯的引脚给一个0,就可以了
回复

使用道具 举报

16#
ID:146902 发表于 2016-11-9 20:54 | 只看该作者
超电磁场 发表于 2016-11-9 15:33
讲真,不会是大学作业吧

不是的,我大二,自己想做点东西出来,理论知识跟不上。
回复

使用道具 举报

17#
ID:146902 发表于 2016-11-9 20:57 | 只看该作者
benq1 发表于 2016-11-8 21:01
#include
#define uint unsigned int
#define uchar unsigned char

如果我想接32个二极管呢?该怎么改写程序?
回复

使用道具 举报

18#
ID:147200 发表于 2016-11-10 12:38 | 只看该作者
这是基础 了  先学c语言
回复

使用道具 举报

19#
ID:147349 发表于 2016-11-10 22:01 | 只看该作者
使其左右移就可以了
回复

使用道具 举报

20#
ID:147375 发表于 2016-11-10 23:35 | 只看该作者
你要看看是想共阴还是共阳
回复

使用道具 举报

21#
ID:147405 发表于 2016-11-11 14:09 | 只看该作者
自己查资料,比较简单
回复

使用道具 举报

22#
ID:147408 发表于 2016-11-11 14:39 | 只看该作者
#在这#include <REGX52.H>里快速回复#
回复

使用道具 举报

23#
ID:111634 发表于 2016-11-12 13:27 | 只看该作者
本帖最后由 zl2168 于 2016-11-12 13:38 编辑
若n1碰到他 发表于 2016-11-9 20:57
如果我想接32个二极管呢?该怎么改写程序?

32个二极管,初学者一般用4个I/O口,4*8=32,但这样不好,是笨办法。应该是I/O口扩展,I/O口扩展有并行扩展和串行扩展。
给你介绍几个案例


4 扩展输入输出应用


4.1  并行扩展


实例21  并行扩展TTL输入输出口


实例22  并行扩展8255


实例23  并行扩展8155


实例24  并行扩展RAM 6264


4.2  同步移位寄存器串行扩展


实例25  74HC165串行输入8/16数据信号


实例26  CC4021串行输入8/16数据信号


实例27  CC4014串行输入8/16数据信号


实例28  74HC164串入并出控制8/16循环灯


实例29  CC4094串入并出控制8/16循环灯


实例30  74HC595串入并出控制8/16循环灯


实例31 74HC164+165串行输入输出


实例32 CC4021+4094串行输入输出


实例33 74HC164+165虚拟串行输入输出


实例34 CC4021+4094虚拟串行输入输出


Proteus仿真一下,确认有效。
51单片机仿真设计实例教程仿真文件.rar (4.88 MB, 下载次数: 21)
以上摘自张志良编著《80C51单片机仿真设计实例教程——基于Keil CProteus》清华大学出版社ISBN 978-7-302-41682-1内有常用的单片机应用100案例,用于仿真实验操作,电路与程序真实可靠可信可行

回复

使用道具 举报

24#
ID:147578 发表于 2016-11-12 22:48 | 只看该作者
用—crol_函数实现
回复

使用道具 举报

25#
ID:147591 发表于 2016-11-13 00:19 | 只看该作者
原理图?买的开发板应该都带啊
回复

使用道具 举报

26#
ID:148885 发表于 2016-11-20 21:01 | 只看该作者
为啥传不了图。就是做好最小系统,把LED接在随意I/O口就行。在LED前接10K的电阻为上拉电阻。如接在了P0口则P0=0XFF则全亮
回复

使用道具 举报

27#
ID:149094 发表于 2016-11-20 22:02 | 只看该作者
楼上的比较麻烦,可以用位移,简单方便。
回复

使用道具 举报

28#
ID:148964 发表于 2016-11-20 22:26 | 只看该作者
初学者,多看几遍视频,效果比较好。
回复

使用道具 举报

29#
ID:149103 发表于 2016-11-20 22:37 | 只看该作者
楼上回复了,祝成功,加油
回复

使用道具 举报

30#
ID:146019 发表于 2016-11-20 23:42 | 只看该作者
自己查资料印象高,楼上的方法都不错。
回复

使用道具 举报

31#
ID:149122 发表于 2016-11-21 08:41 | 只看该作者
先看懂电路图
回复

使用道具 举报

32#
ID:149180 发表于 2016-11-21 11:51 | 只看该作者
用数组
回复

使用道具 举报

33#
ID:149149 发表于 2016-11-21 16:30 | 只看该作者
楼上很详细
回复

使用道具 举报

34#
ID:143750 发表于 2016-11-21 16:45 | 只看该作者
谢谢分享
回复

使用道具 举报

35#
ID:148442 发表于 2016-11-22 02:18 | 只看该作者
可以先去看看例程,然后结合自己所知的理论知识再把它彻底弄懂。


//--包含你要使用的头文件
#include <reg52.h>          //此文件中定义了51的一些特殊功能寄存器


//--声明全局函数--//
void Delay10ms(unsigned int c);   //延时10ms            


main()
{
        unsigned char LED,i;

        LED = 0xfe;          //0xfe = 1111 1110

        while (1)
        {
             P0 = LED;
                 Delay10ms(50);
        for(i=8;i>0;i--)
        {
                   LED = LED << 1;    //循环右移1位,点亮下一个LED "<<"为左移位                                     
         }
         }

void Delay10ms(unsigned int c)   //误差 0us
{
    unsigned char a, b;

                for (b=c;b>0;b--)
                {
                        for (a=114;a>0;a--);
                }
           
        }      
}
回复

使用道具 举报

36#
ID:149537 发表于 2016-11-22 19:20 | 只看该作者
#include<reg51.h>
#include<intrins.h>
void delay(unsigned int i)
{unsigned int k;
for(k=0;k<i;k++);
}
void main()
回复

使用道具 举报

37#
ID:149640 发表于 2016-11-23 09:22 | 只看该作者
二楼正解啊,很详细
回复

使用道具 举报

38#
ID:149656 发表于 2016-11-23 10:37 | 只看该作者

二楼正解啊,很详细
回复

使用道具 举报

39#
ID:149740 发表于 2016-11-23 16:13 | 只看该作者
循环P1=_cror_(P1,1)右移
循环P1=_crol_(P1,1)移左
回复

使用道具 举报

40#
ID:149886 发表于 2016-11-24 10:27 | 只看该作者
挺简单的,我刚做
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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