單片機(jī)課設(shè)-數(shù)碼管顯示滾動控制_第1頁
單片機(jī)課設(shè)-數(shù)碼管顯示滾動控制_第2頁
單片機(jī)課設(shè)-數(shù)碼管顯示滾動控制_第3頁
單片機(jī)課設(shè)-數(shù)碼管顯示滾動控制_第4頁
單片機(jī)課設(shè)-數(shù)碼管顯示滾動控制_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、.單片機(jī)設(shè)計(jì)與實(shí)訓(xùn)設(shè)計(jì)報(bào)告題目:數(shù)碼管滾動顯示控制姓名:王偉杰班級:自動化四班學(xué)號:2014550430指導(dǎo)老師:瑩提交日期: 2016 年 10 月 29 日目錄一、 設(shè)計(jì)題目與要求31.1 設(shè)計(jì)題目31.2 設(shè)計(jì)要求3二、 系統(tǒng)方案設(shè)計(jì)32.1 硬件電路設(shè)計(jì)31.單片機(jī)最小系統(tǒng)簡介32.數(shù)碼管顯示電路62.3 硬件選型及說明61. ST89C51 單片機(jī)62. 四位一體七段共陰極顯示數(shù)碼管8三、 系統(tǒng)原理圖設(shè)計(jì)與仿真93.1 系統(tǒng)仿真圖93.2 系統(tǒng)仿真結(jié)果10四、 程序設(shè)計(jì)114.1 程序設(shè)計(jì)114.2 程序流程圖12五、 系統(tǒng)調(diào)試145.1 系統(tǒng)硬件調(diào)試145.2 系統(tǒng)軟件調(diào)試14六、

2、總結(jié)與體會14附錄一16附錄二17附錄三27一、設(shè)計(jì)題目與要求單片機(jī)課程設(shè)計(jì)是一門實(shí)踐課程,要求學(xué)生具有制作調(diào)試單片機(jī)最小系統(tǒng)及外設(shè)的能力,能夠掌握單片機(jī)部資源的使用。單片機(jī)課程設(shè)計(jì)容包括硬件設(shè)計(jì)、制作及軟件編寫、調(diào)試,學(xué)生在熟練掌握焊接技術(shù)的基礎(chǔ)上,能熟練使用單片機(jī)軟件開發(fā)環(huán)境 Keil C51 編程調(diào)試,并使用 STC ISP 調(diào)試工具采用串口下載方式聯(lián)調(diào)制作的單片機(jī)最小系統(tǒng)。單片機(jī)課程設(shè)計(jì)題目包含基本部分及擴(kuò)展部分,基本部分即單片機(jī)最小系統(tǒng)部分,擴(kuò)展部分是對單片機(jī)部資源及外部 IO 口的功能擴(kuò)展,使制作的單片機(jī)系統(tǒng)具有一定的功能。1.1 設(shè)計(jì)題目數(shù)碼管滾動顯示控制1.2 設(shè)計(jì)要求自制一個(gè)

3、單片機(jī)最小系統(tǒng),包括串口下載、復(fù)位電路,采用兩個(gè)四位一體數(shù)碼管作為顯示器件,通過按鈕選擇實(shí)現(xiàn)四種滾動顯示模式,例如從左至右,從右至左,縮,外擴(kuò)等,滾動信息可以是數(shù)字或有意義的英文字符。二、系統(tǒng)方案設(shè)計(jì)2.1 硬件電路設(shè)計(jì)本設(shè)計(jì)的硬件電路主要包括的模塊有:單片機(jī)最小系統(tǒng)、七段數(shù)碼管顯示模塊、1.單片機(jī)最小系統(tǒng)簡介單片機(jī)最小系統(tǒng),或者稱為最小應(yīng)用系統(tǒng),是指用最少的元件組成的單片機(jī)可以工作的系統(tǒng).對 51 系列單片機(jī)來說,最小系統(tǒng)一般應(yīng)該包括:單片機(jī)、晶振電路、復(fù)位電路。結(jié)構(gòu)圖如下:圖 2.1 單片機(jī)最小系統(tǒng)各部分的功能介紹如下:復(fù)位電路:復(fù)位是單片機(jī)的初始化操作,其主要功能是把 PC 初始化為 0

