電子設(shè)計(jì)報(bào)告_第1頁
電子設(shè)計(jì)報(bào)告_第2頁
電子設(shè)計(jì)報(bào)告_第3頁
電子設(shè)計(jì)報(bào)告_第4頁
電子設(shè)計(jì)報(bào)告_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、中國礦業(yè)大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院 2013-2014學(xué)年第二學(xué)期 電子設(shè)計(jì) 任課教師:王凱教師評價(jià)優(yōu)+良+中+及格+不及格+教師簽名日期2014.優(yōu)良中及格不及格優(yōu)-良-中-及格-不及格-電子設(shè)計(jì)拔河中國礦業(yè)大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院 電子信息科學(xué)系班級:信科 學(xué)號:xxxxxxxx,姓名:XX日期:2014 年 6月 20 日1.概述12.需求分析13.軟件功能模塊圖24.程序流程圖25.實(shí)驗(yàn)分析26.結(jié)論37.參考文獻(xiàn):31. 概述本課程我的選題是電子拔河器。采用上學(xué)期所焊接的51單片機(jī)板子,用8個(gè)led的左右移動(dòng)反映兩個(gè)人按鍵的快慢,并將按鍵次數(shù)及結(jié)果顯示在8位數(shù)碼管上。游戲采用3局2

2、勝制。2. 需求分析該電子拔河器實(shí)現(xiàn)容易,規(guī)則簡單,娛樂性強(qiáng)。電路介紹:該單片機(jī)開發(fā)板以AT89S51,52系列單片機(jī)為基礎(chǔ),選定增強(qiáng)型的STC89C52RC系列單片機(jī)作為開發(fā)板主芯片,由專業(yè)的電路設(shè)計(jì)工具軟件Altium Designer繪制的電路原理圖。本實(shí)驗(yàn)電路的基本元器件包含:STC89C52RC單片機(jī)、共陰極8位數(shù)碼管、16位LED發(fā)光二極管、6個(gè)按鍵 按鍵查詢 ,按鍵中斷、RS-232串行通信接口、蜂鳴器、USB供電系統(tǒng)。芯片介紹:STC89C52RC:實(shí)現(xiàn)本次實(shí)驗(yàn)的重要芯片,針對AT89S52系列單片機(jī)ISP功能的不穩(wěn)定,特選定增強(qiáng)型的STC89C52RC系列單片機(jī)作為開發(fā)板主芯

3、片。STC89C51RC 系列單片機(jī)是宏晶科技推出的新一代超強(qiáng)抗干擾/ 高速/ 低功耗的單片機(jī),指令代碼完全兼容傳統(tǒng)8051 單片機(jī),12 時(shí)鐘/ 機(jī)器周期和6 時(shí)鐘/ 機(jī)器周期可任意選擇,最新的D 版本內(nèi)部集成MAX810 專用復(fù)位電路。I S P (在系統(tǒng)可編程)/ I A P (在應(yīng)用可編程),無需專用編程器/ 仿真器,可通過串口(P3.0/P3.1)直接下載用戶程序,8K 程序3 秒即可完成一片。 原理介紹:為實(shí)現(xiàn)拔河游戲的效果。本實(shí)驗(yàn)的原理圖包含四個(gè)主要部分:主芯片STC89C52RC、LED二極管、八位數(shù)碼管、按鍵。STC89C52RC,該芯片具有40個(gè)引腳,包含32個(gè)通用I/O口

