導航:首頁 > 操作系統 > 51單片機proteus圖源

51單片機proteus圖源

發布時間:2023-04-21 18:40:22

Ⅰ C51單片機,C語言編程四位共陽極數碼管靜態顯示1234 求程序和proteus模擬圖

用51單片機組成四位共陽極數碼管敏裂顯示1234 ,proteus仿橋扮閉真圖如下所示,P0口缺枝輸出段碼,P2口輸出位碼。

Ⅱ proteus7.8怎麼建立51單片機

1、打開proteus7.8軟體後,點擊下做並圖中箭頭所指的圖標純差跡。

Ⅲ proteus51原理圖在哪選

七個步驟。
1、打開proteus7,會生成一個默認工程,默認就是「ComponentMode」,可以直接選擇器件,如果沒有那麼點擊左側箭頭下的工具,軟體提示「ComponentMode」然後選擇「DEVICES」左側的P按鈕。
2、軟體彈出「PickDevices」對話框,在Keywords下面的文本框中輸入8051,點擊回車進行搜索,在Categroy顯示出搜索結果,選擇「MicroprocessorICs」,接著在右側的「Results」下可以看到器件列表,選擇一個自己需要的模型,需要注意的是,部分模型是不能進行模擬的,這里選擇比較通用的80C51,點擊右下角的「OK」進行確認。
3、在工程的原理圖區域點擊,放置選擇好的80C51器件。
4、雙擊剛剛放置的單片機模型,在彈出的「EditComponent」對話框中找到「ProgramFile」,這個就是程序文件,悉亂點擊它左側的文件夾圖標,將目錄切換到hex程序文件所在目錄,這個hex文件可以是Keil編譯的,也可以是其它編譯器生成的,確認後點擊「打開」。
5、程序載入成功後,可以在「ProgramFIle」文本框中看到剛剛載入的hex文件睜陵檔名稱,點擊「OK」確認。
7、回到工程主界面,完成原理圖其它部分,然後點擊菜單欄的「Debug」「Exeute」或者直接按「F12」執行工程。
7、對於單片機的其它設置,只需要稍加摸索即可,比如如果想將晶振在原理圖中顯示出來,可以在「EditComponent」中找到「ClockFrequency」點擊右側的下拉框,選擇「ShowAll」,確認後即可在原理圖中顯示出當汪毀前晶元的晶振頻率了。

Ⅳ 怎麼用proteus來模擬51

用proteus來模擬51的步驟:

工具/原料:Proteus,keil c51

1、首先我們打開Proteus軟體,點擊左邊菜單欄的P按鈕,然後再搜索框里輸入80c51,選擇第一個就是80c51單片機;

Ⅳ proteus模擬電路圖,51單片機按鍵計數

按照你題目,用了2個2位顯示,實際有4位合一起的。

k3:切換計數模式/預置模式。

計數模式:LED顯示計時數字,從0開始計時,直到預置最大值。

預置模式:LED顯示當前預置最大值,按k1,k2可對預置值+-操作,長按k1,k2大約2秒,會進入自動加減預置值。直到再次點擊k1,k2,k3任意一鍵停止自動。

k4:在計數模式下使用,每按下一次顯示的數字加一(會在正常計時同時額外+1)。

當計數達到預置最大值,會停止計數,LEN閃爍(實際就是交替顯示間隔邊長),蜂鳴器響。

按鍵時長、LED動態顯示間隔、閃爍間隔、計數速度,均可直接修改常量,需要自己改,我備注寫的很詳細。

電路基本按照你上圖,略有修改。

#include <reg52.h>

#define uint unsigned int

#define uchar unsigned char

#define an P0

#define on 0

#define off 1

#define SSSPEED 35 //LED交替閃爍間隔時間

#define JSPEED 5000//計數模式,速度默認數值(5000*200us=1S) 值越小計數越快

#define PREESTIME 500//按鈕長按時間判定,預設500(大約2秒),需要自改,值越大,長按時間越長

sbit fm=P3^3;

sbit wei1=P3^4;

sbit wei2=P3^5;

sbit wei3=P3^6;

sbit wei4=P3^7;

sbit k1=P1^4;

