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