單片機(jī)原理實(shí)驗(yàn)指導(dǎo)書(shū)(2012.10)_第1頁(yè)
單片機(jī)原理實(shí)驗(yàn)指導(dǎo)書(shū)(2012.10)_第2頁(yè)
單片機(jī)原理實(shí)驗(yàn)指導(dǎo)書(shū)(2012.10)_第3頁(yè)
單片機(jī)原理實(shí)驗(yàn)指導(dǎo)書(shū)(2012.10)_第4頁(yè)
單片機(jī)原理實(shí)驗(yàn)指導(dǎo)書(shū)(2012.10)_第5頁(yè)
已閱讀5頁(yè),還剩48頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、單片機(jī)原理單片機(jī)原理實(shí)驗(yàn)指導(dǎo)書(shū)實(shí)驗(yàn)指導(dǎo)書(shū)計(jì)算機(jī)科學(xué)與技術(shù)系2012 年 8 月目錄目錄第一部分第一部分 單片機(jī)仿真實(shí)驗(yàn)單片機(jī)仿真實(shí)驗(yàn).1實(shí)驗(yàn)一:流水燈實(shí)驗(yàn).1實(shí)驗(yàn)二:中斷實(shí)驗(yàn).4實(shí)驗(yàn)三:定時(shí)器中斷實(shí)驗(yàn).6實(shí)驗(yàn)四:串行口實(shí)驗(yàn).8實(shí)驗(yàn)五:矩陣式鍵盤輸入識(shí)別.12實(shí)驗(yàn)六:LCD 循環(huán)顯示設(shè)計(jì).18第二部分第二部分 單片機(jī)硬件實(shí)驗(yàn)單片機(jī)硬件實(shí)驗(yàn).26第一章第一章 試驗(yàn)箱系統(tǒng)概述試驗(yàn)箱系統(tǒng)概述.26一、系統(tǒng)地址分配.26二、系統(tǒng)接口定義.27三、通用電路簡(jiǎn)介.28第二章第二章 實(shí)驗(yàn)指導(dǎo)實(shí)驗(yàn)指導(dǎo).32實(shí)驗(yàn)七 P1 口亮燈和 P1 口加法器實(shí)驗(yàn).32實(shí)驗(yàn)八 簡(jiǎn)單 I/O 口擴(kuò)展(選作).37實(shí)驗(yàn)九 8255

2、 控制交通燈.39實(shí)驗(yàn)十 128*64LCD 液晶顯示.42目錄1第一部分第一部分 單片機(jī)仿真實(shí)驗(yàn)單片機(jī)仿真實(shí)驗(yàn)實(shí)驗(yàn)一:流水燈實(shí)驗(yàn)流水燈實(shí)驗(yàn)一、一、實(shí)驗(yàn)?zāi)康模簩?shí)驗(yàn)?zāi)康模和ㄟ^(guò)對(duì) P3 口地址的操作控制 8 位 LED 流水點(diǎn)亮,從而認(rèn)識(shí)單片機(jī)的存儲(chǔ)器。二、二、實(shí)驗(yàn)原理圖實(shí)驗(yàn)原理圖實(shí)驗(yàn)參考電路圖如下:三、三、參考實(shí)驗(yàn)程序參考實(shí)驗(yàn)程序/流水燈實(shí)驗(yàn)#include /包含單片機(jī)寄存器的頭文件sfr x=0 xb0; /P3 口在存儲(chǔ)器中的地址是 b0H, 通過(guò) sfr 可定義 8051 內(nèi)核單片機(jī)目錄2 /的所有內(nèi)部 8 位特殊功能寄存器,對(duì)地址 x 的操作也就是對(duì) P1 口的操作/*函數(shù)功能:延時(shí)一

