第一篇:單片機(jī)課程設(shè)計(jì)總結(jié)報(bào)告參考22
湖州師范學(xué)院
課程設(shè)計(jì)總結(jié)報(bào)告
課程名稱電子系統(tǒng)綜合設(shè)計(jì)設(shè)計(jì)題目基于STC89C52的電子號碼鎖的設(shè)計(jì)
專業(yè) 班級 姓名學(xué)號指導(dǎo)教師報(bào)告成績
信息與工程學(xué)院(求真學(xué)院信息與工程系,兩選一)
二〇〇九年十月十九日
《電子系統(tǒng)綜合設(shè)計(jì)》課程設(shè)計(jì)任務(wù)書
一、課題名稱
《基于STC89C52的電子號碼鎖的設(shè)計(jì)》
二、設(shè)計(jì)任務(wù)
1.采用STC單片機(jī)和鍵盤,設(shè)置4位密碼用于模擬門鎖、保險(xiǎn)箱的開門密碼,設(shè)置的密碼存
儲在I2C AT24X存儲器芯片中;
2.上電時(shí)初始化密碼為“0000”,數(shù)碼管顯示為“0000”;
3.密碼設(shè)置與更改:輸入“*XXXX#YYYY#”,其中“XXXX”為原先4位密碼,第一次設(shè)置
為初始密碼,“YYYY”為欲設(shè)置的4位密碼,如設(shè)置成功,則綠色LED燈亮,蜂鳴器長鳴一聲,之后LED滅;否則紅色LED閃爍三次。
4.模擬開門:輸入“#YYYY#”,如輸入密碼與存儲的密碼相符,則綠色LED燈亮,蜂鳴器
發(fā)出“滴-滴-滴”三聲,之后LED滅;否則紅色LED閃爍三次。
三、設(shè)計(jì)報(bào)告撰寫規(guī)范
單片微機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)總結(jié)報(bào)告正文,主要含以下內(nèi)容(硬件、軟件各部分內(nèi)容也可組合起來進(jìn)行撰寫說明):
1.系統(tǒng)總體設(shè)計(jì)方案(畫出系統(tǒng)原理框圖、方案的論證與比較等內(nèi)容);
2.硬件系統(tǒng)分析與設(shè)計(jì)(各模塊或單元電路的設(shè)計(jì)、工作原理闡述、參數(shù)計(jì)算、元器件選擇、完整的系統(tǒng)電路圖、系統(tǒng)所需的元器件清單。等內(nèi)容);
3.軟件系統(tǒng)分析與設(shè)計(jì)(各功能模塊的程序設(shè)計(jì)流程圖與說明、軟件系統(tǒng)設(shè)計(jì)、軟件抗干擾
措施、完整的程序等內(nèi)容);
4.系統(tǒng)仿真調(diào)試與參數(shù)測量(使用儀器儀表、故障排除、電路硬件和軟件調(diào)試的方法和技巧、指標(biāo)測試的參數(shù)和波形、測量誤差分析);
5.總結(jié)(本課題核心內(nèi)容及使用價(jià)值、電路設(shè)計(jì)、軟件設(shè)計(jì)的特點(diǎn)和選擇方案的優(yōu)缺點(diǎn)、改
進(jìn)方向和意見等);
6.按統(tǒng)一格式列出主要參考文獻(xiàn)。
《基于STC89C52的電子號碼鎖的設(shè)計(jì)》
課程設(shè)計(jì)總結(jié)報(bào)告
一、系統(tǒng)總體方案
(以下各小節(jié)可以根據(jù)內(nèi)容分1.XXX2.XXX3.XXX分別進(jìn)行撰寫)
(畫出系統(tǒng)原理框圖、方案工作過程的論述、整體設(shè)計(jì)電路圖、單片機(jī)的選型);
二、單片機(jī)概述
用到的單片機(jī)的選型及主要特點(diǎn),設(shè)計(jì)時(shí)需要注意的問題?
三、鍵盤電路
鍵盤掃描概述、此次用到的鍵盤電路圖、工作原理、硬件電路注意的問題、程序流程、編程注意點(diǎn)?
四、顯示電路
一般顯示電路概述、用到的電路圖、用到動態(tài)掃描工作原理、硬件電路注意的問題、程序流程、編程注意點(diǎn)?
四、單片機(jī)擴(kuò)展I2C總線器件的接口與通信
I2C總線器件概述、工作原理、與單片機(jī)的接口電路、模擬通信、程序流程、編程注意點(diǎn)?
五、系統(tǒng)調(diào)試
調(diào)試的軟硬件環(huán)境和使用說明(參考901U--USB全自動在線編程單片機(jī)實(shí)驗(yàn)板實(shí)驗(yàn)指導(dǎo)書)、調(diào)試技巧與方法、調(diào)試過程中遇到的問題及解決方法?
六、總結(jié)
心得體會、課程設(shè)計(jì)中遇到的問題及解決方法?
附錄:
(完整的程序,字號可小一二號,分兩欄排版以節(jié)省紙張)
主要參考文獻(xiàn):
例:
[1] 周立功.ARM&WinCE實(shí)踐與實(shí)驗(yàn):基于S3C2410[M]北京:北京航空航天大學(xué)出版社,2007.[2] 李朝青.PC機(jī)及單片機(jī)數(shù)據(jù)通信技術(shù)[M].北京:北京航空航天大學(xué)出版社,2000
[3] 馬春華,于莉莉.SMS方式遠(yuǎn)程監(jiān)控軟件的設(shè)計(jì)與實(shí)現(xiàn)[J].廣東通信技術(shù),2003,23
(4):39-41.[4] 肖冬榮,殷傳軍.魯棒GMC 控制及其工程應(yīng)用[J]微計(jì)算機(jī)信息2007,30(3):21-23
第二篇:單片機(jī)課程設(shè)計(jì)
設(shè)計(jì)題目: 單片機(jī)課程設(shè)計(jì)
學(xué)生姓名:
學(xué)
院: 電氣與信息工程學(xué)院
班
級: 電子111班 指導(dǎo)教師:
日 期: 2014年9月20日
一、課程設(shè)計(jì)目的:
了解電子元器件的功能與原理,掌握單片機(jī)的結(jié)構(gòu)和原理,學(xué)會使用單片機(jī)應(yīng)用開發(fā)技術(shù)的相關(guān)軟件如 keill、STC_ISP_V394等,能夠使用c語言的語言編程簡單的功能。
二、設(shè)計(jì)的思想:
利用所提供的單片機(jī)和開發(fā)板的原理圖用keill軟件編程程序以實(shí)現(xiàn)一些功能。然后用STC_ISP_V394.exe軟件將編譯完全正確的程序生成的hxe文件下載到開發(fā)板上,再調(diào)試編譯的程序能否實(shí)現(xiàn)其所設(shè)計(jì)的功能。
1、對蜂鳴器的了解:
蜂鳴器是一種一體化結(jié)構(gòu)的電子訊響器,采用直流電壓供電,它由振蕩器、電磁線圈、磁鐵、振動膜片及外殼組成,接通電源后,振蕩器產(chǎn)生的音頻信號由電流通過電磁線圈,使電磁線圈產(chǎn)生磁場,振動膜片在電磁線圈和磁鐵的相互作用下,周期性的振動發(fā)聲。
2、設(shè)計(jì):
我們所使用的開發(fā)板實(shí)物圖如圖一,單片機(jī)對右上角蜂鳴器的控制是加入三極管接入vcc,單片機(jī)的第22引腳和負(fù)極上,以此來控制蜂鳴器工作。單片機(jī)我們選擇STC89C52RC+1602液晶來實(shí)現(xiàn)對蜂鳴器的控制及顯示所需要的信息。
圖一 調(diào)試說明:
首先用Keil軟件創(chuàng)建一個(gè)工程,將程序源代碼輸入并編譯生成單片可執(zhí)行的.hex文件。其次,打開單片機(jī)實(shí)踐板的電源,接好串口線,用STC-ISP燒錄軟件,將.hex文件燒錄入單片機(jī)中。程序下載完畢后,單片機(jī)會自動執(zhí)行程序功能。最后,觀察程序功能的執(zhí)行情況,看是否達(dá)到了設(shè)計(jì)要求。
如果單片機(jī)實(shí)踐板硬件電路的執(zhí)行結(jié)果與設(shè)計(jì)結(jié)果一致,則說明設(shè)計(jì)過程及流程沒有問題,完全符合設(shè)計(jì)要求。否則,先檢查單片機(jī)實(shí)踐板的硬件電路是否完好,是否有斷點(diǎn)、漏焊、虛焊以及元器件是否完好等情況,排除故障重新連接后重新進(jìn)行調(diào)試。如果仍然無法正
常實(shí)現(xiàn),則說明程序編寫有誤,需要認(rèn)真檢查程序流程,然后經(jīng)過反復(fù)的修改與調(diào)試排除故障,實(shí)現(xiàn)設(shè)計(jì)要求的各項(xiàng)功能。編譯和燒寫該程序到單片機(jī):
(1)用Keil編譯上面的代碼,并設(shè)置產(chǎn)生16進(jìn)制代碼文件*.hex.(2)用專用下載線,連接好實(shí)驗(yàn)板和電腦串口(DB9)(2)運(yùn)行hex文件燒寫軟件STC_ISP_V394.exe
選單片機(jī)的型號,并打開編譯產(chǎn)生好的hex文件
點(diǎn)擊下載,給開發(fā)板上電。
3、實(shí)現(xiàn)的功能:使用單片機(jī)將歌曲《八月桂花》的調(diào)子通過蜂鳴器播放出來,用1602液晶將想要表達(dá)的信息有步驟地顯示在液晶顯示屏上,并且調(diào)子與顯示內(nèi)容可以任意通過修改的程序燒錄到單片機(jī)內(nèi),實(shí)現(xiàn)設(shè)計(jì)產(chǎn)品的使用性與靈活性。
三、實(shí)驗(yàn)程序:
/************************************************************************
[主題] C51音樂程序《八月桂花》
[功能]
通過單片機(jī)演奏音樂,顯示一些內(nèi)容
/**********************************************************************/
#include
#include
//本例采用89C52, 晶振為11.0592MHZ
//關(guān)于如何編制音樂代碼, 其實(shí)十分簡單,各位可以看以下代碼.//頻率常數(shù)即音樂術(shù)語中的音調(diào),而節(jié)拍常數(shù)即音樂術(shù)語中的多少拍;
//所以拿出譜子, 試探編吧!
unsigned char i=0;sbit Beep = P2^7;
unsigned char p,m;
//m為頻率常數(shù)變量
unsigned char n=0;//n為節(jié)拍常數(shù)變量
unsigned char code music_tab[] ={
0x18, 0x30, 0x1C , 0x10, //格式為: 頻率常數(shù), 節(jié)拍常數(shù), 頻率常數(shù), 節(jié)拍常數(shù),0x20, 0x40, 0x1C , 0x10,0x18, 0x10, 0x20 , 0x10,0x1C, 0x10, 0x18 , 0x40,0x1C, 0x20, 0x20 , 0x20,0x1C, 0x20, 0x18 , 0x20,0x20, 0x80, 0xFF , 0x20,0x30, 0x1C, 0x10 , 0x18,0x20, 0x15, 0x20 , 0x1C,0x20, 0x20, 0x20 , 0x26,0x40, 0x20, 0x20 , 0x2B,0x20, 0x26, 0x20 , 0x20,0x20, 0x30, 0x80 , 0xFF,0x20, 0x20, 0x1C , 0x10,0x18, 0x10, 0x20 , 0x20,0x26, 0x20, 0x2B , 0x20,0x30, 0x20, 0x2B , 0x40,0x20, 0x20, 0x1C , 0x10,0x18, 0x10, 0x20 , 0x20,0x26, 0x20, 0x2B , 0x20,0x30, 0x20, 0x2B , 0x40,0x20, 0x30, 0x1C , 0x10,0x18, 0x20, 0x15 , 0x20,0x1C, 0x20, 0x20 , 0x20,0x26, 0x40, 0x20 , 0x20,0x2B, 0x20, 0x26 , 0x20,0x20, 0x20, 0x30 , 0x80,0x20, 0x30, 0x1C , 0x10,0x20, 0x10, 0x1C , 0x10,0x20, 0x20, 0x26 , 0x20,0x2B, 0x20, 0x30 , 0x20,0x2B, 0x40, 0x20 , 0x15,0x1F, 0x05, 0x20 , 0x10,0x1C, 0x10, 0x20 , 0x20,0x26, 0x20, 0x2B , 0x20,0x30, 0x20, 0x2B , 0x40,0x20, 0x30, 0x1C , 0x10,0x18, 0x20, 0x15 , 0x20,0x1C, 0x20, 0x20 , 0x20,0x26, 0x40, 0x20 , 0x20,0x2B, 0x20, 0x26 , 0x20,0x20, 0x20, 0x30 , 0x30,0x20, 0x30, 0x1C , 0x10,0x18, 0x40, 0x1C , 0x20,0x20, 0x20, 0x26 , 0x40,0x13, 0x60, 0x18 , 0x20,0x15, 0x40, 0x13 , 0x40,0x18, 0x80, 0x00
};
void int0()interrupt 1
//采用中斷0 控制節(jié)拍
{ TH0=0xd8;
TL0=0xef;
n--;
}
void delay(unsigned char m)
//控制頻率延時(shí)
{
unsigned i=3*m;
while(--i);
}
void delayms(unsigned char a)//豪秒延時(shí)子程序
{
while(--a);
//采用while(--a)不要采用while(a--);各位可編譯一下看看匯編結(jié)果就知道了!
}
typedef unsigned char BYTE;typedef bit BOOL;
sbit LCD_RS = P2^0;
sbit LCD_RW = P2^1;sbit LCD_EP = P2^2;
BYTE code dis1[] = {“
WLCOME TO
”};BYTE code dis2[] = {“
DanPianJi ”};BYTE code dis3[] = {“
111iZnaiD
”};BYTE code dis4[] = {“
eiXeiX ”};
delays(int ms){
// 延時(shí)子程序 int i;while(ms--){
for(i = 0;i< 250;i++)
{
_nop_();
_nop_();
_nop_();
_nop_();
} } }
BOOL lcd_bz(){
// 測試LCD忙碌狀態(tài) BOOL result;LCD_RS = 0;LCD_RW = 1;LCD_EP = 1;_nop_();_nop_();_nop_();_nop_();result =(BOOL)(P0 & 0x80);LCD_EP = 0;return result;}
lcd_wcmd(BYTE cmd){
while(lcd_bz());LCD_RS = 0;LCD_RW = 0;LCD_EP = 0;_nop_();_nop_();P0 = cmd;_nop_();_nop_();_nop_();_nop_();LCD_EP = 1;_nop_();_nop_();_nop_();_nop_();LCD_EP = 0;
}
lcd_pos(BYTE pos){
lcd_wcmd(pos | 0x80);
// 寫入指令數(shù)據(jù)到LCD //設(shè)定顯示位置
}
lcd_wdat(BYTE dat)
{
//寫入字符顯示數(shù)據(jù)到LCD while(lcd_bz());LCD_RS = 1;LCD_RW = 0;LCD_EP = 0;P0 = dat;_nop_();_nop_();_nop_();_nop_();LCD_EP = 1;_nop_();_nop_();_nop_();_nop_();LCD_EP = 0;}
lcd_init(){
lcd_wcmd(0x38);
delays(1);lcd_wcmd(0x0c);
delays(1);lcd_wcmd(0x06);
delays(1);lcd_wcmd(0x01);
delays(1);}
void main()
{
BYTE j;
lcd_init();
delays(10);
//LCD初始化設(shè)定
//16*2顯示,5*7點(diǎn)陣,8位數(shù)據(jù)//顯示開,關(guān)光標(biāo) //移動光標(biāo) //清除LCD的顯示內(nèi)容
// 初始化LCD
lcd_wcmd(0x06);
//向右移動光標(biāo)
lcd_pos(0);
//設(shè)置顯示位置為第一行的第1個(gè)字符
j = 0;
while(dis1[ j ]!= '