4、。P0端口(P0.0P0.7,3932引腳):本實(shí)驗(yàn)中,P0端口,主要用來控制LED二極管的顯示(通過一只亮的LED二極管的左右移動(dòng)來模擬拔河的過程)、八位數(shù)碼管(顯示雙方各自按鍵次數(shù),以及比分和結(jié)果)。P0口是一個(gè)漏極開路的8位雙向I/O口。作為輸出端口,每個(gè)引腳能驅(qū)動(dòng)8個(gè)TTL負(fù)載,對端口P0寫入“1”時(shí),可以作為高阻抗輸入。在訪問外部程序和數(shù)據(jù)存儲器時(shí),P0口也可以提供低8位地址和8位數(shù)據(jù)的復(fù)用總線。此時(shí),P0口內(nèi)部上拉電阻有效。在Flash ROM編程時(shí),P0端口接收指令字節(jié);而在校驗(yàn)程序時(shí),則輸出指令字節(jié)。驗(yàn)證時(shí),要求外接上拉電阻。P1端口(P1.0P1.7,18引腳):本實(shí)驗(yàn)中,使

5、用P1.4控制喇叭,發(fā)出滴滴聲來提醒比賽結(jié)束。使用P1.6、P1.7口來選擇倒計(jì)時(shí)時(shí)間(按P1.6選擇倒計(jì)時(shí),按P1.7選擇倒計(jì)時(shí))P1口是一個(gè)帶內(nèi)部上拉電阻的8位雙向I/O口。P1的輸出緩沖器可驅(qū)動(dòng)(吸收或者輸出電流方式)4個(gè)TTL輸入。對端口寫入1時(shí),通過內(nèi)部的上拉電阻把端口拉到高電位,這是可用作輸入口。P1口作輸入口使用時(shí),因?yàn)橛袃?nèi)部上拉電阻,那些被外部拉低的引腳會輸出一個(gè)電流()。P2端口(P2.0P2.7,2128引腳):本實(shí)驗(yàn)中P2口主要用來控制選擇八位數(shù)碼管顯示數(shù)字的位置。P2口是一個(gè)帶內(nèi)部上拉電阻的8位雙向I/O端口。P2的輸出緩沖器可以驅(qū)動(dòng)(吸收或輸出電流方式)4個(gè)TTL輸入

6、。對端口寫入1時(shí),通過內(nèi)部的上拉電阻把端口拉到高電平,這時(shí)可用作輸入口。P2作為輸入口使用時(shí),因?yàn)橛袃?nèi)部的上拉電阻,那些被外部信號拉低的引腳會輸出一個(gè)電流()。P3端口(P3.0P3.7,1017引腳):在本次實(shí)驗(yàn)中P3口使用其復(fù)用功能,用P3.2 (外部中斷0)和P3.3 (外部中斷1)來檢測并記錄按鍵數(shù)。P3是一個(gè)帶內(nèi)部上拉電阻的8位雙向I/O端口。P3的輸出緩沖器可驅(qū)動(dòng)(吸收或輸出電流方式)4個(gè)TTL輸入。對端口寫入1時(shí),通過內(nèi)部的上拉電阻把端口拉到高電位,這時(shí)可用作輸入口。P3做輸入口使用時(shí),因?yàn)橛袃?nèi)部的上拉電阻,那些被外部信號拉低的引腳會輸入一個(gè)電流()。在對Flash ROM編程或

7、程序校驗(yàn)時(shí),P3還接收一些控制信號。P3口除作為一般I/O口外,還有其他一些復(fù)用功能,如下表所示:引腳號復(fù)用功能P3.0RXD(串行輸入口)P3.1TXD(串行輸出口)P3.2(外部中斷0)P3.3(外部中斷1)P3.4T0(定時(shí)器0的外部輸入)P3.5T1(定時(shí)器1的外部輸入)P3.6(外部數(shù)據(jù)存儲器寫選通)P3.7(外部數(shù)據(jù)存儲器讀選通)RST(9引腳):復(fù)位輸入。當(dāng)輸入連續(xù)兩個(gè)機(jī)器周期以上高電平時(shí)為有效,用來完成單片機(jī)單片機(jī)的復(fù)位初始化操作??撮T狗計(jì)時(shí)完成后,RST引腳輸出96個(gè)晶振周期的高電平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能無效。DISRTO默認(rèn)狀態(tài)下,

