|
|
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei.gif (109.92 KB, 下載次數(shù): 55)
下載附件
2021-11-10 17:53 上傳
熟練掌握Keil和Proteus軟件的C51設(shè)計與仿真操作
熟練掌握并行口P口的編程
熟悉C51編程的變量、存儲等概念及使用方法
初步掌握延時程序的原理,初步掌握P口的輸入檢測編程
實驗要求
電路圖設(shè)計:
可以用P1或更多的P口分別連接八個LED燈進行組合
可以用四個P口連的LED燈構(gòu)成一個4×8的矩陣
可以用不同數(shù)量的LED等構(gòu)成一個特定圖案
程序要求:
要盡量考慮for、while、switch、函數(shù)等用途,鞏固C語言設(shè)計能力
各種效果可以考慮做成函數(shù),通過按鍵進行不同函數(shù)的調(diào)用
效果提示:
常規(guī)流水燈效果
多種流水燈效果切換
多種流水燈以某種規(guī)律切換
實驗實現(xiàn)的功能說明
P1、P2口分別接在第一、第二排LED燈上,利用開關(guān)SW1和SW2分別控制LED燈的不同運作,當(dāng)開關(guān)SW1按下時,第一排LED燈從左到右按順序點亮,再由右到左順序點亮;斷開開關(guān)SW1,閉合開關(guān)SW2,第二排LED燈兩邊向中間依次點亮,形成匯中的效果。
實驗實現(xiàn)的原理及仿真電路設(shè)計
實驗原理:本次實驗使用十六個四種顏色的LED燈排成兩排,用if語句選擇開關(guān)SW1和SW2,按下SW1時,利用for循環(huán)和左移i位,右移8-i為相或?qū)崿F(xiàn)LED燈從左到右依次點亮的流水燈效果,同理再得到由右向左的流水燈效果,左右依次循環(huán)。按下SW2時,設(shè)定最左和最右的初始值,用for循環(huán)循環(huán)四次,實現(xiàn)流水燈匯中。
實驗原理電路圖:


聲明開關(guān)按鍵:
sbit SW1=P3^0;
sbit SW2=P3^1;
延時程序:
void delay(unsigned int m)
{
while(m--);
}
當(dāng)開關(guān)SW1按下時,流水燈的工作:
if(SW1==0)
{
t=0x01;
P1=t;
for(i=0;i<8;i++)
{
a=t<<i;
b=t>>(8-i);
P1=a|b;
delay(20000);
}
for(i=1;i<8;i++)
{
a=t>>i;
b=t<<(8-i);
P1=a|b;
delay(20000);
}
}
開關(guān)SW2按下時,另一流水燈的運作:
if(SW2==0)
{
p=0x01;
q=0x80;
for(j=0;j<4;j++)
{
P2=p+q;
delay(20000);
p=p<<1;
q=q>>1;
}
}
實驗過程及實驗情況
編寫SW1代碼時,第二個從右到左的for循環(huán)的初始值i設(shè)置成0,以致流水燈從左運動到最右端后,又多亮了一個最左端的燈,達不到左右循環(huán)流水的效果。后將其i設(shè)置成1,實現(xiàn)正常的左右流水循環(huán)的效果。制作電路圖時,LED方向和代碼沒有結(jié)合好,導(dǎo)致一排LED燈接地,一排接高電平,調(diào)整好后兩排LED燈都接地。
實驗小結(jié)
本次實驗要求初步掌握延時程序的原理,初步掌握P口的輸入檢測編程。掌握Keil和Proteus軟件的C51設(shè)計與仿真操作,熟練掌握并行口P口的編程,熟悉C51編程的變量、存儲等概念及使用方法。但是實驗過程中仍有不熟練的地方,需要不斷改進,且能做出更好的作品。
Proteus7.5版本的仿真與程序下載:
18034520204 何穎(2).zip
(175.74 KB, 下載次數(shù): 34)
2021-11-10 10:11 上傳
點擊文件名下載附件
dd 下載積分: 黑幣 -5
|
評分
-
查看全部評分
|