3、段時(shí)間*/void delay(void) unsigned char i,j; for(i=0;i250;i+) for(j=0;j250;j+) ; /利用循環(huán)等待若干機(jī)器周期,從而延時(shí)一段時(shí)間 /*函數(shù)功能:主函數(shù) */void main(void) while(1) x=0 xfe; /第一個(gè)燈亮 delay(); /調(diào)用延時(shí)函數(shù) x=0 xfd; /第二個(gè)燈亮 delay(); /調(diào)用延時(shí)函數(shù) x=0 xfb; /第三個(gè)燈亮 delay(); /調(diào)用延時(shí)函數(shù) x=0 xf7; /第四個(gè)燈亮 delay(); /調(diào)用延時(shí)函數(shù)x=0 xef; /第五個(gè)燈亮 delay(); /調(diào)用延時(shí)函

4、數(shù)目錄3x=0 xdf; /第六個(gè)燈亮 delay(); /調(diào)用延時(shí)函數(shù)x=0 xbf; /第七個(gè)燈亮 delay(); /調(diào)用延時(shí)函數(shù)x=0 x7f; /第八個(gè)燈亮 delay(); /調(diào)用延時(shí)函數(shù) 四、四、實(shí)驗(yàn)思考題:實(shí)驗(yàn)思考題:修改程序使 LED 燈為 18 燈亮27 燈亮36 燈亮45 燈亮,再將LED 燈亮的順序倒過(guò)來(lái)既:45 燈亮36 燈亮27 燈亮18 燈亮,連續(xù)運(yùn)行。調(diào)試后的程序代碼:調(diào)試后的程序代碼: 目錄4實(shí)驗(yàn)二:中斷實(shí)驗(yàn)中斷實(shí)驗(yàn)一、一、實(shí)驗(yàn)?zāi)康模簩?shí)驗(yàn)?zāi)康模和ㄟ^(guò)對(duì) P3.2、P3.3 引腳的電平控制,實(shí)現(xiàn)外部中斷處理,從而控制輸出口P1 的輸出效果變化。二、二、實(shí)驗(yàn)原理圖實(shí)

5、驗(yàn)原理圖實(shí)驗(yàn)參考電路圖如下:三、三、參考實(shí)驗(yàn)程序參考實(shí)驗(yàn)程序/用外中斷 0 的中斷方式進(jìn)行數(shù)據(jù)采集和處理#include /包含 51 單片機(jī)寄存器定義的頭文件sbit S=P32; /將 S 位定義為 P3.2,/*函數(shù)功能:主函數(shù)目錄5*/void main(void) EA=1; /開(kāi)放總中斷 EX0=1; /允許使用外中斷 IT0=1; /選擇負(fù)跳變來(lái)觸發(fā)外中斷P1=0 xff;while(1) ; /無(wú)限循環(huán), 防止程序跑飛 /*函數(shù)功能:外中斷 T0 的中斷服務(wù)程序*/void int0(void) interrupt 0 using 0 /外中斷 0 的中斷編號(hào)為 0 P1=P1

6、; /每產(chǎn)生一次中斷請(qǐng)求,P1 取反一次。 四、四、實(shí)驗(yàn)思考題:實(shí)驗(yàn)思考題:根據(jù)指導(dǎo)書(shū)中提供的原理圖,自行設(shè)計(jì)一個(gè)外部中斷實(shí)驗(yàn),要求:1.兩個(gè)外部中斷全部用上;2.實(shí)驗(yàn)?zāi)荏w現(xiàn)不同中斷優(yōu)先級(jí)的中斷源的相應(yīng)情況;3.不同中斷處理程序能輸出不同的響應(yīng)效果目錄6實(shí)驗(yàn)三:定時(shí)器中斷實(shí)驗(yàn)一、一、實(shí)驗(yàn)?zāi)康模簩?shí)驗(yàn)?zāi)康模和ㄟ^(guò)使用定時(shí)器 T0 的中斷來(lái)控制 P2.0 引腳的的 LED 的燈閃爍,要求閃爍時(shí)間 2S,既亮 1 S,滅 1 S。二、二、實(shí)驗(yàn)原理圖實(shí)驗(yàn)原理圖實(shí)驗(yàn)參考電路圖如下(注釋,下圖只有 D1 等閃爍,既亮 1 S,滅 1 S):三、三、參考實(shí)驗(yàn)程序參考實(shí)驗(yàn)程序/用定時(shí)器 T0 的中斷實(shí)現(xiàn)長(zhǎng)時(shí)間定時(shí)