8、復(fù)位高電平有效。ALE/(30引腳):地址鎖存控制信號(ALE)是訪問外部程序存儲器時(shí),鎖存低8位地址的輸出脈沖。在Flash編程時(shí),此引腳()也用作編程輸入脈沖。(29引腳):外部程序存儲器選通信號()是外部程序存儲器選通信號。當(dāng)AT89C51RC從外部程序存儲器執(zhí)行外部代碼時(shí),在每個(gè)機(jī)器周期被激活兩次,而訪問外部數(shù)據(jù)存儲器時(shí),將不被激活。/VPP(31引腳):訪問外部程序存儲器控制信號。為使能從0000H到FFFFH的外部程序存儲器讀取指令,必須接GND。注意加密方式1時(shí),將內(nèi)部鎖定位RESET。為了執(zhí)行內(nèi)部程序指令,應(yīng)該接VCC。在Flash編程期間,也接收12伏VPP電壓。XTAL1(

9、19引腳):振蕩器反相放大器和內(nèi)部時(shí)鐘發(fā)生電路的輸入端。XTAL2(18引腳):振蕩器反相放大器的輸入端。實(shí)現(xiàn)拔河的電路原理圖如下所示:STC89C52芯片:STC公司生產(chǎn)的一種低功耗、高性能CMOS8位微控制器,具有 8K 在系統(tǒng)可編程Flash存儲器。STC89C52使用經(jīng)典的MCS-51內(nèi)核,但做了很多的改進(jìn)使得芯片具有傳統(tǒng)51單片機(jī)不具備的功能。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng)可編程Flash,使得STC89C52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。 具有以下標(biāo)準(zhǔn)功能: 8k字節(jié)Flash,512字節(jié)RAM, 32 位I/O 口線,看門狗定時(shí)器,內(nèi)置4KB

10、 EEPROM,MAX810復(fù)位電路,3個(gè)16 位定時(shí)器/計(jì)數(shù)器,4個(gè)外部中斷,一個(gè)7向量4級中斷結(jié)構(gòu)(兼容傳統(tǒng)51的5向量2級中斷結(jié)構(gòu)),全雙工串行口。另外 STC89C52 可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU 停止工作,允許RAM、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。最高運(yùn)作頻率35MHz,6T/12T可選。HD74LS244P芯片:邏輯功能:八緩沖/線驅(qū)動(dòng);附加功能:三態(tài)輸出;傳播延遲:18ns;電源電壓:4.75V5.25V;工作溫度:-2075;邏

11、輯系列:74LS;封裝:PDIP-20CH340G芯片:全速USB 設(shè)備接口,兼容USB V2.0,外圍元器件只需要晶體和電容;仿真標(biāo)準(zhǔn)串口,用于升級原串口外圍設(shè)備,或者通過USB 增加額外串口;計(jì)算機(jī)端Windows 操作系統(tǒng)下的串口應(yīng)用。MAX232芯片:驅(qū)動(dòng)芯片類型: 線路驅(qū)動(dòng)器/接收器;接口: RS232,V.28/V.24;電源電壓范圍: 4.5V-5.5V;封裝類型: 雙列直插;工作溫度范圍: -40°C +85°C;封裝類型: DIP;器件標(biāo)號: 232;接口類型: RS-232;電源電壓最大: 5.5V3. 軟件功能模塊圖實(shí)現(xiàn)電子拔河器的功能,該游戲的實(shí)現(xiàn)可

12、以分為5個(gè)主要模塊,該軟件功能模塊圖如下:主程序模塊:實(shí)現(xiàn)拔河過程的主要模塊。按鍵檢測模塊:用來檢測按鍵數(shù)并記錄,以此決定那只亮的LED二極管的左右移動(dòng);以及判斷該局的輸贏者;在游戲初始階段選擇倒計(jì)時(shí)時(shí)間。LED發(fā)光二極管移動(dòng)模塊:根據(jù)A、B按鍵次數(shù)來決定相應(yīng)LED燈的亮,用來模擬拔河過程中繩子標(biāo)志的左右移動(dòng)。數(shù)碼管顯示模塊:根據(jù)A、B按鍵次數(shù)。顯示相應(yīng)A、B的按鍵次數(shù);顯示每局輸贏者;顯示最終比分。定時(shí)器中斷倒計(jì)時(shí)模塊:根據(jù)選擇,當(dāng)檢測到有鍵按下(游戲開始)就開始倒計(jì)時(shí)。若游戲在一定時(shí)間內(nèi)不能結(jié)束(到達(dá)邊界)便終止游戲,并顯示A、B按鍵數(shù)。主程序初始化模塊:在每一局結(jié)束后,初始化程序然后開始

