




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、(20102011學(xué)年第二學(xué)期)實(shí)驗(yàn)報(bào)告 課程名稱(chēng) 單片機(jī)原理及應(yīng)用 專(zhuān)業(yè)班級(jí) 姓名學(xué)號(hào) 指導(dǎo)教師 所在學(xué)院 信息科技學(xué)院 2011年 6月 目 錄實(shí)驗(yàn)項(xiàng)目一 輸入/ 輸出端口的基本應(yīng)用實(shí)驗(yàn)項(xiàng)目二 定時(shí)/計(jì)數(shù)器的基本應(yīng)用實(shí)驗(yàn)項(xiàng)目三 中斷系統(tǒng)的基本應(yīng)用實(shí)驗(yàn)項(xiàng)目四 led數(shù)碼管的基本應(yīng)用實(shí)驗(yàn)項(xiàng)目五 單片機(jī)鍵盤(pán)的基本應(yīng)用實(shí)驗(yàn)項(xiàng)目六 單片機(jī)串口通訊實(shí)驗(yàn)實(shí)驗(yàn)項(xiàng)目七 adc0808的基本應(yīng)用實(shí)驗(yàn)項(xiàng)目把 基于at89c51的簡(jiǎn)單電子萬(wàn)年歷237實(shí)驗(yàn)項(xiàng)目一 輸入/ 輸出端口的基本應(yīng)用1 實(shí)驗(yàn)?zāi)康? 了解mcs-51單片機(jī)的輸入/輸出端口的基本工作原理與使用方法;掌握mcs-51單片機(jī)的延時(shí)函數(shù)的時(shí)間估算方法。
2、2. 實(shí)驗(yàn)內(nèi)容 實(shí)現(xiàn)與單片機(jī)某一端口相連的發(fā)光二極管的閃爍控制,要點(diǎn)亮0.2s,熄滅0.2s;3. 實(shí)驗(yàn)電路框圖4.實(shí)驗(yàn)任務(wù)分析硬件電路說(shuō)明設(shè)置at89c51的震蕩頻率為6mhz,它的機(jī)器周期為2us,發(fā)光二極管接在p1.0端口,當(dāng)p1.0端口上為低電平則led亮,否則為滅。軟件設(shè)計(jì)說(shuō)明用三個(gè)for 循環(huán)來(lái)延時(shí),通過(guò)延時(shí)函數(shù)來(lái)延遲燈亮滅的時(shí)間。5.實(shí)驗(yàn)流程框圖開(kāi)始延遲0.2sp1.0輸出“0”,l1點(diǎn)亮延遲0.2sp1.0輸出“1”,l1熄滅 6.實(shí)驗(yàn)過(guò)程記錄實(shí)驗(yàn)過(guò)程 問(wèn)題及解決方法如何表示p1.0,如何延時(shí)0.2s,怎樣才能讓函數(shù)永遠(yuǎn)循環(huán)?解決方法:用sbit p1_0=p10表示p1.0。
3、 用三個(gè)for循環(huán)用來(lái)延時(shí)。 用while(1),循環(huán)條件永遠(yuǎn)為真,以下程序永遠(yuǎn)運(yùn)行下去。7.實(shí)驗(yàn)總結(jié)#define uchar unsigned char#define uint unsigned char可以簡(jiǎn)便。延時(shí)函數(shù)可以用用三個(gè)for循環(huán)加空語(yǔ)句。8.成績(jī)?cè)u(píng)定附錄 實(shí)驗(yàn)源程序/*預(yù)處理部分*/#include<reg52.h>#define uchar unsigned char#define uint unsigned char/*變量的定義*/sbit p1_0=p10;/*子函數(shù)部分*/void delay_ms(int x) uchar i,j,k; /定義三個(gè)無(wú)
4、符號(hào)字符型變量for(i=0;i<x;i+) /三個(gè)for循環(huán)用來(lái)延遲 for(j=2;j>0;j-) for(k=248;k>0;k-) ;/*主函數(shù)部分*/void main(void) while(1)p1_0=1; / p1口輸出高電平,讓led點(diǎn)暗delay_ms(200) ; / 延遲200msp1_0=0; /p1口輸出低電平,讓led點(diǎn)亮delay_ms(200) ; /延遲200ms /*中斷函數(shù)部分*/實(shí)驗(yàn)項(xiàng)目二 定時(shí)/計(jì)算器的基本應(yīng)用1實(shí)驗(yàn)?zāi)康?掌握mcs-51定時(shí)/計(jì)數(shù)器的基本工作原理與使用方法; 了解mcs-51單片機(jī)的中斷服務(wù)程序的基本設(shè)計(jì)方法。2
5、. 實(shí)驗(yàn)內(nèi)容 用定時(shí)器t0實(shí)現(xiàn)與p1.0端口相連的發(fā)光二極管以1hz的頻率閃爍用定時(shí)器t1實(shí)現(xiàn)與p1.1端口相連的發(fā)光二極管以2hz的頻率閃爍。 3. 實(shí)驗(yàn)電路框圖4. 實(shí)驗(yàn)任務(wù)分析硬件電路說(shuō)明設(shè)置系統(tǒng)的時(shí)鐘頻率為12mhz,利用定時(shí)/器計(jì)數(shù)器t0編程實(shí)現(xiàn)。將兩個(gè)led分別接在p1.0,p1.1上。軟件設(shè)計(jì)說(shuō)明從p1.0輸出周期為1s的方波,只需p1.0每隔0.5s取反一次,從p1.1輸出周期為2s的方波,只需p1.0每隔1s取反一次。當(dāng)系統(tǒng)時(shí)鐘為12mhz,定時(shí)器/計(jì)數(shù)器t0工作于方式一,最大的定時(shí)時(shí)間為65536us,th0=(65536-50000)/256; tl0=(65536-50
6、000)%256; p1.0每循環(huán)10次取反一次,p1.1每循環(huán)20次取反一次。5. 實(shí)驗(yàn)流程框圖開(kāi)始開(kāi)啟定時(shí)器中斷設(shè)置t0工作方式,置計(jì)數(shù)初值0.5s到?發(fā)光狀態(tài)取反另一發(fā)光二極管狀態(tài)取反等待中斷1 s到?進(jìn)入中斷二個(gè)計(jì)數(shù)器加1返回 6. 實(shí)驗(yàn)過(guò)程記錄實(shí)驗(yàn)過(guò)程問(wèn)題及解決方法系統(tǒng)只能循環(huán)一次,不能反復(fù)循環(huán)。解決方法:將num1,num2賦予原值7. 實(shí)驗(yàn)總結(jié)學(xué)會(huì)了用查詢方式來(lái)定時(shí)。當(dāng)計(jì)數(shù)溢出時(shí),tf0為1; 學(xué)會(huì)用th0=(65536-50000)/256; tl0=(65536-50000)%256; 來(lái)確定初值的第四位,高四位。(3)學(xué)會(huì)了定時(shí)器/計(jì)數(shù)器的初始化。確定工作方式,對(duì)tmod賦
7、值。計(jì)算定時(shí)或計(jì)數(shù)的初值,將初值寫(xiě)入th0,tl0或th1,tl1。根據(jù)需要開(kāi)啟定時(shí)器/計(jì)數(shù)器中斷,對(duì)ie寄存器賦值。啟動(dòng)定時(shí)器/計(jì)數(shù)器工作,將tr0或tr1置“1”。8. 成績(jī)?cè)u(píng)定附錄 實(shí)驗(yàn)源程序/*預(yù)處理部分*/#include <reg51.h>#define uchar unsigned char#define uint unsigned int/*變量定義部分*/sbit led1=p10; sbit led2=p11; /*子函數(shù)部分*/void timer0_init() tmod=0x01; /設(shè)置定時(shí)器0為為工作方式1 th0=(65536-50000)/256;
8、 /設(shè)置初值 tl0=(65536-50000)%256; tr0=1;/*主函數(shù)部分*/void main(void) uchar num1=0,num2=0; timer0_init(); while(1) dowhile(!tf0); /等待直到查詢計(jì)數(shù)溢出num1+; num2+; th0=(65536-50000)/256; tl0=(65536-50000)%256; tf0=0; if(num1>=10) led1=!led1; /發(fā)光管狀態(tài)取反 num1=0; /num1清零,從新再計(jì) if(num2>=20) /1s時(shí)間到 led2=!led2; /發(fā)光管狀態(tài)取反
9、 num2=0; /num2清零,從新再計(jì) /*中斷函數(shù)部分*/實(shí)驗(yàn)項(xiàng)目三 中斷系統(tǒng)的基本應(yīng)用1實(shí)驗(yàn)?zāi)康?掌握mcs-51中斷系統(tǒng)的基本工作原理與使用方法; 掌握mcs-51單片機(jī)的中斷服務(wù)程序的基本設(shè)計(jì)方法。2. 實(shí)驗(yàn)內(nèi)容 基本部分:在p2端口接8個(gè)led燈,用定時(shí)器t0,采用中斷方式,每隔1s使點(diǎn)亮的led增加1個(gè);當(dāng)8個(gè)led全部點(diǎn)亮后,重新開(kāi)始下一個(gè)循環(huán)。 提高部分:在p3.2端口接一個(gè)按鍵開(kāi)關(guān),由它來(lái)控制以上led的循環(huán)點(diǎn)亮,要求也采用中斷控制方式。 3. 實(shí)驗(yàn)電路框圖4. 實(shí)驗(yàn)任務(wù)分析硬件電路說(shuō)明在p2端口接8個(gè)led燈,用定時(shí)器t0,采用中斷方式,系統(tǒng)的震蕩周期為12mhz,它的
10、機(jī)器周期為1us.軟件設(shè)計(jì)說(shuō)明每隔1s使點(diǎn)亮的led增加1個(gè);當(dāng)8個(gè)led全部點(diǎn)亮后,重新開(kāi)始下一個(gè)循環(huán)。當(dāng)系統(tǒng)時(shí)鐘為12mhz,定時(shí)器/計(jì)數(shù)器t0工作于方式一,最大的定時(shí)時(shí)間為65536us, tl0=(65536-50000)%256;th0=(65536-10000)/256; 一經(jīng)過(guò)100次中斷,p2向左移動(dòng)個(gè)0;5. 實(shí)驗(yàn)流程框圖to中斷入口tcnt加1tcnt=nsec加1tcnt=400嗎?sec=100嗎?中斷返回處理sec并顯示sec=0 6. 實(shí)驗(yàn)過(guò)程記錄實(shí)驗(yàn)過(guò)程問(wèn)題及解決方法系統(tǒng)一開(kāi)始只有一個(gè)循環(huán),一個(gè)循環(huán)結(jié)束后不能回到起點(diǎn)。解決方法:if(p2=0x00) p2=0x7
11、f; 使得系統(tǒng)重新從第一個(gè)燈開(kāi)始循環(huán)點(diǎn)亮。7. 實(shí)驗(yàn)總結(jié)學(xué)會(huì)用中斷函數(shù)來(lái)計(jì)時(shí)。(2)學(xué)會(huì)用依次向左移0來(lái)循環(huán)點(diǎn)亮小燈 8. 成績(jī)?cè)u(píng)定附錄 實(shí)驗(yàn)源程序/*預(yù)處理部分*/#include <reg51.h>#define uchar unsigned char#define uint unsigned int/*變量定義部分*/uchar num1; /*子函數(shù)部分*/void _init_timer0() tmod=0x01; th0=(65536-50000)/256; tl0=(65536-50000)%256; et0=1; ea=1; tr0=1;/*主函數(shù)部分*/void
12、main(void) init_timer0(); p2=0xff; /p2端口設(shè)置初值 while(1) if(p2=0x00) /8個(gè)燈循環(huán)后,再回到第一個(gè)燈 p2=0x7f; if(num1=100) /1s到 num1=0; /num1清零,重新計(jì)時(shí) p2=p2<<1; /向左移一個(gè)燈 /*中斷函數(shù)部分*/ void int_timer0(void) interrupt 1 num1+; th0=(65536-10000)/256; /重置初值 tl0=(65536-10000)%256; 實(shí)驗(yàn)項(xiàng)目四 led數(shù)碼管的基本應(yīng)用1實(shí)驗(yàn)?zāi)康?了解led數(shù)碼管的基本工作原理與使用范
13、圍; 掌握l(shuí)ed數(shù)碼管靜態(tài)顯示程序的基本設(shè)計(jì)方法; 掌握l(shuí)ed數(shù)碼管動(dòng)態(tài)顯示程序的基本設(shè)計(jì)方法;2. 實(shí)驗(yàn)內(nèi)容 基本部分:用led數(shù)碼管設(shè)計(jì)一個(gè)099秒的計(jì)數(shù)器,led的顯示方式可以采用靜態(tài)顯示方式實(shí)現(xiàn); 提高部分:用led數(shù)碼管設(shè)計(jì)一個(gè)099.99秒的計(jì)數(shù)器,led的顯示方式采用動(dòng)態(tài)顯示方式實(shí)現(xiàn)。 3. 實(shí)驗(yàn)電路框圖 4. 實(shí)驗(yàn)任務(wù)分析硬件電路說(shuō)明軟件設(shè)計(jì)說(shuō)明5. 實(shí)驗(yàn)流程框圖開(kāi)始秒計(jì)數(shù)器加1計(jì)時(shí)器是否到99計(jì)數(shù)器清零分離出十位和個(gè)位顯示ny6. 實(shí)驗(yàn)過(guò)程記錄實(shí)驗(yàn)過(guò)程 問(wèn)題及解決方法怎么實(shí)現(xiàn)099依次增加?將各位十位用延遲函數(shù)分開(kāi)顯示。7. 實(shí)驗(yàn)總結(jié)知道了p0=0xff;p2=0x00;是消
14、影,使顯示更加清楚。用switc(i&0x01)case語(yǔ)句來(lái)控制at89c51的p20, p21是輸出高電平還是低電平。8. 成績(jī)?cè)u(píng)定附錄 實(shí)驗(yàn)源程序/*預(yù)處理部分*/#include<reg51.h>/*變量定義*/unsigned char i,second;unsigned seg_table=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;/*子函數(shù)部分*/void timer0_init () tmod=0x01; /設(shè)置定時(shí)器0為為工作方式1 th0=(65534-2000)/256; /設(shè)置初值 tl0=(
15、65534-2000)%256; ea=1; /開(kāi)啟中斷et0=1; /開(kāi)啟定時(shí)器0中斷 tr0=1; /開(kāi)啟定時(shí)器/*主函數(shù)部分*/ void main (void) timer0_init(); second=00; while(1) switch(i&0x01)/個(gè)位十位分開(kāi)顯示 case 0: p0=0xff;p2=0x00; p0=seg_tablesecond%10;p2=0x02; break; case 1: p0=0xff;p2=0x00; p0=seg_tablesecond/10;p2=0x01; break; default:break; /*中斷函數(shù)*/ vo
16、id timer0_int() interrupt 1 th0=(65536-2000)/256;/重置初值 tl0=(65536-2000)%256; i+; if(i=250) second+; if(second=100) second=0;/時(shí)間到100秒是清零 實(shí)驗(yàn)項(xiàng)目五 單片機(jī)鍵盤(pán)的基本應(yīng)用1實(shí)驗(yàn)?zāi)康?了解獨(dú)立式鍵盤(pán)的基本工作原理與使用范圍; 掌握獨(dú)立式鍵盤(pán)的識(shí)別方法、軟件消抖的原理; 掌握獨(dú)立式鍵盤(pán)程序的基本設(shè)計(jì)方法。2. 實(shí)驗(yàn)內(nèi)容 基本部分:在mcs-51的p3.2管腳接一獨(dú)立按鍵,再p1端口接8個(gè)led,要求用按鍵來(lái)控制led的循環(huán)點(diǎn)亮; 提高部分:將基本部分中l(wèi)ed的點(diǎn)亮方
17、式改為閃爍。 3. 實(shí)驗(yàn)電路框圖4. 實(shí)驗(yàn)任務(wù)分析硬件電路說(shuō)明讓8盞led燈分別接在at89c51的p1端口。p3.2接按鍵。軟件設(shè)計(jì)說(shuō)明軟件主要包括延時(shí)函數(shù),移動(dòng)函數(shù),和一個(gè)主函數(shù)。移動(dòng)函數(shù)用位運(yùn)算,實(shí)行燈的循環(huán)移動(dòng)。5. 實(shí)驗(yàn)流程框圖開(kāi)始延時(shí)10ms寄存器初始化i/o端口初始化送p1口顯示有鍵按下有鍵按下a=temp<<count;b=temp>>(8-count);p1=a|b;6. 實(shí)驗(yàn)過(guò)程記錄實(shí)驗(yàn)過(guò)程 問(wèn)題及解決方法不知道怎么樣才能讓燈閃爍?在主函數(shù)里加上一個(gè)p1端口為高電平。怎樣讓燈依次向左移動(dòng)?a=temp<<count; b=temp>
18、>(8-count);p1=a|b;怎么讓按鍵鎖定?button=0.實(shí)驗(yàn)總結(jié)軟件消影的原理:p1=0xff.確認(rèn)按鍵按下的步驟:(1)初次判斷是否按下鍵盤(pán)。(2)延時(shí)函數(shù)。(3)再次判斷是否按下鍵盤(pán)。8. 成績(jī)?cè)u(píng)定附錄 實(shí)驗(yàn)源程序/*預(yù)處理部分*/#include <reg51.h>/*變量定義*/sbit button=p32;/定義按鍵的輸入端unsigned char count;/按鍵計(jì)數(shù),每按一下,count加1unsigned char temp;unsigned char a,b;/*子函數(shù)部分*/void delay10ms(void)/延遲程序 unsig
19、ned char i,j; for(i=20;i>0;i-) for(j=248;j>0;j-) ;key()/按鍵判斷程序 if(button=0/判斷是否按下鍵盤(pán)) delay10ms();/延遲,軟件去干擾 if(button=0)/確定按鍵按下 count+;/按鍵計(jì)數(shù)加1if(count=8)/計(jì)8次重新開(kāi)始 count=0;/將count清零 while(button=0);/按鍵鎖定,每按一下count只加1 move()/led向左移動(dòng)移動(dòng)函數(shù) a=temp<<count; b=temp>>(8-count); p1=a|b; /*主函數(shù)部分
20、*/main() count=0;temp=0xfe;p1=0xff;p1=temp;while(1)/永遠(yuǎn)循環(huán),掃描判斷按鍵是否按下 key();/調(diào)用按鍵識(shí)別函數(shù) move();/調(diào)用led移動(dòng)函數(shù) p1=0xff;/*中斷函數(shù)部分*/實(shí)驗(yàn)項(xiàng)目六 單片機(jī)串口通訊實(shí)驗(yàn)1實(shí)驗(yàn)?zāi)康?了解mcs-51單片機(jī)串口的基本工作原理與使用范圍; 掌握mcs-51單片機(jī)串口通訊程序的基本設(shè)計(jì)方法。2. 實(shí)驗(yàn)內(nèi)容 基本部分:在proteus軟件中采用串口虛擬終端,編寫(xiě)一個(gè)發(fā)送程序,將自己的學(xué)號(hào)發(fā)送到虛擬終端顯示; 提高部分:在單片機(jī)甲的口接個(gè)開(kāi)關(guān),再單片機(jī)乙的口接個(gè),編寫(xiě)程序,將單片機(jī)甲的開(kāi)關(guān)狀態(tài)再單片機(jī)乙上
21、顯示出來(lái)。 3. 實(shí)驗(yàn)電路框圖基本部分 提高部分 4. 實(shí)驗(yàn)任務(wù)分析硬件電路說(shuō)明基本實(shí)驗(yàn):at89c51的振蕩頻率為6mhz,p3.0/rx0與串口檢測(cè)工具的tx0相連,p3.0/tx0與串口檢測(cè)工具的rx0相連。提高部分:?jiǎn)纹瑱C(jī)甲發(fā)送機(jī),它的p1端口接8個(gè)開(kāi)關(guān);單片機(jī)乙接受機(jī),它的p1端口接8個(gè)led。單片機(jī)甲的開(kāi)關(guān)閉合為低電平,不閉合為高電平。將單片機(jī)甲p3.0/tx0與單片機(jī)已p3.0/rx0相連。軟件設(shè)計(jì)說(shuō)明設(shè)置串口方式一,scon=0x40; pcon=0x00;設(shè)置計(jì)數(shù)器方式二,tmod=0x20;設(shè)置波特率為1200 ,th1=0xf3;tl1=0xf3;啟動(dòng)定時(shí)器tr1=1。5
22、. 實(shí)驗(yàn)流程框圖波特率,串行口方式設(shè)置開(kāi)始啟動(dòng)定時(shí)器i<12,?開(kāi)始開(kāi)始發(fā)送數(shù)據(jù)波特率,串行口方式設(shè)置啟動(dòng)定時(shí)器發(fā)送數(shù)據(jù)波特率,串行口方式設(shè)置啟動(dòng)定時(shí)器接收數(shù)據(jù)6. 實(shí)驗(yàn)過(guò)程記錄實(shí)驗(yàn)過(guò)程基本部分提高部分問(wèn)題及解決方法1起先輸不出學(xué)號(hào),是連串的亂碼。解決方法:89c51的頻率沒(méi)有匹配,要設(shè)定為6兆。7. 實(shí)驗(yàn)總結(jié)要進(jìn)行串口初始化,并且要設(shè)定好串行口的工作方式。 8. 成績(jī)?cè)u(píng)定附錄 實(shí)驗(yàn)源程序#include<reg51.h>void main()unsigned char a="201005014102"unsigned int i;scon=0x40; /
23、設(shè)置串行口為工作方式2pcon=0x00; /系統(tǒng)復(fù)位tmod=0x20; /設(shè)置定時(shí)器1為工作方式2th1=0xf3; /設(shè)置計(jì)數(shù)器初值tr1=1;while (1)for(i=0;i<12;i+)sbuf=ai;/輸入學(xué)號(hào) while(!ti) ; ti=0; 提高部分 發(fā)射/*預(yù)處理部分*/#include <reg51.h>/*變量定義部分*/ /*子函數(shù)部分*/*主函數(shù)部分*/void main() scon=0x40; /設(shè)置串行口為工作方式2(10000000) pcon=0x00; /系統(tǒng)復(fù)位(00000000)波特率不倍增 tmod=0x20; /設(shè)置定時(shí)器
24、1為工作方式2(00000010) th1=0xf3; /設(shè)置計(jì)數(shù)器初值 tl1=0xf3; tr1=1; /開(kāi)啟定時(shí)器/計(jì)數(shù)器工作,開(kāi)始提供1200波特率 while(1) sbuf=p1; /串行傳送 do; while(!ti); /等待串行傳送完畢ti=0; /t1軟件清零,為下一次傳送數(shù)據(jù)做準(zhǔn)備 /*中斷函數(shù)部分*接受部分/*預(yù)處理部分*/#include <reg51.h>#define uchar unsigned char/*變量定義部分*/ /*子函數(shù)部分*/*主函數(shù)部分*/void main() /unsigned int i; scon=0x50; /設(shè)置串行
25、口為工作方式2(10010000) pcon=0x00; /系統(tǒng)復(fù)位(00000000)波特率不倍增 tmod=0x20; /設(shè)置定時(shí)器1為工作方式2(00000010) th1=0xf3; /設(shè)置計(jì)數(shù)器初值 tl1=0xf3; tr1=1; /開(kāi)啟定時(shí)器/計(jì)數(shù)器工作,開(kāi)始提供1200波特率 while(1) do;while(!ri) ; /等待串行接收完畢ri=0; /r1軟件清零,為下一次接收數(shù)據(jù)做準(zhǔn)備p1=sbuf; /將串行數(shù)據(jù)傳遞給p1/*中斷函數(shù)部分*/實(shí)驗(yàn)項(xiàng)目七 adc0808的基本應(yīng)用1實(shí)驗(yàn)?zāi)康?了解adc0808基本工作原理與使用方法; 掌握mcs-51單片機(jī)adc程序的基
26、本設(shè)計(jì)方法。2. 實(shí)驗(yàn)內(nèi)容 基本部分:利用at89c51和adc0808設(shè)計(jì)一個(gè)簡(jiǎn)單的數(shù)字電壓表,測(cè)量范圍0-4.99v,采用3位led數(shù)碼管將采樣后的結(jié)果進(jìn)行顯示; 提高部分:將數(shù)字電壓表的測(cè)量范圍改為0-9.99v;將基本部分的單通道數(shù)字電壓表設(shè)計(jì)成一個(gè)8通道的數(shù)字電壓表。 3. 實(shí)驗(yàn)電路框圖 4. 實(shí)驗(yàn)任務(wù)分析硬件電路說(shuō)明adc0808的a,b,c接地選通0通道,在0通道上外接05v變化的電源,adc808的輸出端口與at89c51的p1端口相連, p2端口作為控制端口,p0端口與顯示譯碼管相連。軟件設(shè)計(jì)說(shuō)明軟件組要由顯示函數(shù),中斷函數(shù),主函數(shù)構(gòu)成。5. 實(shí)驗(yàn)流程框圖讀取ad轉(zhuǎn)換啟動(dòng)ad
27、轉(zhuǎn)換開(kāi)始設(shè)置t0工作方式,置計(jì)數(shù)初值開(kāi)啟定時(shí)器中斷分出百,十,個(gè)位0.2s到?等待中斷進(jìn)入中斷i+返回6. 實(shí)驗(yàn)過(guò)程記錄實(shí)驗(yàn)過(guò)程 問(wèn)題及解決方法怎樣將將二進(jìn)制轉(zhuǎn)換成十進(jìn)制?將p0=n/5.1*10;7. 實(shí)驗(yàn)總結(jié)用switch來(lái)選擇顯示百,十,個(gè)。 學(xué)會(huì)用adc808來(lái)進(jìn)行ad轉(zhuǎn)換。8. 成績(jī)?cè)u(píng)定附錄 實(shí)驗(yàn)源程序/*預(yù)處理部分*/#include<reg51.h>#define uchar unsigned char/*變量定義*/ sbit st_abc0808=p36; sbit oe_abc0808=p35; sbit eoc_abc0808=p32; sbit ale=p3
28、7; unsigned int a1,a2,a3,n,i;unsigned char code table0=0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10;/數(shù)碼管編碼,小數(shù)點(diǎn)點(diǎn)亮unsigned char code table1=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;/數(shù)碼管編碼,小數(shù)點(diǎn)不點(diǎn)亮/*子函數(shù)*/void time0_init() tmod=0x01; /設(shè)置定時(shí)器0為為工作方式1(00000001) th0=(65534-2000)/256; /設(shè)置初值 tl0=(
29、65534-2000)%256; ea=1; /開(kāi)啟中斷et0=1; /開(kāi)啟定時(shí)器0中斷tr0=1; /開(kāi)啟定時(shí)器 void display()/顯示函數(shù) a1=n/100; /百位 a2=(n%100)/10; /十位 a3=n%10; /個(gè)位switch(i%3) case 0 : p0=0xff;p2=0x01;p0=table0a1;break; case 1 : p0=0xff;p2=0x02;p0=table1a2;break; case 2 : p0=0xff;p2=0x04;p0=table1a3;break; default:break; /*主函數(shù)*/ void main(
30、) time0_init(); while(1) st_abc0808=0; /開(kāi)始轉(zhuǎn)換st_abc0808=1;ale=1;time0_init();st_abc0808=0; while(!eoc_abc0808);/等待轉(zhuǎn)換結(jié)束 oe_abc0808=1;n=p1/5.1*10; /二進(jìn)制轉(zhuǎn)換成十進(jìn)制 display(); oe_abc0808=0; /*中斷函數(shù)*/ void time0_int(void) interrupt 1 th0=(65534-2000)/256; /重裝初值 tl0=(65534-2000)%256; i+; 實(shí)驗(yàn)項(xiàng)目八 基于at89c51的簡(jiǎn)單電子萬(wàn)年歷1
31、實(shí)驗(yàn)?zāi)康?了解電子萬(wàn)年歷的基本工作原理與使用方法; 掌握at89c51設(shè)計(jì)電子萬(wàn)年歷的基本方法。2. 實(shí)驗(yàn)內(nèi)容 基本部分:利用at89c51和7段led數(shù)碼管設(shè)計(jì)一個(gè)簡(jiǎn)單的電子萬(wàn)年歷,能顯示時(shí)間、星期、年、月、日,并能進(jìn)行設(shè)置; 提高部分:將電子萬(wàn)年歷增加一個(gè)鬧鐘功能;當(dāng)設(shè)定的鬧鐘時(shí)間到時(shí),讓單片機(jī)演奏一段音樂(lè)。 3. 實(shí)驗(yàn)電路框圖 4. 實(shí)驗(yàn)任務(wù)分析硬件電路說(shuō)明ds1302是dallas公司推出的 涓流充電時(shí)鐘芯片,內(nèi)含有一個(gè)實(shí)時(shí)時(shí)鐘/日歷和31字節(jié)靜態(tài)ram通過(guò)簡(jiǎn)單的串行接口與單片機(jī)進(jìn)行通信,實(shí)時(shí)時(shí)鐘/日歷電路提供秒、分、時(shí)、日、日期、月、年的信息。ds1302與單片機(jī)之間采用同步串行的方
32、式進(jìn)行通信僅需要用到三個(gè)口線(1)res(復(fù)位),(2)i/o(數(shù)據(jù)線),(3)sclk(串行時(shí)鐘).軟件設(shè)計(jì)說(shuō)明構(gòu)建數(shù)組uchar settime7=0x50,0x59,0x09,0x28,0x09,0x07,0x08來(lái)設(shè)置秒、分、時(shí)、日、日期、月、年;設(shè)計(jì)函數(shù)ds1302_get1302(gettime)獲得當(dāng)前時(shí)間;設(shè)計(jì)函數(shù)disp_time(gettime)顯示當(dāng)前時(shí)間。實(shí)驗(yàn)流程框圖led數(shù)碼管數(shù)碼管顯示部分晶振電路復(fù)位電路單片機(jī)at89c51時(shí)間調(diào)整電路6. 實(shí)驗(yàn)過(guò)程記錄實(shí)驗(yàn)過(guò)程問(wèn)題及解決方法怎樣將16進(jìn)制轉(zhuǎn)換成10進(jìn)制?用void bcd_ascii(uchar bcd,uchar
33、 ptasc) int dec; dec=(bcd&15)+(bcd>>4)*10); ptasc0=dec/10; ptasc1=dec%10; 函數(shù)將bcd碼轉(zhuǎn)換成ascii碼。7. 實(shí)驗(yàn)總結(jié)掌握了ds1302的原理與工作方法。8. 成績(jī)?cè)u(píng)定/*預(yù)處理部分*/#include <reg51.h>#define uchar unsigned char#define uint unsigned int/*變量定義部分*/sbit t_clk=p21; /實(shí)時(shí)時(shí)鐘時(shí)鐘線引腳sbit t_io=p20;/實(shí)時(shí)時(shí)鐘時(shí)鐘數(shù)據(jù)線引腳sbit t_rst=p25; /實(shí)時(shí)時(shí)
34、鐘時(shí)鐘復(fù)位線引腳unsigned table=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90; /*子函數(shù)部分*/void delay(uint i)for(;i<248;i+); void time1() unsigned char k,l; unsigned int n; for(k=0;k<10;k+) for(l=0;l<10;l+) for(n=0;n<2;n+); void ds1302_inputbyte(uchar ucda) /往ds1302寫(xiě)入1byte數(shù)據(jù) uchar i; uchar temp;
35、 temp=ucda; for(i=8;i>0;i-) t_io=temp&0x01; t_clk=1; t_clk=0; temp=temp>>1; uchar ds1302_outputbyte(void)/從ds1302讀取1byte數(shù)據(jù) uchar i; uchar temp; temp=0; for(i=0;i<8;i+) t_clk=0; if(t_io!=0)temp|=(1<<i); t_clk=1; return(temp); void ds1302_w1302(uchar ucaddr,uchar ucda) /往ds1302寫(xiě)入
36、數(shù)據(jù) t_rst=0; t_clk=0; t_rst=1; ds1302_inputbyte(ucaddr); ds1302_inputbyte(ucda); t_clk=1; t_rst=0; uchar ds1302_r1302(uchar ucaddr)/讀取ds1302某地址的數(shù)據(jù) uchar ucda; t_rst=0; t_clk=0; t_rst=1; ds1302_inputbyte(ucaddr); ucda=ds1302_outputbyte(); t_clk=1; t_rst=0; return(ucda); void ds1302_burstw1302t(uchar *
37、psecda) /往ds1302寫(xiě)入時(shí)鐘數(shù)據(jù) uchar i; ds1302_w1302(0x8e,0x00); t_rst=0; t_clk=0; t_rst=1; ds1302_inputbyte(0xbe); for(i=8;i>0;i-) ds1302_inputbyte(*psecda); psecda+; t_clk=1; t_rst=0; void ds1302_burstr1302t(uchar *psecda)/讀取ds1302時(shí)鐘數(shù)據(jù) uchar i; t_rst=1; t_clk=0; t_rst=1; ds1302_inputbyte(0xbf); for(i=8
38、;i>0;i-) *psecda=ds1302_outputbyte(); psecda+; t_clk=1; t_rst=0; void ds1302_set1302(uchar *psecda) /設(shè)置初始時(shí)間 uchar i; uchar ucaddr=0x80; ds1302_w1302(0x8e,0x00); for(i=7;i>0;i-) ds1302_w1302(ucaddr,*psecda); psecda+; ucaddr+=2; ds1302_w1302(0x8e,0x80); void ds1302_get1302(uchar uccurtime) /讀取ds1302當(dāng)前時(shí)間 uchar i; uchar ucaddr=0x81; for(i=0;i<7;i+) uccurtimei=ds1302_r1302(ucaddr); ucaddr+=2; void b
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二年級(jí)上數(shù)學(xué)教案 課件-除法的的初步認(rèn)識(shí)第二課時(shí)-西師大版
- 幾倍(教案)二年級(jí)上冊(cè)數(shù)學(xué)滬教版
- 2025年分手費(fèi)補(bǔ)償協(xié)議模板
- 第二章第一節(jié)地形地勢(shì)教學(xué)設(shè)計(jì)2023-2024學(xué)年人教版初中地理八年級(jí)上冊(cè)
- 2025年學(xué)習(xí)雷鋒精神62周年主題活動(dòng)方案
- 2025年河南女子職業(yè)學(xué)院?jiǎn)握新殬I(yè)傾向性測(cè)試題庫(kù)匯編
- 第四單元口語(yǔ)交際:請(qǐng)你支持我 教學(xué)設(shè)計(jì)-2024-2025學(xué)年六年級(jí)上冊(cè)語(yǔ)文統(tǒng)編版
- 2025年懷化師范高等專(zhuān)科學(xué)校單招職業(yè)適應(yīng)性測(cè)試題庫(kù)完美版
- 2025年河北美術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)一套
- 二零二五年度診所與醫(yī)療培訓(xùn)學(xué)校合作協(xié)議
- 課題申報(bào)參考:產(chǎn)教融合背景下護(hù)理專(zhuān)業(yè)技能人才“崗課賽證”融通路徑研究
- 2025年南通科技職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試近5年??及鎱⒖碱}庫(kù)含答案解析
- 人工智能與機(jī)器學(xué)習(xí)在風(fēng)險(xiǎn)管理中的應(yīng)用-深度研究
- 河南省洛陽(yáng)市伊川縣2024-2025學(xué)年上學(xué)期期末八年級(jí)生物試題
- 2025年?yáng)|營(yíng)科技職業(yè)學(xué)院高職單招職業(yè)技能測(cè)試近5年??及鎱⒖碱}庫(kù)含答案解析
- 福建省廈門(mén)市2024-2025學(xué)年八年級(jí)上學(xué)期1月期末英語(yǔ)試題(含筆試答案無(wú)聽(tīng)力答案、原文及音頻)
- 真需求-打開(kāi)商業(yè)世界的萬(wàn)能鑰匙
- 《礦山隱蔽致災(zāi)因素普查規(guī)范》解讀培訓(xùn)
- 第1課 立足時(shí)代 志存高遠(yuǎn) (課件+視頻)- 【中職專(zhuān)用】高一思想政治《心理健康與職業(yè)生涯》(高教版2023·基礎(chǔ)模塊)
- 19S406建筑排水管道安裝-塑料管道
- 房產(chǎn)1%份額買(mǎi)賣(mài)合同范本
評(píng)論
0/150
提交評(píng)論