4、000H, 使單片機(jī)從 0000H 單元開始執(zhí)行程序。除了進(jìn)入系統(tǒng)的正常初始化之外,當(dāng)由于程序運(yùn)行出錯或操作錯誤是系統(tǒng)處于死鎖狀態(tài)時(shí),為擺脫困境,也需要按復(fù)位鍵以重新啟動。MCS-51 單片機(jī)的復(fù)位電路由片、片外兩部分組成,進(jìn)行復(fù)位操作時(shí),外部電路需在復(fù)位引腳RST 端產(chǎn)生大于兩個(gè)機(jī)器周期的高電平信號,RST 引腳通過片施密特觸發(fā)器與復(fù)位電路相連(施密特觸發(fā)器的作用是脈沖整型和抑制噪聲)。MCS-51 單片機(jī)的復(fù)位操作有兩種方式:上電復(fù)位和上電按鈕復(fù)位。圖 2.2 復(fù)位電路圖晶振電路(時(shí)鐘電路): 時(shí)鐘電路是單片機(jī)的心臟,它用于產(chǎn)生單片機(jī)工作所需要的時(shí)鐘信號。單片機(jī)本身就是一個(gè)復(fù)雜的同步時(shí)序電

5、路,為了保證同步工作方式的實(shí)現(xiàn),電路應(yīng)在唯一的時(shí)鐘信號控制下嚴(yán)格地按時(shí)序進(jìn)行工作。單片機(jī)的時(shí)鐘產(chǎn)生方法有部時(shí)鐘方式和外部時(shí)鐘方式,大多數(shù)單片機(jī)應(yīng)用系統(tǒng)采用部時(shí)鐘方式,本系統(tǒng)采用的亦是部時(shí)鐘方式。在 MCS-51 芯片部有一個(gè)高增益反相放大器,XTAL1、XTAL2 引腳分別為該反相放大器的輸入端和輸出端,在芯片的外部通過這兩個(gè)引腳跨接晶體振蕩器和微調(diào)電容,形成反饋電路,就構(gòu)成了一個(gè)穩(wěn)定的自激振蕩器。圖 2.3 時(shí)鐘電路圖2.數(shù)碼管顯示電路圖 2.4 數(shù)碼顯示電路2.3 硬件選型及說明1. ST89C51 單片機(jī)MCS-51 把微型計(jì)算機(jī)的主要部件都集成在一塊心片上,使得數(shù)據(jù)傳送距離大大縮短,可

6、靠性更高,運(yùn)行速度更塊。由于屬于芯片化的微型計(jì)算機(jī),各功能部件在芯片中的布局和結(jié)構(gòu)達(dá)最優(yōu)化,抗干擾能力加強(qiáng),工作亦相對穩(wěn)定。因此,在工業(yè)測控系統(tǒng)中,使用單片機(jī)是最理想的選擇。單片機(jī)屬于典型的嵌入式系統(tǒng), 所以它是低端控制系統(tǒng)最佳器件。8051 是 MCS-51 系列單片機(jī)的典型產(chǎn)品。8051 單片機(jī)包含中央處理器、程序存儲器(ROM)、數(shù)據(jù)存儲器(RAM)、定時(shí)/計(jì)數(shù)器、并行接口、串行接口和中斷系統(tǒng)等幾大單元及數(shù)據(jù)總線、地址總線和控制總線等三大總線:引腳介紹:電源:VCC - 芯片電源,接+5V;VSS - 接地端;時(shí)鐘:XTAL1、XTAL2 - 晶體振蕩電路反相輸入端和輸出端控制線: AL

7、E/PROG:地址鎖存允許/片 EPROM 編程脈沖: ALE 功能:用來鎖存 P0 口送出的低 8 位地址; PROG 功能:片有 EPROM 的芯片,在 EPROM 編程期間,此引腳輸入編程脈沖。 PSEN:外 ROM 讀選通信號。 RST/VPD復(fù)位/備用電源: RST(Reset)功能:復(fù)位信號輸入端; VPD 功能:在 Vcc 掉電情況下,接備用電源。 EA/Vpp:外 ROM 選擇/片 EPROM 編程電源: EA 功能:外 ROM 選擇端; Vpp 功能:片有 EPROM 的芯片,在 EPROM 編程期間,施加編程電源Vpp。I/O 線:4 個(gè) 8 位并行 I/O 端口:P0、P

