找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 1150|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

編程將單片機(jī)P1.4~P1.7上的4個(gè)開關(guān)狀態(tài)反映在P1.0~P1.3引腳控制的4個(gè)發(fā)光二極管上

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:1122928 發(fā)表于 2024-6-13 17:29 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
1.1 打開Proteus軟件,選擇AT89C52單片機(jī)芯片進(jìn)行畫圖
打開Proteus軟件:?jiǎn)?dòng)Proteus軟件并創(chuàng)建一個(gè)新的項(xiàng)目。
選擇AT89C52芯片:在元件庫(kù)中搜索并選擇AT89C52芯片,然后將其放置在工作區(qū)中。
連接開關(guān)和LED:
將開關(guān)S0到S3分別連接到單片機(jī)的P1.4到P1.7引腳。
將發(fā)光二極管LED0到LED3分別連接到單片機(jī)的P1.0到P1.3引腳。
確保每個(gè)LED都有一個(gè)限流電阻(通常使用330歐姆)。
將開關(guān)的另一端連接到GND(地)。
將LED的另一端連接到VCC(電源)。
1.2 編程將P1.4~P1.7上的4個(gè)開關(guān)狀態(tài)反映在P1.0~P1.3引腳控制的4個(gè)發(fā)光二極管上
#include <reg51.h>
#define uchar unsigned char
void  delay(  )                                         //延時(shí)函數(shù)
{      
        uchar i,j;
        for(i=0; i<255; i++)
        for(j=0; j<255; j++);
}
void  main(  )                                //主函數(shù)
{
    while (1)
    {      
        unsigned char temp;         //定義臨時(shí)變量temp
        P1=0xff;     //P1口低4位置1,作為輸入;高4位置1,發(fā)光二極管熄滅
        temp=P1&0xf0;                //讀P1口并屏蔽低4位,送入temp 中
        temp=temp>>4;           //temp內(nèi)容右移4位,P1口高4位移至低4位
        P1=temp;                // temp中的數(shù)據(jù)送P1口輸出
        delay();
}
}1.3 運(yùn)行代碼,查看效果
編譯代碼:使用Keil或其他編譯器編譯上述代碼,生成HEX文件。
加載HEX文件到Proteus:
在Proteus中選中AT89C52芯片,右鍵選擇“Edit Properties”。
在“Program File”字段中加載生成的HEX文件。

Proteus仿真文件: 5-3.zip (104.24 KB, 下載次數(shù): 5)

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表