sbit k2=P1^5;

sbit k3=P1^6;

sbit k4=P1^7;

uint jsSpd=JSPEED;//計時速度,默認1s一次(5000*200us)

uint ssSpd=SSSPEED;//LED交替閃爍速度

//共陽極

int delay(uint xms);

void init();

void jspause();//計數器開啟/停止

void setnumYS();//設置預設數值

void numJsChange();//計數模式數字改變

void showLED();

int pressWait(uint btn);

uint g=0;

uint s=0;

uint b=0;

uint q=0;

uint count=0;

uint ispause=1;

uint numYS=0;//預設數值

uint numJS=0;//實際計時的數字

uint isMaxJs=0;//標識:計時達最大。 達最大1,否0

uint isk3press=0;//標識:k3按鈕是否被點擊。 點擊1,否0

uint ispress1=0;//標識:k1被長按

uint ispress2=0;//標識:k2被長按

uint isbtn4=0;//標識:k4被按下

uint btnName=0;//按鈕長按計時

void main()

{

init();

while(1)

{

if(ispause==1 && ispress1==1 && numYS<9999) //預置模式下,k1已長按,自動增

{

numYS++;

setnumYS();

}

if(ispause==1 && ispress2==1 && numYS>0) //預置模式下,k2已長按,自動減

{

numYS--;

setnumYS();

}

if(isMaxJs==0 && numJS>=numYS && ispause==0) //計時模式下達最大值

{

fm=on;

ssSpd=1000;//增加LED交替間隔,實現數字閃爍

isMaxJs=1;

EA=0;

setnumYS();

numJS=0;

}

if(k1==0 ||k2==0|| k3==0) //k1k2k3任意一個按鈕被按下,停止預置數自動增長

{

ispress1=0;

ispress2=0;

}

if(k1==0 && ispause==1)//預置模式下+

{

delay(10);

if(k1==0)

{

btnName=1;

if(pressWait(btnName))//判斷連按

{

while(k1==0);

ispress1=1;

}

else if(numYS<9999)

{

numYS++;

setnumYS();

}

}

}

if(k2==0 && ispause==1)//預置模式下-

{

delay(10);

if(k2==0)

{

btnName=2;

if(pressWait(btnName))//判斷連按

{

while(k2==0);

ispress2=1;

}

else if(numYS>0)

{

numYS--;

setnumYS();

}

}

}

if(k3==0)

{

delay(10);

if(k3==0)

{

while(k3==0);

fm=off;

jspause();

}

}

if(k4==0 && ispause==0)//計數模式下按下k4,k4的防抖寫在中斷中

{

delay(10);

if(k4==0)

{

while(k4==0);

isbtn4=1;

}

}

showLED();

}

}

void showLED()

{

uchar nums[10]={0xc0,0xf9,0xa4,0xB0,0x99,0x92,0x82,0xf8,0x80,0x98};

if(g>=0)

{

an=nums[g];

wei4=on;

delay(ssSpd);

wei4=off;

}

if(s>0 || (s==0 && b>0))

{

an=nums[s];

wei3=on;

delay(ssSpd);

wei3=off;

}

if(b>0 || (b==0 && q>0))

{

an=nums[b];

wei2=on;

delay(ssSpd);

wei2=off;

}

if(q>0)

{

an=nums[q];

wei1=on;

delay(ssSpd);

wei1=off;

}

}

void setnumYS()//設置預設數值

{

q=numYS/1000;

b=(numYS%1000)/100;

s=(numYS%100)/10;

g=numYS%10;

}

void jspause()

{

if(ispause==0 || isMaxJs==1)//關閉計時模式 / 啟動預置模式

{

EA=0;

isMaxJs=0;

ispause=1;

ssSpd=SSSPEED;

ispress1=0;

ispress2=0;

setnumYS();

}

else if(ispause==1) //啟動計時模式 / 關閉預置模式

{

ispause=0;

q=b=s=g=0;

numJS=0;

ssSpd=SSSPEED;

EA=1;

}

}

void init()

