《單片機原理及應用 設(shè)計報告》由會員分享,可在線閱讀,更多相關(guān)《單片機原理及應用 設(shè)計報告(7頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、真誠為您提供優(yōu)質(zhì)參考資料,若有不當之處,請指正。
單片機設(shè)計報告
編寫:HUBU2015級通信工程 xmx 2017年5月23日
一、設(shè)計的目的與要求
利用8*8LED點陣動態(tài)顯示漢字的字樣。采用STC89C52單片機作為整個控制搭電路的核心,并編制軟件程序,實現(xiàn)漢字的顯示。通過此設(shè)計來鞏固單片機硬件系統(tǒng)的設(shè)計及軟件系統(tǒng)的編程,通過設(shè)計將平時所學知識付諸實踐,提高動手能力。
1、設(shè)計一個8*8點陣LED電子顯示屏。
2、要求在目測條件下LED顯示屏各點亮度均勻、充足,可顯示一個“大”字。
二、總體方案設(shè)計
2.1 硬件電路的總體設(shè)計
1、設(shè)計總體框圖
硬件電路的設(shè)計
2、框圖如圖1所示。硬件電路結(jié)構(gòu)由8個部分組成:時鐘電路、復位電路、按鍵接口電路、電源電路、點陣顯示陽極電路、點陣顯示陰極電路和8*8點陣顯示電路。
2、工作原理
由于是8*8點陣屏設(shè)計,需要端口16個,可采用靜態(tài)顯示模式,用P0口控制行,P1口控制列,通過軟件編程,即可實現(xiàn)漢字的顯示。
3、元器件清單
元件名稱
規(guī)格
數(shù)量
備注
STC89C52單片機
?
一塊
附底座
晶振
12MHZ
一塊
?
8*8點陣LED顯示器
一塊
SZ411288k
按鈕開關(guān)
?
一個
四腳
極性電容
10uF
一支
?
瓷片電容
51pF
兩個
3、?
電阻
5kΩ
八個
?
電阻
10kΩ
一個
?
2.2 系統(tǒng)軟件的設(shè)計
軟件程序主要由開始、初始化、主程序、字庫和延時子程序組成。
開始
系統(tǒng)初始化
顯示函數(shù)載入字形
延時函數(shù)延遲時間
三、系統(tǒng)硬件電路的具體設(shè)計
3.1 時鐘電路?
STC89C52單片機內(nèi)部的振蕩電路是一個高增益反向放大器,引線X1和X2分別是放大器的輸入端和輸出端。單片機內(nèi)部雖然有振蕩電路,但要形成時鐘,外部還需附加電路。STC89C52的時鐘產(chǎn)生方式有兩種:內(nèi)部時鐘電方式和外部時鐘方式。由于外部時鐘方式用于多片單片機組成的系統(tǒng)中,所以此處選用內(nèi)部時鐘方式。?
內(nèi)部時鐘方式:利
4、用其內(nèi)部的振蕩電路在X1和X2引線上外接定時元件,內(nèi)部振蕩電路產(chǎn)生自激振蕩。最常用的是在?X1和X2之間接晶體振蕩器與電路構(gòu)成穩(wěn)定的自激振蕩器,如圖4所示電路所示為單片機最常用的時鐘振蕩電路的接法,其中晶振可選用振蕩頻率為12MHz的石英晶體,電容器一般選擇30PF左右
3.2 復位電路?
單片機在啟動運行時需要復位,使CPU以及其他功能部件處于一個確定的初始狀態(tài),并從這個狀態(tài)開始工作。另外,在單片機工作過程中,如果出現(xiàn)死機時,也必須對單片機進行復位,使其重新開始工作。本設(shè)計中采用按鍵復位電路,上電瞬間,RC電路充電,RST引線端出現(xiàn)正脈沖,只要RST端保持10ms以上的高電平,就能使
5、單片機有效地復位。其中R1選擇10KΩ左右的電阻,電容器一般選擇10μF。
3.3顯示電路的設(shè)計
本次設(shè)計中采用8*8點陣LED顯示器,簡稱LED點陣板或LED矩陣板。它是以發(fā)光二極管為像素,按照行與列的順序排列起來,用集成工藝制成的顯示器件。有單色和雙色之分,這種顯示器有共陽極接法和共陰極接法兩種。設(shè)計中用到的是“列共陽,行共陰”,即 “列用高電平控制,行用低電平控制”。圖中畫出了8*8點陣的二極管。每一行發(fā)光二極管的陽極接在一起,有一個引出端r,每一列發(fā)光二極管的陰極接在一起,有一個引出端c。當給發(fā)光二極管陽極引出端r1加高電平,陰極引出端c1加低電平時,左上角的二極管被點亮因此,
6、對于行和列的電平進行掃描控制時,可以達到顯示不同字符的目的。
(1)把“單片機系統(tǒng)”區(qū)域中的P0端口用8芯排芯連接到“點陣模塊”區(qū)域中的“A~H”端口上;?
(2)把“單片機系統(tǒng)”區(qū)域中的P1端口用8芯排芯連接到“點陣模塊”區(qū)域中的“0~7”端口上;?
為了方便于單片機連接,我們在焊接的過程中特意將0~7接口排列出來作為列,將A~H接口作為行,這樣我們就可以直接將AT89C52單片機的P0口與0~7接口一次連接,將AT89C52單片機的P1口與A~H接口一次連接。要使LED發(fā)亮即使給予數(shù)字端高電平,字母端給予低電平,就能使二極管發(fā)亮。
四、系統(tǒng)軟件的具體設(shè)計
4.1 顯示函數(shù)
7、
while(1)
{
for(i=0;i<8;i++)
{
P1=DZ88lie[i]; //列選 高電平有效
P0=DZ88hang[i]; //行選 低電平有效
}
}
4.2 “大”字取模
char code DZ88lie[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,};
char code DZ88hang[]={0x77,0xB7,0xD7,0xE0,0xE0,0xD7,0xB7,0x77,};
8、4.3 延時程序
延時程序在單片機編程中使用非常廣泛,也很重要,在本次設(shè)計的程序中用到了延時子程序。延時子程序如下:
void delay_ms(int z)
{
char x,y;
for(x=z;z>0;z--)
for(y=110;y>0;y--);
}
4.4 主程序
void main()
{
while(1)
{
for(i=0;i<8;i++)
{
P1=DZ88lie[i]; //列選 高電平有效
P0=DZ88ha
9、ng[i]; //行選 低電平有效
delay_ms(1);
}
}
}
五、整體電路圖
六、系統(tǒng)軟件完整程序代碼
#include
#define int unsigned int
#define char unsigned char
char code DZ88lie[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,};
char code DZ88hang[]={0x77,0xB7,0xD7,0xE0,0xE0,0xD7,0xB7,0x77,};
10、void delay_ms(int z);
char i;
void main()
{
while(1)
{
for(i=0;i<8;i++)
{
P1=DZ88lie[i]; //列選 高電平有效
P0=DZ88hang[i]; //行選 低電平有效
delay_ms(1);
}
}
}
void delay_ms(int z) //延時子程序
{
char x,y;
for(x=z;z>0;z--)
for(y=110;y>0;y--);
}
七、仿真結(jié)果
7 / 7