⑴ 求问一个proteus仿真,下面是程序和仿真。关于单片机连接8155后,点亮LED流水灯的。 小弟在这里先说声谢
用一个流水灯吗,用单片机的并行口直接连接LED就好了,何必还用什么8155呢,太麻烦了,是题目要求的,非用不可吗?
流水灯这种题目,在网络知道里会搜索到无数个,有图有程序。
⑵ 用单片机仿真流水灯为什么还要接一个电阻R1(在图片上标着)
这个电阻是限流电阻,如果没有这个电阻,你回路中的电流理论上是无穷大,接上这个电阻,电流最大会被限制在一定的范围内。
因为电源电压是一定的,假设5V,二极管这类半导体器件又称做非线性器件,其两端的电压降不会随电流上升而呈线性上升,发光二极管的导通压降一般为1.4V,电流再大,也还是这个电压,如果回路中没有电阻(实际上CPU输出端口有阻抗),理论上电流会无限上升,这时回路中串一个电阻,电阻两端的压降随电流上升而上升,(U=IR),当电阻两端的电压上升到5V-1.4V=3.6V时,电流就不会再上升,回路中的电流I=3.6/R,电流最多就是这么大。
所以说,这个是限流电阻,限制最大电流,以免烧坏二极管以及CPU端口。
⑶ 我在用用protues仿真单片机流水灯程序,但是调试了好多遍了,流水灯依旧不亮,希望有人帮一下。
我看你的仿真图中,51单片机P0口没有接上拉电阻,如果你不想加,可以换P2口进行实验!
⑷ 51单片机流水灯实验
for(i=1;i=10000;i++);这条语句我就很差异,根据C定义,第一个分号是初值,第二个是循环条件,最后分号为循环执行语句。显然 for(i=1;<10000;i++);这样才对。
再说 j=7; P0=~(1<<j++);j=7是2进制00000111,加1就是00001000,那么右移一位则00010000,然后又取反,则11101111,但是你 for(i=1;i=10000;i++);之后又写了j=0;加1则00000001取右移一位00000000,此时因为1被移出,取反后11111111,这时P0=11111111;
之后你写了 for(i=1;i=10000;i++)
{
if(j==8)
j=0;
}
由于你写了i=10000;所以语句不会执行循环,即使执行,由于之前j++只加了1,不会到8,而在整个while中又写了j=0;所以压根不会执行。
更改此程序中for(i=1;<10000;i++);之后仿真现象为P0.7闪烁,恰好印证了上述分析,由于整个程序不长,而且混乱,只好扔了从写。
于是乎在你这个病体的程序上做下处理之后程序变成了如下:
#include <reg52.h>
typedef unsigned char uint8;
typedef unsigned int uint16;
sbit LED=P0^0;
sbit ENLED=P1^4;
sbit ADDR0=P1^0;
sbit ADDR1=P1^1;
sbit ADDR2=P1^2;
sbit ADDR3=P1^3;
main()
{
uint8 j;
uint16 i;
ENLED=0;
ADDR0=0;ADDR1=1;ADDR2=1;ADDR3=1;
while(1)
{
if(j==0)j=1;
else j=j<<1;
P0=j;
for(i=1;i<10000;i++);
}
}
这是单向闪烁的,如果想左右依次来回闪的话,可以参照我这个做下调整。问题说的很透,望加分。
⑸ 求用STC89C52RC单片机实现流水灯(C语言)
用STC89C52RC单片机实现流水灯,这是最简单的程序,用左移函数_corl_( )实现很容易。P0口接8个LED灯,用proteus 仿真时的仿真图和仿真效果如下。
⑹ proteus仿真51单片机,流水灯
你代码中,有P2=0x08,就是输出 P2.3信号,这个是蜂鸣器的,没有给 P2.5的,以至于 74LS573得不到 LE 信号而没有工作。你可以这样输出 P2=0x28;
或者这样
P1=mm; P2=0x20;
P2=0x08;
delay();
P1=0xff;P2=0x20;
P2=0x00;
delay();
⑺ 一个单片机流水灯程序,但用Proteus仿真时所有灯都不亮,程序如下
没有任何问题
如果你是第一次用proteus,那么我有理由怀疑你是LED用错了
那个带箭头的发光LED是不会发光的,要用RGB那三种LED
如图:用你的程序仿真的,能跑
⑻ 51单片机流水灯安装与调试的过程
利用实验室提供的单片机实验开发板的最小系统电路模块、流水灯电路模块,以及Protues仿真软件搭建电路,实现I/O口循环流水灯演示效果。
LED流水灯控制电路如图2-1所示,八个LED灯D0-D7(可选择LED-RED)阳极接到+5V,阴极通过300欧姆电阻分别接到单片机的P1.0-P1.7八个IO口上。I/O口循环流水灯效果实现流程如图2-2所示,依次从第一盏灯开始,分别点亮每一盏灯,中间调用延时子函数便可使得流水灯的效果清晰可见。点亮LED灯的具体实现方法与上节相同,只需让相应的IO口输出低电平即可,程序实现代码已给出。按照上节给出的项目开发流程,从仿真电路搭建到程序编写,再到仿真调试以及最后的实物调试完成循环流水灯的实现。
⑼ 怎么用Proteus仿真ATMEGA16单片机流水灯
1. 首先纠正一下,根据图纸。你的单片机是ATmega8的,不是ATmega16的。请在确认。
2. 你用的C语言写的程序。所以要用GCCAVR(或者其他的编译器)编译好了以后才能使用。PROTEUS不支持AVR的C语言编译器的。只支持汇编编译器。特别是51的汇编编译器。
3 你的方向口选择错误。输出用的是PORTD,那为什么要写DDRB=0xff呢?
4. 我帮你修改以后的程序如下,你再试试。
#include <iom8v.h>
void main()
{
int i;
DDRD = 0xFF;
while (1)
{
PORTD=0x55;
for (i=0;i<10000;i++);
PORTD=0xaa;
for (i=0;i<10000;i++);
}
}
⑽ 如何用proteus仿真流水灯(用AT89C52单片机实现的)
在proteus中连接好硬件,AT89C52中设置好你写出并编译通过的.HEX文件,再点运行就可以了