⑴ 求問一個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文件,再點運行就可以了