第一篇:單片機原理及應(yīng)用課程設(shè)計教學(xué)大綱
《單片機原理及應(yīng)用》課程設(shè)計教學(xué)大綱
課程編號:13033070 課程類別:必修課
適用專業(yè):電氣信息類
學(xué)時:10 教研室主任:姜志成大綱執(zhí)筆人:李春華
大綱審批人:付家才
一、課程設(shè)計的性質(zhì)及目的
1.了解并掌握單片機的原理、結(jié)構(gòu)、指令、接口及應(yīng)用。
2.提高綜合運用所學(xué)的理論知識獨立分析和解決問題的能力。3.掌握匯編語言程序設(shè)計和調(diào)試。4.掌握C-51語言的設(shè)計和調(diào)試。
二、課程設(shè)計的要求
1. 根據(jù)設(shè)計要求,畫出硬件接線圖及程序的總體流程圖,然后進行各控制模塊的硬件設(shè)計及軟件設(shè)計。
2.掌握如何應(yīng)用單片機仿真器來開發(fā)應(yīng)用系統(tǒng)及仿真調(diào)試的過程。
三、參考題目
題目一 校園作息時間控制系統(tǒng)
設(shè)計要求:
1.作息時間要求實現(xiàn)對上下課打鈴、教學(xué)樓照明、學(xué)生宿舍燈、校園路燈四個開關(guān)量的精確控制。月時間累計誤差≤1分鐘。
2.能實時顯示時間,并方便定期進行時間校準(zhǔn)。
3.根據(jù)應(yīng)用系統(tǒng)的要求,初步掌握總體結(jié)構(gòu)設(shè)計的方法和構(gòu)思,從中選擇一種最佳設(shè)計方案。
4.根據(jù)應(yīng)用系統(tǒng)結(jié)構(gòu)規(guī)模的要求,掌握單片機外部擴充系統(tǒng)硬件設(shè)計的基本過程。
題目二 交通信號燈控制系統(tǒng)
設(shè)計要求:
1.設(shè)有一個南北(SN)向和東西(WE)向的十字路口,兩方向各有兩組相同交通控制信號燈,每組各有四盞信號燈,分別為直行信號燈(S)、左拐信號燈(L)、紅燈(R)和黃燈(Y),交通控制信號燈布置如圖1所示。
2.根據(jù)交通流量不同,交通信號燈的控制可實現(xiàn)手動、自動兩種控制。平時使用自動控制,高峰區(qū)可使用手動控制。手動控制時,用戶通過鍵盤對交通信號燈進行人工控制;自動控制時,交通信號燈控制規(guī)律用圖2狀態(tài)轉(zhuǎn)換圖來描述。
圖1十字路口交通控制信號燈示意圖
圖2交通控制信號燈控制規(guī)律示意圖
題目三 環(huán)境溫度監(jiān)測系統(tǒng)
設(shè)計要求:
1.可以監(jiān)測8點環(huán)境溫度信號,可以擴充;
2.測量范圍為0.00℃~99.9℃,可以擴充到-55℃~+125℃,精度為±0.5℃; 3.用4位數(shù)碼管進行循環(huán)顯示,其中最高位顯示通道提示符A~H,低3位顯示實際溫度值,每秒切換一個通道進行輪流顯示;
4.可以隨時查看指定通道的溫度值(擴充功能)。
四、教學(xué)參考文件與教學(xué)形式
教學(xué)參考文件: 〔1〕付家才,《單片機控制工程實踐技術(shù)》,化學(xué)工業(yè)出版社,2003年 〔2〕胡漢才,《單片機原理及接口設(shè)計》,清華大學(xué)出版社,2002年 〔3〕康華光,《模擬電子技術(shù)》,高等教育出版社,2004年 教學(xué)形式:根據(jù)課程設(shè)計大綱的要求,采取指導(dǎo)的形式。
五、考核方式及成績評定標(biāo)準(zhǔn)
考核方式采取設(shè)計報告與實際操作,根據(jù)設(shè)計的情況和實際操作效果給出成績,其中設(shè)計報告占60%,日常管理(包括遲到、曠課、衛(wèi)生等)占10%,實際操作占30%。成績采用優(yōu)、良、中、及格和不及格五級分制評定。
六、其他必要的說明
課程設(shè)計教師可根據(jù)專業(yè)特點選做相應(yīng)題目。
第二篇:單片機原理及應(yīng)用課程設(shè)計
智能電子鐘(LCD顯示)
1、設(shè)計內(nèi)容及要求...............................................................................................2 1.1、設(shè)計內(nèi)容..............................................................................................2 1.2、設(shè)計要求..............................................................................................2 1.3、撰寫設(shè)計報告......................................................................................2
2、總體方案設(shè)計...................................................................................................2 2.1、方案圖................................................................................................2 2.2、面板布置圖.........................................................................................2 2.3、方案討論.............................................................................................3 2.4、明晰任務(wù).............................................................................................4
3、電路原理圖......................................................................................................4
4、程序框圖.........................................................................................................5 4.1、顯示子程序流程圖............................................................................5 4.2、實時時鐘芯片 1302 讀/寫數(shù)據(jù)流程圖............................................6
5、編程序................................................................................................................6
6、調(diào)試....................................................................................................................6 6.1、軟件調(diào)試.............................................................................................6 6.2、仿真調(diào)試..............................................................................................7
7、自我感想............................................................................................................7
8、參考書目............................................................................................................8 附錄:C 語言編程源程序.......................................................................................8 1.設(shè)計內(nèi)容及要求 1.1、設(shè)計內(nèi)容:
以AT89C51 單片機為核心,制作一個 LCD 顯示的智能電子鐘。1.2、設(shè)計要求:
(1)計時:秒、分、時、天、周、月、年。(2)閏年自動判別。
(3)五路定時輸出,可任意關(guān)斷(最大可到16路)。(4)時間、月、日交替顯示。(5)自定任意時刻自動開/關(guān)屏
(6)計時精度:誤差≤1秒/月(具有微調(diào)設(shè)置)
(7)鍵盤采用動態(tài)掃描方式查詢。所有的查詢、設(shè)置功能均由功能鍵K1、K2完成 1.3、撰寫設(shè)計報告
單片機課程設(shè)計是以課題或項目設(shè)計方式開展的一門課程,具有較強的綜合性、實踐性,是工科、工程類院?;蚵殬I(yè)類院校電類專業(yè)在校生的必修課,是將單片機原理與應(yīng)用課程的理論知識轉(zhuǎn)變?yōu)閼?yīng)用技術(shù)的重要教學(xué)環(huán)節(jié)。這一環(huán)節(jié)不但能加深對單片機原理的理解,而且還能培養(yǎng)學(xué)生的實踐動手能力,開發(fā)學(xué)生的分析、解決問題的能力。單片機課程設(shè)計環(huán)節(jié)的訓(xùn)練能夠讓學(xué)生知道單片機工程項目的制作過程,使學(xué)生盡早了解單片機系統(tǒng)的開發(fā)過程。
2.總體方案設(shè)計 2.1、方案圖
2.2、面板布置圖
2.3、方案討論
方案一:采用實時時鐘芯片
實時時鐘芯片具備年、月、日、時、分、秒計時功能和多點計時功能,計時數(shù)據(jù)的更新每秒自動進行一次,不需程序干預(yù)。計算機可通過中斷或查詢方式讀取計時數(shù)據(jù)進行顯示,因此計時功能的實現(xiàn)無需占用 CPU 的時間,程序簡單。此外,實時時鐘芯片多數(shù)帶有鋰電池做后備電源,具備永不停止的計時功能;具有可編程方波輸出功能,可用做實時測控系統(tǒng)的采樣信號等;有的實時時鐘芯片內(nèi)部還帶有非易失性 RAM,可用來存放需長期保存但有時也需變更的數(shù)據(jù),由于功能完善,精度高,軟件程序設(shè)計相對簡單,且計時不占用 CPU 時間,因此,在工業(yè)實時測控系統(tǒng)中多采用這一類專用芯片來實現(xiàn)實時時鐘功能。
方案二:軟件控制
利用單片機內(nèi)部的定時/計數(shù)器進行中斷定時,配合軟件延時實現(xiàn)時、分、秒的計時及秒表計時。該方案節(jié)省硬件成本,且能使設(shè)計者對單片機的指令系統(tǒng)能有更深入的了解,從而掌握單片機應(yīng)用技術(shù) MCS-51 匯編語言程序設(shè)計方法,因此,本系統(tǒng)設(shè)計采用此種軟件控制方法來實現(xiàn)計時。而由于 Atmel 公司 的AT89C51 是一種自帶 4KB Flash 存儲器的低電壓、高性能的 CMOS 8 位微處理器。該器件采用 Atmel 高密度非易失存儲器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn) 的MCS-51 指令集和輸出引腳相兼容。AT89C51 將多功能 8 位 CPU 和閃存集成在單個芯片中,是一種高效的微控制器,使用也更方便,壽命更長,可以反復(fù)擦除 1000 次。形成了功能強大、使用靈活和具有較高性能價格比的微控制器。它的功能強大而且也比較容易購買,故本設(shè)計中所選的單片機為 AT89C51 單片機。2.4、明晰任務(wù)
采用 AT89C51 單片機作為系統(tǒng)的控制核心。時鐘數(shù)據(jù)通過市場上流行的時鐘芯片 DS1302 來獲取。DS1302 是 DALLAS 公司推出的涓流充電時鐘芯片,內(nèi)含一個實時時鐘/日歷和 31 字節(jié)靜態(tài) RAM,可以通過串行接口與計算機進行通信,使得管腳數(shù)量減少。實時時鐘/日歷電路能夠計算 2100 年之前的秒、分、時、日、星期、月、年的,具有閏年自動判斷調(diào)整的能力。定時電路能夠?qū)崿F(xiàn)自定任意時刻自動開/關(guān)屏,采用 LCD LM016L 顯示年、月、周、天、時、分、秒。通過按鍵開關(guān)實現(xiàn)微調(diào),確保計時精度:誤差≤1 秒/月。DS1302 時鐘芯片的主要功能特性:
(1)能計算 2100 年之前的年、月、日、星期、時、分、秒的信息;每月的天數(shù)
和閏年的天數(shù)可自動調(diào)整;時鐘可設(shè)置為 24 或 12 小時格式。(2)31B 的 8 位暫存數(shù)據(jù)存儲 RAM。(3)串行 I/O 口方式使得引腳數(shù)量最少。
(4)DS1302 與單片機之間能簡單地采用同步串行的方式進行通信,僅需 3 根線。
(5)寬范圍工作電壓 2.0-5.5V。
(6)工作電流為 2.0A 時,小于 300nA。
(7)功耗很低,保持?jǐn)?shù)據(jù)和時鐘信息時功率小于 1mW。
3.電路原理圖
4.程序框圖
4.1、顯示子程序流程圖
4.2、實時時鐘芯片 1302 讀/寫數(shù)據(jù)流程圖
5.編程序 源程序見附錄部分 6.調(diào)試 6.1、軟件調(diào)試
目前設(shè)計過程中容易造成元件和儀器儀表的損壞,而借助 Keil 和 Proteus進行單片機系統(tǒng)的開發(fā),可以節(jié)省設(shè)計成本,提高設(shè)計速度。Keil 軟件包是一個功能強大的開發(fā)平臺,它包括項目管理器、CX51 編譯器、AX51 宏匯編器、BL51/LX51 連接定位器、RTX51 實時操作系統(tǒng)、Simulator 軟件模擬器及 Monitor51 硬件目標(biāo)調(diào)試器。它是一種集成化程度高的文件管理編譯環(huán)境,主要功能為編譯 C 語言源程序,匯編程序或混合語言源程序,連接和定位目標(biāo)文件和庫,創(chuàng)建 HEX 文件,調(diào)試目標(biāo)程序等。Keil 是目前最好的 51 單片機開
發(fā)工具之一。Keil 支持軟件模擬仿真(Simulator)和用戶目標(biāo)調(diào)試(Monitor51)兩種工作模式。前者不需要任何單片機硬件即可完成用戶程序仿真、調(diào)試,后者利用硬件目標(biāo)板中的監(jiān)控程序可以直接調(diào)試目標(biāo)硬件系統(tǒng)。Proteus 是一個完整的嵌入式系統(tǒng)軟件、硬件設(shè)計仿真平臺,它包括原理圖輸入系統(tǒng) ISIS、帶擴展的 Prospice 混合模型仿真器、動態(tài)元件庫、高級圖形分析模塊和處理器虛擬系統(tǒng)仿真模型 VSM。ISIS 是 Proteus 系統(tǒng)的中心,具有超強的控制原理設(shè)計環(huán)境。ProteusVSM 最重要的特點是能把微處理器軟件作用在處理器上,并和該處理器的任何模擬和數(shù)字元件協(xié)同仿真,仿真執(zhí)行目標(biāo)碼就像在真正的單片機系統(tǒng)上運行一樣,VSM CPU 模型能完整仿真 I/O 接口、中斷、定時器、通用外部設(shè)備口及其他與 CPU 有關(guān)的外部設(shè)備,甚至能仿真多個處理器。6.2、仿真調(diào)試 Proteus 仿真
7.自我感想
經(jīng)歷過這么多天不間斷的課程設(shè)計,我們有挺多感觸的,從最基本上說我們看到了,也意識到了自己的不足,對于不斷克服的各種阻礙也讓我們體會到了課程設(shè)計的意義所在。對于只接觸課本只動筆桿的我們,面臨實際的設(shè)計尺寸,讓我們很是尷尬,都說理論聯(lián)系實際,真正到聯(lián)系的時候才發(fā)現(xiàn)挺困難的,不過正是理論知識的各種補充才讓我們能最終完成任務(wù),然后深深地體會到理論對現(xiàn)實的指導(dǎo)作用。我們現(xiàn)在最缺乏的就是實際工作經(jīng)驗,而理論聯(lián)系實踐并不像我們想象的那么簡單,他需要堅實的理論基礎(chǔ)和實際工作經(jīng)驗。堅實的理論基礎(chǔ)決定了我必須堅持學(xué)習(xí)新的知識新的理論,完善了自己的知識結(jié)構(gòu),才能在以后的實際中輕松面對,才能設(shè)計出更好的更有益于人們生活與工作的機械,才能跟上時代的步伐,不被淘汰。在這個一邊忙著復(fù)習(xí)忙著考試又要準(zhǔn)備課程設(shè)計的日子里,真真正正的體會到了時間的寶貴,有點像高中忙忙碌碌的生活,不過能按時完成課程設(shè)計對我們來說也是一個莫大的安慰。嚴(yán)謹(jǐn)和細(xì)心是做機械設(shè)計的必要態(tài)度,要想做好一件事,就必須一絲不茍、態(tài)度認(rèn)真。俗話說:“失之毫厘,謬之千里?!痹跈C械設(shè)計上尤其應(yīng)該注意。在以后的工作中,你的很小的一個疏忽將會造成一個公司很大的損失,甚至給用戶帶去生命危險,而自己也會為自己的不負(fù)責(zé)任行為付出代價。再者就是設(shè)計中要嚴(yán)謹(jǐn)和細(xì)心,對于機械是不能出差錯的,任何的微小誤差都可能產(chǎn)生不可預(yù)計的后果,當(dāng)然對于我們來說就是設(shè)計中要走一些彎路,而且在這個嚴(yán)重缺少時間又惦記回家問題的我們來說也是一個很嚴(yán)重的后果。不過,困難雖是難免的,但我們有信心就能并且已經(jīng)戰(zhàn)勝了困難,完成了這個無比揪心的課程設(shè)計。因為時間等各種關(guān)系設(shè)計中難免有些不足還請老師助教給予批評和幫助。
8.參考文獻(xiàn)
《MCS-51 系列單片機原理及應(yīng)用》 孫涵芳 主編 《新概念 51 單片機 C 語言教程》 郭天祥 主編 《51 單片機課程設(shè)計》 周向紅 主編 《單片機原理及其應(yīng)用教程》 張元良 主編 附錄:C 語言編程源程序
#include
uint year_data,t;//-----sbit SCLK=P3^5;//DS1302 通訊線定義 sbit DIO=P3^6;sbit RST=P3^7;sbit speak=P0^0;sbit DS=P2^0;//595 通訊線定義 sbit SH_CP=P2^1;sbit ST_CP1=P2^2;sbit ST_CP2=P2^3;sbit ST_CP3=P2^4;sbit ST_CP4=P2^5;sbit ST_CP5=P2^6;sbit ST_CP6=P2^7;sbit ST_CP7=P3^0;sbit ST_CP8=P3^1;sbit OE1=P1^0;sbit OE2=P1^1;sbit OE3=P1^2;sbit OE4=P1^3;sbit OE5=P1^4;sbit OE6=P1^5;sbit OE7=P1^6;sbit OE8=P1^7;sbit K1=P3^2;//按鍵接口定義 sbit K2=P3^3;sbit K3=P3^4;sbit K4=P0^1;sbit K5=P0^2;//-----void write_595(uchar temp)//寫 74HC595 一個字節(jié) { uchar temp_595,i;temp_595=temp;for(i=0;i<8;i++)
{
SH_CP=0;
_nop_();_nop_();_nop_();if(temp_595&0x80){ DS=1;} else { DS=0;} _nop_();_nop_();_nop_();SH_CP=1;temp_595<<=1;} } //--------------void delay(uint z)//Nms 延時 { uint x,y;for(x=z;x>0;x--)for(y=112;y>0;y--);} //-------------void delaynus(uint z)//ums 延時 { uint x,y;for(x=z;x>0;x--)for(y=10;y>0;y--);} //---------------void write(uchar date)//寫入 DS1302 一個字節(jié) { uchar temp,i;RST=1;SCLK=0;temp=date;for(i=0;i<8;i++){ SCLK=0;if(temp&0x01)DIO=1;else DIO=0;SCLK=1;temp>>=1;} } //-----uchar read()//讀出 DS1302 一個字節(jié) { uchar a,temp;RST=1;for(a=8;a>0;a--){ temp>>=1;SCLK=1;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();SCLK=0;if(DIO){ temp=temp|0x80;} else { temp=temp|0x00;} } return(temp);} //---void write_1302(uchar add,uchar dat)//寫 DS1302 數(shù)據(jù) { RST=0;SCLK=0;RST=1;write(add);write(dat);SCLK=1;RST=0;} //----------uchar read_1302(uchar add)// 讀 DS1302 數(shù)據(jù) { uchar temp;RST=0;SCLK=0;RST=1;write(add);temp=read();SCLK=1;RST=0;return(temp);} //------------void display()//顯示子程序 { miao=read_1302(0x81);//讀秒 fen=read_1302(0x83);//讀分
shi=read_1302(0x85)&0x3f;//讀時 date=read_1302(0x87);//讀日 month=read_1302(0x89);//讀月 year=read_1302(0x8d);//讀年 day=read_1302(0x8B);//讀星期 write_595(miao);//顯示秒 ST_CP1=0;ST_CP1=1;ST_CP1=0;delaynus(10);write_595(fen);//顯示分 ST_CP2=0;ST_CP2=1;ST_CP2=0;delaynus(10);write_595(shi);//顯示時 ST_CP3=0;ST_CP3=1;ST_CP3=0;delaynus(10);write_595(date);//顯示日 ST_CP4=0;ST_CP4=1;ST_CP4=0;delaynus(10);write_595(month);//顯示月 讀 ST_CP5=0;ST_CP5=1;ST_CP5=0;delaynus(10);write_595(year);//顯示年 ST_CP6=0;ST_CP6=1;ST_CP6=0;delaynus(10);write_595(xingqi[day]);//顯示星期 ST_CP7=0;ST_CP7=1;ST_CP7=0;delaynus(10);} //----------void ds1302_init()//1302 初始化 { RST=0;SCLK=0;/* write_1302(0x80,0x00);//設(shè)置初始值 SEC write_1302(0x82,0x00);//設(shè)置初始值 MIN write_1302(0x84,0x00);//設(shè)置初始值 HR write_1302(0x86,0x00);//設(shè)置初始值 DATE write_1302(0x88,0x00);//設(shè)置初始值 MONTH write_1302(0x8A,0x00);//設(shè)置初始值 DAY */ write_1302(0x8C,0x10);//設(shè)置初始值 YEAR } //--------------void PORT_INIT()//端口初始化 { P0=0XFE;P1=0X00;P2=0X00;P3=0XFC;} void time_init()//定時器初始化 { TMOD=0x11;//設(shè)置定時 器 01 都為工作方式 1 TH0=(65536-50000)/256;//裝入初值 TL0=(65536-50000)%256;TH1=(65536-10000)/256;//裝入初值 TL1=(65536-10000)%256;PT0=1;//T0 定時器優(yōu)先級最高 EA=1;//開總中斷
ET0=1;//開定時器 0 中斷 ET1=1;//開定時器 1 中斷 TR0=1;//啟動定時器 0 TR1=1;// 啟動定時器 1 } //--------------void main(void)//主程序 { PORT_INIT();ds1302_init();time_init();year=read_1302(0x8d);//讀年數(shù)據(jù) year_data=0x2000|year;write_595(year_data>>8);//顯示 2010 年的 20 字樣 ST_CP8=0;ST_CP8=1;ST_CP8=0;set_shi=0x09;//鬧鐘初始值設(shè)定 set_fen=0x39;time_flag=0;//標(biāo)志位 set=0;while(1){ switch(set){ case 0: //設(shè)置秒 { display();// 顯 示 子 程 序
if((shi==set_shi)&&(fen==set_fen)&&(time_flag==0))小時和分鐘 { speak=~speak;if((K2==0)&&(time_flag==0))//按鍵 K2 停 止鬧鐘響 { P0&=0XFE;time_flag=1;} delay(10);} } break;} if(fen==set_fen+1)// 當(dāng) 不 按 下 鬧 鐘 停止按鍵,一分鐘后自動停止鬧 鐘 { P0&=0XFE;time_flag=0;} } } //--------void time0()interrupt 1 // 定時 器 0 中斷 { TR0=0;TH0=(65536-50000)/256;TL0=(65536-50000)%256;mun++;if(mun==15){ mun=0;switch(set){ case 1: //設(shè)置秒閃爍 {OE1=1;delay(300);OE1=0;} break;case 2: //設(shè)置分閃爍 { OE2=1;delay(300);OE2=0;} break;case 3: //設(shè)置時閃爍 { OE3=1;delay(300);OE3=0;} break;case 4: //設(shè)置日閃爍 { OE4=1;delay(300);OE4=0;} break;case 5: //設(shè)置月閃爍 { OE5=1;delay(300);OE5=0;} break;case 6: //設(shè)置年閃爍 { OE6=1;OE8=1;delay(300);OE6=0;OE8=0;} break;case 7: //設(shè)置星期閃爍 { OE7=1;delay(200);OE7=0;} break;case 8: //設(shè)置鬧鐘閃爍 { OE2=1;OE3=1;delay(200);OE2=0;OE3=0;} break;} } TR0=1;} //-----------void time1()interrupt 3 // 定時器 1 中斷 { TR1=0;//先關(guān)定時器 TH1=(65536-20000)/256;TL1=(65536-20000)%256;//-if(K1==0){ delay(10);if(K1==0){ set++;if(set==9){ set=0;write_1302(0x80,miao);//設(shè)置初始值 SEC write_1302(0x82,fen);//設(shè)置初始值 MIN write_1302(0x84,shi);//設(shè)置初始值 HR write_1302(0x86,date);//設(shè)置初始值 DATE write_1302(0x88,month);// 設(shè)置初始值 MONTH write_1302(0x8A,day);//設(shè)置初始值 DAY write_1302(0x8C,year_data);//設(shè)置初始值 YEAR } t=50000;while((!K1)&&t){ t--;} } } //-------if(K2==0){ delay(10);if(K2==0){ switch(set){ case 1: { miao++;if((miao&0x0f)>0x09){ miao+=0x10;miao&=0xf0;} if(miao==0x60){ miao=0x00;} write_595(miao);ST_CP1=0;ST_CP1=1;ST_CP1=0;} break;case 2: { fen++;if((fen&0x0f)>0x09){ fen+=0x10;fen&=0xf0;} if(fen==0x60){ fen=0x00;} ST_CP2=0;ST_CP2=1;ST_CP2=0;} break;case 3: { if((read_1302(0x85)&0x80)==0x00){ shi++;if((shi&0x0f)>0x09){ shi+=0x10;shi&=0xf0;} if(shi==0x24)//24 小時制 { shi=0x00;} } else { shi=(shi|0x80)+1;if((shi&0x0f)>0x09){ shi+=0x10;shi&=0xf0;} if(shi==0x12)//12 小時制 { shi=0X80;} } write_595(shi);//顯示時 ST_CP3=0;ST_CP3=1;ST_CP3=0;} break;case 4: { date++;if((date&0x0f)>0x09){ date+=0x10;date&=0xf0;} if((date==0x32)&&((month==0x01)||(month==0x03)||(month==0x05)||(month ==0x07)||(month==0x08)||(month==0x10)||(month==0x12))){ date=0x01;} else if((date==0x31)&&((month==0x04)||(month==0x06)||(month==0x09)||(month ==0x11))){ date=0x01;} else if((date==0x29)&&(month==0x02)&&((year_data|read_1302(0x8d))%100!=0)& &((year_data|read_1302(0x8d))%400!=0)){ date=0x01;} else if((date==0x30)&&(month==0x02)&&((year_data|read_1302(0x8d))%100==0)& &((year_data|read_1302(0x8d))%400==0)){ date=0x01;} write_595(date);ST_CP4=0;ST_CP4=1;ST_CP4=0;} break;case 5: { month++;if((month&0x0f)>0x09){ month+=0x10;month&=0xf0;} if(month==0x13){ month=0x01;} write_595(month);ST_CP5=0;ST_CP5=1;ST_CP5=0;} break;case 6: { year_data++;if((year_data&0x000f)==0x0a){ year_data+=0x0010;year_data&=0xfff0;} if((year_data&0x00ff)==0xa0){ year_data+=0x0100;//向前進 1 year_data&=0xff00;//后面尾數(shù)歸 0 } write_595(year_data);ST_CP6=0;ST_CP6=1;ST_CP6=0;write_595(year_data>>8);ST_CP8=0;ST_CP8=1;ST_CP8=0;} break;case 7: { day++;if((day&0x0f)==0x08){ day=0x01;} write_595(xingqi[day]);ST_CP7=0;ST_CP7=1;ST_CP7=0;} break;} t=50000;while((!K2)&&t){ t--;} } } //-------------------------if(K3==0){ delay(10);if(K3==0){ switch(set){ case 1: { miao--;if((miao&0x0f)==0x0F){ miao&=0xf9;//減到 0 后,再減一次就歸 0, } if(miao==0xF9)//當(dāng)全部減到 00 時,再 減一次就為 59 { miao=0x59;} write_595(miao);ST_CP1=0;ST_CP1=1;ST_CP1=0;} break;case 2: { fen--;if((fen&0x0f)==0x0F){ fen&=0xf9;} if(fen==0xF9){ fen=0x59;} write_595(fen);ST_CP2=0;ST_CP2=1;ST_CP2=0;} break;case 3: { if((read_1302(0x85)&0x80)==0x00){ shi--;if((shi&0x0f)==0x0F){ shi&=0xf9;} if(shi==0xF9)//24 小時制 { shi=0x23;} } else { shi=(shi|0x80)-1;if((shi&0x0f)==0x0F){ shi&=0xf9;} ST_CP4=0;} break;case 5: { month--;if((month&0x0f)==0x0F){ month&=0xf9;} if(month==0x00){ month=0x12;} write_595(month);ST_CP5=0;ST_CP5=1;ST_CP5=0;} break;case 6: { year_data--;if((year_data&0x000f)==0x0F){ year_data&=0xfff9;} if((year_data&0x00f0)==0xF0){ year_data&=0xf999;} write_595(year_data);ST_CP6=0;ST_CP6=1;ST_CP6=0;write_595(year_data>>8);ST_CP8=0;ST_CP8=1;ST_CP8=0;} break;case 7: { day--;if((day&0x0f)==0x00){ day=0x07;} write_595(xingqi[day]);ST_CP7=0;ST_CP7=1;ST_CP7=0;} break;} t=50000;while((!K3)&&t)//松手檢測 { t--;} } } //---switch(set){ case 8: { if(K4==0){ delay(10);if(K4==0){ if((read_1302(0x85)&0x80)==0x00){ set_shi++;if((set_shi&0x0f)>0x09){ set_shi+=0x10;set_shi&=0xf0;} if(set_shi==0x24)//24 小時制 { set_shi=0x00;} } else { set_shi=(set_shi|0x80)+1;if((set_shi&0x0f)>0x09){ set_shi+=0x10;set_shi&=0xf0;} if(set_shi==0x12)//12 小時制 { set_shi=0X80;} write_595(set_shi);// 顯示鬧 鐘的時 ST_CP3=0;ST_CP3=1;ST_CP3=0;t=50000;while((!K4)&&t){ t--;} } } //----if(K5==0){ delay(10);if(K5==0){ set_fen++;if((set_fen&0x0f)>0x09){ set_fen+=0x10;set_fen&=0xf0;}
if(set_fen==0x60)
{
set_fen=0x00;
} write_595(set_fen);ST_CP2=0;ST_CP2=1;ST_CP2=0;t=50000;while((!K5)&&t){ t--;} } set_shi+=0x10;set_shi&=0xf0;} if(set_shi==0x12)//12 小時制 { set_shi=0X80;} write_595(set_shi);// 顯示鬧 鐘的時 ST_CP3=0;ST_CP3=1;ST_CP3=0;t=50000;while((!K4)&&t){ t--;} } } //----if(K5==0){ delay(10);if(K5==0){ set_fen++;if((set_fen&0x0f)>0x09){ set_fen+=0x10;set_fen&=0xf0;}
if(set_fen==0x60)
{
set_fen=0x00;
} write_595(set_fen);ST_CP2=0;ST_CP2=1;ST_CP2=0;t=50000;while((!K5)&&t){ t--;} } } } } //------------------------if(((K4==0)||(K5==0))&&(set==0)){ delay(10);if(((K4==0)||(K5==0))&&(set==0)){ write_595(set_shi);//顯示鬧鐘的時 ST_CP3=0;ST_CP3=1;ST_CP3=0;write_595(set_fen);ST_CP2=0;ST_CP2=1;ST_CP2=0;P1=0XF9;while((!K4)||(!K5));P1=0X00;} } //----------TR1=1;//退出時開定時器 } } //----------
第三篇:《單片機原理及應(yīng)用》課程設(shè)計簡介
《單片機原理及應(yīng)用》課程設(shè)計簡介
1、課程編碼:1302009602、英文名稱:project work for 《the principle and application of single chip computer》
3、學(xué)時/學(xué)分:
總學(xué)時:1周,學(xué)分:1學(xué)分,時間安排:第五學(xué)期
4、課程負(fù)責(zé)人:石亞和
5、課程設(shè)計主要內(nèi)容簡介
目的: ⑴ 配合《單片機原理及應(yīng)用》課程,加強實踐訓(xùn)練,使學(xué)生鞏固理論課程所學(xué)內(nèi)容,加深對原本抽象的學(xué)習(xí)內(nèi)容的理解深度,達(dá)到良好的教學(xué)效果。⑵ 結(jié)合專業(yè)特點,培養(yǎng)學(xué)生獨立科研和設(shè)計開發(fā)能力,并為以后的畢業(yè)設(shè)計打下堅實的基礎(chǔ)。
任務(wù): ⑴ 學(xué)生圍繞教師提出的設(shè)計課題進行選擇論證,確定自己的方案,做必要的實驗,進行原理圖設(shè)計和印刷電路板設(shè)計并完成設(shè)計圖紙; ⑵寫出設(shè)計說明書。
要求:⑴ 學(xué)生原則獨立完成設(shè)計工作,可每2-3人為一組,各組題目不同,由2-3名教師分別指導(dǎo)。⑵ 課程設(shè)計期間應(yīng)集中統(tǒng)一在確定的地點進行工作,不得缺席。學(xué)生應(yīng)準(zhǔn)備專用的筆記,記錄設(shè)計期間的計算數(shù)據(jù)、所查閱的資料文獻(xiàn)、改進措施等內(nèi)容以備平時檢查。實施計劃:第5學(xué)期期末安排進行,提前4周在課程進行中下發(fā)設(shè)計題目并要求學(xué)生分組 完畢和進行題目初選。提前1周所有指導(dǎo)教師與學(xué)生見面,約定活動時間地點等項。用1 周時間完成方案論證、原理圖繪制和PCB印刷電路板練習(xí),并考慮程序流程。最后寫出完 整的設(shè)計說明書。
成績評定:工作表現(xiàn)、設(shè)計說明書質(zhì)量和答辯驗收各占三分之一。由各指導(dǎo)教師按5級分制分別評定,并由課題組長最終審核確認(rèn)。
6、先修課程:模擬電子技術(shù),脈沖與數(shù)字電路,單片機原理及應(yīng)用
7、適用專業(yè):測控技術(shù)及儀器
8、參考教材:《單片機原理及應(yīng)用》課程設(shè)計指導(dǎo)書
第四篇:《單片機原理及應(yīng)用》課程設(shè)計任務(wù)書(2014)
《單片機原理及應(yīng)用》課程設(shè)計
任務(wù)書
一、課程設(shè)計題目
見農(nóng)機111《單片機課程設(shè)計》題目分配表。
二、課程設(shè)計的基本要求
1、根據(jù)給定的題目,在規(guī)定時間內(nèi)完成系統(tǒng)硬件電路設(shè)計、系統(tǒng)程序設(shè)計。具體包括:
(1)在keil IDE(μvision3)中完成應(yīng)用程序設(shè)計、并編譯;
(2)在Proteus 7.5下的ISIS Professional中完成電路設(shè)計、調(diào)試并仿真通過。
2、課程設(shè)計結(jié)束時需要提交的材料清單:
(1)設(shè)計說明書
設(shè)計說明書包含:設(shè)計思想和設(shè)計說明,硬件原理框圖,硬件原理圖與其軟件配合介紹(若有),程序存儲器和數(shù)據(jù)存儲器的單元分配,程序流程圖,源程序清單,課程設(shè)計中所有涉及到的芯片資料。
(2)圖紙:硬件電路圖(Proteus軟件仿真通過)、仿真效果圖。均用彩色A3以上幅面打印。
(3)光盤:包含上述(1)、(2)的電子版。
3、多人共同完成一個題目時,只需提交上述材料一份,格式按照貴州大學(xué)課程設(shè)計相關(guān)要求裝袋,姓名填寫在一起即可。但要在設(shè)計說明書中說明每個人的主要分工情況。
三、課程設(shè)計時間安排
設(shè)計時間:2014年6月30日~7月7日。
課程設(shè)計材料提交、答辯時間:7月7日下午2:30。
課程設(shè)計材料提交、答辯地點:農(nóng)機系辦公室(機械樓618)。
四、成績評定方式
設(shè)計說明書:40%。硬件電路原理圖:40%。答辯:20%。
第五篇:單片機課程設(shè)計教學(xué)大綱.
《單片機課程設(shè)計》教學(xué)大綱
課程編號:08105 學(xué)時:1周學(xué)分:1 修課方式:必修承擔(dān)單位:信息科學(xué)與工程學(xué)院考核方式:考查
一、課程設(shè)計目的與任務(wù) 1.目的:(1培養(yǎng)學(xué)生綜合運用所學(xué)理論知識分析和解決實際問題的能力。(2鍛煉學(xué)生的獨立工作能力,也是對前期理論與實踐教學(xué)效果的檢驗。(3通過課程設(shè)計使學(xué)生深入理解單片機的基本原理,硬件結(jié)構(gòu)和工作原理。掌握程序的編制方法和程序調(diào)試的方法,掌握常用接口的設(shè)計及使用。掌握一般接口的擴展方法及接口的調(diào)試過程。為學(xué)生將來在電子信息工程、測試計量技術(shù)及儀器、通信工程、電子科學(xué)與技術(shù)及其他領(lǐng)域應(yīng)用單片機技術(shù)打下良好基礎(chǔ)及應(yīng)用實踐能力。
2.任務(wù):(1設(shè)計以單片機為控制核心的測量系統(tǒng)或控制系統(tǒng),完成對指定目標(biāo)或?qū)ο蟮臏y量及控制。
(2設(shè)計單片機與測量及控制對象的接口并進行硬件調(diào)試。(3針對要求測量或控制的對象完成程序的編制。
(4硬件軟件聯(lián)調(diào),完成指導(dǎo)教師布置的各個具體題目所要求完成的功能。
二、課程設(shè)計的基本要求
本課程設(shè)計重視培養(yǎng)并提高學(xué)生創(chuàng)新設(shè)計能力、理論與實際相結(jié)合的綜合素質(zhì)、單片機系統(tǒng)硬件設(shè)計能力,軟件編程技巧,軟硬件聯(lián)合調(diào)試技巧及技能等實踐能力。
1.選題要求:滿足課程設(shè)計的教學(xué)目的與要求,使學(xué)生得到全面的綜合訓(xùn)練,題目難度和工作量應(yīng)適合學(xué)生的知識和能力狀況。
2.學(xué)生根據(jù)課程實際任務(wù)書的要求合理地安排設(shè)計進度, 3.學(xué)生對自己課程設(shè)計的題目,應(yīng)概念清楚,設(shè)計方案合理,硬件設(shè)計正確,程序編制正確合理,調(diào)試結(jié)果符合設(shè)計要求,課程設(shè)計報告書撰寫規(guī)范。
三、課程設(shè)計內(nèi)容及學(xué)時分配 1.查閱相關(guān)設(shè)計技術(shù)資料:0.5天。
2.根據(jù)設(shè)計題目和所學(xué)理論知識及相關(guān)文獻(xiàn)資料,確定系統(tǒng)的整體設(shè)計方案:0.5天。
3.硬件電路設(shè)計及原理圖繪制:1天。
4.根據(jù)課題具體要求編制相應(yīng)軟件并進行調(diào)試:1.5天。
5.撰寫設(shè)計計算說明書,不少于3000字,說明書格式,結(jié)構(gòu)及要求等符合規(guī)范要求: 1天。
6.成果驗收:教師在學(xué)生調(diào)試的過程中應(yīng)掌握每個學(xué)生調(diào)試的具體情況并驗收結(jié)果。
7.答辯:教師對學(xué)生課程設(shè)計驗收成果后,由答辯小組主持答辯,學(xué)生自述約5分鐘,并回答3-4個問題,每個學(xué)生答辯時間約15分鐘:0.5天。
四、課程設(shè)計參考資料
[1] 由每個指導(dǎo)教師根據(jù)指導(dǎo)學(xué)生課程設(shè)計課題的不同,布置相應(yīng)的參考資料(技術(shù)書刊,科技期刊,電子器件使用手冊,并鼓勵學(xué)生根據(jù)題目的設(shè)計內(nèi)容在網(wǎng)上查閱各種先
進器件及先進技術(shù),特別鼓勵學(xué)生查閱國內(nèi)外著名公司及生產(chǎn)廠家的技術(shù)資料。
[2] 鼓勵學(xué)生應(yīng)用實驗室設(shè)備對課程設(shè)計進行調(diào)試
五、考核及成績評定
依據(jù)學(xué)生在設(shè)計過程中的表現(xiàn)、軟硬件設(shè)計的合理及正確性,調(diào)試過程的掌握程度及調(diào)試結(jié)果和課程設(shè)計報告書的撰寫質(zhì)量綜合進行評定。課程設(shè)計成績分為優(yōu)秀、良好、中等、及格、不及格五個等級。