怎样让单片机在P1.和P3口同时控制16个LED灯呢?,要求16个LED灯能无缝链接控制!!!!!!!!!!!!!

作者&投稿:郦武 (若有异议请与网页底部的电邮联系)
51单片机C语言,如何把只在P3口带LED的程序改成P1 P2 P3三个口同时带LED的?~

把三个口全部赋值,应就可以了吧。
和您一起学习一下。错了的话,请多多包涵!

void main() //主函数
{
while(1) //大循环
{
for(num=0;num<105;num++) //数组循环
{
P1=table[num]; //调用数组
P2=table[num];
P3=table[num];
delay_1s(); //调用子函数
}
}
}

接两个 74164,做串并转换,
显示 两条线控制 一个74164的8个口做段显,
两个口做位选。
按键 两条线控制另一个 74164的8个口做扫描口,
两个口来做输入口
按键接成 2*8的矩阵。
两个74164的DAT线可以复用一线的哦,这样总共也就用了7条线。

你说的问题是不存在的

首先8位机 没有办法一次控制16个口……
所以要分两次控制 当然有缝的 但是这个缝实在太小的 几个微秒!!! 只要这个缝小于1毫秒 就根本看不出来

你也没有必要让你个8位机拆开那16位的数 分别送到两个口(你说不是瞎折腾吗?)

给你一个提示
for (i=0;i<n;i++)
{
P1 = [i][0];
P2 = [i][1];
DelayMs(x);
}

二维数组里面放你想要的花样
delay是延时函数 x=你想要的时间
查表的好处是花样非常不受限制 程序非常简单~(全部用char)

定义一个unsigned int 型的变量,然后对这个变量进行移位操作,延时以后将变量的高字节送P1口,低字节送P3口,很简单的,程序我就不写了,51我已经很久没用了,不太记得了。你自己应该写得出来!

试试下面的程序。
#include <reg52.h> //51芯片管脚定义头文件
#include <intrins.h> //内部包含延时函数 _nop_();

#define uchar unsigned char
#define uint unsigned int

void delay(uint z)
{
uint i,j;
for (i = z; i > 0; i--)
for (j = 110; j > 0; j--);
}
main(void)
{
uint deng = 0x7FFF;
while(1) {
P1 = deng / 256;
P3 = deng % 256;
deng = _iror_(deng, 1);
delay(100);
}
}

很简单的查表程序就可以搞定,不是正在学习嘛,自己搞定能学会很多东西的,比看别人的程序效果好……

查表方式双IO口流水灯

http://blog.liuwentao.net/read.php?131

http://blog.liuwentao.net/attachment/200705/as_led_05.gif

单片机P1——P3口作为输入口的时候 为什么要先向该口写1呢?
答:P1口可输入可输出。P1口作为输入口, 怎么作为?哪条指令让它作为输入口,怎么样才能让它作为输入口,光靠我们想像行吗?有的单片机,会有个寄存器,设置IO口是输入还是输出,但这个没有。那这个怎么让它成为输入或者输出呢。每个口上都有一个锁存器,锁住之前写的值。比如,口上只是接一个上拉...

请高手帮忙解答,简述51单片机P1,P3的主要功能和性能特点
答:我们着重讨论P3口的第二功能,P3口的第二功能各管脚定义如下:·P3.0 串行输入口(RXD)·P3.1 串行输出口(TXD)·P3.2 外中断0(INT0)·P3.3 外中断1(INT1)·P3.4 定时/计数器0的外部输入口(T0)·P3.5 定时/计数器1的外部输入口(T1)·P3.6 外部数据存储器写...

在学单片机,我想知道p0-p3 cpu是怎么控制它每个端口是干嘛用的,比如...
答:p0-p3 是双向输入输出口 输出时 用 MOV A,#direct MOV P1,A P1口的管脚)即输出数据 输入时先向端口写入1 然后执行 MOV A,P1 即读入了P1 口状态 或JB P1.0 即或获取单个引脚状态 P3口第二功能,只要开启,它就会生效 如外部中断引脚,只要你开总中断和外部中断,当在此管脚上出现...

【求单片机C语言程序】STC89C52通过两个外部中断P3.2和P3.3,来控制P1....
答:/*模块低电平有效、外部中断0、1为低电平出发*/ include "reg52.h"void delay( char i){ unsigned char t;while(i--){ for(t=0;t<108;t++);} } void INT0_ROUTING() interrupt 0//外部中断0子程序 { P0=0xfe;//LED0点亮 while((P3|0xfb)==0xff);//等待外部中断0口(P3^2...

怎样使用51单片机p3口的第二功能?
答:使用51单片机p3口的第二功能,并不需要刻意安排,只要启用了相应功能或执行了相应指令,自然就启用了p3口的第二功能。比如:\x0d\x0a1、使用了串行口收发数据通信功能,P3.0、P3.1就是RXD、TXD通信线。\x0d\x0a2、允许了外部中断0和1,P3.2、P3.2自然就是外部中断输入管脚。\x0d\x0a3...

51单片机引脚哪里是P0,P1哪里是P2哪里是P3?有没有P4?
答:51单片机引脚P0引脚包含P0.0、P0.1、P0.7,共八个引脚。P1、P2、P3也一样,没有P4。P0口第一个引脚(第一个端口)就是单片机的第39引脚,在汇编语言中就表示为P0.0,在C51中表示为P0^0.

在单片机P1口连接8个发光二极管P3.0连接按键当按键按下时,从低位到高位...
答:sbit key=P3^0;void delay_ms(unsigned long t){ static unsigned short a;while(t--)for(a=0;a<1000;a++);} void main(){ P1=1;while(1){ if(key==0)P1=_crol_(P1,1);else P1=_clol_(P1,1);delay_ms(100);} }

89c51单片机的P3口接一个共阳极的数码管,P1口接4*4的键盘,每个键的键值...
答:include<reg51.h> define p0 P0 define p2 P2 sbit p23=P2^3;sbit p22=P2^2;sbit p21=P2^1;sbit p20=P2^0;int i,j;int tab[4][4]={ {0xc0,0xf9,0xa4,0xb0},{0x99,0x92,0x82,0xf8},{0x80,0x90,0x88,0x83},{0xc6,0xa1,0x86,0x8e}}; //0到F的16个键植 sca...

51单片机通过P3.0口接微动开关,控制电机停止
答:include <reg51.h> sbit key1=P1^0; //接微动开关,微动开关是常开状态,微动开关一头串1K电阻接5V,一头接单片机P1.0端口 sbit moto=P1^2;// 接MOS管,控制电机负极 void main(){ moto= 1;//电机启动 while(1){ if(key1==1) moto=0; //如果微动开关关闭,电机停止 if(key1==...

8051单片机的P3口如何做第二功能,怎么设置?
答:RXD(P3.0),TXD(P3.1):这个需要设置SCON INT0(P3.2),INT1(P3.3)这个需要设置IE,TCON T0(P3.4),T1(P3.5)这个需要设置TCON,TMOD WR(P3.6),RD(P3.7)不用设置寄存器,需要用时只要用MOVX指令就自动实现