小白求助单片机流水灯问题

2019-03-24 17:33发布

本人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.7P1=0xac,转化为二进制10101100对应发光二极管1.3.5.6亮,但实际上亮的是1.2.5.7P1=0xad,转化为二进制10101101对应发光二极管1.3.5.6.8亮,但实际上亮的是2.5.7求大神指教,这是怎么回事。





此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
12条回答
Illxy
1楼-- · 2019-03-25 01:49
 精彩回答 2  元偷偷看……
wgsxsm
2楼-- · 2019-03-25 07:11
我输入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。

看得出来,应该是你没有把原理图吃透,也就是硬件问题:可能是教程里的对位写1灯亮,而你的硬件刚好相反,对位写0灯亮,而且牵涉高低位问题
Illxy
3楼-- · 2019-03-25 10:03
wgsxsm 发表于 2016-7-29 08:42
看得出来,应该是你没有把原理图吃透,也就是硬件问题:可能是教程里的对位写1灯亮,而你的硬件刚好相反 ...

大神,那我这个得怎么处理啊,怎么控制流水的灯?
雨后的梧桐
4楼-- · 2019-03-25 10:16
 精彩回答 2  元偷偷看……
Illxy
5楼-- · 2019-03-25 13:02
雨后的梧桐 发表于 2016-7-29 08:58
既然硬件错了,那么你就对应的该软件不就完了吗?

好的,我试试,谢谢大神了
雨后的梧桐
6楼-- · 2019-03-25 16:28
Illxy 发表于 2016-7-29 09:01
好的,我试试,谢谢大神了

客气,小事

一周热门 更多>