13、新的一局。直到分出勝負(fù)。主程序模塊按鍵檢測模塊LED發(fā)光二極管移動(dòng)模塊數(shù)碼管顯示模塊定時(shí)器中斷倒計(jì)時(shí)模塊檢測按鍵并判斷、哪個(gè)按鍵按下記錄按下鍵位的按鍵數(shù)比較A、B按鍵次數(shù)大小并左右移動(dòng)模擬拔河顯示每局A、B按鍵次數(shù)及勝利一方顯示最終比分及勝利者倒計(jì)時(shí),若不能在一定時(shí)間內(nèi)分出勝負(fù),便終止比賽主程序初始化模塊每局結(jié)束后初始化主程序,直到分出勝負(fù)蜂鳴器模塊每局結(jié)束后發(fā)出滴滴聲,提醒比賽結(jié)束4. 程序流程圖根據(jù)本實(shí)驗(yàn)要求所繪程序流程圖如下:否是否開始游戲初始化掃描按鍵i+;m+有 按 鍵按下?初始化定時(shí)器j+;n+很短時(shí)間的倒計(jì)時(shí)哪 個(gè) 鍵按下?i = ji > jLED燈左移LED燈右移不移動(dòng)

14、倒計(jì)時(shí)結(jié)束等待數(shù)碼管顯示結(jié)果是AB否是是否蜂鳴器滴滴i = 0;j = 0比較m、n的值是否到達(dá)邊界?按鍵模塊流程圖:開始游戲短延遲初始化判斷是否有鍵按下判斷是否有鍵按下按鍵數(shù)+判斷是否結(jié)束比賽是否否否是LED燈模塊流程圖:開始游戲記錄A、B按鍵數(shù)初始化m = n ?m > n ?LED左移LED右移比較A、B按鍵數(shù)是否到達(dá)邊界LED維持不變是否否是是否數(shù)碼管模塊圖:開始游戲初始化顯示、按鍵數(shù)本局是否結(jié)束比較、按鍵數(shù)顯示本局勝利者等待顯示最終比分本次比賽是否結(jié)束顯示勝利者否是否是定時(shí)器模塊:開始游戲初始化s選擇倒計(jì)時(shí)時(shí)間s等待倒計(jì)時(shí)是否開始執(zhí)行定時(shí)器中斷倒計(jì)時(shí)是否結(jié)束等待是否提前到達(dá)邊界

15、終止游戲否否是否是是實(shí)現(xiàn)電子拔河的代碼如下:(基于C語言,在Keil 3平臺上編寫)#include <REG52.H>/LED燈和數(shù)碼管unsigned char code LEDcode1=0xfe,0xfd,0xfb,0xf7,0xe7,0xef,0xdf,0xbf,0x7f;unsigned char code LEDcode2=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/設(shè)置變量unsigned long int count;unsigned int t;unsigned int time;unsigned int

16、 inter;unsigned char i;unsigned char j;unsigned char k;unsigned char m;unsigned char n;unsigned char q;unsigned char m1=0;unsigned char n1=0;unsigned char jieshu;/外部中斷鍵位sbit SP1=P32;sbit SP2=P33;sbit SP3=P16;sbit SP4=P17;sbit SPOUT=P14;/延時(shí)子程序void delay1ms(void) unsigned char i,j; for(i=2;i>0;i-)

