基于MSP430的多路搶答器設(shè)計(jì)_第1頁
基于MSP430的多路搶答器設(shè)計(jì)_第2頁
基于MSP430的多路搶答器設(shè)計(jì)_第3頁
基于MSP430的多路搶答器設(shè)計(jì)_第4頁
基于MSP430的多路搶答器設(shè)計(jì)_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、課程設(shè)計(jì)報(bào)告多路搶答器的設(shè)計(jì)November, 2011 學(xué)號: 姓名: 組員 目錄1 概述 1.1 簡介.3 1.2 硬件簡介.32 MSP部分模塊原理圖 2.1 主芯片電路.4 2.2 4*4矩陣鍵盤.4 2.3 復(fù)位電路.5 2.4 數(shù)碼管電路.5 2.5 液晶顯示控制電路.6 2.6 蜂鳴器.73 軟件設(shè)計(jì) 3.1 實(shí)驗(yàn)程序.74 調(diào)試 4.1 程序設(shè)計(jì).13 4.2 調(diào)試中出現(xiàn)的問題.135 實(shí)驗(yàn)總結(jié)與展望.13概述簡介本作品以MSP430為主要模塊、數(shù)碼管和液晶作為顯示模塊。本搶答器主要是通過16個(gè)按鍵開關(guān)來十六路選手的搶答,開始鍵按下,則進(jìn)入到十六個(gè)按鍵的掃描中,同時(shí)顯示倒計(jì)時(shí)時(shí)

2、間.同時(shí)該搶答器還有時(shí)間的遞減、清零、超時(shí)報(bào)警功能;通過液晶來顯示搶答選手的號數(shù)。本作品造價(jià)便宜,硬件比較簡單。關(guān)鍵字:MSP430,搶答器,顯示1.2 硬件簡介MSP430系列單片機(jī)是一種16位超低 功耗、具有)的混合信號處理器(Mixed Signal Processor)。稱之為混合信號處理器,是由于其針對實(shí)際應(yīng)用需求,將多個(gè)不同功能的模塊和集成在一個(gè)芯片上,以提供“單片”解決方案。MSP430單片機(jī)的特點(diǎn):1、 運(yùn)算速度快2、 超低功耗3、 片內(nèi)資源豐富4、 方便高效的開發(fā)環(huán)境2 MSP430部分模塊原理圖2.1 主芯片電路2.2 4*4矩陣鍵盤2.3 復(fù)位電路2.4 數(shù)碼管電路2.5

3、 液晶顯示控制電路2.6 蜂鳴器3 軟件設(shè)計(jì)/數(shù)碼管7位段碼:0-funsigned char scandata16 = 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e;/顯示緩存unsigned char Dispbuf2;/引用外部變量的聲明extern unsigned char key_Pressed; extern unsigned char key_val; extern unsigned char key_Flag;#include <msp430x14x.h&

4、gt;typedef unsigned char uchar;typedef unsigned int uint;/*全局變量*/uchar key_Pressed; /按鍵是否被按下:1-是,0-否uchar key_val; /存放鍵值uchar key_Flag; /按鍵是否已放開:1-是,0-否/設(shè)置鍵盤邏輯鍵值與程序計(jì)算鍵值的映射uchar key_Map = 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16;/*函數(shù)名稱:Init_Keypad功 能:初始化掃描鍵盤的IO端口參 數(shù):無返回值 :無*/void Init_Keypad(void) P1DI

5、R = 0xf0; /P1.0P1.3設(shè)置為輸入狀態(tài), P1.4P1.7設(shè)置為輸出狀態(tài) P1OUT |= 0xf0; / P1.4P1.7輸出高電平 key_Flag = 0; key_Pressed = 0; key_val = 0;/* Check_Key(),檢查按鍵,確認(rèn)鍵值*/*函數(shù)名稱:Check_Key功 能:掃描鍵盤的IO端口,獲得鍵值參 數(shù):無返回值 :無*/void Check_Key(void) uchar row ,col,tmp1,tmp2; tmp1 = 0x80; for(row = 0;row < 4;row+) /行掃描 P1OUT = 0xf0; /P

6、1.4P1.7輸出全1 P1OUT -= tmp1; /P1.4p1.7輸出四位中有一個(gè)為0 tmp1 >>=1; if (P1IN & 0x0f) < 0x0f) /是否P1IN的P1.0P1.3中有一位為0 tmp2 = 0x01; / tmp2用于檢測出那一位為0 for(col = 0;col < 4;col+) / 列檢測 if(P1IN & tmp2) = 0x00) / 是否是該列,等于0為是 key_val = key_Maprow * 4 + col; / 獲取鍵值 return; / 退出循環(huán) tmp2 <<= 1; /

7、tmp2右移1位 /*函數(shù)名稱:delay功 能:延時(shí)約15ms,完成消抖功能參 數(shù):無返回值 :無*/void delay() uint tmp; for(tmp = 12000;tmp > 0;tmp-);void DELAY() double tmp; for(tmp=2800;tmp>0;tmp-);/*函數(shù)名稱:Key_Event功 能:檢測按鍵,并獲取鍵值參 數(shù):無返回值 :無*/void Key_Event(void) uchar tmp; P1OUT &= 0x00; / 設(shè)置P1OUT全為0,等待按鍵輸入 tmp = P1IN; / 獲取 p1IN if