{

TMOD=0x02; //T0 工作模式2 自動裝填8位 200us

TH0=0x38;

TL0=0x38;

EA=0;

ET0=1;

TR0=1;

wei1=off;

wei2=off;

wei3=off;

wei4=off;

}

void numJsChange()//計數模式數字改變

{

if(g==9)

{

g=0;

if(s==9)

{

s=0;

if(b==9)

{

b=0;

if(q==9)

{

q=0;

}

else

q++;

}

else

b++;

}

else

s++;

}

else

g++;

}

void ct() interrupt 1 //一次中斷200us

{

if(count<jsSpd)

count++;

else

{

count=0;

numJsChange();

numJS++;

}

if(isbtn4==1)

{

isbtn4=0;

numJsChange();

numJS++;

}

}

int pressWait(uint btn)

{

uint i,j;

for(i=PREESTIME;i>0;i--)

for(j=110;j>0;j--)

{

if((k1==1 && btn==1)||(k2==1 && btn==2))

return 0;

}

return 1;

}

int delay(uint xms)

{

uint i,j;

for(i=xms;i>0;i--)

for(j=110;j>0;j--)

{

if(k1==0 || k2==0 ||k3==0)

return 1;

}

return 0;

}

Ⅵ 51單片機在protues中輸入什麼可以找到在protues中找不到的該如何處理

在protues中輸入「AT89C51」就可以找到51單片機,以下演示以proteus 9.5為例。

1、在電腦上打開proteus軟體後,點擊圖中的「P」字按鈕,如圖所示。

Ⅶ 需要51單片機開發板的Proteus模擬原理圖,.DSN格式的

給你文件 密碼:e6eq

Ⅷ 基於51單片機的簡易交通燈的proteus模擬,我要原理圖,模擬圖,protell圖,程序要完整的,對應哦,

#include "reg51.h"

#define uchar unsigned char

sbit k1=P1^0;


void delay8s(void)

{

unsigned char i,j,k;

for(i=80;i>0;i--)

for(j=200;j>0;j--)

for(k=248;k>0;k--);

}


void delay05s(void)

{

unsigned char i,j,k;

for(i=2;i>0;i--)

for(j=200;j>0;j--)

for(k=248;k>0;k--);

}


void zt0()

{

P2=0xf3;

delay8s();

}


void zt1()

{

char i;

for(i=4;i>0;i--)

{

P2=0xeb;

delay05s();

P2=0xfb;

delay05s();

}

}


void zt2()

{

P2=0xde;

delay8s();

}


void zt3()

{

char j;

for(j=4;j>0;j--)

{

P2=0xdd;

delay05s();

P2=0xdf;

delay05s();

}

}


void k1yes()

{

while(1)

{

zt0();

zt1();

zt2();

zt3();

}

}


void k1no()

{

P2=0x00;

delay05s();

P2=0xff;

delay05s();

}


void main(void)

{

while(1)

{

uchar a;

a=P1;

a=a&0x01;

switch(a)

{

case 0:k1yes();break;

case 1:k1no();break;

}

}

}

閱讀全文

與51單片機proteus圖源相關的資料

熱點內容
游戲解壓怎麼設置 瀏覽:780
會聲會影如何壓縮視頻 瀏覽:57
閱讀app小說怎麼轉換成txt 瀏覽:65
c語言編程數字變時間 瀏覽:655
迷你編程第五天初級寶箱怎麼弄 瀏覽:839
刺激體驗服如何更新伺服器 瀏覽:934
怎麼把照片做成新的文件夾 瀏覽:466
安卓手機沒有聲音均衡器怎麼辦 瀏覽:506
吃雞國際服為什麼會伺服器匆忙 瀏覽:248
微信中如何打開定位伺服器 瀏覽:203
java並發編程書籍 瀏覽:280
android601源碼 瀏覽:788
程序員離職了還能幹嘛 瀏覽:156
少林功法pdf 瀏覽:471
安卓80版本小游戲怎麼玩 瀏覽:632
奇書pdf 瀏覽:836
伺服器的管理口有什麼用 瀏覽:643
澳洲加密資產新政策 瀏覽:157
哈利波特連接伺服器失敗什麼意思 瀏覽:234
提取手機上安裝的app並反編譯 瀏覽:966