17、for(j=248;j>0;j-);void delay5ms(void) unsigned char i,j; for(i=10;i>0;i-) for(j=248;j>0;j-);void delay02s(void) unsigned char i,j,k; for(i=20;i>0;i-) for(j=20;j>0;j-) for(k=248;k>0;k-);/定時(shí)中斷1初始化子程序void timer1_init() TMOD |=0x10; TMOD &=0xdf; TH1=0x3c; TL1=0xce; TR1=1;void int_i

18、nit() EA = 1; ET1 = 1;/外部中斷初始化子程序void out_init() EA=1; EX0=1; EX1=1; IT0=1; IT1=1;/主程序初始化void chushihua() SPOUT=0; P0=0xe7; P2=0xff; k=4; t=0; i=0; j=0; m=0; n=0; q=0; dodelay1ms(); while(SP3&&SP4)!=0); if(SP3=0) time=100; else if(SP4=0) time=200; dodelay1ms(); while(INT0&&INT1)!=0);

19、 timer1_init(); int_init(); out_init();/比分判斷void bifen() if(m1=2)&&(n1=0)|(n1=1) while(1) P0=LEDcode2m1; P2=0xbf; delay1ms(); P0=LEDcode2n1; P2=0xef; delay1ms(); P0=0x30; P2=0xfd; delay1ms(); P0=0x3e; P2=0xfe; delay1ms(); if(n1=2)&&(m1=0)|(m1=1) while(1) P0=LEDcode2m1; P2=0xbf; delay

20、1ms(); P0=LEDcode2n1; P2=0xef; delay1ms(); P0=0x5b; P2=0xfd; delay1ms(); P0=0x3e; P2=0xfe; delay1ms(); /數(shù)碼管顯示子程序void xianshi() P0=LEDcode2m/10; P2=0x7f; delay1ms(); P0=LEDcode2m%10; P2=0xbf; delay1ms(); P0=LEDcode2n/10; P2=0xdf; delay1ms(); P0=LEDcode2n%10; P2=0xef; delay1ms();/顯示比賽結(jié)果子程序void winer()

21、 SPOUT=1; delay02s(); SPOUT=0; delay02s(); SPOUT=1; delay02s(); SPOUT=0; for(inter=250;inter>0;inter-) xianshi(); if(m>n) P0=0x30; P2=0xfd; delay1ms(); P0=0x3e; P2=0xfe; delay1ms(); else if(m=n) P0=0x3f; P2=0xf0; else delay1ms();P0=0x5b;P2=0xfd;delay1ms(); P0=0x3e;P2=0xfe;delay1ms(); /主函數(shù)void

22、main(void) chushihua(); while(1) count=15000; i=0; j=0; while(count>0) count-;if(i>j) if(k=0) P0=LEDcode10; q=1; m1+; winer(); bifen(); chushihua(); else k-; P0=LEDcode1k;elseif(i=j) P0=LEDcode1k; else if(k=8) P0=LEDcode18; q=1; n1+; winer(); bifen(); chushihua(); else k+; P0=LEDcode1k; /定時(shí)10s

23、中斷 void interrupt_timer1()interrupt 3 TH1 = 0x3c; TL1 = 0xce; t+; if(t = time)&&(q=0) if(m>n) m1+; else if(m=n)m1+; n1+;elsen1+; winer(); bifen(); chushihua(); /外部中斷,檢測按鍵按下并計(jì)數(shù)int0()interrupt 0 if(INT0=0) delay5ms(); if (INT0=0)&&(q=0) i+; m+; int1()interrupt 2 if(INT1=0)&&(q=0) delay5ms(); if (INT1=0) j+; n+; 5. 實(shí)驗(yàn)分析和調(diào)試本次實(shí)驗(yàn)的主題是電子拔河。雖然簡單,但也并不容易。在實(shí)現(xiàn)電子拔河的效果過程中遇到不少障礙,如下:第一、 對C語言不熟悉,因?yàn)槠綍r(shí)比較

溫馨提示

  • 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

提交評論