仿真版本:Proteus8.6及以上版本
程序編譯:Keil5 C51
編程語言:C語言
設(shè)計(jì)編號(hào):【Y03】
1.? 簡介
本文提出了一種基于51單片機(jī)的心型流水燈設(shè)計(jì)。本系統(tǒng)由AT89C51單片機(jī)為控制核心,實(shí)現(xiàn)不同花樣的基本功能。
2.? 主要功能
a.支持單片機(jī)輸出32個(gè)引腳,實(shí)現(xiàn)不同的心型流水燈花樣效果。
3.? 源程序(Keil5)
本設(shè)計(jì)采用keil5 C51軟件(內(nèi)附安裝包)實(shí)現(xiàn)程序設(shè)計(jì)。如需用keil4打開程序,可自行通過.c和.h文件新建工程即可。
void disp33() //狀態(tài)33 LED從左往右開始點(diǎn)亮(直到全亮),然后從左右兩邊開始熄滅(直到全部熄滅)
{
for(i=0;i<8;i++)
{
P0=table2[i];
P1=table2[i];
delay(100);
}
for(i=0;i<8;i++)
{
P2=table3[i];
P3=table2[i];
delay(100);
}
delay(500);
for(i=0;i<9;i++)
{
P2=table4[i];
P3=table5[i];
P1=table4[i];
P0=table4[i];
delay(100);
}
delay(300);
}
void disp34() //狀態(tài)34 LED從左往右開始點(diǎn)亮(直到全亮),然后從中間往左右邊熄滅
{
for(i=0;i<8;i++)
{
P2=table2[i];
P3=table3[i];
delay(100);
}
for(i=0;i<8;i++)
{
P0=table3[i];
P1=table3[i];
delay(100);
}
delay(500);
for(i=0;i<9;i++)
{
P2=table5[i];
P3=table4[i];
P1=table5[i];
P0=table5[i];
delay(100);
}
delay(300);
}
void disp35() //狀態(tài)35 從P2.7、P1.7開始同時(shí)順時(shí)針旋轉(zhuǎn),直到LED全亮
{
for(i=0;i<8;i++)
{
P2=table3[i];
P1=table3[i];
delay(100);
}
for(i=0;i<8;i++)
{
P3=table3[i];
P0=table2[i];
delay(100);
}
}
void disp36() //狀態(tài)36 從P0.7、P3.1開始同時(shí)逆時(shí)針旋轉(zhuǎn),直到LED全亮
{
for(i=0;i<8;i++)
{
P0=table3[i];
P3=table2[i];
delay(100);
}
for(i=0;i<8;i++)
{
P1=table2[i];
P2=table2[i];
delay(100);
}
}
void disp37() //狀態(tài)37 2個(gè)LED自上而下移動(dòng),并點(diǎn)亮最下2個(gè)LED,然后2個(gè)LED再自下而上回去,同時(shí)4個(gè)LED(上下各2個(gè)LED)再來回移動(dòng)一次
{
for(i=0;i<8;i++)
{
P0=table1[i];
P2=table1[i];
delay(100);
}
P0=0xff; P2=0xff;
for(i=0;i<8;i++)
{
P1=table0[i];
P3=table1[i];
delay(100);
}
for(i=0;i<8;i++)
{
P1=table7[i];
P3=table6[i];
delay(100);
}
P1=0x7f; P3=0xfe;
for(i=0;i<8;i++)
{
P0=table0[i];
P2=table0[i];
delay(100);
}
for(i=0;i<8;i++)
{
P0=table1[i];
P2=table1[i];
P1=table1[i];
P3=table0[i];
delay(200);
}
for(i=0;i<8;i++)
{
P0=table0[i];
P1=table0[i];
P2=table0[i];
P3=table1[i];
delay(200);
}
P0=0xff;P1=0xff; P2=0xff;P3=0xff;
}
void disp38() //狀態(tài)38 逐步順時(shí)針點(diǎn)亮P2、P1的LED,熄滅后,再順時(shí)針點(diǎn)亮P0、P3的LED
{
P0=0xff; P1=0xff; P2=0xff; P3=0xff;
for(j=0;j<2;j++)
{
for(i=0;i<8;i++)
{
P2=table3[i];
P1=table3[i];
delay(100);
}
P2=0xff; P1=0xff;
for(i=0;i<8;i++)
{
P0=table2[i];
P3=table3[i];
delay(100);
}
P0=0xff; P3=0xff;
}
}
void disp39() //狀態(tài)39 P1、P3LED(下半部分)一直亮,上半部分LED向外擴(kuò)張亮,然后閃爍3次
{
P1=0x00; P3=0x00;
for(i=0;i<8;i++)
{
P0=table3[i];
P2=table3[i];
delay(150);
}
for(i=0;i<8;i++)
{
P0=table3[i];
P2=table3[i];
delay(300);
}
for(i=0;i<4;i++)
{
P0=~P0; P2=~P2;
delay(300);
}
delay(1000);
}
void disp40() //狀態(tài)40 LED從P3.0、P0.7開始逆時(shí)針同時(shí)熄滅,直到LED全部熄滅
{
for(i=0;i<9;i++)
{
P3=table4[i];
P0=table5[i];
delay(100);
}
for(i=1;i<9;i++)
{
P2=table4[i];
P1=table4[i];
delay(100);
}
delay(300);
}
void disp41() //狀態(tài)41 LED從P2.7、P1.7開始順時(shí)針同時(shí)熄滅,直到全部熄滅
{
for(i=0;i<9;i++)
{
P2=table5[i];
P1=table5[i];
delay(100);
}
for(i=1;i<9;i++)
{
P0=table4[i];
P3=table5[i];
delay(100);
}
delay(300);
}
4.? 仿真proteus8.6
? 本設(shè)計(jì)采用proteus8.6軟件(內(nèi)附安裝包)實(shí)現(xiàn)仿真設(shè)計(jì),如下圖所示。proteus軟件一般存在高低版本兼容問題,該仿真是通過proteus8.6導(dǎo)出的,所以請(qǐng)盡量使用proteus8.6打開文件,低于proteus8.6的版本不能夠正常使用,高于proteus8.6的版本除了proteus8.8/8.9理論上可以正常使用。
仿真界面:
5.? 設(shè)計(jì)報(bào)告
設(shè)計(jì)報(bào)告主要包括硬件電路、軟件設(shè)計(jì)、仿真調(diào)試等等,僅供參考。
6.? 資料清單
設(shè)計(jì)資料主要包括C程序+仿真+設(shè)計(jì)報(bào)告+使用說明+元件清單+操作視頻等。
7.? 資料獲取鏈接
百度網(wǎng)盤下載鏈接:【Y03】百度網(wǎng)盤下載鏈接
更多單片機(jī)仿真設(shè)計(jì)合集:單片機(jī)仿真設(shè)計(jì)合集