找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机小白求教51单片机流水灯控制

  [复制链接]
跳转到指定楼层
楼主
ID:135359 发表于 2016-7-28 16:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本人51单片机小白,刚刚开始学习单片机。
最近看到简单的流水灯的设计,在文件中输入
#include<reg52.h>
Void main()
{
P1=0xaa;
}
对单片机P1口的8I/O口同时进行输入,0x表示后面的数据以十六进制表示,十六进制的aa在二进制中为10101010,那么对应发光二极管的1.3.5.7亮,2.4.6.8灭,也可以将0xaa转化为十进制的170,如“P1=170;”
以上是郭天祥主编的51单片机教程中的一段,我拿着单片机进行尝试,流水灯也确实亮了。
但是,当我尝试对P1口的赋值做出改变时,结果却出了问题。
我输入P1=0xab,十六进制的ab转化成二进制应该是10101011,对应的应该是发光二极管1.3.5.7.8亮,然而实际上亮的灯却是3.5.7
P1=0xac,转化为二进制10101100对应发光二极管1.3.5.6亮,但实际上亮的是1.2.5.7
P1=0xad,转化为二进制10101101对应发光二极管1.3.5.6.8亮,但实际上亮的是2.5.7
求大神指教,这是怎么回事。

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:135410 发表于 2016-7-29 06:33 | 只看该作者
P1=0XAA 二进制为10101010对应发光二极管的1.3.5.7亮,说明你的发光二极管采用的是共阳极连接方式,二进制0为亮点,1为灭灯。所以P1=0xab二进制为10101011对应的应该是发光二极管3.5.7亮,P1=0xac,转化为二进制10101100对应发光二极管1.2.5.7亮。P1=0xad,转化为二进制10101101对应发光二极管2.5.7亮。
回复

使用道具 举报

板凳
ID:135359 发表于 2016-7-29 08:07 | 只看该作者
自顶,求大神指教
回复

使用道具 举报

地板
ID:135440 发表于 2016-7-29 11:47 | 只看该作者
你那个应该是0亮1不亮,从右像左看,注意00000001,我这里的1是指P1_0口,你看下你的电路,
回复

使用道具 举报

5#
ID:135359 发表于 2016-7-29 15:04 | 只看该作者
明白了,谢谢哈
回复

使用道具 举报

6#
ID:134239 发表于 2016-7-29 20:38 | 只看该作者
#include<reg52.h>
Void main()
{
P1=0xaa;
while (1);//不加程序就跑飞了
}
回复

使用道具 举报

7#
ID:134803 发表于 2016-7-30 09:57 | 只看该作者
写的时候要看看你板子的原理图,一般都能找到哪里出错
回复

使用道具 举报

8#
ID:135514 发表于 2016-7-30 10:48 | 只看该作者
#include<reg52.h>

int i;
int j;
void main()
{
        P1=0x7F;
        for(i=0;i<1000;i++)
                for(j=0;j<50;j++);
        P1=0xBF;
        for(i=0;i<1000;i++)
                for(j=0;j<50;j++);
        P1=0xDF;
        for(i=0;i<1000;i++)
                for(j=0;j<50;j++);
        P1=0xaEF;
        for(i=0;i<1000;i++)
                for(j=0;j<50;j++);
        P1=0xF7;
        for(i=0;i<1000;i++)
                for(j=0;j<50;j++);
        P1=0xFB;
        for(i=0;i<1000;i++)
                for(j=0;j<50;j++);
        P1=0xFD;
        for(i=0;i<1000;i++)
                for(j=0;j<50;j++);
        P1=0xfe;
        for(i=0;i<1000;i++)
                for(j=0;j<50;j++);
       

}
回复

使用道具 举报

9#
ID:135528 发表于 2016-7-30 14:11 | 只看该作者
学习中!感谢!!
回复

使用道具 举报

10#
ID:135528 发表于 2016-7-30 14:12 | 只看该作者
学习中!谢谢!!!!
回复

使用道具 举报

11#
ID:135359 发表于 2016-8-1 10:03 | 只看该作者

这是?
回复

使用道具 举报

12#
ID:71099 发表于 2016-8-1 11:55 | 只看该作者
因为二极管的阴极接在单片机的引脚上,而阳极接在了VCC上,在阴极为0时,发光二极管才会亮!
回复

使用道具 举报

13#
ID:135592 发表于 2016-8-1 16:47 | 只看该作者
看着很有帮助。
回复

使用道具 举报

14#
ID:135710 发表于 2016-8-1 17:55 | 只看该作者

这个程序不错哦
回复

使用道具 举报

15#
ID:135715 发表于 2016-8-1 18:47 | 只看该作者
请提供原理图
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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