版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 目 錄</b></p><p><b> 摘 要1</b></p><p> Abstract2</p><p> 1設(shè)計(jì)原理與方法3</p><p> 1.1 硬件設(shè)計(jì)原理3</p><p> 1.2 程序的結(jié)構(gòu)化設(shè)計(jì)方
2、法4</p><p> 2 硬件電路及其說(shuō)明6</p><p> 2.1 顯示電路單元6</p><p> 2.1.1 74HC573資料6</p><p> 2.1.2 數(shù)碼管顯示電路7</p><p> 2.1.3顯示電路原理圖及其說(shuō)明8</p><p> 2.2 矩
3、陣鍵盤(pán)單元9</p><p> 2.2.1矩陣鍵盤(pán)的原理與檢測(cè)方式9</p><p> 2.2.2 矩陣鍵盤(pán)電路部分及其說(shuō)明10</p><p> 2.3 單片機(jī)最小系統(tǒng)及外圍電路10</p><p> 2.3.1 MAX232資料11</p><p> 2.3.2 RS232接口12</p
4、><p> 2.3.3 STC89C5213</p><p> 2.3.4 復(fù)位電路15</p><p> 2.3.5 振蕩電路15</p><p> 2.3.6 串口電路16</p><p> 2.3.7 最小系統(tǒng)原理圖17</p><p> 3仿真軟件介紹18</p
5、><p> 3.1程序設(shè)計(jì)軟件Protel18</p><p> 3.2程序編寫(xiě)軟件Keil18</p><p> 3.3程序仿真軟件Proteus18</p><p> 4 仿真電路測(cè)試.........................................................................
6、.................................19</p><p> 5 實(shí)物圖及其調(diào)試20</p><p> 6 小結(jié)與體會(huì)22</p><p><b> 7 參考文獻(xiàn)23</b></p><p> 附錄1:C語(yǔ)言源程序24</p><p> 附錄2:元件清
7、單34</p><p> 附錄3:?jiǎn)纹瑱C(jī)實(shí)習(xí)日記35</p><p><b> 摘要</b></p><p> 單片計(jì)算機(jī)即單片微型計(jì)算機(jī)。由RAM ,ROM,CPU構(gòu)成,定時(shí),計(jì)數(shù)和多種接口于一體的微控制器。它體積小,成本低,功能強(qiáng),廣泛應(yīng)用于智能產(chǎn)業(yè)和工業(yè)自動(dòng)化上。而51系列單片機(jī)是各單片機(jī)中最為典型和最有代表性的一種。這次課程設(shè)
8、計(jì)通過(guò)對(duì)它的學(xué)習(xí),應(yīng)用,從而達(dá)到學(xué)習(xí)、設(shè)計(jì)、開(kāi)發(fā)軟、硬的能力。</p><p> 本次課程設(shè)計(jì)包括STC89S52單片機(jī)最小系統(tǒng)包括復(fù)位和時(shí)鐘電路及供電系統(tǒng)、4×4矩陣鍵盤(pán)、獨(dú)立6個(gè)8段LED數(shù)碼管顯示電路。利用相關(guān)設(shè)計(jì)軟件進(jìn)行原理圖設(shè)計(jì)即利用Keil軟件編程以及Proteus軟件仿真來(lái)鞏固單片機(jī)應(yīng)用、模擬電路、數(shù)字電路課程及學(xué)會(huì)各種工程軟件的使用。 </p><p> 關(guān)鍵
9、字:?jiǎn)纹瑱C(jī) 最小系統(tǒng) 矩陣鍵盤(pán) LED顯示 </p><p><b> ABSTRACT</b></p><p> Single chip computer is the single chip computer. By RAM, ROM, CPU constitute, time, count and multiple interface in the
10、 integration of micro controller. Its small size, low cost, the function is strong, widely used in intelligent industry and industrial automation. And 51 series microcontroller is the most typical and various microcontro
11、ller most representative one. This curriculum design through to its study, application, thus achieved the study, design, development, soft and hard ability. </p><p> The curriculum design, including STC89S5
12、2MCU minimum system ( including a reset and clock circuit and power supply system ),4 x4 matrix keyboard, the independent 6 LED digital tube display circuit . Using circuit design software schematic design, using Keil so
13、ftware and Protues software simulation, we consolidate the MCU application, analog circuit, digital circuit course and learn all kinds of engineering software use. </p><p> Key Words:MCU minimum system m
14、atrix keyboard LED digital tube display </p><p><b> 1設(shè)計(jì)原理與方法</b></p><p> 1.1 硬件設(shè)計(jì)原理</p><p> 本次課程設(shè)計(jì)是基于MCS-52單片機(jī)的擴(kuò)展設(shè)計(jì),利用52單片機(jī)為核心,根據(jù)課程設(shè)計(jì)的要求先編寫(xiě)程序并在開(kāi)發(fā)板上進(jìn)行調(diào)試,調(diào)試成功之后再進(jìn)一步設(shè)
15、計(jì)硬件電路,最后將硬件電路和編寫(xiě)的程序結(jié)合實(shí)現(xiàn)要求的功能,并不斷檢錯(cuò)調(diào)試,最后達(dá)到設(shè)計(jì)目的。</p><p> 功能選擇:通過(guò)功能選擇鍵,使得單片機(jī)處于不同的工作狀態(tài)并通過(guò)LED顯示相應(yīng)的內(nèi)容;可選擇的功能包括:數(shù)據(jù)輸入;數(shù)據(jù)顯示;串口通信。</p><p> 數(shù)據(jù)輸入:通過(guò)功能選擇鍵選擇“數(shù)據(jù)輸入”后,可分次輸入10個(gè)4位十進(jìn)制數(shù)據(jù),并將輸入的數(shù)據(jù)保存在內(nèi)部RAM中。</p&g
16、t;<p> 數(shù)據(jù)顯示:通過(guò)功能選擇鍵選擇“數(shù)據(jù)顯示”后,可顯示之前輸入的10個(gè)4位十進(jìn)制數(shù)據(jù)中的任一個(gè)。</p><p> 4)串口通信:將兩個(gè)單片機(jī)最小系統(tǒng)通過(guò)串口連接起來(lái),其中一個(gè)作為主系統(tǒng),另一個(gè)作為輔系統(tǒng)。當(dāng)通過(guò)功能選擇鍵選擇“串行通信”后,當(dāng)在主系統(tǒng)上按下數(shù)字鍵后主系統(tǒng)的LED按從左向右移動(dòng)的方式顯示按鍵輸入的數(shù)字,同時(shí)輔系統(tǒng)的LED上顯示與主系統(tǒng)同樣的內(nèi)容。</p>
17、<p> 1.2 程序的結(jié)構(gòu)化設(shè)計(jì)方法</p><p> 如圖所示,發(fā)送機(jī)程序設(shè)計(jì)結(jié)構(gòu)如下:</p><p> 圖1.1 發(fā)送機(jī)程序設(shè)計(jì)結(jié)構(gòu)</p><p> 接收機(jī)程序設(shè)計(jì)結(jié)構(gòu)圖如下:</p><p> 圖1.2 接收機(jī)程序設(shè)計(jì)結(jié)構(gòu)圖</p><p> 2 硬件電路及其說(shuō)明</p>
18、<p> 2.1 顯示電路單元</p><p> 2.1.1 74HC573資料</p><p> 74HC573是八進(jìn)制3 態(tài)非反轉(zhuǎn)透明鎖存器,是高性能硅門(mén)CMOS器件。 </p><p> 原理說(shuō)明:74HC573的八個(gè)鎖存器都是透明的D 型鎖存器,當(dāng)使能(G)為高時(shí),Q 輸出 將隨數(shù)據(jù)(D)輸入而變。當(dāng)使能為低時(shí),輸出將鎖存在已建立的數(shù)據(jù)
19、電平上。輸出控制不影響鎖存器的內(nèi)部工作,即老數(shù)據(jù)可以保持,甚至當(dāng)輸出被關(guān)閉時(shí), 新的數(shù)據(jù)也可以置入。這種電路可以驅(qū)動(dòng)大電容或低阻抗負(fù)載,可以直接與系統(tǒng)總線接口并驅(qū)動(dòng)總線,而不需要外接口。特別適用于緩沖寄存器,I/O 通道,雙向總線驅(qū)動(dòng)器和工作寄存器。</p><p><b> 1)引腳圖:</b></p><p> 圖2-1 74HC573引腳圖</p&g
20、t;<p><b> 引腳功能表:</b></p><p> 圖2-2 74HC573功能真值表</p><p> 2.1.2 數(shù)碼管顯示電路</p><p> LED數(shù)碼管顯示是利用半導(dǎo)體發(fā)光制成條形的發(fā)光二極管,封裝在一起組成數(shù)字或其他符號(hào)形狀。數(shù)碼管根據(jù)公共端不同,分為共陰極和共陽(yáng)極兩種形式。 本次設(shè)計(jì)采用共陰
21、級(jí)數(shù)碼管,考慮到六位數(shù)碼顯示管顯示,本次設(shè)計(jì)采用了數(shù)碼管LG5631AH。 </p><p> 2.1.3 顯示電路原理圖及其說(shuō)明</p><p> 圖2-3 顯示部分電路原理圖</p><p> 說(shuō)明:從原理圖我們可以清晰的看到電路的硬件連接,我們采用兩個(gè)共陰級(jí)數(shù)碼管LG5631AH作為顯示部分,74HC573作為數(shù)碼管與單片機(jī)的連
22、接的中間部分,其中一片74HC573作為位選控制端口,控制六個(gè)數(shù)碼管的選中,另一片作為段選端口,選中每一位七段數(shù)碼管的數(shù)字顯示。這樣就可以實(shí)現(xiàn)要求中關(guān)于矩陣鍵盤(pán)的顯示電路和溫度檢測(cè)顯示電路的要求。</p><p> 其他與單片機(jī)功能相關(guān)部分由排針引出,實(shí)現(xiàn)外接。</p><p> 2.2 矩陣鍵盤(pán)單元</p><p> 2.2.1矩陣鍵盤(pán)的原理與檢測(cè)方式<
23、;/p><p><b> 原理說(shuō)明:</b></p><p> 列線通過(guò)電阻接正電源,并將行線所接的單片機(jī)的I/O口作為輸出端,而列線所接的I/O口則作為輸入。這樣,當(dāng)按鍵沒(méi)有按下時(shí),所有的輸入端都是高電平,代表無(wú)鍵按下。行線輸出是低電平,一旦有鍵按下,則輸入線就會(huì)被拉低,這樣,通過(guò)讀入輸入線的狀態(tài)就可得知是否有鍵按下了。</p><p>
24、鍵盤(pán)的工作方式一般有循環(huán)掃描和中斷掃描兩種。</p><p> 循環(huán)掃描方式利用CPU在完成其他工作的空余,調(diào)用鍵盤(pán)掃描子程序來(lái)響應(yīng)鍵輸入要求。在執(zhí)行鍵功能程序時(shí),CPU不再響應(yīng)鍵輸入要求。鍵盤(pán)掃描程序通常具備4項(xiàng)功能:第一,判斷鍵盤(pán)上有無(wú)鍵按下。第二,去除鍵抖動(dòng)影響。在判斷有鍵按下,軟件延時(shí)一段時(shí)間后,再判斷鍵盤(pán)狀態(tài)。如果仍為有鍵按下?tīng)顟B(tài),則確定;否則按鍵抖動(dòng)處理。第三,掃描鍵盤(pán),得到按鍵的鍵號(hào)。第四,判別閉
25、合的鍵是否釋放。在系統(tǒng)初始化后,CPU必須反復(fù)輪流調(diào)用掃描式顯示子程序和鍵盤(pán)輸入程序。在識(shí)別有鍵閉合后,執(zhí)行規(guī)定的操作,然后再重新進(jìn)人上述循環(huán)。</p><p> 循環(huán)工作方式采用掃描鍵盤(pán)的工作方式,雖然能響應(yīng)鍵輸人的命令或數(shù)據(jù),但是這種方式不管鍵盤(pán)上有無(wú)鍵按下,CPU總要定時(shí)掃描鍵盤(pán);而應(yīng)用系統(tǒng)在工作時(shí),并不經(jīng)常需要按鍵輸入,因此,CPU常處于空掃描狀態(tài)。為了提高CPU的工作效率,可采用中斷掃描工作方式,即只
26、在鍵盤(pán)有鍵按下時(shí)發(fā)中斷請(qǐng)求,CPU響應(yīng)中斷請(qǐng)求后,轉(zhuǎn)中斷服務(wù)程序,進(jìn)行鍵盤(pán)掃描,識(shí)別鍵碼。中斷掃描工作方式的一種簡(jiǎn)易鍵盤(pán)接口電路。其直接由P1口中高、低字節(jié)構(gòu)成4x4行列式鍵盤(pán)。鍵盤(pán)的列線與P1口的低4位相接,鍵盤(pán)的行線接到Pl口的高4位。圖5中“與”門(mén)的4輸入端分別與各列線相連,而輸出端接單片機(jī)外部中斷輸入INT0。初始化時(shí),鍵盤(pán)行輸出口全部置0。當(dāng)有鍵按下時(shí),1NT0端為低電平,向CPU發(fā)出中斷請(qǐng)求,若CPU開(kāi)放外部中斷,則響應(yīng)該中
27、斷請(qǐng)求,進(jìn)人中斷服務(wù)程序。此外還須注意保護(hù)與恢復(fù)現(xiàn)場(chǎng)。</p><p> 2.2.2 矩陣鍵盤(pán)電路部分及其說(shuō)明</p><p> 圖2-4 矩陣鍵盤(pán)電路</p><p> 說(shuō)明:本次設(shè)計(jì)采用循環(huán)掃描的方法,每次檢測(cè)有按鍵按下,由于行列電平的變化,便開(kāi)始查詢此時(shí)行列電平值所對(duì)應(yīng)的鍵盤(pán)編碼,再由鍵盤(pán)編碼輸出對(duì)應(yīng)的數(shù)碼管顯示編碼并顯示鍵值,由此按下一個(gè)按鍵,便可以得
28、到相應(yīng)的顯示部分。本設(shè)計(jì)可實(shí)現(xiàn)要求。</p><p> 2.3 單片機(jī)最小系統(tǒng)及外圍電路</p><p> 2.3.1 MAX232資料</p><p> max232在這里作為電平轉(zhuǎn)換功能,應(yīng)用電路如下:</p><p> 圖2-5 max232應(yīng)用電路</p><p><b> 引腳圖</
29、b></p><p> 圖2-6 max232引腳圖</p><p> 電路說(shuō)明:第一部分是電荷泵電路。由1、2、3、4、5、6腳和4只電容構(gòu)成。功能是產(chǎn)生+12v和-12v兩個(gè)電源,提供給RS-232串口電平的需要。第二部分是數(shù)據(jù)轉(zhuǎn)換通道。由7、8、9、10、11、12、13、14腳構(gòu)成兩個(gè)數(shù)據(jù)通道。其中13腳(R1IN)、12腳(R1OUT)、11腳(T1IN)、14腳(T
30、1OUT)為第一數(shù)據(jù)通道。8腳(R2IN)、9腳(R2OUT)、10腳(T2IN)、7腳(T2OUT)為第二數(shù)據(jù)通道。TTL/CMOS數(shù)據(jù)從11引腳(T1IN)、10引腳(T2IN)輸入轉(zhuǎn)換成RS-232數(shù)據(jù)從14腳(T1OUT)、7腳(T2OUT)送到電腦DB9插頭;DB9插頭的RS-232數(shù)據(jù)從13引腳(R1IN)、8引腳(R2IN)輸入轉(zhuǎn)換成TTL/CMOS數(shù)據(jù)后從12引腳 (R1OUT)、9引腳(R2OUT)輸出。 第三部分是供
31、電。15腳GND、16腳VCC(+5v)。</p><p> 2.3.2 RS232接口</p><p> a.簡(jiǎn)介:RS232接口連接器一般使用型號(hào)為DB-9的9芯插頭座,只需3條接口線,即"發(fā)送數(shù)據(jù)"、"接收數(shù)據(jù)"和"信號(hào)地"即可傳輸數(shù)據(jù),在此用于串口通信接口,其引腳圖如下所示。</p><p>
32、 b.特點(diǎn):1)RS232的規(guī)范中,電壓值在+3V~+15V(一般使用+6V)稱為"0"或"ON"。電壓在-3V~-15V(一般使用-6V)稱為"1"或"OFF";</p><p> 2)RS232為全雙工工作模式,其信號(hào)的電壓是參考地線而得到的,可以同時(shí)進(jìn)行數(shù)據(jù)的傳送和接收。</p><p> c.引腳
33、功能介紹和引腳圖:1 數(shù)據(jù)載波檢測(cè) DCD 2 接收數(shù)據(jù) RXD 3 發(fā)送數(shù)據(jù) TXD 4數(shù)據(jù)終端準(zhǔn)備 DTR 5信號(hào)地 GND 6 數(shù)據(jù)設(shè)備準(zhǔn)備好 DSR 7請(qǐng)求發(fā)送 RTS 8 清除發(fā)送 CTS 9振鈴指示 DELL </p><p> 圖2-7 RS232接口引腳圖
34、 </p><p> 2.3.3 STC89C52</p><p> 1)簡(jiǎn)介:STC89C52是一種低功耗、高性能CMOS8位微控制器,具有 8K 在系統(tǒng)可編程Flash 存儲(chǔ)器。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng)可編程Flash,使得STC89C52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。 具有以下標(biāo)準(zhǔn)功能
35、: 8k字節(jié)Flash,512字節(jié)RAM, 32 位I/O 口線,看門(mén)狗定時(shí)器,內(nèi)置4KB EEPROM,MAX810復(fù)位電路,2個(gè)16 位 定時(shí)器/計(jì)數(shù)器,一個(gè)6向量2級(jí)中斷結(jié)構(gòu),全雙工串行口。另外 STC89X52 可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU 停止工作,允許RAM、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個(gè)中斷或硬
36、件復(fù)位為止。最高運(yùn)作頻率35MHz,6T/12T可選。 </p><p><b> 2)參數(shù):</b></p><p> 1. 增強(qiáng)型8051 單片機(jī),6 時(shí)鐘/機(jī)器周期和12 時(shí)鐘/機(jī)器周期可以任意 選擇,指令代碼完全兼容傳統(tǒng)8051. </p><p> 工作電壓:5.5V~3.3V(5V 單片機(jī))/3.8V~2.0V(3V 單片機(jī)
37、) </p><p> 工作頻率范圍:0~40MHz,相當(dāng)于普通8051 的0~80MHz,實(shí)際工作 頻率可達(dá)48MHz 4. 用戶應(yīng)用程序空間為8K 字節(jié) </p><p> 片上集成512 字節(jié)RAM </p><p> 通用I/O 口(32 個(gè)),復(fù)位后為:P0/P1/P2/P3 是準(zhǔn)雙向口/弱上拉, P0 口是漏極開(kāi)路輸出,作為總
38、線擴(kuò)展用時(shí),不用加上拉電阻,作為 I/O 口用時(shí),需加上拉電阻。 </p><p> .ISP(在系統(tǒng)可編程)/IAP(在應(yīng)用可編程),無(wú)需專用編程器,無(wú) 需專用仿真器,可通過(guò)串口(RxD/P3.0,TxD/P3.1)直接下載用戶程 序,數(shù)秒即可完成一片 </p><p> 共3 個(gè)16 位定時(shí)器/計(jì)數(shù)器。即定時(shí)器T0、T1、T2 </p><p>
39、 外部中斷4 路,下降沿中斷或低電平觸發(fā)電路,Power Down 模式可 由外部中斷低電平觸發(fā)中斷方式喚醒 </p><p> 通用異步串行口(UART),還可用定時(shí)器軟件實(shí)現(xiàn)多個(gè)UART </p><p> .工作溫度范圍:-40~+85℃(工業(yè)級(jí))/0~75℃(商業(yè)級(jí)) </p><p> 3)引腳圖如下,通用I/O 口(32 個(gè)),有40個(gè)
40、引腳。</p><p> 圖2-8 STC89C52引腳圖</p><p> 2.3.4 復(fù)位電路</p><p> 復(fù)位一般有上電和按鍵復(fù)位兩種方式,本次設(shè)計(jì)采用按鍵復(fù)位,按鍵接在單片機(jī)的RST(30引腳)端口。電路如下:</p><p> 圖2-9 按鍵復(fù)位電路</p><p><b> 2.
41、3.5振蕩電路</b></p><p> 單片機(jī)系統(tǒng)里都有晶振,在單片機(jī)系統(tǒng)里晶振作用非常大,全稱叫晶體振蕩器,它結(jié)合單片機(jī)內(nèi)部電路產(chǎn)生單片機(jī)所需的時(shí)鐘頻率,單片機(jī)晶振提供的時(shí)鐘頻率越高,那么單片機(jī)運(yùn)行速度就越快,單片接的一切指令的執(zhí)行都是建立在單片機(jī)晶振提供的時(shí)鐘頻率。電路如下:</p><p> 圖2-10 晶體震蕩電路</p><p> 2.
42、3.6 串口電路</p><p> 圖 2-11串口電路</p><p> 說(shuō)明:各部分均通過(guò)對(duì)應(yīng)引腳標(biāo)號(hào)相連,串口電路可實(shí)現(xiàn)串口通信,通信使用3根線完成:(1)地線,(2)發(fā)送,(3)接收。如圖。</p><p> 2.3.7 最小系統(tǒng)原理圖</p><p> 由單片機(jī)為核心構(gòu)成有基本功能的最小系統(tǒng),原理圖如下:</p>
43、<p> 圖2-12 最小系統(tǒng)原理圖</p><p><b> 3仿真軟件介紹</b></p><p> 3.1程序設(shè)計(jì)軟件Protel</p><p> Protel公司于80年代末推出了Protel——電子行業(yè)的CAD軟件,由于最初在國(guó)內(nèi)普及率較高,所以發(fā)展較好,大多數(shù)公司中低頻電路設(shè)計(jì)都采用此軟件。早期的版本主要用于
44、印刷版自動(dòng)布線。后來(lái)推出著名的Protel 99se,能夠Windows 9X/XP下運(yùn)行。2000年以后,Altium公司又推出了該軟件的升級(jí)版Altium Designer。Altium Designer在原有的基礎(chǔ)上做出了很大的改進(jìn),能夠打開(kāi)如Pspice等仿真軟件做出的文件。雖然市場(chǎng)上還有很多電路設(shè)計(jì)軟件,但是該軟件還是占有很大的市場(chǎng)份額?,F(xiàn)在業(yè)界最高版本為Altium Desi
45、gner Winter 09版。本次設(shè)計(jì)采用的是Altium Designer進(jìn)行電路原理圖的繪制。 </p><p> 3.2程序編寫(xiě)軟件Keil</p><p>
46、; Keil C51是美國(guó)Keil Software公司出品的51系列兼容單片機(jī)C語(yǔ)言軟件開(kāi)發(fā)系統(tǒng),與匯編相比,C語(yǔ)言在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢(shì),因而易學(xué)易用。Keil提供了包括C編譯器、宏匯編、連接器、庫(kù)管理和一個(gè)功能強(qiáng)大的仿真調(diào)試器等在內(nèi)的完整開(kāi)發(fā)方案,通過(guò)一個(gè)集成開(kāi)發(fā)環(huán)境(uVision)將這些部分組合在一起。本次設(shè)計(jì)編程主要使用Keil軟件進(jìn)行編程。</p><p> 3.3仿真
47、軟件Proteus</p><p> Protues軟件是英國(guó)Labcenter electronics公司出版的EDA工具軟件。它不僅具有其它EDA工具軟件的仿真功能,還能仿真單片機(jī)及外圍器件。它是目前最好的仿真單片機(jī)及外圍器件的工具。雖然目前國(guó)內(nèi)推廣剛起步,但已受到單片機(jī)愛(ài)好者、從事單片機(jī)教學(xué)的教師、致力于單片機(jī)開(kāi)發(fā)應(yīng)用的科技工作者的青睞。Proteus是世界上著名的EDA工具(仿真軟件),從原理圖布圖、代
48、碼調(diào)試到單片機(jī)與外圍電路協(xié)同仿真,一鍵切換到PCB設(shè)計(jì),真正實(shí)現(xiàn)了從概念到產(chǎn)品的完整設(shè)計(jì)。是目前世界上唯一將電路仿真軟件、PCB設(shè)計(jì)軟件和虛擬模型仿真軟件三合一的設(shè)計(jì)平臺(tái),在編譯方面,它也支持IAR、Keil和MPLAB等多種編譯。本次設(shè)計(jì)采用的是Proteus進(jìn)行仿真。</p><p><b> 4 仿真電路測(cè)試</b></p><p><b> 圖4
49、-1 上電復(fù)位</b></p><p> 圖4-2 數(shù)據(jù)輸入顯示</p><p> 圖4-3 數(shù)據(jù)串行通信顯示</p><p><b> 5 實(shí)物圖及其調(diào)試</b></p><p> 圖5-1 上電復(fù)位 </p><p> 圖5-2 數(shù)據(jù)輸入顯示</p>
50、<p> 圖5-3 實(shí)物背面圖 </p><p> 圖5-4 串行通信顯示圖</p><p><b> 6 小結(jié)與體會(huì)</b></p><p> 本次課程設(shè)計(jì)結(jié)合本學(xué)期所學(xué)習(xí)的單片機(jī)的基礎(chǔ)知識(shí),將硬件和軟件的知識(shí)全都聯(lián)系起來(lái),硬件方面有電路的連接和芯片的選取,軟件方面有程序的設(shè)計(jì)和編寫(xiě),這也為以后進(jìn)一步學(xué)習(xí)嵌入式系統(tǒng)打好了
51、基礎(chǔ)。</p><p> 通過(guò)這些天來(lái)的實(shí)習(xí),印象最深的是編寫(xiě)程序和焊接電路的時(shí)候,前者是軟件方面的算法問(wèn)題,實(shí)現(xiàn)功能切換的程序方法有很多,我考慮的是利用中斷來(lái)實(shí)現(xiàn),可是并不滿足程序的要求,經(jīng)過(guò)調(diào)試和改善后得以成功。后者是硬件電路的焊接,很多同學(xué)已經(jīng)學(xué)會(huì)PCB,所以硬件電路對(duì)他們很輕松容易,而硬件電路連接復(fù)雜,單純的技術(shù)焊接費(fèi)時(shí)難測(cè),讓我覺(jué)得與一些同學(xué)還是有很大的差距,有待改進(jìn)。</p><
52、p> 當(dāng)然,最終實(shí)物實(shí)現(xiàn)了所要求的功能,可是還是有很多地方需要改進(jìn),例如PCB的設(shè)計(jì)和制作,例如程序的書(shū)寫(xiě)規(guī)范,不過(guò)總的來(lái)說(shuō)這次單片機(jī)實(shí)習(xí)還是讓我學(xué)到非常多的東西,也增加了我的動(dòng)手機(jī)會(huì),希望自己以后更加嚴(yán)格的要求自己,做到更好。</p><p><b> 7 參考文獻(xiàn)</b></p><p> [1] 尹勇 撒繼銘等,單片計(jì)算機(jī)原理及應(yīng)用(第1版), 科學(xué)
53、出版社, 2013年</p><p> [2] 謝自美.電子線路設(shè)計(jì)·實(shí)驗(yàn)·測(cè)試(第三版).武漢:華中科技大學(xué)出版社</p><p> [3] 李群芳. 單片微型計(jì)算機(jī)與接口技術(shù)(第3版).電子工業(yè)出版社,2008</p><p> [4] 劉教瑜. 單片機(jī)原理及應(yīng)用.武漢理工大學(xué)出版社,2011</p><p>
54、 [5] 張東亮. 單片機(jī)原理與應(yīng)用.人民郵電出版社,2009</p><p> 附錄1:C語(yǔ)言源程序</p><p><b> 發(fā)送機(jī)主程序:</b></p><p> #include<reg51.h></p><p> #include <intrins.h></p>
55、<p><b> bit Flag;</b></p><p> unsigned int ReData,SenData;</p><p> char table[17]= {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x84};//數(shù)碼管代碼&l
56、t;/p><p> char dis_buf;</p><p> char i=0,j=0,k=0,inp1=0,inp2=0,inp3=0,on_off=0,disp=0; //初始化控制變量</p><p> char temp,key,num,m,n;</p><p> char a[11][5];</p><p
57、> void keydown(void);</p><p> void keyscan(void);</p><p> void display(void);</p><p> void init(void); </p><p> void delay(int z)</p><p><b>
58、 {</b></p><p><b> int x,y;</b></p><p> for(x=0;x<z;x++)</p><p> for(y=0;y<110;y++);</p><p><b> }</b></p><p> void
59、 main()</p><p><b> {</b></p><p><b> P0=0xff;</b></p><p><b> P2=0xff;</b></p><p> dis_buf=0xbf;</p><p><b> wh
60、ile(1)</b></p><p><b> {</b></p><p> for(m=0;m<10;m++)</p><p> for(n=0;n<5;n++)</p><p> a[m][n]=0;</p><p> display();</p>
61、<p><b> }</b></p><p> } </p><p> void keydown(void) </p><p><b> {</b></p><p><b> P1=0xf0;</b></p><
62、;p> if(P1!=0xf0)</p><p><b> {</b></p><p> keyscan(); //掃描函數(shù)</p><p> while(P1!=0xF0);</p><p><b> }</b></p><p><b>
63、}</b></p><p> void keyscan(void)</p><p> { int m,n;</p><p> //**********為每個(gè)按鈕設(shè)置一個(gè)編號(hào)key**********************************</p><p> P1=0x0f; //低四位輸入</
64、p><p><b> delay(1);</b></p><p><b> temp=P1;</b></p><p> temp=(~temp)&0x0f;</p><p> if(temp==1)key=0;</p><p> else if(temp==2
65、)key=4;</p><p> else if(temp==4)key=8;</p><p> else if(temp==8)key=12;</p><p><b> P1=0xf0;</b></p><p><b> delay(1);</b></p><p&
66、gt;<b> temp=P1;</b></p><p> temp=(temp>>4);</p><p> temp=(~temp)&0x0f;</p><p> if(temp==1)key=key+0;</p><p> else if(temp==2)key=key+1;<
67、/p><p> else if(temp==4)key=key+2;</p><p> else if(temp==8)key=key+3; </p><p> if(key==3||key==7||key==11||key==12||key>13){ //控制按鈕輸入</p><p> if(key==3)//數(shù)據(jù)輸
68、入按鈕</p><p><b> {</b></p><p> on_off=1;//開(kāi)數(shù)據(jù)輸入開(kāi)關(guān)</p><p><b> }</b></p><p> else if(key==7)//數(shù)據(jù)顯示按鈕</p><p><b> {</b&
69、gt;</p><p><b> disp=1;</b></p><p><b> num=0;</b></p><p><b> }</b></p><p> else if(key==11) //串行通信</p><p><b&
70、gt; {</b></p><p><b> init();</b></p><p> inp2=1,i=0,j=0,inp1=0,on_off=0,disp=0,num=0;</p><p> for(m=0;m<10;m++)</p><p> for(n=0;n<5;n++)<
71、;/p><p> a[m][n]=0;</p><p><b> }</b></p><p> else if(key==12) //回車按鈕</p><p><b> {</b></p><p><b> inp1++; </b><
72、;/p><p> if(inp1==2) {inp1=0;j=0;}</p><p><b> }</b></p><p> else if(key==15) //清除按鈕</p><p><b> {</b></p><p> i=0,j=0,inp1=0,i
73、np2=0,on_off=0,disp=0,num=0;</p><p> for(m=0;m<10;m++)</p><p> for(n=0;n<5;n++)</p><p> a[m][n]=0; </p><p><b> }</b></p><p> els
74、e if(key==14) //輸入清除按鈕</p><p><b> {</b></p><p> for(j=0;j<6;j++) a[i][j]=0;</p><p><b> inp1=0;</b></p><p><b> j=0;</b><
75、/p><p><b> }</b></p><p> }else{ //數(shù)據(jù)按鈕輸入</p><p> if(key<3) {num=key+1;}//num為1~3</p><p> else if(key>3&&key<7) {num=key;
76、}//num為4~6</p><p> else if(key>7&&key<11) {num=key-1;}//num為7~9</p><p> else if(key==13) {num=0;}//num為0</p><p> if(disp==0&&on_off==1){</p>
77、<p> if(inp1==0){i++; a[i][0]=num;}//數(shù)據(jù)存儲(chǔ)</p><p> else if(inp1==1) {j++;a[i][j]=num;} </p><p> }else if(inp2==1)</p><p><b> {</b></p><p&g
78、t; a[0][i]=num;</p><p><b> i++;</b></p><p> if(i==6) i=0;</p><p><b> SBUF=num;</b></p><p><b> }</b></p><p><b&g
79、t; }</b></p><p><b> }</b></p><p><b> /* </b></p><p><b> */</b></p><p> void display(void)</p><p><b>
80、; {</b></p><p><b> while(1){</b></p><p><b> P0=0xbf;</b></p><p> keydown();</p><p> while(on_off){//數(shù)據(jù)輸入和顯示</p><p>
81、<b> P2=0x01;</b></p><p> P0=table[a[i][0]];</p><p> delay(10);</p><p><b> P2=0x04;</b></p><p> P0=table[a[i][1]];</p><p> del
82、ay(10);</p><p><b> P2=0x08;</b></p><p> P0=table[a[i][2]];</p><p> delay(10);</p><p><b> P2=0x10;</b></p><p> P0=table[a[i][3]
83、];</p><p> delay(10);</p><p><b> P2=0x20;</b></p><p> P0=table[a[i][4]];</p><p> delay(10);</p><p> keydown();</p><p> while
84、(disp)</p><p><b> {</b></p><p> keydown();</p><p> for(m=0;m<11;m++)</p><p><b> {</b></p><p> if(num==a[m][0])k=m;</p>
85、;<p><b> } </b></p><p><b> P2=0x01;</b></p><p> P0=table[a[k][0]];</p><p> delay(10);</p><p><b> P2=0x04;</b></p>
86、<p> P0=table[a[k][1]];</p><p> delay(10);</p><p><b> P2=0x08;</b></p><p> P0=table[a[k][2]];</p><p> delay(10);</p><p><b> P
87、2=0x10;</b></p><p> P0=table[a[k][3]];</p><p> delay(10);</p><p><b> P2=0x20;</b></p><p> P0=table[a[k][4]];</p><p> delay(10);</
88、p><p><b> }</b></p><p><b> }</b></p><p> while(inp2)</p><p><b> {</b></p><p><b> k=0x01;</b></p>&
89、lt;p> for(j=0;j<6;j++) </p><p><b> { </b></p><p> P2=k; //點(diǎn)亮最右邊的數(shù)碼管 </p><p> P0=table[a[0][j]]; //顯示該數(shù)值 </p><p> delay(10); //延時(shí),便于眼睛看清 </
90、p><p> k=_crol_(k,1);//循環(huán)右移一位 </p><p> if(k==0x40) k=0x01;</p><p><b> } </b></p><p> keydown();</p><p><b> }</b></p><
91、p><b> }</b></p><p><b> }</b></p><p> void init(void)</p><p><b> {</b></p><p> // while(1){P0=0xbf;}</p><p> T
92、MOD=0x20;//T1工作在方式2 </p><p> TH1=0XF4; //波特率為:4.8kbit/s,發(fā)送與接收的波特率要相等 </p><p> TL1=0XF4; </p><p> TR1=1; //啟動(dòng)定時(shí)器1 </p><p> SCON=0X50;//串口中斷工作在方式1,允許接收</p><
93、;p><b> }</b></p><p><b> /* </b></p><p><b> 接收程序 </b></p><p> 線路連接:同上, 主從單片機(jī)用3線連接,共地,rxd,txd交叉 </p><p> 程序效果:用于顯示主機(jī)發(fā)送的數(shù)值 <
94、/p><p><b> */ </b></p><p> #include<reg52.h> //頭文件 </p><p> #include<intrins.h> //循環(huán)文件 </p><p> #define uchar unsigned char//宏定義 </p>&l
95、t;p> #define uint unsigned int </p><p> uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x84}; </p><p> uchar table_tr[6];//暫存最后按下的六個(gè)數(shù)值 <
96、/p><p> uchar count,cnt;//定義全局變量 </p><p> //延時(shí)子函數(shù),用于數(shù)碼管顯示 </p><p> void delay(uchar i) </p><p><b> { </b></p><p> uchar x,y; </p><
97、p> for(x=i;x>0;x--) </p><p> for(y=110;y>0;y--); </p><p><b> } </b></p><p><b> //初始化子函數(shù) </b></p><p> void init() </p><p
98、><b> { </b></p><p> TMOD=0x20;//T1工作在方式2 </p><p> TH1=0XF4; //波特率為:4.8kbit/s,發(fā)送與接收的波特率要相等 </p><p> TL1=0XF4; </p><p> TR1=1; //啟動(dòng)定時(shí)器1 </p>&l
99、t;p> SCON=0X50;//串口中斷工作在方式1,允許接收 </p><p><b> } </b></p><p><b> //顯示子函數(shù) </b></p><p> void display() </p><p><b> { </b></p
100、><p> uchar i,j;//定義局部變量 </p><p> j=0x01; //賦值 </p><p> for(i=0;i<6;i++) //顯示六個(gè)數(shù)值 </p><p><b> { </b></p><p><b> P2=j; </b><
101、/p><p> P0=table[table_tr[i]]; </p><p> delay(10); </p><p> j=_crol_(j,1);//循環(huán)左移一位 </p><p> if(j==0x40) j=0x01; </p><p><b> } </b></p>
102、<p><b> } </b></p><p><b> //主函數(shù) </b></p><p> void main() </p><p><b> { </b></p><p> uchar i;//定義局部變量 </p><p>
103、; init(); //調(diào)用初始化子函數(shù) </p><p><b> while(1) </b></p><p><b> { </b></p><p> while(RI) //判斷是否接受完 </p><p><b> { </b></p><
104、p> RI=0;//接受完了,標(biāo)志位清零 </p><p> for(i=5;i>0;i--) //把數(shù)組的數(shù)值都往前移一位,騰出table_tr【5】 </p><p> table_tr[i]=table_tr[i-1]; </p><p> table_tr[0]=SBUF;//裝入接收的數(shù)值 </p><p>&
105、lt;b> } </b></p><p> display();//調(diào)用顯示子函數(shù) </p><p><b> } </b></p><p><b> } </b></p><p><b> 附錄2:元件清單</b></p><
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機(jī)課程設(shè)計(jì)---鍵盤(pán)按鍵識(shí)別及l(fā)ed數(shù)碼顯示
- 單片機(jī)課程設(shè)計(jì)--單片機(jī)44矩陣式鍵盤(pán)
- 單片機(jī)課程設(shè)計(jì)(led顯示管)
- 單片機(jī)課程設(shè)計(jì)----led點(diǎn)陣漢字顯示
- led顯示屏單片機(jī)課程設(shè)計(jì)
- 旋轉(zhuǎn)led顯示旋轉(zhuǎn)單片機(jī)課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--鍵盤(pán)輸入在led數(shù)碼管上的顯示
- 單片機(jī)課程設(shè)計(jì)(實(shí)驗(yàn))--led顯示游戲機(jī)
- 基于單片機(jī)的led點(diǎn)陣顯示課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---鍵盤(pán)接口課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--點(diǎn)陣led電子顯示屏
- 單片機(jī)課程設(shè)計(jì)--led數(shù)字顯示電子時(shí)鐘
- 《單片機(jī)原理》課程設(shè)計(jì)4x4矩陣鍵盤(pán)設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---點(diǎn)陣led電子顯示屏
- 單片機(jī)課程設(shè)計(jì)報(bào)告—led顯示電子鐘
- 單片機(jī)課程設(shè)計(jì)報(bào)告(4×4矩陣鍵盤(pán))
- 課程設(shè)計(jì)-制作單片機(jī)的4x4矩陣鍵盤(pán)
- 單片機(jī)鍵盤(pán)輸入課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--顯示電路
- lcd顯示設(shè)計(jì)單片機(jī)課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論