标题: 单片机小白求教51单片机流水灯控制 [打印本页]

作者: Illxy    时间: 2016-7-28 16:34
标题: 单片机小白求教51单片机流水灯控制
本人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
求大神指教,这是怎么回事。


作者: lqw_vip    时间: 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亮。
作者: Illxy    时间: 2016-7-29 08:07
自顶,求大神指教
作者: 365054707    时间: 2016-7-29 11:47
你那个应该是0亮1不亮,从右像左看,注意00000001,我这里的1是指P1_0口,你看下你的电路,
作者: Illxy    时间: 2016-7-29 15:04
明白了,谢谢哈
作者: 0o000000    时间: 2016-7-29 20:38
#include<reg52.h>
Void main()
{
P1=0xaa;
while (1);//不加程序就跑飞了
}
作者: 小文01    时间: 2016-7-30 09:57
写的时候要看看你板子的原理图,一般都能找到哪里出错
作者: 唐晓原    时间: 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++);
       

}
作者: 13560889960    时间: 2016-7-30 14:11
学习中!感谢!!
作者: 13560889960    时间: 2016-7-30 14:12
学习中!谢谢!!!!
作者: Illxy    时间: 2016-8-1 10:03
唐晓原 发表于 2016-7-30 10:48
#include

int i;

这是?
作者: geminiguy_07    时间: 2016-8-1 11:55
因为二极管的阴极接在单片机的引脚上,而阳极接在了VCC上,在阴极为0时,发光二极管才会亮!
作者: YUSHUZHAO    时间: 2016-8-1 16:47
看着很有帮助。
作者: 创新、9    时间: 2016-8-1 17:55
唐晓原 发表于 2016-7-30 10:48
#include

int i;

这个程序不错哦
作者: 760656130    时间: 2016-8-1 18:47
请提供原理图




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1