7、,單片機(jī)晶體振蕩器周期為 12MHZ, 機(jī)器/周期為 1us#include / 包含 51 單片機(jī)寄存器定義的頭文件sbit D1=P20; /將 D1 位定義為 P2.0 引腳unsigned char Countor; /設(shè)置全局變量,儲(chǔ)存定時(shí)器 T0 中斷次數(shù)/*函數(shù)功能:主函數(shù)*/目錄7void main(void) EA=1; /開(kāi)總中斷ET0=1; /定時(shí)器 T0 中斷允許 TMOD=0 x01; /使用定時(shí)器 T0 的模式 2TH0=(65536-15536)/256; /定時(shí)器 T0 的高 8 位賦初值TL0=(65536-15536)%256; /定時(shí)器 T0 的高 8 位

8、賦初值TR0=1; /啟動(dòng)定時(shí)器 T0Countor=0; /從 0 開(kāi)始累計(jì)中斷次數(shù)while(1)/無(wú)限循環(huán)等待中斷 ; /*函數(shù)功能:定時(shí)器 T0 的中斷服務(wù)程序*/void Time0(void) interrupt 1 using 0 /“interrupt”聲明函數(shù)為中斷服務(wù)函數(shù) /其后的 1 為定時(shí)器 T0 的中斷編號(hào);0 表示使用第 0 組工作寄存器 Countor+; /中斷次數(shù)自加 1if(Countor=20) /若累計(jì)滿 20 次,即計(jì)時(shí)滿 1s D1=D1; /按位取反操作,將 P2.0 引腳輸出電平取反Countor=0; /將 Countor 清 0,重新從 0

9、開(kāi)始計(jì)數(shù) TH0=(65536-15536)/256; /定時(shí)器 T0 的高 8 位重新賦初值TL0=(65536-15536)%256; /定時(shí)器 T0 的高 8 位重新賦初值 目錄8 四、四、實(shí)驗(yàn)思考題:實(shí)驗(yàn)思考題:修改程序使用定時(shí)器 T1 的中斷方式來(lái)控制 P2.0 、P2.1 引腳的 LED 燈分別以 200mshe 800ms 的周期閃爍調(diào)試后的程序代碼:調(diào)試后的程序代碼: 目錄9實(shí)驗(yàn)四:串行口實(shí)驗(yàn)一、一、實(shí)驗(yàn)?zāi)康模簩?shí)驗(yàn)?zāi)康模罕緦?shí)驗(yàn)要求單片機(jī) U1 通過(guò)其串行口 TXD 向計(jì)算機(jī)發(fā)送一個(gè)數(shù)據(jù)“oxab” 。利用集成電路 MAX232 將單片機(jī)的輸出信號(hào)轉(zhuǎn)化成計(jì)算機(jī)能夠識(shí)別的信號(hào)。針對(duì)

10、發(fā)送的實(shí)例,再設(shè)計(jì)一個(gè)單片機(jī)接受計(jì)算機(jī)送出數(shù)據(jù)的過(guò)程二、二、實(shí)驗(yàn)原理圖實(shí)驗(yàn)原理圖單片機(jī)發(fā)送數(shù)據(jù)實(shí)驗(yàn)參考電路圖如圖(1):圖(1)單片機(jī)接受數(shù)據(jù)實(shí)驗(yàn)參考電路圖如下:圖(2)三、三、參考實(shí)驗(yàn)程序參考實(shí)驗(yàn)程序/單片機(jī)向 PC 發(fā)送數(shù)據(jù)#include /包含單片機(jī)寄存器的頭文件unsigned char code Tab =0 xFE,0 xFD,0 xFB,0 xF7,0 xEF,0 xDF,0 xBF,0 x7F;目錄10/流水燈控制碼,該數(shù)組被定義為全局變量/*函數(shù)功能:向 PC 發(fā)送一個(gè)字節(jié)數(shù)據(jù)*/void Send(unsigned char dat) SBUF=dat; while(TI

11、=0) ; TI=0;/*函數(shù)功能:延時(shí)約 150ms*/ void delay(void) unsigned char m,n; for(m=0;m200;m+) for(n=0;n250;n+) ; /*函數(shù)功能:主函數(shù)*/void main(void) unsigned char i; TMOD=0 x20; /TMOD=0010 0000B,定時(shí)器 T1 工作于方式 2 SCON=0 x40; /SCON=0100 0000B,串口工作方式 1目錄11 PCON=0 x00; /PCON=0000 0000B,波特率 9600 TH1=0 xfd; /根據(jù)規(guī)定給定時(shí)器 T1 賦初值 T

12、L1=0 xfd; /根據(jù)規(guī)定給定時(shí)器 T1 賦初值 TR1=1; /啟動(dòng)定時(shí)器 T1 while(1) for(i=0;i8;i+) /模擬檢測(cè)數(shù)據(jù) Send(Tabi); /發(fā)送數(shù)據(jù) i delay(); /150ms 發(fā)送一次數(shù)據(jù) 四、四、實(shí)驗(yàn)思考題:實(shí)驗(yàn)思考題:根據(jù)參考原理圖圖(2)設(shè)計(jì)一個(gè)單片機(jī)接受計(jì)算機(jī)送出數(shù)據(jù)的過(guò)程。調(diào)試后的程序代碼:調(diào)試后的程序代碼: 目錄12目錄13實(shí)驗(yàn)五:矩陣式鍵盤輸入識(shí)別一、一、實(shí)驗(yàn)?zāi)康模簩?shí)驗(yàn)?zāi)康模涸O(shè)計(jì)一個(gè) 4X4 的矩陣鍵盤,鍵盤的號(hào)碼 015,要求編寫(xiě)出一個(gè)鍵盤輸入掃描程序,要求單片機(jī)能根據(jù)鍵盤排列順序,能將按下去鍵盤號(hào)正確識(shí)別出來(lái),并采用兩個(gè)數(shù)碼管分

13、別鍵盤號(hào)碼的個(gè)位和十位。二、二、實(shí)驗(yàn)原理圖實(shí)驗(yàn)原理圖實(shí)驗(yàn)參考電路圖如下:三、三、參考實(shí)驗(yàn)程序參考實(shí)驗(yàn)程序#include /包含 51 單片機(jī)寄存器定義的頭文件sbit P14=P14; sbit P15=P15; 目錄14sbit P16=P16; sbit P17=P17; unsigned char code Tab =0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90; /數(shù)字 09的段碼unsigned char keyval; /*函數(shù)功能:數(shù)碼管動(dòng)態(tài)掃描延時(shí)*/void led_delay(void) unsig

14、ned char j;for(j=0;j200;j+) ; /*函數(shù)功能:按鍵值的數(shù)碼管顯示子程序*/ void display(unsigned char k) P2=0 xbf; P0=Tabk/10; led_delay(); P2=0 x7f; P0=Tabk%10; led_delay(); /*函數(shù)功能:軟件延時(shí)子程序目錄15*/ void delay20ms(void) unsigned char i,j;for(i=0;i100;i+) for(j=0;j60;j+) ; /*函數(shù)功能:主函數(shù)*/ void main(void) EA=1; ET0=1; TMOD=0 x01;

15、 TH0=(65536-500)/256; TL0=(65536-500)%256; TR0=1; keyval=0 x00; while(1) display(keyval); /*函數(shù)功能:定時(shí)器 0 的中斷服務(wù)子程序,進(jìn)行鍵盤掃描,判斷鍵位目錄16*/ void time0_interserve(void) interrupt 1 using 1 TR0=0; P1=0 xf0; if(P1&0 xf0)!=0 xf0) delay20ms(); if(P1&0 xf0)!=0 xf0) P1=0 xfe; if(P14=0) keyval=1; if(P15=0) ke

16、yval=2; if(P16=0) keyval=3; if(P17=0) keyval=4; P1=0 xfd; if(P14=0) keyval=5; if(P15=0) keyval=6; if(P16=0) keyval=7; if(P17=0) keyval=8; 目錄17 P1=0 xfb; if(P14=0) keyval=9; if(P15=0) keyval=10; if(P16=0) keyval=11; if(P17=0) keyval=12; P1=0 xf7; if(P14=0) keyval=13; if(P15=0) keyval=14; if(P16=0) ke

17、yval=15; if(P17=0) keyval=16; TR0=1; TH0=(65536-500)/256; TL0=(65536-500)%256; 四、四、實(shí)驗(yàn)思考題:實(shí)驗(yàn)思考題:修改實(shí)驗(yàn)電路圖和實(shí)驗(yàn)程序和設(shè)計(jì)電路,改成靜態(tài)顯示調(diào)試后的程序代碼:調(diào)試后的程序代碼:目錄18 目錄19實(shí)驗(yàn)六:LCD 循環(huán)顯示設(shè)計(jì)一、一、實(shí)驗(yàn)?zāi)康模簩?shí)驗(yàn)?zāi)康模翰捎?1602 型 LCD 循環(huán)顯示字符串“Welcome to Heifei Normal University” 。其中 LCD 顯示模式為:16*2 顯示、5*7 點(diǎn)陣、8 位數(shù)據(jù)口;顯示開(kāi)、有光標(biāo)開(kāi)且光標(biāo)閃爍;光標(biāo)右移,字符不移。二、二、實(shí)驗(yàn)原

18、理圖實(shí)驗(yàn)原理圖實(shí)驗(yàn)參考電路圖如下:目錄20三、三、參考實(shí)驗(yàn)程序參考實(shí)驗(yàn)程序/用 LCD 循環(huán)右移顯示 Welcome to Heifei Normal University #include /包含單片機(jī)寄存器的頭文件#include /包含_nop_()函數(shù)定義的頭文件sbit RS=P20; /寄存器選擇位,將 RS 位定義為 P2.0 引腳sbit RW=P21; /讀寫(xiě)選擇位,將 RW 位定義為 P2.1 引腳sbit E=P22; /使能信號(hào)位,將 E 位定義為 P2.2 引腳sbit BF=P07; /忙碌標(biāo)志位, ,將 BF 位定義為 P0.7 引腳unsigned char c

19、ode string = Welcome to Heifei Normal University ; 目錄21/*函數(shù)功能:延時(shí) 1ms(3j+2)*i=(333+2)10=1010(微秒),可以認(rèn)為是 1 毫秒*/void delay1ms() unsigned char i,j; for(i=0;i10;i+) for(j=0;j33;j+) ; /*函數(shù)功能:延時(shí)若干毫秒入口參數(shù):n*/ void delay(unsigned char n) unsigned char i;for(i=0;in;i+) delay1ms(); /*函數(shù)功能:判斷液晶模塊的忙碌狀態(tài)返回值:result。r

20、esult=1,忙碌;result=0,不忙*/ unsigned char BusyTest(void) bit result;RS=0; /根據(jù)規(guī)定,RS 為低電平,RW 為高電平時(shí),可以讀狀態(tài)目錄22 RW=1; E=1; /E=1,才允許讀寫(xiě) _nop_(); /空操作 _nop_(); _nop_(); _nop_(); /空操作四個(gè)機(jī)器周期,給硬件反應(yīng)時(shí)間 result=BF; /將忙碌標(biāo)志電平賦給 resultE=0; return result; /*函數(shù)功能:將模式設(shè)置指令或顯示地址寫(xiě)入液晶模塊入口參數(shù):dictate*/void WriteInstruction (unsi

21、gned char dictate) while(BusyTest()=1); /如果忙就等待 RS=0; /根據(jù)規(guī)定,RS 和 R/W 同時(shí)為低電平時(shí),可以寫(xiě)入指令 RW=0; E=0; /E 置低電平(根據(jù)表 8-6,寫(xiě)指令時(shí),E 為高脈沖, / 就是讓 E 從 0 到 1 發(fā)生正跳變,所以應(yīng)先置0 _nop_(); _nop_(); /空操作兩個(gè)機(jī)器周期,給硬件反應(yīng)時(shí)間 P0=dictate; /將數(shù)據(jù)送入 P0 口,即寫(xiě)入指令或地址 _nop_(); _nop_();目錄23 _nop_(); _nop_(); /空操作四個(gè)機(jī)器周期,給硬件反應(yīng)時(shí)間 E=1; /E 置高電平 _nop_

22、(); _nop_(); _nop_(); _nop_(); /空操作四個(gè)機(jī)器周期,給硬件反應(yīng)時(shí)間 E=0; /當(dāng) E 由高電平跳變成低電平時(shí),液晶模塊開(kāi)始執(zhí)行命令 /*函數(shù)功能:指定字符顯示的實(shí)際地址入口參數(shù):x*/ void WriteAddress(unsigned char x) WriteInstruction(x|0 x80); /顯示位置的確定方法規(guī)定為80H+地址碼x /*函數(shù)功能:將數(shù)據(jù)(字符的標(biāo)準(zhǔn) ASCII 碼)寫(xiě)入液晶模塊入口參數(shù):y(為字符常量)*/ void WriteData(unsigned char y) while(BusyTest()=1); RS=1;

23、/RS 為高電平,RW 為低電平時(shí),可以寫(xiě)入數(shù)據(jù) RW=0; E=0; /E 置低電平(根據(jù)表 8-6,寫(xiě)指令時(shí),E 為高脈沖,目錄24 / 就是讓 E 從 0 到 1 發(fā)生正跳變,所以應(yīng)先置0 P0=y; /將數(shù)據(jù)送入 P0 口,即將數(shù)據(jù)寫(xiě)入液晶模塊 _nop_(); _nop_(); _nop_(); _nop_(); /空操作四個(gè)機(jī)器周期,給硬件反應(yīng)時(shí)間 E=1; /E 置高電平 _nop_(); _nop_(); _nop_(); _nop_(); /空操作四個(gè)機(jī)器周期,給硬件反應(yīng)時(shí)間 E=0; /當(dāng) E 由高電平跳變成低電平時(shí),液晶模塊開(kāi)始執(zhí)行命令 /*函數(shù)功能:對(duì) LCD 的顯示模

24、式進(jìn)行初始化設(shè)置*/void LcdInitiate(void) delay(15); /延時(shí) 15ms,首次寫(xiě)指令時(shí)應(yīng)給 LCD 一段較長(zhǎng)的反應(yīng)時(shí)間 WriteInstruction(0 x38); /顯示模式設(shè)置:162 顯示,57 點(diǎn)陣,8位數(shù)據(jù)接口delay(5); /延時(shí) 5msWriteInstruction(0 x38);delay(5);WriteInstruction(0 x38);delay(5);WriteInstruction(0 x0f); /顯示模式設(shè)置:顯示開(kāi),有光標(biāo),光標(biāo)閃爍目錄25delay(5);WriteInstruction(0 x06); /顯示模式設(shè)

25、置:光標(biāo)右移,字符不移delay(5);WriteInstruction(0 x01); /清屏幕指令,將以前的顯示內(nèi)容清除delay(5); void main(void) /主函數(shù) unsigned char i; LcdInitiate(); /調(diào)用 LCD 初始化函數(shù) delay(10); while(1) WriteInstruction(0 x01);/清顯示:清屏幕指令 WriteAddress(0 x00); / 設(shè)置顯示位置為第一行的第 5 個(gè)字 i = 0;while(stringi != 0)/ 顯示字符WriteData(stringi);i+;delay(150);

26、for(i=0;i4;i+) delay(250); 四、四、實(shí)驗(yàn)思考題:實(shí)驗(yàn)思考題:目錄26試編寫(xiě) LCD12864 顯示初始化程序,設(shè)計(jì)電路,采用漢字取模,使 LCD 循環(huán)顯示字符串 hefei normal university 和個(gè)人學(xué)號(hào)、姓名。要求:1. 字符分為兩行,居中顯示2. 字符從左向右緩慢移動(dòng)調(diào)試后的程序代碼:調(diào)試后的程序代碼: 目錄27實(shí)驗(yàn)七實(shí)驗(yàn)七 簡(jiǎn)易計(jì)算器的設(shè)計(jì)與實(shí)現(xiàn)簡(jiǎn)易計(jì)算器的設(shè)計(jì)與實(shí)現(xiàn)一、一、實(shí)驗(yàn)?zāi)康膶?shí)驗(yàn)?zāi)康恼莆?89C51 單片機(jī)開(kāi)發(fā)應(yīng)用系統(tǒng)的方法和應(yīng)用程序的編寫(xiě)和調(diào)試要求:由 P1 口輸出字形碼,P0 口輸出字位碼。先將存放于 30H 單元的數(shù)值個(gè)位七段碼由

27、P1 口輸出,同時(shí) P0 口輸出使數(shù)值個(gè)位顯示數(shù)碼管點(diǎn)亮的字位碼。由于采用的是共陽(yáng)數(shù)碼管,所以只有該位數(shù)碼管對(duì)應(yīng)的 P0.0 為 1,其他位P0.1-P0.3 位 0,點(diǎn)亮延時(shí) 10MS。然后 P1 口輸出數(shù)值十位七段碼,P0.1 位 1,數(shù)值十位數(shù)碼管點(diǎn)亮,延時(shí) 10MS。接著 P1 口輸出數(shù)值百位七段碼,P0.2 為1,數(shù)值百位數(shù)碼管點(diǎn)亮,延時(shí) 10MS。最后 P1 口輸出數(shù)值千位七段碼,P0.3為 1,數(shù)值千位數(shù)碼管點(diǎn)亮,延時(shí) 10MS。二、二、實(shí)驗(yàn)原理圖實(shí)驗(yàn)原理圖目錄28三、三、源程序清單或?qū)嶒?yàn)步驟源程序清單或?qū)嶒?yàn)步驟1.設(shè)計(jì)電路,并按照電路接線2.編寫(xiě)調(diào)試程序:#include /包

28、含單片機(jī)寄存器的頭文件#include /包含_nop_()函數(shù)定義的頭文件#includedelay10ms()unsigned char a,b;for(a=100;a0;a-)for(b=50;b0;b-);delay1ms()unsigned char a,b;for(a=10;a0;a-)for(b=50;b0;b-);unsigned char code tab=0 x3f,6,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,7,0 x7f,0 x6f,0 x77,0 x7c,0 x39,0 x5e,0 x79,0 x71; main()unsigned char m,

29、i,j,k,l,p,cc2,cc3,cc4,cc5,o;unsigned long c1,c2,cc;unsigned int cc1;unsigned char aa0,aa1,aa2,aa3,bb0,bb1,bb2,bb3;目錄29unsigned char a0,a1,a2,a3,b0,b1,b2,b3;bit q,n;while(1) static dian=0 x80,fuhao=0; for (j=0;j=3;j+) k=0 xfe(8-j); P0=k|l; if(P0_4=0) delay10ms(); if(P0_4=0) while(P0_4=0) P2=b0; P1=0

30、xfe; delay1ms(); P2=0; P2=b1; P1=0 xfd; delay1ms(); P2=0; P2=b2; P1=0 xfb; delay1ms();目錄30 P2=0; P2=b3; P1=0 xf7; delay1ms(); P2=0; P2=a0; P1=0 xef; delay1ms(); P2=0; P2=a1; P1=0 xdf; delay1ms(); P2=0; P2=a2; P1=0 xbf; delay1ms(); P2=0; P2=a3; P1=0 x7f; delay1ms(); P2=0; P2=dian; P1=0 xef;目錄31 delay

31、1ms(); P2=0; P2=fuhao; P1=0 xef; delay1ms(); P2=0; if(tab4*j=0 x39) n=1; i=3; else m+; if(m=4&n=0) a3=a2; a2=a1; a1=a0; a0=tab4*j; aa3=aa2; aa2=aa1; aa1=aa0; aa0=4*j; else目錄32 if(p=3&n=1) b3=b2; b2=b1; b1=b0; b0=tab4*j; bb3=bb2; bb2=bb1; bb1=bb0; bb0=4*j; p+; if(P0_5=0)delay10ms();if(P0_5=0)

32、while(P0_5=0) P2=b0; P1=0 xfe; delay1ms(); P2=0;目錄33 P2=b1; P1=0 xfd; delay1ms(); P2=0; P2=b2; P1=0 xfb; delay1ms(); P2=0; P2=b3; P1=0 xf7; delay1ms(); P2=0; P2=a0; P1=0 xef; delay1ms(); P2=0; P2=a1; P1=0 xdf; delay1ms(); P2=0; P2=a2; P1=0 xbf; delay1ms();目錄34 P2=0; P2=a3; P1=0 x7f; delay1ms(); P2=0

33、; P2=dian; P1=0 xef; delay1ms(); P2=0; P2=fuhao; P1=0 xef; delay1ms(); P2=0; if(tab4*j+1=0 x5e) i=4; n=1;else m+; if(m=4&n=0) a3=a2; a2=a1;目錄35 a1=a0; a0=tab4*j+1; aa3=aa2; aa2=aa1; aa1=aa0; aa0=4*j+1; else if(p=3&n=1) b3=b2; b2=b1; b1=b0; b0=tab4*j+1; bb3=bb2; bb2=bb1; bb1=bb0; bb0=4*j+1; p

34、+; if(P0_6=0)delay10ms();目錄36if(P0_6=0)while(P0_6=0) P2=b0; P1=0 xfe; delay1ms(); P2=0; P2=b1; P1=0 xfd; delay1ms(); P2=0; P2=b2; P1=0 xfb; delay1ms(); P2=0; P2=b3; P1=0 xf7; delay1ms(); P2=0; P2=a0; P1=0 xef; delay1ms(); P2=0;目錄37 P2=a1; P1=0 xdf; delay1ms(); P2=0; P2=a2; P1=0 xbf; delay1ms(); P2=0

35、; P2=a3; P1=0 x7f; delay1ms(); P2=0; P2=dian; P1=0 xef; delay1ms(); P2=0; P2=fuhao; P1=0 xef; delay1ms(); P2=0; if(tab4*j+2=0 x77) i=1; n=1;目錄38 else if(tab4*j+2=0 x79) q=1; n=1; else m+; if(m=4&n=0) a3=a2; a2=a1; a1=a0; a0=tab4*j+2; aa3=aa2; aa2=aa1; aa1=aa0; aa0=4*j+2; else if(p=3&n=1) b3=

36、b2;目錄39 b2=b1; b1=b0; b0=tab4*j+2; bb3=bb2; bb2=bb1; bb1=bb0; bb0=4*j+2; p+; if(P0_7=0)delay10ms();if(P0_7=0)while(P0_7=0) P2=b0; P1=0 xfe; delay1ms(); P2=0; P2=b1; P1=0 xfd;目錄40 delay1ms(); P2=0; P2=b2; P1=0 xfb; delay1ms(); P2=0; P2=b3; P1=0 xf7; delay1ms(); P2=0; P2=a0; P1=0 xef; delay1ms(); P2=0

37、; P2=a1; P1=0 xdf; delay1ms(); P2=0; P2=a2; P1=0 xbf; delay1ms(); P2=0; P2=a3;目錄41 P1=0 x7f; delay1ms(); P2=0; P2=dian; P1=0 xef; delay1ms(); P2=0; P2=fuhao; P1=0 xef; delay1ms(); P2=0; if(tab4*j+3=0 x71) i=6; n=1; else if(tab4*j+3=0 x7c) i=2; n=1; else m+;目錄42 if(m=4&n=0) a3=a2; a2=a1; a1=a0; a0=tab4*j+3; aa3=aa2; aa2=aa1; aa1=aa0; aa0=4*j+3; else if(p=c2) cc=c1-c2; else cc=c2-c1; fuhao=0 x40; if(i=3)/乘法運(yùn)算cc=c1*c2;目錄46a3=tabcc/10000000;aa3=cc/10000000;a

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論