8、(key_Pressed = 0x00)&&(tmp & 0x0f) < 0x0f) /如果有鍵按下 key_Pressed = 1; / 如果有按鍵按下,設(shè)置key_Pressed標(biāo)識 delay(); /消除抖動(dòng) Check_Key(); / 調(diào)用check_Key(),獲取鍵值 else if (key_Pressed = 1)&&(tmp & 0x0f) = 0x0f) /如果按鍵已經(jīng)釋放 key_Pressed = 0; / 清除key_Pressed標(biāo)識 key_Flag = 1; / 設(shè)置key_Flag標(biāo)識 else _NO

9、P(); #include <msp430x14x.h>#include "cry1602.h"typedef unsigned char uchar;typedef unsigned int uint;/*宏定義*/#define DataDir P4DIR#define DataPort P4OUT#define Busy 0x80#define CtrlDir P3DIR#define CLR_RS P3OUT&=BIT0; /RS = P3.0#define SET_RS P3OUT|=BIT0;#define CLR_RW P3OUT&

10、=BIT1;/RW = P3.1#define SET_RW P3OUT|=BIT1;#define CLR_EN P3OUT&=BIT2;/EN = P3.2#define SET_EN P3OUT|=BIT2;/*函數(shù)名稱:DispStr功 能:讓液晶從某個(gè)位置起連續(xù)顯示一個(gè)字符串參 數(shù):x-位置的列坐標(biāo) y-位置的行坐標(biāo) ptr-指向字符串存放位置的指針返回值 :無*/void DispStr(uchar x,uchar y,uchar *ptr) uchar *temp; uchar i,n = 0; temp = ptr; while(*ptr+ != '0'

11、) n+; /計(jì)算字符串有效字符的個(gè)數(shù) for (i=0;i<n;i+) Disp1Char(x+,y,tempi); if (x = 0x0f) x = 0; y = 1; /*函數(shù)名稱:DispNchar功 能:讓液晶從某個(gè)位置起連續(xù)顯示N個(gè)字符參 數(shù):x-位置的列坐標(biāo) y-位置的行坐標(biāo) n-字符個(gè)數(shù) ptr-指向字符存放位置的指針返回值 :無*/void DispNChar(uchar x,uchar y, uchar n,uchar *ptr) uchar i; 4 調(diào)試4.1 程序設(shè)計(jì) 對于MSP430我們并不是很熟悉,在編程時(shí)對于MSP430的各功能模塊、寄存器的使用不了解,

12、要先查找相應(yīng)資料,在編程中遇到了很多問題。4.2 調(diào)試中出現(xiàn)的問題(1) 數(shù)碼管不能正常倒計(jì)時(shí) 在程序調(diào)試時(shí)發(fā)現(xiàn),數(shù)碼管倒計(jì)時(shí)不正常,數(shù)字顯示的位置也經(jīng)常移位,對于這個(gè)問題我們再次檢查了數(shù)據(jù)線的連接,后發(fā)現(xiàn)是數(shù)據(jù)線的輸入端、輸出端的連接錯(cuò)誤。(2) 搶答者號碼顯示不穩(wěn)定 開始選用中斷方式,當(dāng)兩個(gè)選手按鍵時(shí)間間隔很短時(shí),不能正常顯示,后選用查詢方式,可避免此類問題。5 實(shí)驗(yàn)總結(jié)與展望 本次課程設(shè)計(jì)將理論與實(shí)踐有機(jī)地結(jié)合,鍛煉了我們對知識的綜合運(yùn)用以及創(chuàng)新設(shè)計(jì)思維能力。對于課程題目多路搶答器,一開始還沒有頭緒,我們這組都沒參加過電子設(shè)計(jì)大賽的培訓(xùn),不會(huì)運(yùn)用所學(xué)知識進(jìn)行有效設(shè)計(jì),但通過上網(wǎng)查閱各種類

13、似的設(shè)計(jì),查閱芯片的功能模塊,確定基本設(shè)計(jì)方案,又通過仿真驗(yàn)證試驗(yàn)方案的可實(shí)行性。通過這次實(shí)驗(yàn)讓我們認(rèn)識到:1、 設(shè)計(jì)思路是整個(gè)設(shè)計(jì)的靈魂 拿到每個(gè)課題能有一個(gè)非常清晰的設(shè)計(jì)思路是至關(guān)重要的。只有對課題的充分理解,各芯片的熟練掌握,才能為后續(xù)的設(shè)計(jì)工作提供扎實(shí)的基礎(chǔ)。翻閱各種資料,上網(wǎng)查詢填補(bǔ)知識的空缺是必要的。2、 調(diào)試 調(diào)試是個(gè)精細(xì)的工作,在調(diào)試過程中,線路連接錯(cuò)誤、芯片本身損壞、程序的缺陷等問題的排查需要耐心。3、 不足 我們的作品只是大概的展示了一下?lián)尨鹌鞯墓ぷ餍问剑瑢τ诩?xì)節(jié)方面并沒有做得很完善,例如如何為主持人單獨(dú)設(shè)置一個(gè)控制鍵,數(shù)碼管上顯示倒計(jì)時(shí)的位置要更精確等。有時(shí)對于不算很復(fù)雜的程序,我們要研究很久,有時(shí)三節(jié)課下來也沒有頭緒,實(shí)驗(yàn)效率不是很高。4、

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(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

提交評論