版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 單片機(jī)應(yīng)用課程設(shè)計(jì)報(bào)告 院系:電子工程系班級(jí): 姓名: 學(xué)號(hào):#1目 錄第一章 單片機(jī)開發(fā)系統(tǒng)控制板電路說明1一、控制系統(tǒng)硬件組成1二、芯片介紹3第二章 單片機(jī)應(yīng)用課程設(shè)計(jì)內(nèi)容8一、1號(hào)單片機(jī)測(cè)試8二、1號(hào)單片機(jī)與串口9三、2號(hào)單片機(jī)與串口11四、2號(hào)單片機(jī)與鍵盤13五、鍵盤與串口14六、存儲(chǔ)設(shè)計(jì)15第三章 總結(jié).19參考文獻(xiàn)20第一章 單片機(jī)開發(fā)系統(tǒng)控制板電路說明一、控制系統(tǒng)硬件組成本實(shí)驗(yàn)所用電路板包含單片機(jī),鍵盤處理,直流電機(jī)驅(qū)動(dòng),轉(zhuǎn)速采集,聲光報(bào)警,繼電器控制,rs232通信接口等部分組成,本次實(shí)驗(yàn)中我們所要用的模塊有以下幾塊:1.1號(hào)單片機(jī)模塊,2.2號(hào)單片機(jī)模塊,3.rs232通信
2、模塊,4.5v電源穩(wěn)壓模塊,5.按鍵模塊等。以下是各個(gè)模塊介紹,及原理圖。1.1號(hào)單片機(jī)模塊圖1-1本模塊實(shí)現(xiàn)了單片機(jī)的最小系統(tǒng),設(shè)置了看門狗(watchdog),并且配以isp下載接口,其中加入了串行 eeprom芯片(24c02),以實(shí)現(xiàn)單片機(jī)掉電后的數(shù)據(jù)存儲(chǔ)。22號(hào)單片機(jī)模塊圖1-2本模塊同樣實(shí)現(xiàn)了單片機(jī)的最小系統(tǒng),設(shè)置了看門狗(watchdog),并且配以isp下載接口,但2號(hào)單片機(jī)的p0口與鎖存器74hc573相連接以便直接控制按鍵模塊,同樣rs232通信模塊也直接與2號(hào)單片機(jī)模塊相連接。具體連接方式見各模塊的原理圖。3rs232通信模塊圖1-3本模塊實(shí)現(xiàn)了2號(hào)單片機(jī)與上位機(jī)之間的串
3、口通信,在本次實(shí)驗(yàn)中可以利用串口調(diào)試助手發(fā)送和接收單片機(jī)中的數(shù)據(jù)。45v電源穩(wěn)壓模塊圖1-4本模塊實(shí)現(xiàn)了為1、2號(hào)兩塊單片機(jī)提供5v工作電壓的功能。5.按鍵模塊圖1-5本模塊可以通過程序,使得不同按鍵被按下產(chǎn)生不同的效果。在編程中加入合理的消抖和延時(shí)等待。二、芯片介紹 1at89s52主要性能l 與mcs-51單片機(jī)產(chǎn)品兼容l 8k字節(jié)在系統(tǒng)可編程flash存儲(chǔ)器l 1000次擦寫周期l 全靜態(tài)操作:0hz33hzl 三級(jí)加密程序存儲(chǔ)器l 32個(gè)可編程i/o口線 l 三個(gè)16位定時(shí)器/計(jì)數(shù)器l 八個(gè)中斷源l 全雙工uart串行通道l 低功耗空閑和掉電模式l 掉電后中斷可喚醒l 看門狗定時(shí)器l
4、雙數(shù)據(jù)指針l 掉電標(biāo)識(shí)符 圖1-6圖1-7vcc:電源。gnd:地。p0口:p0口是一個(gè)8位漏極開路的雙向i/o口。p1口:p1口是一個(gè)具有內(nèi)部上拉電阻的8位雙向i/o口。p2口:p2口是一個(gè)具有內(nèi)部上拉電阻的8位雙向i/o口。p3口:p3口是一個(gè)具有內(nèi)部上拉電阻的8位雙向i/o口。rst:復(fù)位輸入。ale/prog:地址鎖存控制信號(hào)(ale)是訪問外部程序存儲(chǔ)器時(shí),鎖存低八位地址的輸出脈沖。psen:外部程序存儲(chǔ)器選通信號(hào)。ea/vpp:訪問外部程序存儲(chǔ)器控制信號(hào)。xtal1:振蕩器反向放大器和內(nèi)部時(shí)鐘發(fā)生電路的輸入端。xtal2:振蕩器反向放大器的輸出端。274hc573 圖1-8 表1-
5、1374hc30八輸入與非門 圖1-9 圖1-10474hc32二輸入與非門 圖1-11 圖1-12524c022k串行eeprom 圖1-13 圖1-14第二章 單片機(jī)應(yīng)用課程設(shè)計(jì)內(nèi)容一、1號(hào)單片機(jī)測(cè)試1、實(shí)驗(yàn)?zāi)康?證明1號(hào)單片機(jī)能夠起振,可以正常工作。2、實(shí)驗(yàn)要求保證1號(hào)單片機(jī)及其外圍電路無(wú)故障。3、實(shí)驗(yàn)設(shè)備電路板一塊,電腦一臺(tái),萬(wàn)用表一塊,下載線一根4、實(shí)驗(yàn)內(nèi)容1、程序設(shè)計(jì)思路和流程圖給p0口全部置1依次給p00p07口置0if(p07=0)?否是圖2-12、程序清單和程序說明/led流水燈 利用軟件實(shí)現(xiàn)延時(shí)控制#include #define leddata p1/定義led燈控制口c
6、onst unsigned char leddis_l=0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00;/led流水燈控制編碼,從右向左const unsigned char leddis_r=0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00;/led流水燈控制編碼,從左向右/名稱:延時(shí)函數(shù) 輸入?yún)?shù):延時(shí)變量 輸出參數(shù):無(wú)void delay(unsigned int count)unsigned char i;while(count-) for(i=255;i;i-);unsigned int main(void) / 主函數(shù)
7、unsigned char i;while(1) for(i=0;i8;i+) leddata = leddis_li; delay(100); /延時(shí)可調(diào)節(jié)led流水燈的速度 delay(200);/間隙延時(shí) for(i=0;i8;i+) leddata = leddis_ri; delay(100); /延時(shí)可調(diào)節(jié)led流水燈的速度return 0;3、調(diào)試中遇到的問題及其解決方法問題:一號(hào)單片機(jī)模塊芯片at89s52不能正常工作。解決:換了一個(gè)芯片后工作正常,說明是芯片問題,電路板正常。二、1號(hào)單片機(jī)與串口1、實(shí)驗(yàn)?zāi)康?測(cè)試1號(hào)單片機(jī)與串口連接是否正常。2、實(shí)驗(yàn)要求要求熟悉單片機(jī)通訊的使
8、用和編程的設(shè)計(jì)思路。3、實(shí)驗(yàn)設(shè)備電路板一塊,電腦一臺(tái),萬(wàn)用表一塊,下載線一根4、實(shí)驗(yàn)內(nèi)容1、設(shè)編寫程序下載到一號(hào)單片機(jī)中在串口調(diào)試助手中觀察顯示結(jié)果與程序是否一致if(一致)?否結(jié)束檢查修改計(jì)思路和流程圖 圖2-22、程序清單和程序說明/*完成串口的接收和發(fā)送 等待上位機(jī)發(fā)送的數(shù)據(jù),并把它加上字符串tiancikj后發(fā)給上位機(jī) 波特率選擇9600,8位,無(wú)校驗(yàn),停止位1*/#include #include uart.h#define led p1/定義led燈控制端口sbit beep = p11;/定義蜂鳴器控制口/變量定義unsigned char dat_temp;unsigned c
9、har flag=0,count = 0;unsigned char dis = tiancikj;void delayms(unsigned int count1) /時(shí)函數(shù)while (count1-) unsigned char count2 = 0;for (; count230; count2+); void voice(void) /發(fā)音 unsigned int count1,count2;for (count1=0; count1800; count1+) beep = beep; delayms(1);for (count2=0; count2400; count2+) be
10、ep = beep; delayms(2); void main(void)/ 主函數(shù)uart_init();/串口初始化led = 0xff;/將led等全熄滅beep = 0; ea = 0;putstring(wellcome to nan jing tian ci ke ji !n);while(1) putstring(please input you choice:n); putstring(a: led on b : led off c: beep d:back n); switch (getchar() case a:putstring(your choice is an);
11、led &= 0xfe;/點(diǎn)亮led0燈 break;case b:putstring(your choice is bn) led |= 0x01;/熄滅led燈 break;case c:putstring(your choice is cn); voice();/蜂鳴器響一下 break;case d:putstring(your choice is d,please retry!n); break;default:putstring(your choice is wrong,please retry!n); break;while(1);void uart_isr(void) inte
12、rrupt 4/串口中斷函數(shù)if(ti)/判斷是否為發(fā)送中斷 ti = 0;if(ri)/判斷是否為接收中斷 ri = 0;3、調(diào)試中遇到的問題及其解決方法實(shí)驗(yàn)時(shí)先完成了2號(hào)單片機(jī)與串口的連接測(cè)試,解決問題后1號(hào)單片機(jī)與串口連接一切正常。4、運(yùn)行結(jié)果:wellcomwellcome to nan jing ci ke ji!please input you choice:a:led on b:led off c:beef d:back三、2號(hào)單片機(jī)與串口1、實(shí)驗(yàn)?zāi)康?測(cè)試2號(hào)單片機(jī)與串口連接是否正常。2、實(shí)驗(yàn)要求要求熟悉單片機(jī)通訊的使用和編程的設(shè)計(jì)思路。3、實(shí)驗(yàn)設(shè)備電路板一塊,電腦一臺(tái),萬(wàn)用表
13、一塊,下載線一根4、實(shí)驗(yàn)內(nèi)容1、編寫程序下載到二號(hào)單片機(jī)中在串口調(diào)試助手中觀察顯示結(jié)果與程序是否一致if(一致)?否結(jié)束檢查修改程序設(shè)計(jì)思路和流程圖 圖2-32、程序清單和程序說明/*完成串口的接收和發(fā)送,等待上位機(jī)發(fā)送的數(shù)據(jù),并把它加上字符串tiancikj后發(fā)給上位機(jī),波特率選擇9600,8位,無(wú)校驗(yàn),停止位1*/#include #include uart.h#define led p1/定義led燈控制端口sbit beep = p11;/定義蜂鳴器控制口/變量定義unsigned char dat_temp;unsigned char flag=0,count = 0;unsigne
14、d char dis = tiancikj;void delayms(unsigned int count1) /時(shí)函數(shù)while (count1-) unsigned char count2 = 0;for (; count230; count2+); void voice(void) /發(fā)音 unsigned int count1,count2;for (count1=0; count1800; count1+) beep = beep; delayms(1);for (count2=0; count2400; count2+) beep = beep; delayms(2); void
15、main(void)/ 主函數(shù)uart_init();/串口初始化led = 0xff;/將led等全熄滅beep = 0; ea = 0;putstring(wellcome to nan jing tian ci ke ji !n);while(1) putstring(please input you choice:n); putstring(a: led on b : led off c: beep d:back n); switch (getchar() case a:putstring(your choice is an); led &= 0xfe;/點(diǎn)亮led0燈 break;c
16、ase b:putstring(your choice is bn); led |= 0x01;/熄滅led燈 break;case c:putstring(your choice is cn); voice();/蜂鳴器響一下 break;case d:putstring(your choice is d,please retry!n); break;default:putstring(your choice is wrong,please retry!n); break;while(1);void uart_isr(void) interrupt 4/串口中斷函數(shù)if(ti) ti = 0
17、;/判斷是否為發(fā)送中斷if(ri) ri = 0;/判斷是否為接收中斷3、調(diào)試中遇到的問題及其解決方法電路板中串口管腳連接不正確,用導(dǎo)線重連。4、運(yùn)行結(jié)果:wellcomwellcome to nan jing ci ke ji!please input you choice:a:led on b:led off c:beef d:back四、2號(hào)單片機(jī)與鍵盤1、實(shí)驗(yàn)?zāi)康?測(cè)試按鍵工作是否正常。2、實(shí)驗(yàn)要求要求熟悉單片機(jī)通訊的使用和編程的設(shè)計(jì)思路。3、實(shí)驗(yàn)設(shè)備電路板一塊,電腦一臺(tái),萬(wàn)用表一塊,下載線一根4、實(shí)驗(yàn)內(nèi)容接電源使二號(hào)單片機(jī)工作按按鈕key17依次給p00p07口置0,用萬(wàn)用表檢驗(yàn)。i
18、f(p0對(duì)應(yīng)口=0)?是否看原理圖檢查電路1、實(shí)驗(yàn)思路和流程圖 圖2-42、調(diào)試中遇到的問題及其解決方法測(cè)量時(shí)發(fā)現(xiàn)74hc04芯片的1、2號(hào)管腳無(wú)反應(yīng),發(fā)現(xiàn)原理圖與實(shí)驗(yàn)電路板不符,1、2號(hào)管腳應(yīng)為5、6號(hào)管腳。電路板中有一條線斷路,用導(dǎo)線連了一條。五、鍵盤與串口1、實(shí)驗(yàn)?zāi)康?掌握按鍵輸入串口顯示的單片機(jī)程序的編寫。2、實(shí)驗(yàn)要求編寫程序使得按鍵按下時(shí)可以通過串口在上位機(jī)上顯示相應(yīng)的值。3、實(shí)驗(yàn)設(shè)備電路板一塊,電腦一臺(tái),萬(wàn)用表一塊,下載線一根4、實(shí)驗(yàn)內(nèi)容1、程序設(shè)計(jì)思路和流程圖接電源使二號(hào)單片機(jī)工作按按鈕key17依次給p00p07口置0,用萬(wàn)用表檢驗(yàn)。if(p0對(duì)應(yīng)口=0)?是否看原理圖檢查電路
19、 圖2-52、程序清單和程序說明#include#include#define uchar unsigned char#define uint unsigned intsbit keyb=p27;sbit int2b=p32;sbit rdb=p37; void delay(int i) int j; for(j=0;ji;j+); void init() tmod=0x20; scon=0x50; th1=0xfa; tl1=0xfa; pcon=0x80; tr1=1; ea=1; es=0; ri=0; ti=0; void display(uchar i) sbuf=i; while(
20、!ti);delay(15000); ti=0; void key() uchar a;p0=0xff;keyb=1; if(int2b=0)delay(1);if(int2b=0) keyb=0;rdb=0; a=p0;switch(a) case 0xfe: display(a);keyb=1;break; case 0xfd: display(b);keyb=1;break;case 0xfb: display(c);keyb=1;break; case 0xf7: display(d); keyb=1; break; case 0xef: display(e);keyb=1;break
21、; case 0xdf: display(f);keyb=1;break; case 0xbf: display(g);keyb=1;break; case 0x7f: display(h);keyb=1;break; void main() init();/初始化串口display(x); while(1) key(); 3、調(diào)試中遇到的問題及其解決方法一切正常4、運(yùn)行結(jié)果依次按按鍵key1key8分別顯示a b c d e f g h六、存儲(chǔ)設(shè)計(jì)1、實(shí)驗(yàn)?zāi)康?實(shí)現(xiàn)24c02芯片的掉電存儲(chǔ)讀寫功能。2、實(shí)驗(yàn)要求要求熟悉單片機(jī)與外部存儲(chǔ)芯片之間相連接時(shí)的使用和編程的設(shè)計(jì)思路。3、實(shí)驗(yàn)設(shè)備電路板
22、一塊,電腦一臺(tái),萬(wàn)用表一塊,下載線一根4、實(shí)驗(yàn)內(nèi)容將1234存入24c02芯片關(guān)閉電源再接通,從芯片中讀取數(shù)據(jù)通過串口調(diào)試助手判斷顯示數(shù)據(jù)與存入的是否相同。1、程序設(shè)計(jì)思路和流程圖 圖2-62、程序清單和程序說明/* 內(nèi)容:此程序用于檢測(cè)eeprom性能,測(cè)試方法如下:寫入24c02一些數(shù)據(jù),然后在內(nèi)存中清除這些數(shù)據(jù), 掉電后主內(nèi)存將失去這些信息,然后從24c02中調(diào)入這些數(shù)據(jù)??词欠衽c寫入的相同。*/ #include /包含頭文件,一般情況不需要改動(dòng),頭文件包含特殊功能寄存器的定義 #include /包含nop空指令函數(shù)_nop_();#define addwr 0xa0 /寫數(shù)據(jù)地址,
23、需要參考24c02芯片文檔 #define addrd 0xa1 /讀數(shù)據(jù)地址 sbit sda=p12; /定義總線連接端口 sbit scl=p13;void mdelay(unsigned char j) / 延時(shí)程序 unsigned int i; for(;j0;j-) for(i=0;i125;i+) ; void start(void) / 啟動(dòng)iic總線 sda=1; _nop_();_nop_(); scl=1; _nop_();_nop_();_nop_();_nop_();_nop_(); sda=0; _nop_();_nop_();_nop_();_nop_();_n
24、op_(); scl=0; void stop(void) / 停止iic總線 sda=0; _nop_(); scl=1; _nop_();_nop_();_nop_();_nop_();_nop_(); sda=1; _nop_();_nop_();_nop_();_nop_();_nop_(); scl=0; void ack(void) /應(yīng)答iic總線 sda=0;_nop_();_nop_();_nop_();scl=1;_nop_();_nop_();_nop_();_nop_();_nop_(); scl=0;_nop_();_nop_();void noack(void) /
25、 非應(yīng)答iic總線sda=1; _nop_();_nop_();_nop_(); scl=1; _nop_();_nop_();_nop_();_nop_();_nop_(); scl=0; _nop_();_nop_(); void send(unsigned char data) /發(fā)送一個(gè)字節(jié) unsigned char bitcounter=8; unsigned char temp; do temp=data; scl=0;_nop_();_nop_();_nop_();_nop_();_nop_(); if(temp&0x80)=0x80) sda=1; else sda=0; s
26、cl=1; temp=data1;data=temp;bitcounter-; while(bitcounter); scl=0; unsigned char read(void) /讀入一個(gè)字節(jié)并返回 unsigned char temp=0; unsigned char temp1=0;unsigned char bitcounter=8; sda=1; do scl=0; _nop_();_nop_();_nop_();_nop_();_nop_(); scl=1; _nop_();_nop_();_nop_();_nop_();_nop_(); if(sda) temp=temp|0x
27、01; else temp=temp&0xfe; if(bitcounter-1) temp1=temp1; temp=temp1; bitcounter-; while(bitcounter); return(temp); void wrtorom(unsigned char data,unsigned char address,unsigned char num) / 寫入數(shù)據(jù) unsigned char i; unsigned char *pdata; pdata=data; for(i=0;inum;i+) start(); send(addwr); /寫入芯片地址 ack(); se
28、nd(address+i);/寫入存儲(chǔ)地址 ack(); send(*(pdata+i);/寫數(shù)據(jù) ack(); stop(); mdelay(20); void rdfromrom(unsigned char data,unsigned char address,unsigned char num) /讀出數(shù)據(jù) unsigned char i; unsigned char *pdata; pdata=data; for(i=0;inum;i+) start(); /寫入芯片地址 send(addwr);ack(); send(address+i);/寫入存儲(chǔ)地址 ack(); start(); send(addrd); /讀入地址 ack()
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 中央空調(diào)保修合同范本
- 高層逃生應(yīng)急演練
- 濮陽(yáng)買二手房合同范本
- 親戚的房子買賣合同范本
- 《頭穴叢刺、補(bǔ)陽(yáng)還五湯-加味及其組合對(duì)缺血性中風(fēng)大鼠NSC影響的對(duì)比研究》
- 代購(gòu)合同范本
- 《聯(lián)誼醫(yī)院患者滿意度研究》
- 《超重肥胖兒童精細(xì)動(dòng)作能力特征及相關(guān)機(jī)制研究》
- 《李慈銘批判詩(shī)學(xué)研究》
- 奶罐車運(yùn)輸合同范本
- 奧林匹克標(biāo)準(zhǔn)體育館設(shè)施配置
- 節(jié)日景觀布置投標(biāo)方案(技術(shù)方案)
- (教案)Unit 3 Celebrations Topic Talk 高中英語(yǔ)北師大版 必修 一
- 小學(xué)生主題班會(huì):自立自強(qiáng)勇攀高峰模板
- 資方和項(xiàng)目方的合作協(xié)議范本
- 習(xí)作單元解讀及其教學(xué)策略
- “雙減”背景下小學(xué)排球運(yùn)動(dòng)發(fā)展路徑探索
- 八年級(jí)地理上冊(cè)第一、二章測(cè)試題及(答案)
- 【語(yǔ)文】黃岡市四年級(jí)上冊(cè)期末復(fù)習(xí)試卷(含答案)
- 滑雪教練職業(yè)規(guī)劃書
- 期中測(cè)試卷(試題)北師大版三年級(jí)上冊(cè)數(shù)學(xué)
評(píng)論
0/150
提交評(píng)論