8、1、P2、P3 口,共 32 個(gè)引腳。P3 口還具有第二功能,用于特殊信號輸入輸出和控制信號(屬控制總線)。圖 2.5 89c51 引腳圖2. 四位一體七段共陰極顯示數(shù)碼管圖 2.6 數(shù)碼管引腳圖三、系統(tǒng)原理圖設(shè)計(jì)與仿真3.1 系統(tǒng)仿真圖圖 3.1 系統(tǒng)仿真圖3.2 系統(tǒng)仿真結(jié)果圖 3.2 系統(tǒng)正在運(yùn)行圖 3.3 系統(tǒng)正在運(yùn)行四、程序設(shè)計(jì)4.1 程序設(shè)計(jì)數(shù)碼管動態(tài)顯示程序包含顯示數(shù)字、部分字母符號、小數(shù)點(diǎn)、數(shù)碼管閃爍、數(shù)碼管消隱等。其它程序輸出到顯示程序的數(shù)據(jù)既可以是 BCD 碼、二進(jìn)制碼、ASCII 碼、自定義顯示碼等。由硬件電路工作原理可知,為了顯示穩(wěn)定的數(shù)據(jù), 每秒必須顯示數(shù)據(jù) 50 次

9、以上,才能達(dá)到預(yù)期目的。MCS-51 單片機(jī)部有兩個(gè) 16 位可編程的定時(shí)器/計(jì)數(shù)器 T0 和 T1。它們即可用作定時(shí)器方式,又可用作計(jì)數(shù)器方式。其中 T0 由 TH0 和 TL0 計(jì)數(shù)器構(gòu)成; T1 由 TH1 和 TL1 計(jì)數(shù)器構(gòu)成。工作于定時(shí)器方式時(shí),通過對機(jī)器周期(新型 51 單片機(jī)可以對振蕩周期計(jì)數(shù))的計(jì)數(shù),即每一個(gè)機(jī)器周期定時(shí)器加 1,來實(shí)現(xiàn)定時(shí)。故系統(tǒng)晶振頻率直接影響定時(shí)時(shí)間。如果晶振頻率為 12MHZ,則定時(shí)器每隔(1/12MHZ)12=1us 加1。工作于計(jì)數(shù)器方式時(shí),對 P3.4 或 P3.5 管腳的負(fù)跳變(10)計(jì)數(shù)。它在每個(gè)機(jī)器周期的 S5P2 時(shí)采樣外部輸入,當(dāng)采樣值

10、在這個(gè)機(jī)器周期為高,在下一個(gè)機(jī)器周期為低時(shí),計(jì)數(shù)器加 1。因此需要兩個(gè)機(jī)器周期來識別一個(gè)有效跳變, 故最高計(jì)數(shù)頻率為晶振頻率的 1/24。特殊功能寄存器TMOD 用于定時(shí)器/計(jì)數(shù)器的方式控制。高4 位用于設(shè)置T1, 低4 位用于設(shè)置T0。單片機(jī)部定時(shí)器/計(jì)數(shù)器的使用,簡而概之:(1)如需用中斷,則將EA和相關(guān)中斷控制位置1;(2)根據(jù)需要設(shè)置工作方式,即對TMOD設(shè)置;(3)然后啟動計(jì)數(shù),即對TR0或TR1置1。(4)如使用中斷,則計(jì)數(shù)溢出后硬件會自動轉(zhuǎn)入中斷入口地址;如使用查詢,則必須對溢出中斷標(biāo)志位TF0或TF1進(jìn)行判斷。4.2 程序流程圖圖 4.1 主程序圖五、系統(tǒng)調(diào)試5.1 系統(tǒng)硬件調(diào)

