找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 9833|回复: 24
收起左侧

新手求助!!单片机点亮1,3,5,7这四个发光管,如何用总线操作完成

  [复制链接]
ID:155888 发表于 2016-12-26 11:18 | 显示全部楼层 |阅读模式
点亮1,3,5,7这四个发光管,如何用总线操作完成。我自己是这样的。
#include<reg52.h>
void main()
{
     P1=0xfe;
     P1=0xfc;
     P1=0xef;
     P1=0xcf;
}
不知道哪里出了问题。。

评分

参与人数 1黑币 +5 收起 理由
gg669933 + 5 很给力!

查看全部评分

回复

使用道具 举报

ID:98767 发表于 2016-12-27 10:48 | 显示全部楼层
如果只是一次点亮1357用一条语句就行了
回复

使用道具 举报

ID:152252 发表于 2016-12-27 11:39 | 显示全部楼层
多试几次
回复

使用道具 举报

ID:111634 发表于 2016-12-27 21:30 | 显示全部楼层
本帖最后由 zl2168 于 2016-12-27 21:32 编辑

中间要有延时,而且要循环显示。
花样循环灯



花样循环1

全亮2秒;

从上至下依次暗灭(间歇约0.5秒),每次减少一个,直至全灭;

从上至下依次点亮(间歇约0.5秒),每次增加一个,直至全亮;

闪烁5次(亮暗时间各约0.5秒);

重复上述过程,不断循环。

花样循环2

全亮,全暗,并重复一次;

从上至下,每次亮2个,并重复一次;

从上至下,每次亮4个,并重复一次;

从上至下,每次间隔亮2个(亮灯中间暗一个),并重复一次;

从上至下,每次间隔亮4个(亮灯中间暗一个),并重复一次;

上述过程更新间隔0.5秒,不断循环重复。


Proteus仿真一下,确认有效
实例28 花样循环灯(3种控制程序).rar (35.78 KB, 下载次数: 10)

以上摘自张志良编著《单片机实验实训100例》 ISBN978-7-5124-1603-1,北航社出版
书中电路和程序设计有详细说明,程序语句条条有注解。





回复

使用道具 举报

ID:158282 发表于 2016-12-28 11:05 | 显示全部楼层
你的这段都不是这个意思
回复

使用道具 举报

ID:155888 发表于 2016-12-31 15:41 | 显示全部楼层
本帖最后由 z214135221 于 2016-12-31 15:47 编辑

#include<reg52.h>
void main()
{
        P1=0xfe,
        P1=0xfb,
        P1=0xef,
        P1=0xbf;  }                                 
111.png 为什么其他3个没有第4个亮啊?

回复

使用道具 举报

ID:149988 发表于 2016-12-31 17:30 | 显示全部楼层

RE: 新手求助!!单片机点亮1,3,5,7这四个发光管,如何用总线操作完成

试试这个程序怎么样。
#include<reg52.h>         
#include<intrins.h>
void Delay10ms(unsigned int a)  
{
  unsigned int b,c;
  for(c=a;c>0;c--)
    for(b=2000;b>0;b--);  
}   
main()
{
        unsigned char LED;
        LED=0x80;          
        while(1)
        {
    P0=LED;
    Delay10ms(50);
    LED=_crol_(LED,2);   
        }
}
回复

使用道具 举报

ID:159130 发表于 2016-12-31 21:08 来自手机 | 显示全部楼层
同学,你p1在第一条语句里点亮了第一个灯,但同时也灭了其他的灯
回复

使用道具 举报

ID:159130 发表于 2016-12-31 21:09 来自手机 | 显示全部楼层
qq23412 发表于 2016-12-31 21:08
同学,你p1在第一条语句里点亮了第一个灯,但同时也灭了其他的灯

第二条语句点亮的第二个,同时也灭了其他灯。不信你可以留四条赋值语句中的其中一条试试
回复

使用道具 举报

ID:159130 发表于 2016-12-31 21:11 来自手机 | 显示全部楼层
要正确的点亮1357 你可以赋值0x55
回复

使用道具 举报

ID:156580 发表于 2016-12-31 22:10 | 显示全部楼层
执行完之后应该最后一条有效吧,然后程序就跑飞了
回复

使用道具 举报

ID:159171 发表于 2017-1-1 11:38 | 显示全部楼层
while 来一个循环
回复

使用道具 举报

ID:155888 发表于 2017-1-4 12:53 | 显示全部楼层
已经弄明白了,多谢各位的帮助!!
回复

使用道具 举报

ID:159841 发表于 2017-1-4 13:02 | 显示全部楼层
你这个肯定不对三  你不觉得少了东西?
回复

使用道具 举报

ID:159874 发表于 2017-1-4 14:41 | 显示全部楼层
其实你差不多了,再仔细研究一下
回复

使用道具 举报

ID:140489 发表于 2017-1-13 11:26 | 显示全部楼层
//点亮1,3,5,7这四个发光管
#include<reg52.h>
void main()
{   
     while(1)
    {
     P1=0xaa;
     )
}
回复

使用道具 举报

ID:149144 发表于 2017-1-13 16:09 | 显示全部楼层
你只点亮了一瞬间 没有保持
while(1)
   {
     P1=0xfe;
     P1=0xfc;
     P1=0xef;
     P1=0xcf;
   }
回复

使用道具 举报

ID:161433 发表于 2017-1-13 16:28 | 显示全部楼层
感觉都没有循环,虽然我是刚接触,但还是能看懂一点,呵呵
回复

使用道具 举报

ID:158106 发表于 2017-1-14 17:16 | 显示全部楼层
  如果只是一次点亮1357用一条语句就行了
回复

使用道具 举报

ID:157764 发表于 2017-1-14 22:40 | 显示全部楼层
.meiyou 问题吧
回复

使用道具 举报

ID:952924 发表于 2021-7-14 10:57 | 显示全部楼层
void  main()

     P1=Oxfe;Oxfb;Oxef;Oxbf;

  }

是这样的吗
回复

使用道具 举报

ID:824490 发表于 2021-7-14 15:29 | 显示全部楼层
认真学 发表于 2021-7-14 10:57
void  main()

     P1=Oxfe;Oxfb;Oxef;Oxbf;

你的名字起的真不错!我只能这么说了。。。按你的名字来吧!
回复

使用道具 举报

ID:934353 发表于 2021-7-14 15:39 | 显示全部楼层
void main()
{
    whilw(1)
{
     P1=0xaa;
}
}
这样就可以了,一次点亮就行,如果要依次点亮就不是这样写
回复

使用道具 举报

ID:752225 发表于 2021-7-14 18:38 | 显示全部楼层
按照程序执行顺序,11111110执行到11111100到11101111到11001111然后结束,每一条重新执行速度非常快,你感受不到,在现实中就是单片机只显示了第四行功能,也就是只亮两个灯
回复

使用道具 举报

ID:519089 发表于 2021-7-14 19:58 | 显示全部楼层
MOV P0,H0FE
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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