第一篇:電子綜合設(shè)計與制作報告封面及任務(wù)要求
電子綜合設(shè)計與制作報告
——基于QuartusⅡ的搶答器的設(shè)計與仿真
姓 名 學 號 專業(yè)班級 電子07-
基于QuartusⅡ的搶答器的設(shè)計與仿真任務(wù)書
一、設(shè)計目的
1、掌握基于QuartusⅡ的數(shù)字系統(tǒng)設(shè)計流程;
2、熟練掌握VHDL文本和原理圖的輸入方式,加深理解自頂向下的編程思想;
3、掌握搶答器電路的工作原理,結(jié)構(gòu)組成和設(shè)計思路。
二、設(shè)計內(nèi)容
設(shè)計一個基于FPGA器件的搶答器。該搶答器具有總控制允許、復位、優(yōu)先搶答判決、倒計時搶答、參賽選手編號顯示等功能;完成搶答器設(shè)計方案的分析和選擇,并在QuartusⅡ軟件中進行電路設(shè)計和仿真等。
三、設(shè)計要求
1、系統(tǒng)組成可分為FPGA內(nèi)部電路和外部電路兩大部分。設(shè)計的主要任務(wù)是FPGA內(nèi)部各個模塊的設(shè)計、仿真和驗證等;
2、可同時進行6路搶答并按動開始鍵后,選手才能搶答,否則禁止搶答;
3、當主持人宣布開始搶答并按動開始鍵后,選手才能進行搶答;主持人具有總允許開始答題和復位按鍵;
4、判決最先搶到答題的選手,該路報警并顯示選手的編號;
5、當主持人宣布開始答題時,選手必須在5S倒計時時間內(nèi)完成搶答動作,答題時間為15S(倒計時顯示,該時間不包括5S搶答時間);當在規(guī)定的時間內(nèi)有選手答題,或在規(guī)定的時間內(nèi)無人搶答,或開始答題后未在規(guī)定的時間內(nèi)完成答題時,倒計時立即停止并顯示搶答時間,同時禁止其他人搶答;
6、倒計時時間和選手編號采用數(shù)碼管顯示;
7、FPGA內(nèi)部包括底層模塊和頂層電路模塊的設(shè)計。底層模塊大致包括:判決模塊、倒計時模塊、報警模塊、譯碼模塊等;
8、FPGA外部端口包括按鍵和數(shù)碼管等。按鍵分為主持人控制的開始和復位按鍵以及選手的搶答按鍵等。
四、設(shè)計步驟
1、設(shè)計步驟根據(jù)每個小組的具體實現(xiàn)過程獨立完成,步驟中應(yīng)對各模塊的功能和實現(xiàn)方法具體說明;
2、設(shè)計步驟中應(yīng)包括系統(tǒng)組成框圖及簡要說明。注意:嚴謹互相抄襲,獨立完成。
五、結(jié)果分析
應(yīng)對所完成的系統(tǒng)的功能、性能、運行情況、設(shè)計方法和方案以及存在的不足等方面客觀地進行說明和分析,并給出真實而準確的評價。注意:嚴謹互相抄襲,獨立完成。
六、設(shè)計心得
應(yīng)具體、客觀,真實地簡述設(shè)計過程中的心得體會。
七、程序清單及仿真截圖
程序和截圖打印即可。將程序匯總在一起,每個設(shè)計模塊應(yīng)用數(shù)字和文字表明模塊的順序和名稱;將截圖集中打印,每個截圖下方用“五號宋體”注明截圖的名稱。
需要打印的截圖包括: 1、5S倒計時模塊仿真波形; 2、15S倒計時模塊仿真波形;
3、搶答判決模塊仿真波形;
4、頂層原理圖。
設(shè)計報告要求
1、任務(wù)書中前6項內(nèi)容均采用山東輕工業(yè)學院課程設(shè)計報告專用紙書寫,字跡工整,作圖規(guī)范;
2、程序代碼由于太長,截圖難以手工繪制,因此程序和截圖按要求打印即可;
3、設(shè)計步驟、結(jié)果分析、設(shè)計心得、編寫程序以及截圖等應(yīng)獨立完成,不可相互抄襲,雷同者按0分處理;
4、設(shè)計報告一律在左側(cè)用兩個訂書針裝訂;裝訂的順序,從上往下依次為:(1)封面;(2)手工抄寫內(nèi)容(設(shè)計任務(wù)中一到六項);(3)程序清單;(4)截圖。
第二篇:電子制作報告封面
北方民族大學
電子制作報告
制作名稱: 小組成員: 院、系、部: 專業(yè): 組長:
北方民族大學教務(wù)處制
第三篇:電子綜合設(shè)計與制作實踐教學大綱
電子綜合設(shè)計與制作實踐教學大綱
一、課程名稱: 電子綜合設(shè)計與制作實踐
The electronic synthesis designs and manufactures practices 課程負責人:何 偉
二、學時與學分:三周, 3學分
三、適用專業(yè): 工科本科電類專業(yè)
四、課程教材:通信工程學院自編.電子綜合設(shè)計課題匯編, 2003年
五、參考教材:丘關(guān)源編.電路分析基礎(chǔ).高等教育出版社.1999年
謝嘉奎編.低頻電子線路.高等教育出版社.1999年 童詩白編.模擬電子技術(shù)基礎(chǔ).高等教育出版社.1999年 閻 石編.數(shù)字電子技術(shù)基礎(chǔ).高等教育出版社.1997年 姚燕南等編.微型計算機原理.西安電子科技大學出版社.1999年 丁元杰編.單片微機原理及運用.機械工業(yè)出版社.2002年
趙曙光等編.可編程邏輯器件的原理、開發(fā)與應(yīng)用.西安電子科技大學出版社.2000年
六、開課單位:通信工程學院
七、面向開課對象:電子工程、通信工程、自動化、計算機應(yīng)用、生物醫(yī)電等專業(yè)本科生
八、課程的性質(zhì)、目的和任務(wù):
電子綜合課程設(shè)計是一門綜合性極強的電子技術(shù)應(yīng)用型設(shè)計課程,是通信學院為電類專業(yè)本科生開設(shè)的一門極具特色的設(shè)計性課程。
電子綜合課程設(shè)計的任務(wù)在于:訓練學生綜合應(yīng)用各種電子技術(shù)知識,掌握一些小型電子系統(tǒng)的設(shè)計方法和制作過程的能力;培養(yǎng)學生們的科學性、系統(tǒng)性、及全面性的設(shè)計素質(zhì);在于開拓學生的設(shè)計思路,增強他們把理論知識與實踐相結(jié)合的能力;還在于訓練學生的小組組織能力和團隊的分工合作精神(電子綜合課程設(shè)計的教學特點是分小組進行,一般每四人一組)。
電子綜合課程設(shè)計的目的是∶使學生在單元電路設(shè)計、系統(tǒng)電路分析、整機聯(lián)調(diào)、計算機輔助設(shè)計和信息處理等方面的能力都有一個質(zhì)的飛躍。培養(yǎng)和提高學生的科研素質(zhì)、工程意識和創(chuàng)新精神。真正實現(xiàn)了理論和實際動手能力相結(jié)合的教學改革要求。通過本課程的實施,要求學生利用計算機進行理論設(shè)計(使用PSPICE、MC3和PROTEL等軟件工具),并進行邏輯分析、仿真分析、交流分析、直流分析和瞬態(tài)分析及印制板圖的熱分析。從而設(shè)計出實用的電路,最后利用單片機開發(fā)裝置、示波器、邏輯分析儀,頻譜分析儀,PAL,GAL和EPGA等(現(xiàn)場可編程邏輯門陳列)編程器,信號源和布線板進行實際制做和調(diào)試,最后提供出樣機和計算機WORD編輯的理論設(shè)計報告。
九、課程的基本要求:
1.教學的學時安排:三周內(nèi)軟件仿真60機時,硬件制作實驗36學時。
2.電子綜合課程設(shè)計對指導教師選題的要求:
基于這門課程的特點要求指導教師能開發(fā)一些綜合性、實用性、趣味性強的小型課題,使大四的本科生能在四周內(nèi)完成其作品,課題類型最好是具有自動控制、數(shù)字顯示、聲光報警、數(shù)據(jù)傳輸、數(shù)據(jù)轉(zhuǎn)換等方面知識的模擬、數(shù)字綜合系統(tǒng)。指導教師最好能先開發(fā)出成品,以便在教學過程中起演示和參考作用,給學生以硬件布局、制作工藝及完成功能等方面的感性認識。同時教師在課題中應(yīng)設(shè)置基本要求、提高要求等針對不同程度學生的教學進度要求。
3.電子綜合課程設(shè)計對學生的要求:
電子綜合課程設(shè)計的特點是訓練學生綜合應(yīng)用各種電子技術(shù)知識的能力,因此要求學生至少應(yīng)有在電路分析基礎(chǔ)、模擬電子、數(shù)字電子技術(shù)、微機原理、匯編語言、接口技術(shù)、c語言、甚至單片機技術(shù)、高頻電子技術(shù)等方面的先修知識。因此最好設(shè)置在三年級或四年級上期的實踐教學環(huán)節(jié)中。
《電子綜合設(shè)計與實踐》是實驗性很強的一門電類專業(yè)必修課程。通過該課程的學習和實驗,使學生掌握如何用CAD軟件對電子線路進行分析和設(shè)計。在實驗過程中,學生根據(jù)自己所選定的題目要求,擬定設(shè)計方案,并在計算機上完成原理分析、電路設(shè)計和模擬仿真。在仿真通過的基礎(chǔ)上,經(jīng)過選定元器件、制板、組裝、焊接、調(diào)試等環(huán)節(jié),最終完成實驗樣機。電子綜合設(shè)計的題目,實際上都是一些小型的電子產(chǎn)品開發(fā),題目都來自指導老師的教學、科研以及生產(chǎn)實踐。通過該實驗,使學生對所學知識融匯貫通,綜合運用;培養(yǎng)他們的科研能力和工程意識,使他們的專業(yè)素質(zhì)產(chǎn)生質(zhì)的飛躍;為他們即將從事的工作打下扎實的基礎(chǔ)。
按學分制的教學安排,電子綜合實驗課程設(shè)計和實作,必須按年級和專業(yè)集中在實踐環(huán)節(jié)的短學期內(nèi)進行(3--4周),學生四人為一設(shè)計組,在老師的指導和學生組長的帶領(lǐng)下,獨立的完成設(shè)計任務(wù)。
九、課程的主要內(nèi)容:
⒈ 電子綜合設(shè)計的具體任務(wù)是: ①學生分組選定課題。
②用PSPICE V5.10和PROTEL等電子線路輔助設(shè)計和分析工具軟件完成課題的低頻、高頻和數(shù)字電路的單元設(shè)計和混合電路設(shè)計。
③用上述軟件進一步完成系統(tǒng)的仿真分析、噪聲分析、極限分析和頻譜分析。(下一步采用Mentor的EDA系統(tǒng)軟件實現(xiàn)TOP—DOWN設(shè)計)。
④用PROTEL印制板工具軟件完成電路的布局、布線工作。
⑤在實驗室用布線板實際完成各單元電路的焊接制作和系統(tǒng)的聯(lián)調(diào)工作。
⑥用微機、單片機開發(fā)系統(tǒng)和邏輯電路實現(xiàn)系統(tǒng)的在線控制,最終實現(xiàn)樣機的脫機運行。
⑦學生提交用WORD編輯的設(shè)計報告和制做的實物。⑧優(yōu)秀學生提交經(jīng)過工藝設(shè)計和造型設(shè)計的實物。⒉ 課程內(nèi)容及實驗項目: 課題一 語音處理系統(tǒng)
基本要求:采用MCS-51單片機開發(fā)系統(tǒng)仿真調(diào)試,實現(xiàn)EPROM分段存儲語音信息,并能分段重放。
2提高要求:在達到基本要求的基礎(chǔ)上,建立語音庫,實現(xiàn)任意組合語音庫數(shù)據(jù)信息的放音功能。
課題二 多路放大與巡回測量電路
基本要求:用多路放大器對若干個不同的被測信號進行放大,然后通過一路A/D轉(zhuǎn)換器和數(shù)字顯示器按照一定順序輪流顯示這若干個被測量,這樣既可以減小測試儀器的功耗和體積,又能降低成本。
課題三 數(shù)字式電容分檔測量
基本要求:數(shù)字式電容分檔測量,被測電容的范圍:100pf~99μf,系統(tǒng)響應(yīng)時間∠1s,測量的相對誤差∠5%,用數(shù)碼管顯示被測的電容值。
課題四 LED漢字點陣顯示系統(tǒng)設(shè)計
基本要求:采用8031單片和LED點陣顯示模塊設(shè)計實現(xiàn)組合點陣信息顯示。提高要求:具有顯示內(nèi)容自動更新的功能以完成對任意存儲的信息內(nèi)容進行完整的顯示。
課題五 數(shù)控直流電源
基本要求:設(shè)計出有一定輸出電壓范圍和功能的數(shù)控電源。課題六 程控測量放大器
基本要求:設(shè)計一可用51單片機分檔控制的程控放大器并顯示設(shè)定放大倍數(shù)。提高要求:在達到基本要求的基礎(chǔ)上,實現(xiàn)可連續(xù)控制的程控測量放大器并最終實現(xiàn)自動增益。
課題七 直流小電機調(diào)速系統(tǒng)
基本要求:采用單片機開發(fā)系統(tǒng)對直流電機調(diào)速系統(tǒng)進行理論設(shè)計和仿真實驗,并采用光電對管實時在線檢測直流電機轉(zhuǎn)速及使用PWM技術(shù)調(diào)節(jié)控制電機的轉(zhuǎn)速。提高要求:用鍵盤設(shè)定初值,用數(shù)碼管顯示電機轉(zhuǎn)速。課題八
樂曲播放電路CPLD實現(xiàn)
基本要求:采用ispDesignExpert EDA開發(fā)系統(tǒng)進行樂曲播放電路的設(shè)計、仿真調(diào)試和實現(xiàn)。ISP芯片采用美國Lattice半導體公司的ispLSI 1032E。要求能進行流暢的樂曲播放。
提高要求:在達到基本要求的基礎(chǔ)上,實現(xiàn)播放的同時用簡譜的形式同步顯示播放的樂曲。
課題九
多功能數(shù)字電子表
基本要求:計時功能:顯示時、分、秒,定鬧功能,秒表功能,倒計時功能。提高要求:增加“語音報時”功能,增加“電子日歷”功能。課題十 數(shù)字溫度計
基本要求:可測量溫度范圍:000.0℃-102.0℃,溫度分辨力:0.4℃
測量相對誤差:≤2%,用數(shù)碼管實時顯示被測量的溫度。
提高要求:實現(xiàn)多個溫度點的實時測量,實現(xiàn)溫度的分檔測量(102℃、51℃、25.5℃)。課題十一
主從式監(jiān)測報警系統(tǒng)
基本要求:以單片機為從機對目標狀態(tài)進行監(jiān)測,將結(jié)果通過標準串行口傳送通信給微機主機,由微機跟蹤顯示目標狀態(tài); 提高要求:從機目標狀態(tài)以某種現(xiàn)場變化為提示,主機則以某種直觀警方式為提示。自選要求;從機目標狀態(tài)以某種傳感器方式為改變 課題十二 用單片機控制的乒乓球游戲機
基本要求:用單片機控制乒乓球的運動、左右拍擊球動作并顯示比分。
提高要求:除基本要求外,用單片機控制乒乓球的運動速度,另行設(shè)計表現(xiàn)擊球動作、得分、失誤的聲響電路。
課題十三 簡易頻率計
技術(shù)指標: 頻率(F)為:1Hz~100MHz,周期(T)為:1S~10E-7S,精度為:10% 課題十四 低頻函數(shù)波形發(fā)生器
技術(shù)指標:波形:三角波、正弦波、方波、鋸齒波,頻率:0.1Hz~1KHz 控制方式:能選擇不同的波形,并且能顯示出當前產(chǎn)生的波形的頻率值。輸入電壓:-5V~+5V 課題十五 汽車轉(zhuǎn)彎燈控制系統(tǒng)
基本要求:應(yīng)用8031單片機強大的布爾處理功能,設(shè)計實現(xiàn)汽車轉(zhuǎn)彎信號燈的自動控制系統(tǒng)。
提高要求:具有亮度可調(diào)的??繜舻土涟l(fā)光功能。課題十六 計數(shù)式數(shù)字頻率計的CPLD實現(xiàn)
基本要求:測量頻率范圍:100Hz~100MHz,測量相對誤差:≤1% 測量信號:方波峰峰值3~5V(與TTL兼容),閘門時間:1s 顯示控制:靜態(tài)8位七段LED顯示,且要求顯示穩(wěn)定,刷新時間與閘門時間相同。
提高要求:測量頻率范圍:100Hz~100MHz和1Hz~1MHz兩檔,相應(yīng)的閘門時間為1s和100s,用一開關(guān)量選擇控制。顯示控制:動態(tài)掃描8位七段LED顯示,且要求顯示無閃爍,內(nèi)容刷新時間與閘門時間相同。
課題十七 89C51單片機與PC機雙向串行通信系統(tǒng)
基本要求:以89C51(MCS-51系列)單片機和PC機為核心設(shè)計并制作一個簡易的雙向串行通信系統(tǒng);以LED數(shù)碼管為顯示元件顯示89C51單片機發(fā)送和接收到的數(shù)據(jù)及出錯信息,用壓電小喇叭為電聲元件發(fā)出聲音報警;設(shè)計一個數(shù)據(jù)輸入小建盤,能輸入0~9十個數(shù)字符號及所必須的命令鍵;設(shè)計一個簡單可靠的89C51單片機和PC機雙向串行通信接口;電源用5V直流電源供電;在保證功能實現(xiàn)的前提下,盡可能降低功耗,提高性價比;編寫出單片機與PC機之間的通信程序;寫出設(shè)計報告及詳細使用說明。提高要求:具有字符串收發(fā)的功能。課題十八 電子福特表的設(shè)計
基本要求: 可測電壓為直流,電壓幅度范圍0----5伏,測量值用3位LED顯示,誤差小于0.01伏,測量值可以通過喇叭自動播報。
提高要求:可測電壓可以是交流信號,電壓幅度可以擴大到20伏。課題十九 單片機雙機通信系統(tǒng)
基本要求:設(shè)計兩個單片機最小系統(tǒng),能實現(xiàn)有線通信,一方為發(fā)射,另一方為接收。
提高要求:兩個單片機最小系統(tǒng)能相互通信,并能實現(xiàn)校驗。
十、先修課程:電路分析基礎(chǔ).低頻電子線路.模擬電子技術(shù)基礎(chǔ).數(shù)字電子技術(shù)基礎(chǔ).微型計算機原理.單片微機原理及運用.可編程邏輯器件的原理、開發(fā)與應(yīng)用。
十一、考核方式:
指導教師對學生的設(shè)計結(jié)果進行實際驗收(按最后完成的功能給定成績),而優(yōu)秀作品則由學院組織專家小組統(tǒng)一評定,十二、學時分配:
⒈ 電子綜合課程設(shè)計的學時安排:
根據(jù)電子綜合課程設(shè)計的課題難度和深度一般要求學生在三周內(nèi)完成其全部設(shè)計和制作,教學和學習都須集中在這三周內(nèi),因此建議該設(shè)計課程安排在實驗場地比較空閑的每學期的前三周或最后三周。
⒉ 電子綜合課程設(shè)計的教學進度安排:(軟件仿真60機時,硬件制作實驗36學時)第一周:第一天:開動員大會指導教師與學生見面布置設(shè)計任務(wù)講解課題內(nèi)容給學生兩到三天時間查資料并制定方案;
第三天:待學生方案確定后開始發(fā)放制作工具和元器件,并對部分學生進行仿真軟件及仿真調(diào)試的培訓;
第四天起:開始軟、硬件的實做,這期間學生必須在指定場地進行設(shè)計,而指導教師則必須在輔導時間內(nèi)前往指導(指導教師每周應(yīng)指導12學時以上)。
第二周:繼續(xù)軟、硬件的實做,這期間學生必須在指定場地進行設(shè)計,而指導教師則必須在輔導時間內(nèi)前往指導(指導教師每周應(yīng)指導12學時以上)。
第三周:繼續(xù)軟、硬件的實做,這期間學生必須在指定場地進行設(shè)計,而指導教師則必須在輔導時間內(nèi)前往指導(指導教師每周應(yīng)指導12學時以上)。
第三周:最后一天:各指導教師對學生的設(shè)計結(jié)果進行驗收(按最后完成的功能給定成績),對優(yōu)秀作品由所有教師統(tǒng)一評定,之后各指導教師應(yīng)督促學生交設(shè)計報告、歸還作品或元器件及工具。
大綱制定者:謝禮瑩 大綱審定者:何 偉 2004年4月
第四篇:電子綜合設(shè)計報告(推薦)
電子綜合設(shè)計報告
課題:數(shù)字定時器
組號:06
組員:蔡德森(20092201)09通信2班
蒙文川(20092205)09通信2班 指導老師:葉文霞
2011年7月30日 西南交通大學
一、方案設(shè)計
1、方案論證與設(shè)計
設(shè)計任務(wù):用CPLD(EMP570T100C5)設(shè)計制作一個數(shù)字定時器電路。論證:本課題主要需要對數(shù)字電路有過學習,同時對編程技術(shù)尤其是數(shù)字電路的編程要求較
高,對電子工藝基礎(chǔ)有足夠的了解,能夠規(guī)范實現(xiàn)測試、電路安裝及焊接,對基本的元器件會使用及測試。能夠遵守實驗室準則,滿足課題老師要求。設(shè)計要求(1)基本功能
? 具有定時時間設(shè)置功能,定時調(diào)整步長有30秒、1分鐘、10分鐘和30分鐘四種,最大定時時間是60分鐘;具有啟動、取消/停止、暫停功能,啟動后以倒計時方式顯示剩余時間,定時結(jié)束提示(聲/光 提示)。
(2)提高部分:計時功能;提供預約功能,可設(shè)置預約時間(60分鐘以內(nèi)),預約時間到則執(zhí)行某項操作;其他擴展功能。
2、系統(tǒng)原理框圖(含工作原理介紹)
工作原理介紹:
功能鍵包括【開始停止】、【暫停繼續(xù)】、【預約取消】;按鍵包括【定時增加】(30s,1min,10min,30min)和【清零】。其中【定時增加】(30s,1min,10min,30min)和【預置清零】由不帶鎖按鍵控制,【開始停止】、【暫停繼續(xù)】和【預約取消】由帶鎖按鍵控制。
·停止時計數(shù)器默認為預置狀態(tài),此時通過四個【定時增加】可以設(shè)置初始時間?!ら_始后,開始減計數(shù);連續(xù)計數(shù)過程中通過【暫停繼續(xù)】暫?;蚶^續(xù)?!び嫈?shù)結(jié)果輸出后先通過譯碼對應(yīng)數(shù)碼管,再輸入數(shù)碼管顯示?!し诸l電路由5.56MHz分出幾個頻率,作用分別如下:
Cp1:提供時間預置時【定時增加】(30s,1min,10min,30min)的高電平響應(yīng)頻率,從而可通過長按【定時增加】快速設(shè)置初始時間; Cp2:1Hz,提供計數(shù)器以每1s計數(shù)一次,從而實現(xiàn)倒計時功能; Cp3:提供四位數(shù)碼管進行動態(tài)掃描,掃描頻率為200Hz左右。
·定時結(jié)束處理包括顯示及后續(xù)任務(wù)。具體為指示燈亮及另一段計數(shù)開始(擴展功能)。
3、主要電路設(shè)計與參數(shù)計算(各單元電路)CPLD內(nèi)部程序電路:
①CPLD內(nèi)部時鐘
②分頻電路
內(nèi)部程序
module divide(cp,vcc3_3,cp0,cp1,cp2,cp3);input cp;output reg cp1,cp2,cp3,cp0;output vcc3_3;parameter N=5500,M=1000,K=5,P=200;integer i=0,j=0,y=0,x=0;assign vcc3_3=1;always@(posedge cp)//cp0:1000HZ begin if(i endmodule ③時間設(shè)置電路 內(nèi)部程序 module set(point,cpset,nrst,t1,t2,t3,t4,t5,q3,q2,q1,q0);input nrst,t1,t2,t3,t4,t5,cpset,point;output[3:0] q3,q2,q1,q0;reg[3:0] q3,q2,q1,q0;always@(negedge cpset)begin if((~nrst)&& point)begin if(t5) {q3,q2,q1,q0}<=16'h0000;//m30 else if(t4) begin if(q3>=4'h7)q3<=4'h0;else q3<=q3+4'h3; end //m10 else if(t3) begin if(q3>=4'h9)q3<=4'h0;else q3<=q3+4'h1; end //m1 else if(t2) begin if(q2>=4'h9)q2<=4'h0;else q2<=q2+4'h1; end //s30 else if(t1) begin if(q1>=4'h3)q1<=4'h0;else q1<=q1+4'h3; end end end endmodule ④非預約下計數(shù) 內(nèi)部程序 module timer_unpoint(minh,minl,sech,secl,alarm,nrst,npause,cp,q3,q2,q1,q0);input nrst,npause,cp,q3,q2,q1,q0;wire [3:0]q3,q2,q1,q0;output[3:0] secl,sech,minl,minh;reg[3:0] secl,sech,minl,minh;output alarm;assign alarm=({minh,minl,sech,secl}==16'h0000)&(nrst==1'b1);always@(posedge cp)begin if(~nrst){minh,minl,sech,secl}={q3,q2,q1,q0};else begin if(~npause){minh,minl,sech,secl}<={minh,minl,sech,secl};else if({minh,minl,sech,secl}==16'h0000){minh,minl,sech,secl}<={minh,minl,sech,secl};else if(secl==4'h0)begin secl<=4'h9;if(sech==4'h0)begin sech<=4'h5;if(minl==4'h0)begin minl<=4'h9;minh<=minh-1'b1; end else minl<=minl-1'b1;end else sech<=sech-1'b1;end else secl<=secl-1'b1;end end endmodule ⑤預約下計數(shù) 內(nèi)部程序 module timer(point,minh,minl,sech,secl,alarm,alarm1,nrst,npause,cp,q7,q6,q5,q4);input point,nrst,npause,cp,q7,q6,q5,q4,alarm;wire [3:0]q7,q6,q5,q4;output[3:0] secl,sech,minl,minh;reg[3:0] secl,sech,minl,minh;output alarm1;assign alarm1=({minh,minl,sech,secl}==16'h0000)&(nrst==1'b1);always@(posedge cp)begin if(~nrst){minh,minl,sech,secl}={q7,q6,q5,q4};else if(alarm && point)begin if(~npause) {minh,minl,sech,secl}<={minh,minl,sech,secl}; else if({minh,minl,sech,secl}==16'h0000) {minh,minl,sech,secl}<={minh,minl,sech,secl}; else if(secl==4'h0)begin secl<=4'h9;if(sech==4'h0)begin sech<=4'h5;if(minl==4'h0)begin minl<=4'h9;minh<=minh-1'b1; end else minl<=minl-1'b1;end else sech<=sech-1'b1;end else secl<=secl-1'b1;end end endmodule ⑥顯示電路 內(nèi)部程序 module display(nrst,alarm,point,minh,minl,sech,secl,pminh,pminl,psech,psecl,cp1,dis1,dis2);input cp1,point,alarm,nrst;wire cp1;input[3:0] minh,minl,sech,secl,pminh,pminl,psech,psecl;output[7:0] dis1;output[3:0] dis2;reg[7:0] dis1;reg[3:0] dis2;integer n=0;function[7:0] dis;input[3:0] data;begin case(data)4'h0:dis=8'h02;4'h1:dis=8'hF2;4'h2:dis=8'h48;4'h3:dis=8'h60;4'h4:dis=8'hB0;4'h5:dis=8'h24;4'h6:dis=8'h04;4'h7:dis=8'h72;4'h8:dis=8'h00;4'h9:dis=8'h20;endcase end endfunction always @(posedge cp1)begin if(~point)begin if(n==3)n=0;else n=n+1;case(n)0:begin dis2<=4'h8;dis1=dis(minh);end 1:begin dis2<=4'h4;dis1=dis(minl);end 2:begin dis2<=4'h2;dis1=dis(sech);end 3:begin dis2<=4'h1;dis1=dis(secl);end endcase end else if((point&&alarm)||(point&&~nrst))begin if(n==3)n=0;else n=n+1;case(n)0:begin dis2<=4'h8;dis1=dis(pminh);end 1:begin dis2<=4'h4;dis1=dis(pminl);end 2:begin dis2<=4'h2;dis1=dis(psech);end 3:begin dis2<=4'h1;dis1=dis(psecl);end endcase end else begin if(n==3)n=0;else n=n+1;case(n)0:begin dis2<=4'h8;dis1=dis(minh);end 1:begin dis2<=4'h4;dis1=dis(minl);end 2:begin dis2<=4'h2;dis1=dis(sech);end 3:begin dis2<=4'h1;dis1=dis(secl);end endcase end end endmodule 4、總體電路圖 限流電阻:Rs=1KΩ。發(fā)光二極管:綠,10mA。 數(shù)碼管使用四位七段數(shù)碼管(共陽)。 二、測試步驟 設(shè)計階段: 數(shù)碼管引腳位、段測試。測試4位數(shù)碼管選定位、段的引腳及所需的高低電平; 各單元電路仿真及下載測試。編程結(jié)束后下載測試單元電路功能,修改,完善; 功能模塊組合測試。組合單元電路成為功能模塊,下載后測試,修改,完善; 總功能測試。整合各功能模塊,測試功能,修改,完善。 要點: 1、注意分配引腳,分清數(shù)據(jù)的低位和高位。 2、穩(wěn)扎穩(wěn)打,化整為零,分部測試,及時記錄。 難點:要求在對整體思路把握明確下測試,避免出現(xiàn)模塊之間不相容、相似模塊混淆的的情況。焊接階段: 測試開關(guān)引腳。首先用萬用表測出按下開關(guān)前后哪幾個引腳是相連的,初步標記;其次需要將開關(guān)放置于面包板上,將發(fā)光二極管連入電路,看開關(guān)是否能點亮和熄滅二極管,并記下開關(guān)的各引腳。 測試各焊點是否短接、虛焊。用萬用表調(diào)制電阻擋,測各接地點、接3.3V電源點是否相連,并且測兩相鄰焊點是否短接。 要點: 1.、實驗所用開關(guān)的兩端分別接電源和地,中間引腳接芯片IO口 2.、二極管的單向?qū)щ娦砸约翱紤]限流電阻 難點:保證發(fā)光二極管在測試過程中盡量不燒壞。 三、測試數(shù)據(jù)及實驗結(jié)果 設(shè)計階段 數(shù)碼管引腳位段測試結(jié)果: 供高電平不大于3.3v 整合后的模塊測試結(jié)果 取消預約時 ①停止且暫停,測試【定時增加】四鍵有效。結(jié)果:可置數(shù); ②開始且繼續(xù),數(shù)碼管顯示倒計時,時間到指示燈亮。結(jié)果:可正常計時(倒); ③開始且繼續(xù),之后暫停,再繼續(xù)。結(jié)果:計時中可暫停(恢復); ④停止且繼續(xù)。結(jié)果:計時可停止。開啟預約時 重復①-④步。結(jié)果:③步中不可暫停,預約功能實現(xiàn),且預約時不可暫停。焊接階段 限流電阻Rs>5/0.01x1000Ω=500Ω,選1k; 開關(guān)引腳測試:略。EPM570引腳圖: 四、結(jié)論 1、本方案特點及存在的問題 特點:可通過長按【定時增加】鍵快速設(shè)置時間;實現(xiàn)了提高部分中的預約功能(分段定時)。缺陷:【定時增加】鍵可能會出現(xiàn)不靈敏的狀況;冒號有時顯示不完全。 2、功能擴展方案 I、預約(已實現(xiàn)):通過分段定時實現(xiàn),及一段計數(shù)結(jié)束后開始另一段計數(shù)。 方案: 一個計數(shù)器工作結(jié)束后提示另一個計數(shù)器開始工作。用【預約/取消預約】來控制是否選擇此功能,同時控制內(nèi)部電路的工作。 設(shè)計問題解決: 顯示電路囊括預約開始前和開始后的計數(shù),需要多個控制其控制其輸出。II、計時功能(未實現(xiàn)):由零開始加計時,停止后顯示經(jīng)過時間; 方案: 通過一個加法計數(shù)器實現(xiàn)計時功能(因與基本功能有所重復,未設(shè)計); 設(shè)計過程中可能遇到的問題: 需要通過另設(shè)按鍵選擇定時或計時功能;基本功能鍵的共享實現(xiàn)。III、計時結(jié)束顯示流水燈(未實現(xiàn)) 方案: 通過在顯示模塊,由計數(shù)器通知是否結(jié)束計時,若是,在數(shù)碼管顯示流水燈; 設(shè)計過程中可能遇到的問題: 流水燈的頻率控制;需要另外編譯和測試流水燈譯碼電路。 五、【數(shù)字定時器】使用說明 基本功能鍵 【開始停止】 開始(按下):由設(shè)置的時間開始倒計時; 停止(彈起):停止計時,回到開始前設(shè)置的時間;可設(shè)置新初始時間 【暫停繼續(xù)】 暫停(彈起):暫停計時;預約功能下二段計時暫停無效; 繼續(xù)(按下):繼續(xù)計時; 擴展功能鍵 【預約取消】 預約(按下):開啟預約功能,同時可設(shè)置第二段計時; 取消(彈起):關(guān)閉預約功能,同時可設(shè)置第一段計時初始時間; 按鍵【定時增加】加30秒鐘:初始時間加30秒。超過60秒不進位,十秒位置零; 【定時增加】加1分鐘:初始時間加1分鐘。超過10分不進位,一分位置零; 【定時增加】加10分鐘:初始時間加10分。超過100分不進位,十分位置零; 【定時增加】加30分鐘:初始時間加30分。超過100分不進位,十分位置零; 以上四鍵可通過長按實現(xiàn)連續(xù)加時; 【清零】在停止狀態(tài)下可將預置的時間清零;開始狀態(tài)下無效。 六、實物圖(電路) 電子綜合設(shè)計 紅外傳輸設(shè)計 指導老師 : 紅外傳輸設(shè)計總結(jié)報告 一.系統(tǒng)功能描述 1.1實現(xiàn)的基本功能 原設(shè)計主要研究并設(shè)計一個基于單片機的紅外傳輸系統(tǒng),并實現(xiàn)對八路開關(guān)的控制??刂葡到y(tǒng)主要是由51和52系列單片機、紅外發(fā)射電路、紅外接收電路、等部分組成,單片機編碼發(fā)射遙控信號經(jīng)紅外接收處理傳送給單片機,單片機根據(jù)不同的信息碼控制八路LED發(fā)光二極管各個狀態(tài),并完成相應(yīng)的狀態(tài)指示 修改后設(shè)計有電腦軟件設(shè)置發(fā)送字符,紅外發(fā)送接收后顯示在LCD屏幕上。 1.2系統(tǒng)的工作原理 紅外通信是利用 950nm近紅外波段的紅外線作為傳遞信息的媒體, 即通信信道。發(fā)送端采用脈時調(diào)制(PPM)方式, 將二進制數(shù)字信號調(diào)制成某一頻率的脈沖序列, 并驅(qū)動紅外發(fā)射管以光脈沖的形式發(fā)送出去, 接收端將收到的光脈沖轉(zhuǎn)換成電信號, 再經(jīng)過放大、濾波處理后送給解調(diào)電路進行解調(diào), 還原為二進制數(shù)字信號后輸出。換句話說, 紅外通信的實質(zhì)就是對二進制數(shù)字信號進行調(diào)制和解調(diào), 以便利用紅外進行傳輸。 1.3系統(tǒng)組成 原設(shè)計系統(tǒng)硬件由以下幾部分組成:鍵盤采用矩陣鍵盤,4×4矩陣鍵盤中P1.0-P1.3為采集數(shù)據(jù)入口,P1.4-P1.7采集數(shù)據(jù)出口,紅外數(shù)據(jù)發(fā)射電路,紅外接收電路,繼電器電路。 軟件部分包括AT89S52單片機,STC89C52單片機 修改后設(shè)計硬件包括發(fā)射電路,接收電路,LCD 二.實際各部分電路的電路圖和設(shè)計方案 2.1硬件電路 2.1.1 AT89S52單片機介紹 原設(shè)計采用了AT89C2051,它是由ATMEL公司推出的一種小型單片機。其主要特點為采用Flash存貯器技術(shù),降低了制造成本,其軟件、硬件與MCS-51完全兼容,其程序的電可擦寫特性,使得開發(fā)與試驗比較容易。但此芯片需要獨特的下載方法,不便使用,故本設(shè)計換為AT89S52。 AT89S52 是一種低功耗、高性能CMOS8位微控制器,具有 8K 在系統(tǒng)可編程Flash 存儲器。使用Atmel 公司高密度非易失性存儲器技術(shù)制造,與工業(yè)80C51 產(chǎn)品指令和引腳完 全兼容。片上Flash允許程序存儲器在系統(tǒng)可編程,亦適于 常規(guī)編程器。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng) 可編程Flash,使得AT89S52為眾多嵌入式控制應(yīng)用系統(tǒng)提 供高靈活、超有效的解決方案。AT89S52具有以下標準功能: 8k字節(jié)Flash,256字節(jié)RAM,32 位I/O 口線,看門狗定時器,2個數(shù)據(jù)指針,三個16 位 定時器/計數(shù)器,一個6向量2級中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時鐘電路。另外,AT89S52 可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU 停止工作,允許RAM、定時器/計數(shù)器、串口、中斷繼續(xù)工 作。掉電保護方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機一切工作停止,直到下一個中斷或硬件復位為止。 2.1.2 STC89C52RC單片機介紹 STC89C52RC系列單片機是有超強抗干擾、高速、低功耗的單片機,指令代碼完全兼容傳統(tǒng)8051單片機,12時鐘機器周期和6時鐘機器周期可任意選擇,最新的D版本內(nèi)部集成MAX810專用復位電路。 2.1.3 時鐘電路及RC復位電路 STC89C52RC芯片內(nèi)部有一高增益反相放大器,用于構(gòu)成振蕩器.反相放大器的輸入端為XTAL1,輸出端為XTAL2。在XTAL1、XTAL2(第19、18引腳)兩端跨接一個石英晶體振蕩器,和兩個電容就構(gòu)成了穩(wěn)定自激諧振電路。晶振頻率為11.0592MHz。C12,C13是兩個瓷片電容,與晶振Y2構(gòu)成了自激諧振電路。其電容的作用主要是對頻率進行微調(diào),一般取30-45PF左右。使用該電路可產(chǎn)生穩(wěn)定的11.0592MHZ頻率,受外界的環(huán)境的干擾影響非常小。其接法如圖3-2所示: 圖2-2 晶振電路 圖2-3復位電路圖 2.2 單片機紅外發(fā)射器的電路設(shè)計 原設(shè)計 2.2.1 矩陣鍵盤電路(1)4×4矩陣鍵盤的工作原理: 矩陣鍵盤又稱為行列式鍵盤,它是用4條I/O線作為行線,4條I/O線作為列線組成的鍵盤。在行線和列線的每一個交叉點上,設(shè)置一個按鍵。這樣鍵盤中按鍵的個數(shù)是4×4個。這種行列式鍵盤結(jié)構(gòu)能夠有效地提高單片機系統(tǒng)中I/O口的利用率。行線接P1.4-P1.7,列線接P1.0-P1.3,如圖2-4所示。 圖2-4 矩陣鍵盤電路圖 (2)按鍵功能說明: 設(shè)備1-3是用電器件的選擇按鍵,按下時則相應(yīng)的用電器件被選中,如果長按下超過5秒鐘,則會關(guān)斷對應(yīng)的用電器件;S1-12是用電器件的功能選擇按鍵;OFF是LED指示燈和所有用電器件的總關(guān)斷按鍵,OFF按鍵按下時會使LED指示滅二達到節(jié)能的目的,如果長按超過5秒鐘,則會關(guān)掉所有的用電器件。修改后設(shè)計采用電腦發(fā)送字符。 2.2.2 紅外發(fā)射電路 (1)紅外線遙控制系統(tǒng)的原理: 將指令脈沖編碼信號調(diào)制在載波振蕩器產(chǎn)生的載波上(也稱脈碼調(diào)制),然后用這脈碼調(diào)制信號去驅(qū)動紅外發(fā)光二極管,以發(fā)出經(jīng)過調(diào)制的紅外光波。 (2)紅外編碼原理: 通常,紅外遙控器將遙控信號(二進制脈沖碼)調(diào)制在38KHz的載波上,經(jīng)緩沖放大后送至紅外發(fā)光二極管,轉(zhuǎn)化為紅外信號發(fā)射出去。二進制脈沖碼的形式有多種,其中最為常用的是PWM碼(脈沖寬度調(diào)制碼)和PPM碼(脈沖位置調(diào)制碼)。本課題是以PPM碼(脈沖位置調(diào)制碼及遙控編碼中的NEC碼)對紅外數(shù)據(jù)的發(fā)送進行論證。如圖2-5示 圖2-5 指令脈沖圖 編碼脈沖信號由引導碼、系統(tǒng)碼、系統(tǒng)反碼、功能碼、功能反碼等信號組成。引導碼也叫起始碼,由寬度為9ms的高電平和寬度為4.5ms的低電平組成,用來標志遙控編碼脈沖信號的開始。如圖2-6所示 圖2-6 信號引導碼圖 脈沖位置表示的“0”和“1”組成的32位二進制碼前16位控制指令,控制不同的紅外遙控設(shè)備。而不同的紅外家用電器又有不同的脈沖調(diào)控方式,后16位分別是8位的功能碼和8位的功能反碼。串行數(shù)據(jù)碼時序圖如2-7所示 圖2-7 串行數(shù)據(jù)碼時序圖 將要發(fā)送的指令脈沖編碼信號調(diào)制在38KHz的載波上,可以增加信號的抗干擾能力,提高信號傳輸效率。 (3)紅外數(shù)據(jù)發(fā)射電路的設(shè)計: 在紅外數(shù)據(jù)發(fā)射過程中,由于發(fā)送信號時的最大平均電流需幾十mA,所以需要三極管放大后去驅(qū)動紅外光發(fā)射二極管。軟件編程將數(shù)據(jù)從P30將數(shù)據(jù)輸出。T0定時產(chǎn)生38KHz載波信號,與門采用了74LS08。紅外數(shù)據(jù)射發(fā)射電路圖如2-8所示。 圖2-8 紅外數(shù)據(jù)發(fā)射電路 2.3 單片機紅外接收器的電路設(shè)計 2.3.1 紅外接收電路 LT0038是用于紅外遙控接收的小型一體化接收頭,集成紅外線的接收、放大、解調(diào),不需要任何外接元件,就能完成從紅外線接收到輸出與TTL電平信號兼容的所有工作,而體積和普通的塑封三極管大小一樣,它適合于各種紅外線遙控和紅外線數(shù)據(jù)傳輸,中心頻率38.0kHz。紅外接收電路連接圖如圖2-9所示。 圖2-9紅外接收電路圖 原設(shè)計采用八路LED顯示 2.3.2八路LED開關(guān)電路 八路開關(guān)電路的實現(xiàn)是本次設(shè)計的重點,通過八路開關(guān)的功能演示來體現(xiàn)本次多功能紅外遙控器的設(shè)計思想,其電路圖2-10所示。 圖2-10 八路LED開關(guān)電路 修改后采用LCD屏幕顯示發(fā)射的字符電路如圖2-11 圖2-11 接收及顯示電路 三.實際各部分電路的調(diào)試過程 遇到的問題及解決方案 原設(shè)計首先對矩陣鍵盤進行了測試,發(fā)現(xiàn)出現(xiàn)了短路,及按鍵損壞,下載程序后測量晶振正常起振頻率為11.0592正弦波,按下按鍵測量發(fā)射腳P30為38K正常,P37腳發(fā)射波形持續(xù)時間不對,對程序中的時間進行調(diào)整,仍得不到正確波形,檢查后發(fā)現(xiàn)線性關(guān)系錯誤,修改后得到了正確的波形,緊接著測量與門輸出正確為38K和發(fā)射波形相乘結(jié)果。 接收電路經(jīng)測量復位電路并聯(lián)電容出現(xiàn)了短路,修改后得到了正確的結(jié)果。 四.測試結(jié)果 原設(shè)計實物圖 修改后設(shè)計實物圖 原設(shè)計雖未在硬件上實現(xiàn)但得到了正確的仿真結(jié)果如下 五.成功經(jīng)驗和失敗原因:收獲和不足 初次設(shè)計發(fā)送采用了AT89C51,此單片機是精簡的AT89C51,但程序下載較困難,需要特殊下載電路,因此耽誤了設(shè)計的進度。修改后設(shè)計發(fā)送采用較常用的AT89S系列,晶振為24M,采用電腦做為發(fā)射信號源消除了鍵盤發(fā)射的復雜性,但在顯示上采用了LCD12864液晶屏使設(shè)計更加有意義。在這次設(shè)計中因為中途更換了題目了解了很多種芯片包括AT89C2051 AT89S52 STC89C52以及矩陣鍵盤、紅外發(fā)射管、紅外一體化接收頭、LCD等的構(gòu)造原理及使用方法。此次設(shè)計起初因為芯片選擇出現(xiàn)問題,程序無法下載,之后因為元器件放置不當而損壞以及程序錯誤得不到理想波形,經(jīng)過查詢資料請教老師并對電路進行各級排查,在各測試點檢測波形得到了正確的發(fā)射碼字。 通過本次設(shè)計對單片機有了更深的了解,鍛煉了編程能力以及硬件檢錯能力,加強了我們動手、思考和解決問題的能力,出現(xiàn)差錯的隨機應(yīng)變能力,和與人合作的能力,今后的制作應(yīng)該會更加更輕松。在整個設(shè)計過程中,我們通過這個方案包括設(shè)計了一套電路原理和PCB連接圖,和芯片上的選擇。由于粗心出現(xiàn)了很多基礎(chǔ)性錯誤,也因此耗費了很多時間。做課程設(shè)計同時也是對課本知識的鞏固和加強,由于課本上的知識太多,平時課間的學習并不能很好的理解和運用各個元件的功能,而且考試內(nèi)容有限,所以在這次課程設(shè)計過程中,我們了解了很多元件的功能,并且對于其在電路中的使用有了更多的認識。在制作PCB時,發(fā)現(xiàn)細心耐心,恒心一定要有才能做好事情,首先是線的布局上既要美觀又要實用和走線簡單,兼顧到方方面面去考慮是很需要的,否則只是一紙空話。其次我們的工作是一個團隊的工作,團隊需要個人,個人也離不開團隊,必須發(fā)揚團結(jié)協(xié)作的精神。通過這次課程設(shè)計使我懂得了理論與實際相結(jié)合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,才能提高自己的實際動手能力和獨立思考的能力。設(shè)計的過程可以說是困難重重,過程中發(fā)現(xiàn)了自己很多的不足之處,對以前所學過的知識理解得不夠深刻,掌握得不夠牢固遇到的很多專業(yè)知識問題,最后在老師的專業(yè)指導下,終于迎刃而解。對給過我?guī)椭乃型瑢W和各位指導老師再次表示忠心的感謝! 1、《單片機原理及接口技術(shù)》[M],高等教育出版社 2、《C語言控制與應(yīng)用》[M],清華大學出版社 3、《高頻電子線路》[M],高等教育出版社 4、《實用聲光及無線電遙控電路300例》[M],中國電力出版社出版 5、《單片機典型模塊設(shè)計實例導航》[M],人民郵電出版社 附錄 鍵盤及發(fā)送程序 #include static bit OP;//紅外發(fā)射管的亮滅 static unsigned int count;//延時計數(shù)器 static volatile unsigned int endcount;//終止延時計數(shù) char iraddr1;//十六位地址的第一個字 節(jié) char iraddr2;//十六位地址的第二個字節(jié) typedef unsigned char uchar; unsigned char datau,flagu=0; uchar kbscan(void); void SendIRdata(char p_irdata);void delay();void delays(unsigned char c);uchar kbscan(void){ uchar sccode,recode;P1=0x0f;//置所有行為低電平,列掃描,列線輸入 if((P1&0xf0)!=0xf0)//判斷是否有有鍵按下,有往下執(zhí)行 { delay();//延時去抖動(10ms)if((P1&0xf0)!=0xf0)//再次判斷列中是否是干擾信號,不是則向下執(zhí)行 { sccode=0xFE;//逐行掃描初值(即先掃描第1行)while((sccode&0x10)!=0)//行掃描完成時停止while程序 { P1=sccode;//輸出行掃描碼 if((P1&0xf0)!=0xf0)//本行有鍵按下 { recode=(P1&0xf0)|0x0f;//列 return(sccode&recode);//返回行和列 } else //所掃描的行沒有鍵按下,則掃描下一行 { //sccode=(~sccode);//sccode=(sccode<<1);//sccode=(~sccode);//sccode=(~((~sccode)<<1));//行掃描碼左移一位 sccode=(sccode<<1)|0x01;} } } } else { return 0;//無鍵按下,返回0 } } void main(void){ volatile unsigned char key;volatile unsigned char mod;count = 0;OP = 0;P3_7 = 0;P3_0 = 1;P3_1 = 1;P3_3 = 1;EA = 1;//允許CPU中斷 TMOD = 0x21;//設(shè)定時器0和1為16位模式1 ET0 = 1;//定時器0中斷允許 TH0 = 0xFF;TL0 = 0xE8;//設(shè)定時值0為38K 也就是每隔26us中斷一次 TR0 = 1;//開始計數(shù) SCON=0X50;TH1 = 230;TL1 = 230;TR1=1;IE|=0X90; iraddr1=0xff;iraddr2=0xff; init_lcd();qingping(); do{ key=kbscan();delays(2); if(key==0xed){ mod=1;} else if(key==0xdd){ mod=0;} if(mod==0){ if(flagu){ SendIRdata(datau); flagu=0;} write_com(0x80);write_data(0x43); } else { switch(key){ case 0xed: SendIRdata(0x00);//0 break;case 0xDD: SendIRdata(0x01);//1 break;case 0xBD: SendIRdata(0x02);//2 P3_1=~P3_1; break;case 0x7D: SendIRdata(0x03);//3 break;case 0xEB: SendIRdata(0x04);//4 break;case 0xDB: SendIRdata(0x05);//5 break;case 0xBB: SendIRdata(0x06);//6 break;case 0xE7: P3_0=1; break;case 0xD7: P3_1=1; break;case 0xB7: P3_2=1; break;default: break;} } }while(1);} //定時器0中斷處理 void timeint(void)interrupt 1 { TH0=0xFF;TL0=241;//設(shè)定時值為38K 也就是每隔26us中斷一次 count++;P3_3=~P3_3;} void serial()interrupt 4 using 3 { if(RI){ RI=0;datau=SBUF;flagu=1;} } void SendIRdata(unsigned char p_irdata){ char i;volatile unsigned char irdata;//發(fā)送4.5ms的起始碼 endcount=351;count=0;P3_7=1;do{}while(count for(i=0;i<8;i++){ irdata=(0X80>>i);if(p_irdata&irdata){ //先發(fā)送0.56ms的38KHZ紅外波(即編碼中0.56ms的低電平)endcount=123;count=0;P3_7=1;do{}while(count void delay(){ unsigned int i,j;for(i=0;i<26;i++){ for(j=0;j<20;j++){ _nop_();} } } void delays(unsigned char c){ unsigned int i;for(i=0;i #include sfr p0=0x80;sfr p3=0xb0; sbit p10=P1^0; sbit p32=P3^2;sbit p00=P0^0;sbit p01=P0^1;sbit p02=P0^2;sbit p03=P0^3;sbit p04=P0^4;sbit p05=P0^5;sbit p06=P0^6;sbit p07=P0^7; unsigned char led,dm,i,j,k; void ds_9ms(void){ unsigned char j,k;for(j=180;j>0;j--)for(k=50;k>0;k--);} void ds0_56ms(void){ unsigned char i,j;for(i=3;i>0;i--)for(j=184;j>0;j--);} void ds4_5ms(void){ unsigned char i,j;for(i=90;i>0;i--)for(j=50;j>0;j--);} void ds1_68ms(void){ unsigned char i,j;for(i=9;i>0;i--)for(j=184;j>0;j--);} void ds0_1ms(void){ unsigned char i,j;for(i=9;i>0;i--)for(j=10;j>0;j--);} void main(){ IT0=1;EX0=1;EA=1;dm=0;p0=0;p10=1;P2=0xff;while(1){ p10=~p10;ds0_1ms();} } /* void t0(void)interrupt 0 using 2// { unsigned char tt,flag;EA=0;flag=1;for(tt=0;tt<40;tt++){ if(p32==0){ flag=0;break;} ds0_1ms();} while(!p32);if(flag){ for(tt=0;tt<85;tt++){ if(p32==1){ flag=0;break;} ds0_1ms();} } while(p32);if(flag){ for(tt=0;tt<85;tt++){ if(p32==1){ flag=0;break;} ds0_1ms();} } while(!p32);if(flag){ for(tt=0;tt<85;tt++){ if(p32==1){ flag=0;break;} ds0_1ms();} } switch(led) { case 0x00:p00=0;p01=1;p02=1;p03=1;p04=1;p05=1;p06=1;p07=1;break;case 0x01:p00=1;p01=0;p02=1;p03=1;p04=1;p05=1;p06=1;p07=1;break;case 0x02:p00=1;p01=1;p02=0;p03=1;p04=1;p05=1;p06=1;p07=1;break;case 0x03:p00=1;p01=1;p02=1;p03=0;p04=1;p05=1;p06=1;p07=1;break; case 0x04:p00=1;p01=1;p02=1;p03=1;p04=0;p05=1;p06=1;p07=1;break;case 0x05:p00=1;p01=1;p02=1;p03=1;p04=1;p05=0;p06=1;p07=1;break;case 0x06:p00=1;p01=1;p02=1;p03=1;p04=1;p05=1;p06=0;p07=1;break;case 0x07:p00=1;p01=1;p02=1;p03=1;p04=1;p05=1;p06=1;p07=0;break; default:p00=1;p01=1;p02=1;p03=1;p04=1;p05=1;p06=1;p07=1; } } } LCD顯示程序 #include “l(fā)cd.h” { _nop_();_nop_();_nop_();} void write_com(unsigned char com){ unsigned char i;set_sid();for(i=0;i<5;i++){ set_sclk();delaylcd();clr_sclk();delaylcd();} clr_sid();for(i=0;i<3;i++){ set_sclk();delaylcd();clr_sclk();delaylcd();} for(i=0;i<4;i++){ if(com&(128>>i))set_sid();else clr_sid();set_sclk();delaylcd();clr_sclk();delaylcd();} clr_sid();for(i=0;i<4;i++){ set_sclk();delaylcd();clr_sclk();delaylcd();} for(i=4;i<8;i++){ if(com&(128>>i))set_sid();else clr_sid();set_sclk();delaylcd();clr_sclk();delaylcd();} clr_sid();for(i=0;i<4;i++){ set_sclk();delaylcd();clr_sclk();delaylcd();} } void write_data(unsigned char datas){ unsigned char i;set_sid();for(i=0;i<5;i++){ set_sclk();delaylcd();clr_sclk();delaylcd();} clr_sid();set_sclk();delaylcd();clr_sclk();delaylcd(); set_sid();set_sclk();delaylcd();clr_sclk();delaylcd();clr_sid();set_sclk();delaylcd();clr_sclk();delaylcd(); for(i=0;i<4;i++){ if(datas&(128>>i))set_sid();else clr_sid();set_sclk();delaylcd();clr_sclk();delaylcd();} clr_sid();for(i=0;i<4;i++){ set_sclk();delaylcd();clr_sclk();delaylcd();} for(i=4;i<8;i++){ if(datas&(128>>i))set_sid();else clr_sid();set_sclk();delaylcd();clr_sclk();delaylcd();} clr_sid();for(i=0;i<4;i++){ set_sclk();delaylcd();clr_sclk();delaylcd();} } void qingping(){ unsigned char i,j;write_com(0x34);write_com(0x36);for(i=0;i<32;i++){ write_com(0x80|i);write_com(0x80);for(j=0;j<16;j++){ write_data(0x00);} } for(i=0;i<32;i++){ write_com(0x80|i);write_com(0x88);for(j=0;j<16;j++){ write_data(0x00);} } write_com(0x30);} void init_lcd(){ clr_rest();delaylcd();set_rest();set_cs();write_com(0x01);delaylcd();write_com(0x0c);write_com(0x30);write_com(0x38);write_com(0x0e);write_com(0x01);write_com(0x06);write_com(0x0c);delaylcd();}第五篇:電子綜合設(shè)計報告