11、試在領(lǐng)完課程設(shè)計(jì)所需的元器件并檢查是否是自己所需要,并且根據(jù)電路原理圖進(jìn)行電路板的焊制,在焊接過程中注意不要虛焊和短路。焊接完成后首先對電路板上的線路進(jìn)行檢查是否有錯漏和重復(fù)。并且用萬用表測試電路中有無虛焊短接的情況。在測試無誤后,向單片機(jī)燒錄程序,并接通電源進(jìn)行測試。在第一次上電過程中,數(shù)碼管并沒有顯示出如期的結(jié)果,用萬用表對焊接點(diǎn)進(jìn)行再一次的排查并對線路進(jìn)行檢查,發(fā)現(xiàn)單片機(jī)底座有幾個(gè)虛焊點(diǎn),并重新對其進(jìn)行焊制。5.2 系統(tǒng)軟件調(diào)試在 keil 編譯器下進(jìn)行程序的編寫,以子程序?yàn)閱挝贿M(jìn)行調(diào)試,并且利用proteus 軟件進(jìn)行仿真實(shí)驗(yàn)并結(jié)合電路板進(jìn)行整機(jī)調(diào)試。六、總結(jié)與體會此次的課程設(shè)計(jì)是基于

12、單片機(jī)的數(shù)碼管滾動顯示控制。單片機(jī)是自動化的重要課程,學(xué)習(xí)的時(shí)候十分用心,也同時(shí)也為這次的課程設(shè)計(jì)打下了理論基礎(chǔ)。但是由于學(xué)習(xí)到的更多涉及于課本知識并沒有靈活的掌握,所以說在設(shè)計(jì)的過程中也需要不斷的翻閱書籍,以此來達(dá)到完成順利完成課程設(shè)計(jì)任務(wù),在這段學(xué)習(xí)與制作的過程中鞏固了我在課堂上學(xué)習(xí)到的容,而且鍛煉到了我個(gè)人的自我學(xué)習(xí)能力及制作能力。在課程設(shè)計(jì)最開始是做 Proteus 仿真,從最小系統(tǒng)開始做。單片機(jī)最小系統(tǒng)是指用最少的元件組成的單片機(jī)可以工作的系統(tǒng)。應(yīng)該包括:單片機(jī)、晶振電路、復(fù)位電路等。我上學(xué)期做過數(shù)電的課程設(shè)計(jì)所以這次看到器件這么少電路圖這么簡單還覺得很高興。然而做完仿真開始焊接時(shí)才

13、發(fā)現(xiàn)從單片機(jī)芯片出來的連接數(shù)碼管的線路在仿真中隱藏了只留下了引腳,導(dǎo)致我在焊接的時(shí)候一下多了十多根線打亂我的節(jié)奏,好在最后還是踉踉蹌蹌地焊完了。在第一次調(diào)試的時(shí)候并沒有現(xiàn)象,這令我十分惶恐,仔細(xì)檢查才發(fā)現(xiàn)仿真中21 20 引腳的都略去了而這幾個(gè)針腳正是連接 vcc 跟地的引腳,后來將它焊上了。給我的啟發(fā)是以后在做完仿真焊接的時(shí)候一定要每個(gè)引腳的過,因?yàn)榉抡嬷兴鼘⑿酒囊_打亂了順序而且有的引腳也省略了,仿真跟真實(shí)的焊接還是不同的。還有就是拿到仿真先別急著焊接,還是要大致地考慮器件的布局跟正反面的走線,提前理清思路焊的時(shí)候才能游刃有余,不至于慌忙。而且在制作仿真的過程中也有了瓶頸,大一學(xué)的 c

14、語言忘得差不多了好在同學(xué)的幫助下才解決了問題,另外焊接只是一方面,后續(xù)的檢測診斷才是關(guān)鍵,不可能一下子焊好就可以使用,在焊接的過程中難免有一些焊點(diǎn)漏焊虛焊的。每一次的課程設(shè)計(jì)對我都是一種拔高跟歷練,在一次次的課程設(shè)計(jì)中我會不斷地進(jìn)步,提升自己的解決問題的能力,跟動手焊接能力,還有故障排查能力,做課程設(shè)計(jì)固然需要智慧然而堅(jiān)持跟耐心也是很關(guān)鍵的, 這幾樣缺一不可,否則很難做出成功的作品。我相信我會一步步地慢慢變好變強(qiáng)。附錄一器件名稱數(shù)量Stc89c54 單片機(jī)1電容若干七段共陰極數(shù)碼管2電阻若干微動開關(guān)2芯片插座3驅(qū)動1晶振1元器件清單附錄二#include/-定義使用的 IO 口-/#defin

