标题: 单片机小白求教51单片机流水灯控制 [打印本页]
作者: Illxy 时间: 2016-7-28 16:34
标题: 单片机小白求教51单片机流水灯控制
本人51单片机小白,刚刚开始学习单片机。
最近看到简单的流水灯的设计,在文件中输入
#include<reg52.h>
Void main()
{
P1=0xaa;
}
对单片机P1口的8个I/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
这是?
作者: geminiguy_07 时间: 2016-8-1 11:55
因为二极管的阴极接在单片机的引脚上,而阳极接在了VCC上,在阴极为0时,发光二极管才会亮!
作者: YUSHUZHAO 时间: 2016-8-1 16:47
看着很有帮助。
作者: 创新、9 时间: 2016-8-1 17:55
这个程序不错哦
作者: 760656130 时间: 2016-8-1 18:47
请提供原理图
欢迎光临 (http://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |