第一篇:?jiǎn)纹瑱C(jī)課程設(shè)計(jì)撰寫(xiě)說(shuō)明
單片機(jī)課程設(shè)計(jì)(論文)撰寫(xiě)說(shuō)明
1.摘要部門(mén)撰寫(xiě)說(shuō)明
摘要部分主要是對(duì)整個(gè)設(shè)計(jì)(論文)內(nèi)容的提煉,相當(dāng)于一篇文章的中心思想,要讓讀者看了你的摘要后就能很快的獲取你的設(shè)計(jì)(論文)的主體內(nèi)容。常用的格式應(yīng)該是:首先簡(jiǎn)單介紹一下所做課題的背景,然后介紹設(shè)計(jì)(論文)的主要工作,比如“設(shè)計(jì)(論文)對(duì)??的硬件進(jìn)行了設(shè)計(jì),包括??的設(shè)計(jì),然后設(shè)計(jì)了系統(tǒng)的軟件流程和程序源代碼???,最后為了驗(yàn)證所設(shè)計(jì)的??正確性,在proteus環(huán)境下建立了 ??的仿真模型,仿真結(jié)果表明本設(shè)計(jì)多設(shè)計(jì)的是正確的”
2.設(shè)計(jì)(論文)總體架構(gòu)說(shuō)明
整個(gè)設(shè)計(jì)(論文)的總體架構(gòu)主要分為前言部分(或者設(shè)計(jì)任務(wù)及要求部分)、整體方案設(shè)計(jì)、硬件電路設(shè)計(jì)、軟件設(shè)計(jì)、系統(tǒng)仿真及調(diào)試、設(shè)計(jì)總結(jié)等。前言部分是對(duì)所做課題的情況做一個(gè)簡(jiǎn)要的介紹(包括課題的意義、研究現(xiàn)狀等),整體方案設(shè)計(jì)主要是根據(jù)設(shè)計(jì)任務(wù)書(shū)要求進(jìn)行方案論證并確定設(shè)計(jì)方案,要給出整體方案框圖并說(shuō)明其工作原理。硬件電路設(shè)計(jì)應(yīng)包括:?jiǎn)纹瑱C(jī)最小系統(tǒng)設(shè)計(jì)(時(shí)鐘電路設(shè)計(jì)、電源電路設(shè)計(jì)、鍵盤(pán)顯示電路設(shè)計(jì)、RAM/ROM擴(kuò)展等)、A/D、D/A、放大電路、傳感器信號(hào)處理電路等設(shè)計(jì)(沒(méi)有此部分的電路無(wú)需設(shè)計(jì))。軟件設(shè)計(jì)主要包括軟件流程圖和程序源代碼設(shè)計(jì),要給出程序流程圖(主程序流程圖和各子程序圖)和程序源代碼。系統(tǒng)仿真及調(diào)試主要包括仿真軟件(系統(tǒng))的簡(jiǎn)介、仿真模型的建立、仿真模型的運(yùn)行及仿真結(jié)果與分析。
3.設(shè)計(jì)(論文)格式
設(shè)計(jì)(論文)格式嚴(yán)格按照邵陽(yáng)學(xué)院畢業(yè)設(shè)計(jì)(論文)要求(詳見(jiàn)邵陽(yáng)學(xué)院網(wǎng)站)
第二篇:?jiǎn)纹瑱C(jī)課程設(shè)計(jì)
設(shè)計(jì)題目: 單片機(jī)課程設(shè)計(jì)
學(xué)生姓名:
學(xué)
院: 電氣與信息工程學(xué)院
班
級(jí): 電子111班 指導(dǎo)教師:
日 期: 2014年9月20日
一、課程設(shè)計(jì)目的:
了解電子元器件的功能與原理,掌握單片機(jī)的結(jié)構(gòu)和原理,學(xué)會(huì)使用單片機(jī)應(yīng)用開(kāi)發(fā)技術(shù)的相關(guān)軟件如 keill、STC_ISP_V394等,能夠使用c語(yǔ)言的語(yǔ)言編程簡(jiǎn)單的功能。
二、設(shè)計(jì)的思想:
利用所提供的單片機(jī)和開(kāi)發(fā)板的原理圖用keill軟件編程程序以實(shí)現(xiàn)一些功能。然后用STC_ISP_V394.exe軟件將編譯完全正確的程序生成的hxe文件下載到開(kāi)發(fā)板上,再調(diào)試編譯的程序能否實(shí)現(xiàn)其所設(shè)計(jì)的功能。
1、對(duì)蜂鳴器的了解:
蜂鳴器是一種一體化結(jié)構(gòu)的電子訊響器,采用直流電壓供電,它由振蕩器、電磁線(xiàn)圈、磁鐵、振動(dòng)膜片及外殼組成,接通電源后,振蕩器產(chǎn)生的音頻信號(hào)由電流通過(guò)電磁線(xiàn)圈,使電磁線(xiàn)圈產(chǎn)生磁場(chǎng),振動(dòng)膜片在電磁線(xiàn)圈和磁鐵的相互作用下,周期性的振動(dòng)發(fā)聲。
2、設(shè)計(jì):
我們所使用的開(kāi)發(fā)板實(shí)物圖如圖一,單片機(jī)對(duì)右上角蜂鳴器的控制是加入三極管接入vcc,單片機(jī)的第22引腳和負(fù)極上,以此來(lái)控制蜂鳴器工作。單片機(jī)我們選擇STC89C52RC+1602液晶來(lái)實(shí)現(xiàn)對(duì)蜂鳴器的控制及顯示所需要的信息。
圖一 調(diào)試說(shuō)明:
首先用Keil軟件創(chuàng)建一個(gè)工程,將程序源代碼輸入并編譯生成單片可執(zhí)行的.hex文件。其次,打開(kāi)單片機(jī)實(shí)踐板的電源,接好串口線(xiàn),用STC-ISP燒錄軟件,將.hex文件燒錄入單片機(jī)中。程序下載完畢后,單片機(jī)會(huì)自動(dòng)執(zhí)行程序功能。最后,觀察程序功能的執(zhí)行情況,看是否達(dá)到了設(shè)計(jì)要求。
如果單片機(jī)實(shí)踐板硬件電路的執(zhí)行結(jié)果與設(shè)計(jì)結(jié)果一致,則說(shuō)明設(shè)計(jì)過(guò)程及流程沒(méi)有問(wèn)題,完全符合設(shè)計(jì)要求。否則,先檢查單片機(jī)實(shí)踐板的硬件電路是否完好,是否有斷點(diǎn)、漏焊、虛焊以及元器件是否完好等情況,排除故障重新連接后重新進(jìn)行調(diào)試。如果仍然無(wú)法正
常實(shí)現(xiàn),則說(shuō)明程序編寫(xiě)有誤,需要認(rèn)真檢查程序流程,然后經(jīng)過(guò)反復(fù)的修改與調(diào)試排除故障,實(shí)現(xiàn)設(shè)計(jì)要求的各項(xiàng)功能。編譯和燒寫(xiě)該程序到單片機(jī):
(1)用Keil編譯上面的代碼,并設(shè)置產(chǎn)生16進(jìn)制代碼文件*.hex.(2)用專(zhuān)用下載線(xiàn),連接好實(shí)驗(yàn)板和電腦串口(DB9)(2)運(yùn)行hex文件燒寫(xiě)軟件STC_ISP_V394.exe
選單片機(jī)的型號(hào),并打開(kāi)編譯產(chǎn)生好的hex文件
點(diǎn)擊下載,給開(kāi)發(fā)板上電。
3、實(shí)現(xiàn)的功能:使用單片機(jī)將歌曲《八月桂花》的調(diào)子通過(guò)蜂鳴器播放出來(lái),用1602液晶將想要表達(dá)的信息有步驟地顯示在液晶顯示屏上,并且調(diào)子與顯示內(nèi)容可以任意通過(guò)修改的程序燒錄到單片機(jī)內(nèi),實(shí)現(xiàn)設(shè)計(jì)產(chǎn)品的使用性與靈活性。
三、實(shí)驗(yàn)程序:
/************************************************************************
[主題] C51音樂(lè)程序《八月桂花》
[功能]
通過(guò)單片機(jī)演奏音樂(lè),顯示一些內(nèi)容
/**********************************************************************/
#include
#include
//本例采用89C52, 晶振為11.0592MHZ
//關(guān)于如何編制音樂(lè)代碼, 其實(shí)十分簡(jiǎn)單,各位可以看以下代碼.//頻率常數(shù)即音樂(lè)術(shù)語(yǔ)中的音調(diào),而節(jié)拍常數(shù)即音樂(lè)術(shù)語(yǔ)中的多少拍;
//所以拿出譜子, 試探編吧!
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(){
// 測(cè)試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);
// 寫(xiě)入指令數(shù)據(jù)到LCD //設(shè)定顯示位置
}
lcd_wdat(BYTE dat)
{
//寫(xiě)入字符顯示數(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ù)//顯示開(kāi),關(guān)光標(biāo) //移動(dòng)光標(biāo) //清除LCD的顯示內(nèi)容
// 初始化LCD
lcd_wcmd(0x06);
//向右移動(dòng)光標(biāo)
lcd_pos(0);
//設(shè)置顯示位置為第一行的第1個(gè)字符
j = 0;
while(dis1[ j ]!= '