15、e GPIO_DIG P2 #define GPIO_PLACE P0 sbit k =P10;/-定義全局變量-/段選/位選unsigned char code DIG_PLACE8 = 0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;/位選控制查表的方法控制unsigned char code DIG_CODE17 = 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;/0、1、2、3、4、5、6、7、8、9、Ab、Cd、EF 的顯示碼unsign

16、ed char DisplayData8;/用來存放要顯示的 8 位數(shù)的值/-聲明全局函數(shù)-/ void Displaykey(); void Runkey();void first();void step1(); void step2(); void step3(); void step4();signed char delay; signed char i; unsigned char j; signed char i1; unsigned char step=1;/* 函 數(shù) 名: main* 函數(shù)功能: 主函數(shù)*/void main(void)unsigned char a;for(a

17、=0; a8; a+)DisplayDataa = DIG_CODEa;/存放段碼first(); /設(shè)置定時(shí)器初值和工作方式while(1)Displaykey();/掃描按鍵Runkey();/執(zhí)行相對應(yīng)的按鍵步驟/* 函 數(shù) 名:first()* 函數(shù)功能: 設(shè)置初值*/ void first()TMOD=0x01;/設(shè)置 T0 為定時(shí)器 工作方式 0 TH0=(65536-20000)/256;TL0=(65536-20000)%256;/設(shè)置計(jì)數(shù)器初值,定時(shí)時(shí)間為 20ms IE=0x82;/允許定時(shí)器 0 中斷/* 函 數(shù) 名:Displaykey();* 函數(shù)功能: 按鍵掃描*/

18、void Displaykey()if(k=0)TR0=1;/啟動定時(shí)器 0/* 函 數(shù) 名:void time0() interrupt1 using 1* 函數(shù)功能: 定時(shí)器 0*/void time0() interrupt 1 using 1unsigned char a; TH0=(65536-20000)/256;TL0=(65536-20000)%256;/方式 1 需要重置定時(shí)器的初值if(k=0)while(1)if(k=1) break;step=step+1;/定時(shí) 20ms 去除按鍵抖動/判斷按鍵是否彈起/進(jìn)入下一個(gè)工作方式if(step=5) step=1;switc

19、h(step)case 1: i=0;break;/設(shè)置步驟 1 的初值case 2: i=7;break;/設(shè)置步驟 2 的初值case 3: i=0; i1=7; break;/設(shè)置步驟 3 的初值case 4: i=3; i1=4; break;/設(shè)置步驟 4 的初值a+;while(a=20) 20ms*50=1s/ 利用定時(shí)器進(jìn)行延時(shí) 延時(shí)時(shí)間為 a=0;delay=1;/延時(shí)結(jié)束標(biāo)志位TR0=0;/關(guān)閉定時(shí)器/* 函 數(shù) 名:Runkey();* 函數(shù)功能: 按鍵執(zhí)行和選擇*/ void Runkey()switch(step)case 1: step1(); break; cas

20、e 2: step2(); break; case 3: step3(); break; case 4: step4(); break;/* 函 數(shù) 名: step1* 函數(shù)功能: 右掃程序*/ void step1()GPIO_PLACE = DIG_PLACEi;/發(fā)送位選GPIO_DIG = DisplayDatai;/發(fā)送段碼j = 10;/掃描間隔時(shí)間設(shè)定while(j-);GPIO_DIG = 0x00;/消隱TR0=1;/開定時(shí)器延時(shí)while(delay=1)delay=0;i=i+1;/延時(shí)時(shí)間到,數(shù)碼管位選移動while(i=8)i=0;/* 函 數(shù) 名: step2* 函數(shù)功能: 左掃程序*/ void step2()GPIO_PLACE = DIG_PLACEi;/發(fā)送位選GPIO_DIG = DisplayDatai;/發(fā)送段碼j = 10;/掃描間隔時(shí)間設(shè)定while(j-);GPIO_DIG = 0x00;/消隱TR0=1;while(delay=1)delay=0;i=i-1;/延時(shí)時(shí)間到,數(shù)碼管位選移動while(i=-1)i=7;/* 函 數(shù) 名: step3* 函

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論