單片機(jī)綜合實(shí)驗(yàn)手冊(cè)_第1頁(yè)
單片機(jī)綜合實(shí)驗(yàn)手冊(cè)_第2頁(yè)
單片機(jī)綜合實(shí)驗(yàn)手冊(cè)_第3頁(yè)
單片機(jī)綜合實(shí)驗(yàn)手冊(cè)_第4頁(yè)
單片機(jī)綜合實(shí)驗(yàn)手冊(cè)_第5頁(yè)
已閱讀5頁(yè),還剩43頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、實(shí)驗(yàn)一 LED點(diǎn)陣顯示實(shí)驗(yàn)-2 - 一實(shí)驗(yàn)?zāi)康?2 - 二實(shí)驗(yàn)說明-2 - 三實(shí)驗(yàn)內(nèi)容及步驟-2 - 四、源程序清單(LED.asm) - 2 - 實(shí)驗(yàn)二 字符型液晶顯示實(shí)驗(yàn)(密碼鎖)-5 - 一實(shí)驗(yàn)?zāi)康?5 - 二實(shí)驗(yàn)說明-5 - 三實(shí)驗(yàn)內(nèi)容及步驟-7 - 四源程序清單(LCD.asm) - 7 - 實(shí)驗(yàn)三并行數(shù)據(jù)轉(zhuǎn)換成串行數(shù)據(jù)實(shí)驗(yàn) -13 - 一、實(shí)驗(yàn)?zāi)康?13 - 二、實(shí)驗(yàn)說明-13 - 三、實(shí)驗(yàn)步驟-13 - 四、流程圖及程序-13 - 實(shí)驗(yàn)四靜態(tài)串行顯示實(shí)驗(yàn) -16- 一、實(shí)驗(yàn)?zāi)康?-16 - 二、實(shí)驗(yàn)電路-16 - 三、實(shí)驗(yàn)內(nèi)容及步驟-16 - 四、源程序-16 - 實(shí)驗(yàn)五I2C總

2、線實(shí)驗(yàn) -18 - 一、實(shí)驗(yàn)?zāi)康?18 - 二、實(shí)驗(yàn)說明-18 - 三、實(shí)驗(yàn)內(nèi)容與步驟-21 - 四、源程序-21 - 實(shí)驗(yàn)六12864*64圖形點(diǎn)陣與單片機(jī)接口實(shí)驗(yàn) -25 - 一、OCM12864液晶顯示模塊概述 -25 - 二、最大工作范圍 -25 - 三、電氣特性(測(cè)試條件 Ta=25,Vdd=5.0+/-0.25V) - 25 - 四、接口說明-25 - 五、指令描述 -27 - 六、接口時(shí)序-28 - 七、屏幕顯示與 DD RAM 地址映射關(guān)系 -29 - 八、測(cè)試硬件電路 -30 - 九、實(shí)驗(yàn)內(nèi)容與步驟-30 - 十、源程序-31 - 實(shí)驗(yàn)一 LED點(diǎn)陣顯示實(shí)驗(yàn) 一實(shí)驗(yàn)?zāi)康?了解

3、8X 8矩陣LED顯示的基本原理和功能。 掌握8X 8矩陣LED和單片機(jī)的接口和軟件設(shè)計(jì)方法。 二實(shí)驗(yàn)說明 8 X 8矩陣LED為共陰極,將一筆數(shù)據(jù)8個(gè)中文字,分批顯示并向左移動(dòng),即顯示“科港” 教 儀”7“歡迎”7“你!” 科港”(左移)7“教儀”(左移)7“歡迎”(左移)7“你! ” (左移) 三實(shí)驗(yàn)內(nèi)容及步驟 1、使用點(diǎn)陣中文顯示系統(tǒng)模塊和單片機(jī)最小應(yīng)用系統(tǒng) 2、PO.O、P0.1、P0.2、P0.3、P0.4、P0.5、P0.6、P0.7、P1.0、P1.1、P1.2、P1.3、P1.4、P2.0、 P2.1、P2.2、P2.3、P2.4、P2.5、P2.6、P2.7 分另U接 89C

4、51 的 PO.O、P0.1、P0.2、P0.3、P0.4、P0.5、 P0.6、P0.7、P1.0、P1.1、P1.2、P1.3、P1.4、P2.0、P2.1、P2.2、P2.3、P2.4、P2.5、P2.6、P2.7 3、+5V、+12V、GND 接單片機(jī)主機(jī)的 +5V、+12V、GND。EA/VP 接+5V。 4、用編程器將LED.bin寫入AT89C51,脫機(jī)運(yùn)行。 四、源程序清單(LED.asm) org 00h sta比 mov a,#00h mov p0,a; mov p2,a call dis call move ;清除屏幕 ;調(diào)用顯示子程序 jmp start dis: mo

5、v r2,#04h ;每個(gè)畫面2個(gè)字,8個(gè)字分4次顯示 mov 20h,#00 ;取碼指針暫存地址 20H初值為00 d4: mov r4,#00h ;74154掃描指針初值 mov r1,#0ffh ;每幕停留時(shí)間 d5: mov r6,#32 海幕2個(gè)字,32個(gè)數(shù)據(jù)碼 mov r0,20h ;取碼指針存入R0 d2: call reda1 ;調(diào)用取碼子程序 inc r4;掃描下一列 djnz r6,d2;顯示 1 幕? mov r4,#00;清除74154掃描指針為00 djnz r1,d5;每幕停留時(shí)間到了? mov 20h,r0;保留取碼指針存入20H djnz r2,d4;2幕顯示完

6、畢了 ? ret move: mov 20h,#00 ;取碼指針暫存地址 20H初值為00 mov r4,#00h ;74154掃描指針初值 m1: mov r1,#0ffh ;每幕停留的時(shí)間 m2: mov r6,#32 海幕2個(gè)字,32個(gè)數(shù)據(jù)碼 mov r0,20h m3: call redal inc r4 djnz r6,m3 mov r4,#OO djnz r1,m2 mov a,20h add a,#08 mov 20h,a xrl a,#128 jnz ml ret redal: mov a,r4 mov p1,a mov a,r0 mov dptr,#table movc a,

7、a+dptr mov p0,a inc r0 mov a,r0 mov dptr,#table movc a,a+dptr mov p2,a inc r0 mov r3,#25 djnz r3,$ mov a,#00h ;取碼指針存入RO ;調(diào)用取碼子程序 ;掃描下一行 ;顯示1幕? ;清除74154掃描指針為00 ;每幕停留時(shí)間到了 ? ;取碼指針載入A ;加 8 ;再存入20H地址取碼指針 ;8個(gè)字是否都左移完畢了 ? ;掃描指針載入A ;輸出至P1掃描列 ;取碼指針載入A ;數(shù)據(jù)指針指到TABLE ;到TABLE取上半部的數(shù)據(jù)碼 ;輸出至P0顯示 ;取下一個(gè)碼 ;取碼指針載入A ;數(shù)據(jù)指

8、針指到TABLE ;到TABLE取下半部的數(shù)據(jù)碼 ;輸出至P2顯示 ;取碼值加1 涎時(shí) mov a,#00h;清除屏幕 mov p0,a mov p2,a ret table:DB 00H,00H,48H,18H,48H,0CH,0CCH,03H,0FCH,0FFH,44H,02H,44H,0EH,00H,08H; DB 88H,09H,38H,09H,00H,08H,00H,0CH,0FCH,0FFH,00H,04H,00H,04H,00H,00H;科,0 DB 00H,00H,40H,60H,0CCH,38H,88H,04H,40H,04H,48H,06H,48H,7FH,0FEH,4BH

9、; DB 48H,4AH,48H,4AH,48H,4AH,0FEH,4FH,48H,42H,48H,66H,40H,04H,00H,00H;港,1 DB 00H,00H,40H,12H,48H,13H,48H,49H,0FEH,49H,48H,7FH,68H,0BH,58H,49H; DB 0C8H,41H,0E0H,60H,3CH,3FH,16H,18H,0F0H,37H,70H,60H,10H,40H,00H,00H; 教,2 DB 00H,00H,0C0H,00H,60H,00H,0FCH,0FFH,0EH,40H,00H,60H,30H,20H,0E0H,31H; DB 00H,1FH

10、,1EH,0CH,10H,1FH,0E0H,11H,38H,20H,00H,60H,00H,60H,00H,00H; 儀,3 DB 00H,00H,08H,20H,0C8H,38H,88H,0DH,88H,03H,0F8H,4CH,08H,48H,0E0H,60H; DB 3EH,30H,16H,1CH,0D0H,03H,10H,1CH,10H,30H,70H,20H,10H,40H,00H,00H; DB 00H,00H,80H,40H,8CH,60H,98H,3FH,00H,20H,00H,20H,0FCH,4FH,04H,44H; DB 04H,46H,00H,40H,0FCH,5FH,

11、04H,40H,04H,44H,0FCH,47H,00H,40H,00H,00H; DB 00H,00H,80H,00H,60H,00H,0FCH,0FFH,06H,00H,00H,10H,60H,1CH,38H,06H; DB 1EH,0C0H,10H,40H,0D0H,7FH,10H,00H,10H,02H,70H,1CH,10H,10H,00H,00H; DB 00H,00H,00H,00H,00H,00H,00H,00H,0F8H,19H,78H,18H,00H,00H,00H,00H; DB OOH,OOH,OOH,OOH,OOH,OOH,OOH,OOH,OOH,OOH,OOH,OO

12、H,OOH,OOH,OOH,OOH; ! End 歡,4 迎,5 你,6 ,7 實(shí)驗(yàn)二字符型液晶顯示實(shí)驗(yàn)(密碼鎖) 一實(shí)驗(yàn)?zāi)康?了解字符型液晶顯示器的工作原理 二實(shí)驗(yàn)說明 本實(shí)驗(yàn)用的是文字型 LCD顯示器:以ASCII碼寫入 1. 引腳圖及功能說明:LCD種類很多,如1611 (16字1行),1621 (16字2行),2021 (20 字2行)等,其引腳圖都相同,如表7.4所示。 14 13 12 11 10 ( 6 1 ,5 4 3 2 1 D 37 D! 16 I DBS D1 14 I DB3 D 32 1 D 10 R/T R S 1 VL 1 Vcc I GND 表7.4通用型LCD

13、引腳功能 引腳 符號(hào) 功能說明 1 GND 接地 2 Vcc +5V 3 VL 驅(qū)動(dòng)LCD,一般將此腳接地 4 RS 寄存器選擇0:指令寄存器 (WRITE ) Busy flag ,位址計(jì)數(shù) 器(READ ) 1:數(shù)據(jù)寄存器(WRITE , READ ) 5 R/W READ/WRITE 選擇 1: READ0: WRITE 6 E 讀寫使能(下降沿使能) 7 DB0 低4位一態(tài)、雙向數(shù)據(jù)總線 8 DB1 9 DB2 10 DB3 11 DB4 咼4位二態(tài)、雙向數(shù)據(jù)總線 另外DB7也是一個(gè)Busy flang 12 DB5 13 DB6 14 DB7 2 寄存器選擇,如表7.5 所示 表7.

14、5寄存器選擇控制線操作 RS R/W 操作說明 0 0 寫入指令寄存器(清除屏幕等) 0 1 讀Busy flag(DB7),以及讀取位址計(jì)數(shù)器(DB0DB6 )值 1 0 與入數(shù)據(jù)寄存器(顯示各字型等) 1 1 從數(shù)據(jù)寄存器讀取數(shù)據(jù) 3. Busy flag(DB7):在此位未被清除為“ 0”時(shí),LCD將無法再處理其他指令要求。 4 顯示器地址 (1)內(nèi)部地址計(jì)數(shù)器的計(jì)數(shù)器地址:DB7=0 ( DB0DB6 )第1行00、01、02等,第2行 40、 41、 42 / 導(dǎo),可配合檢測(cè) DB7=1 (RS=0,R/W=1)讀取目前顯示字的地址,判斷是否需要換行。 DB7 DB6 DB5DB4

15、DB3 DB2 DB1 DB0 0 0 XX X X X X 第1行 0 1 XX X X X X 第2行 16X 1 16字1行 1611 1 2 3 456 789 10 11 12 13 141516 00010203040506074041424344454647 第1行 第2行 16X 216 字 2 行 1621 12345678910111213141516 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 第1行 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 第2行 20X 220

16、字 2 行 1234567891011121314151617181920 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 51 52 53 (2)外部地址:DB7=1,亦即80H+內(nèi)部計(jì)數(shù)地址,可以用此方式將字顯示在某一位置。 LCD各位地址列舉如下: 16X 116 字 1 行 1611 12345678910111213141516 80 81 82 8384 8586 87 C0 C1 C2 C3 C4 C5 C6

17、 C7 第1行 第H亍 16X 2 16字2行 1621 1 2 34 56 7 8 9 10 11 12 1314 15 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 第1行; C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF 第2 行 20X 220 字 2 行 123456 7891011121314151617181920 1 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 2 C0 C1 C2 C3 C4 C5 C6

18、C7 C8 C9 CA CB CC CD CE CF D0 D1 D2 D3 6 指令組 指令 說明 碼 RS R/W D7 D6 D5 D4 D3 D2 D1 D0 清除顯示幕 0 0 0 0 0 0 0 0 0 * 光標(biāo)回到原點(diǎn) 0 0 0 0 0 0 0 0 1 * 進(jìn)入模式設(shè)定 0 0 0 0 0 0 0 1 I/D S 顯示幕ON/OFF 0 0 0 0 0 0 1 D C B 移位 0 0 0 0 0 1 S/C R/L * * 功能設(shè)定 0 0 0 0 1 DL N F * * 字發(fā)生器地址設(shè)定 0 0 0 1 ACG 設(shè)置顯示地址 0 0 1 ADD 忙碌標(biāo)志位BF 0 1 B

19、F 顯示數(shù)據(jù) 1 0 寫入數(shù)據(jù) 讀取數(shù)據(jù) 1 1 讀出數(shù)據(jù) I/DI/D=1 表示加1, I/D=0表示減1 SS=1表示顯示幕ONS=0表示OFF DD=1表示顯示屏幕OND=0表示顯示屏幕OFF CC=1表示光標(biāo)ONC=1表示光標(biāo)OFF BB=1表示閃爍ONB=0表示閃爍OFF S/CS/C=1表示顯示屏幕移位S/C=0光標(biāo)移位 R/LR/L=1表示右移R/L=0表示左移 DLDL=1表示8位DL=0表示4位 FF=1表示5X 10點(diǎn)矩陣F=0表示5X7點(diǎn)矩陣 NN=1表示2行顯示行N=0表示1行顯示行 BF BF=1 :內(nèi)部正在動(dòng)作BF=0 :可接收指令或數(shù)據(jù)碼 5 三實(shí)驗(yàn)內(nèi)容及步驟 1

20、、使用字符型液晶顯示系統(tǒng)模塊和單片機(jī)最小應(yīng)用系統(tǒng) 2、RS、R/W、E、DBO、DB1、DB2、DB3、DB4、DB5、DB6、DB7 分另U接單片機(jī)最小應(yīng)用系 統(tǒng)的 P3.5(T1)、P3.6(WR)、P3.7(RD)、P1.0、P1.1、P1.2、P1.3、P1.4、P1.5、P1.6、P1.7 3、EA/VP 接 +5V、VL 接 GND。 4、 GND、VCC分別接接單片機(jī)主機(jī)板的GND、+5V。 LED點(diǎn)陣漢字實(shí)驗(yàn)電路的+5V和GND 必須接主機(jī)板的+5V和GND。 5、Y3、Y2、Y1、Y0、X3、X2、X1、X0 分別接 P2.0、P2.1、P2.2、P2.3、P2.4、P2.5

21、、P2.6、 P2.7。 6、用編程器將LCD.bin寫入AT89C51,脫機(jī)運(yùn)行。 四源程序清單(LCD.asm) RS BIT P3.5 RW BIT P3.6 E BIT P3.7 ORG 00H MOV SP,#70H ;設(shè)置堆棧 MOV R7,#00H ;TYABLE3(密碼存放)的取碼指針 MOV R6,#06H ;6個(gè)密碼 MOV R0,#30H ;存入 RAM 30H35H S1: MOV A,R7 ;至TABLE3取碼 MOVC A,A+DPTR MOV R0,A INC RO INC R7 DJNZ R6,S1 MOV P1,#01H ;清除屏幕 CALL ENABLE ;

22、LCD功能設(shè)定,DL=1(8位),N=1(2行顯示) MOV P1,#38H CALL ENABLE MOV P1,#0FH ;顯示屏幕 ON/OFF,D=1(顯示 ON) CALL ENABLE ;C=1(光標(biāo) ON),B=1(閃爍 ON) MOV P1,#06H ;LCD模態(tài)設(shè)定,I/D=1(計(jì)數(shù)地址加1) CALL ENABLE MOV P1,#80H ;LCD第1行地址 CALL ENABLE MOV DPTR,#TABLE1 ;到 TABLE1 取碼顯示PASS WORD:000000 CALL WRITE1 MOV P1,#8AH ;光標(biāo)所在位置(第一個(gè)數(shù)字地址) CALL ENA

23、BLE ;清除按鍵存放RAM的內(nèi)容 INC R0 DJNZ R4,CLEAR R0,#40H ;按鍵值的RAM 40H45H MOV L1: MOV R3,#0F7H ;鍵盤行掃描初值 MOV R1,#00H ;TABLE2(鍵盤內(nèi)碼)的取碼指針 L2: MOV A,R3 MOV P2,A ;行掃描輸出 MOV A,P2 ;讀入鍵盤值存入R4 MOV R4,A SETB C ;C=1 MOV R5,#04H ;列掃描 L3: RLC A JNC KEYIN ;C=0表示有按 INC R1 DJNZ R5,L3 ;4個(gè)列掃描完畢否? START: MOVR4,#06H MOV R0,#40H C

24、LEAR: MOVR0,#00H MOV SETB RRC MOV A,R3 C A R3,A ;掃描下1行 ;4個(gè)行掃描完畢否? JC L2 JMP L1 KEYIN: MOVR7,#10 ;消除抖動(dòng)10毫秒 D2: MOV R6,#248 DJNZ R6,$ DJNZ R7,D2 D3: MOV A,P2 ;讀入鍵盤值與前值(R4)比較是否相等? XRL A,R4 ;相等表示按鍵尚未放開? JZ D3 MOV A,R1 ;至TABLE2取鍵盤碼 MOV DPTR,#TABLE2 MOVC A,A+DPTR MOV R2,A ;先存入R2,以免數(shù)據(jù)被破壞 XRL A,#41H ;是否按*,設(shè)

25、定密碼 JZ SETO MOV A,R2 XRL A,#42H ;是否按#,清除屏幕 JZ | CLEAR1 MOV A,R2 XRL A,#43H ;是否按A,顯示密碼 JZ DISP MOV A,R2 XRL A,#44H ;是否按B,比較密碼,相同則開門 JZ COMP MOV A,R2 XRL A,#45H ;C鍵無作用 JZ L1 MOV A,R2 XRL A,#46H ;D鍵無作用 JZ L1 MOV A,R2 ;數(shù)字碼顯示至LCD CALL WRITE2 SUBB A,#30H ;鍵盤碼為ASCII碼,減30H變?yōu)槭M(jìn)制碼 MOV R0,A ;存入 40H45H INC R0

26、CALL CHECK ;檢查L(zhǎng)CD是否顯示完第6個(gè)數(shù)字 JMP L1 SET0:MOVR6,#06H ;密碼設(shè)定 MOV R0,#40H ;鍵盤顯示器存放 RAM4045H MOV R1,#30H ;密碼存放RAM 30H35H ;RAM 40H45H 的值存入 30H35H ;清除屏幕 ;清除LCD6六位數(shù)字為000000 ;30H 為0的 ASCII 碼 ;光標(biāo)位置 ;光標(biāo)停在8AH位置 ;6個(gè)數(shù) ;密碼存放RAM 30H35H ;將密碼轉(zhuǎn)換為 ASCII碼 ;為L(zhǎng)CD顯示 ;鍵盤顯示存放 RAM 40H45H ;密碼存放RAM 30H35H ;比較6個(gè)數(shù) ;比較是否相等? ;6個(gè)碼都相等

27、則LCD顯示RIGHT! ;電鎖動(dòng)作 ;LCD 清除RIGHT! ;令電鎖不動(dòng)作 ;清除為000000 ;LCD第2行地址 ;至 TABLE4 取出ERROR! SET1:MOV A,R0 XCH A,R1 INC RO INC R1 DJNZ R6,SET1 JMP CLEAR1 CLEAR1:MOV P1,#8AH CALL ENABLE MOV R1,#06H A2: MOV A,#30H CALL WRITE2 DJNZ R1,A2 MOV P1,#8AH CALL ENABLE JMP START DISP:MOV P1,#8AH CALL ENABLE MOV R6,#06H MO

28、V R0,#30H DISP1: MOV A,R0 ADD A,#30H CALL WRITE2 INC R0 DJNZ R6,DISP1 CALL DELAY1 JMP CLEAR1 COMP: MOV R1,#40H MOV R0,#30H MOV R2,#06H COMP1: MOV A,R1 XRL A,R0 JNZ ERROR INC R0 INC R1 DJNZ R2,COMP1 CALL RIGHT CLR P0.0 CALL DELAY1 CALL SPACE SETB P0.0 JMP CLEAR ERROR: MOV P1,#0C0H CALL ENABLE MOV DPT

29、R,#TABLE4 CALL CALL WRITE1 DELAY1 ;輸出至LCD顯示 CALL SPACE ;LCD清除REEOR!為空白 JMP CLEAR1 ;LCD 清除為000000 RIGHT: MOVP1,#0C0H ;LCD第2行地址 CALL ENABLE MOV DPTR,#TABLE5 ;至 TABLE5 取RIGHT! CALL WRITE1 ;輸出至LCD顯示 RET SPACE: MOVP1,#0C0H ;LCD第2行地址 CALL ENABLE MOV DPTR,#TABLE6 ;至 TABLE6 取” CALL WRITE1 ;輸出至LCD顯示6個(gè)空白 RET

30、CHECK: MOV P1,#0FFH CLR RS SETB RW CLR E NOP SETB E JB P1.7,CHECK ;檢測(cè) LCD DB7=BUSY FLAG=0? MOV A,P1 ;是則讀入LCD內(nèi)部計(jì)數(shù)值 ANL A,#7FH ;取7個(gè)位 CJNE A,#10H,A3 ;第一行是否顯示完? MOV P1,#8AH ;是則光標(biāo)回到8AH位置 CALL ENABLE MOV R0,#40H ;按鍵顯示地址回到(40H) A3: RET ENABLE: CLR RS ;RS=0,R/W=0寫入指令寄存器 CLR RW CLR E CALL DELAY SETB E RET WR

31、ITE1: MOVR1,#00H ;至表取碼指針 A1: MOV A,R1 MOVC A,A+DPTR ;至DPTR所指定的地址取碼 CALL WRITE2 INC R1 CJNE A,#0FEH,A1 ;是否取到結(jié)束碼 FEH? RET WRITE2: MOVP1,A SETB RS CLR RW CLR E CALL DELAY SETB E RET DELAY: MOV R4,#05 D6: MOV R5,#0FFH DJNZ R5,$ DJNZ R4,D6 RET DELAY1: MOV R5,#20 D5: MOV D4: MOV R6,#200 R7,#248 DJNZ R7,$

32、DJNZ R6,D4 DJNZ R5,D5 TABLE1: DB PASS WORD:00000,0FEH TABLE2: DB 31H,32H,33H,43H DB 34H,35H,36H,44H DB 37H,38H,39H,45H DB 41H,30H,42H,46H TABLE3: DB 02H,02H,01H,05H,08H,02H TABLE4: DB ERROR!,0FEH TABLE5: DB RIGHT!,OFEH TABLE6: DB ,0FEH RET END ;鍵ASCII碼 實(shí)驗(yàn)三并行數(shù)據(jù)轉(zhuǎn)換成串行數(shù)據(jù)實(shí)驗(yàn) 一、實(shí)驗(yàn)?zāi)康?1、掌握89C51串行口方式0工作方式及編程方

33、法。 2、掌握用89C51的P1 口的I/O功能,讀入串行數(shù)據(jù)。 3、掌握利用串行口及I/O 口,擴(kuò)展I/O通道的方法。 二、實(shí)驗(yàn)說明 這個(gè)實(shí)驗(yàn)主要是用 74LS165把輸入的并行數(shù)據(jù)轉(zhuǎn)換成串行數(shù)據(jù),74LS165為8位移位寄存器, 其引腳圖如圖所示,引腳功能如下: 移位/置數(shù)端,低電平有效。 P0P7:并行數(shù)據(jù)輸入端。 CLK1、CKL2 :時(shí)鐘信號(hào)輸入端。 實(shí)驗(yàn)采用單片機(jī)串行工作方式0和P1 口兩種方式串 SER:串行輸出端。行讀入數(shù)據(jù)。串行口工作在方式0時(shí),可通過外接移位寄存器實(shí)現(xiàn)串并行 轉(zhuǎn)換。在這種方式下,數(shù)據(jù)為8位,從RXD端輸入,TXD端輸出移位同步時(shí)鐘信號(hào),其波特率固 定為晶振頻

34、率Fosc/12。由軟件置位串行控制寄存器的允許接收位(REN )后,才啟動(dòng)串行接收。待 8位數(shù)據(jù)接收完后,硬件將狀態(tài)寄存器的 RI位置1,RI位必須由軟件清零。用串行口工作方式0讀 入數(shù)據(jù),是自動(dòng)移位完成的,用P1端口串行讀入數(shù)據(jù)時(shí),要編程輸出時(shí)鐘信號(hào),移位讀入數(shù)據(jù)。 三、實(shí)驗(yàn)步驟 實(shí)驗(yàn)(一) 用串口方式0讀入撥碼開關(guān)的值,P0 口接8位發(fā)光二極管,顯示讀入值。 1、選用89C51最小應(yīng)用系統(tǒng)模塊和并入串出實(shí)驗(yàn)電路。 2、兀:、Q7、CLK1 分別接 P1.0、RXD、TXD。 3、 P0.0、P0.1、P0.2、P0.3、P0.4、P0.5、P0.6、P0.7 分另U接主板的 L1、L2、

35、L3、L4、L5、L6、 L7、L8。 4、 P0、P1、P2、P3、P4、P5、P6、P7 分別接主板的 K1、K2、K3、K4、K5、K6、K7、K8 5、LED點(diǎn)陣漢字實(shí)驗(yàn)電路的 +5V和GND必須接主機(jī)板的+5V和GND。 6、EA/VP接+5V、+5V和GND接主機(jī)板的+5V和GND。 7、用編程器將74LS1651.bin寫入AT89C51,脫機(jī)運(yùn)行。 實(shí)驗(yàn)(二) 1、選用89C51最小應(yīng)用系統(tǒng)模塊和并入串出實(shí)驗(yàn)電路。 2、工:、Q7、CLK1 分別接 P1.0、P1.1、P1.2。 3、 P0.0、P0.1、P0.2、P0.3、P0.4、P0.5、P0.6、P0.7 分另U接主板

36、的 L1、L2、L3、L4、L5、L6、 L7、L8。 4、 P0、P1、P2、P3、P4、P5、P6、P7 分別接主板的 K1、K2、K3、K4、K5、K6、K7、K8 5、LED點(diǎn)陣漢字實(shí)驗(yàn)電路的 +5V和GND必須接主機(jī)板的+5V和GND。 6、EA/VP接+5V、+5V和GND接主機(jī)板的+5V和GND。 7、用編程器將74LS1652.bin寫入AT89C51,脫機(jī)運(yùn)行。 四、流程圖及程序 1、源程序 ORG 0 PL BITP1.0 START: MOV SCON, #10H CLR PL SETB PL WAIT: JNB RI,WAIT MOV A,SBUF CLR RI MOV

37、 P0,A ACALL DELAY SJMP START DELAY: MOV R4,#0FFH AA1: MOV R5,#0FFH AA:NOP NOP DJNZ R5,AA DJNZ R4,AA1 RET END 實(shí)驗(yàn)(二) ORG 0 PL EQUP1.0 DAT EQUP1.1 CLK EQUP1.2 AJMP START ORG 0030H START: SETB CLK CLR PL SETB PL MOV R7,#8 NEXT: RR A MOV C,DAT MOV ACC.7,C CLR CLK SETB CLK DJNZ R7,NEXT MOV P0,A ACALL DELA

38、Y SJMP START DELAY: MOV R4,#0FFH AA1: MOV R5,#0FFH AA: NOP NOP DJNZ R5,AA DJNZ R4,AA1 RET END 實(shí)驗(yàn)四 靜態(tài)串行顯示實(shí)驗(yàn) 一、實(shí)驗(yàn)?zāi)康?1、掌握數(shù)字、字符轉(zhuǎn)換成顯示段碼的軟件編譯方法 2、靜態(tài)顯示的原理和相關(guān)程序的編寫 二、實(shí)驗(yàn)電路 1、靜態(tài)顯示,電路中圖所示。顯示器由5個(gè)共陰極LED數(shù)碼管組成。輸入只有兩個(gè)信號(hào),它 們是串行數(shù)據(jù)線 DIN和移位信號(hào)CLK。5個(gè)串/并移位寄存器芯片 74LS164首尾相連。每片的并行 輸出作為L(zhǎng)ED數(shù)碼管的段碼。 74LS164的引腳如圖所示; 74LS164為8位串入

39、并出移位寄存器,1、2為串行輸入端,Q0Q7為并行輸出端,CLK為移位 時(shí)鐘脈沖,上升沿移入一位;MR為清零端,低電平時(shí)并行輸出為零。 三、實(shí)驗(yàn)內(nèi)容及步驟 單片機(jī)的P3.0作數(shù)據(jù)串行輸出,P3.1作移位脈沖輸出。 1、使用單片機(jī)最小應(yīng)用系統(tǒng)模塊和靜態(tài)顯示實(shí)驗(yàn)?zāi)K,用導(dǎo)線連接RXD、TXD到串行靜態(tài)顯 示模塊的 DIN、CLK端。EA/VP接+5V 2、LED點(diǎn)陣漢字實(shí)驗(yàn)電路的 +5V和GND必須接主機(jī)板的+5V和GND。 DBUFO EQU30H ;置存儲(chǔ)區(qū)首址 TEMP EQU40H ;置緩沖區(qū)首址 DIN BIT0B0H ;置串行輸出口 CLK BIT0B1H ;置時(shí)鐘輸出口 ORG 0

40、MOV 30H, #8 ;存入顯示數(shù)據(jù) MOV 31H, #9 MOV 32H, #C MOV 33H, #5 MOV 34H, #1 MOV R0, #DBUFO MOV R1, #TEMP MOV R2, #5 MOV DPTR, #SEGTAB ;表頭地址 MOV A, R0 MOVC A, A+DPTR ;查表指令 MOV R1,A INC R0 INC R1 DJNZ R2, DP10 MOV R0, #TEMP ;段碼地址指針 MOV R1, #5 ;段碼字節(jié)數(shù) MOV R2, #8 ;輸出子程序 MOV A, R0 ;取段碼 3、 用編程器將靜態(tài)顯示實(shí)驗(yàn).bin寫入AT89C51

41、,脫機(jī)運(yùn)行。 4、 通電運(yùn)行,五位數(shù)碼管顯示“89051 ”。 四、源程序 DISP: DP10: DP12: DP13: RLC A ;段碼左移 MOV DIN,C ;輸出一位段碼 CLR CLK ;發(fā)送移位脈沖一位 SETB CLK DJNZ R2, DP13 INC RO DJNZ R1, DP12 SJMP $ SEGTAB:DB 3FH, 06H, 5BH, 4FH, 66H, 6DH ;0,1,2,3,4,5 DB 7DH, 07H, 7FH, 6FH, 77H, 7CH ;6,7,8,9,A,B DB ; 58H, 5EH, 7BH, 71H,00H,40H ;C,D,E,F,,

42、- DELAY: MOV R4, #03H ;延時(shí)子程序 AA1: MOV R5, #0FFH AA: DJNZ R5, AA DJNZ R4, AA1 RET END 實(shí)驗(yàn)五 12c總線實(shí)驗(yàn) 一、實(shí)驗(yàn)?zāi)康?1、了解i2c總線的標(biāo)準(zhǔn)及使用 2、掌握用|2C總線方式讀寫串行 EEPROM 24C01的方法 3、熟悉24C01的芯片的功能 二、實(shí)驗(yàn)說明 1、串行 EEPROM (24C01 )接口方法 在新一代單片機(jī)中,無論總線型還是非總線型單片機(jī),為了簡(jiǎn)化系統(tǒng)結(jié)構(gòu),提高系統(tǒng)的可靠性, 都推出了芯片間的串行數(shù)據(jù)傳輸技術(shù),設(shè)置了芯片間的串行傳輸接口或串行總線。串行總線擴(kuò)展接 線靈活,極易形成用戶的模

43、塊化結(jié)構(gòu),同時(shí)將大大簡(jiǎn)化其系統(tǒng)結(jié)構(gòu)。串行器件不僅占用很少的資源 和I/O線,而且體積大大縮小,同時(shí)還具有工作電壓寬,抗干擾能力強(qiáng),功耗低,資料不宜丟失和 支持在線編程等特點(diǎn)。目前,各式各樣的串行接口器件層出不窮,女口:串行EEPROM,串行ADC/DAC, 串行時(shí)鐘芯片,串行數(shù)字電位器,串行微處理器監(jiān)控芯片,串行溫度傳感器等等。 串行EEPROM是在各種串行器件應(yīng)用中使用較頻繁的器件,和并行EEPROM相比,串行 EEPROM的資料傳送的速度較低,但是其體積較小,容量小,所含的引腳也較少。所以,它特別適 合于需要存放非揮發(fā)資料,要求速度不高,弓I腳少的單片機(jī)的應(yīng)用。 2、串行EEPROM及其工

44、作原理 串行EEPROM中,較為典型的有 ATMEL公司的 AT24CXX 系列以及該公司生產(chǎn)的 AT93CXX 系列,較為著名的半導(dǎo)體廠家,包括 Microchip,國(guó)家半導(dǎo)體廠家等,都有 AT93CXX系列EEPROM 產(chǎn)品。 AT24CXX系列的串行電可改寫及可編程只讀存儲(chǔ)器EEPROM有10種型號(hào),其中典型的型號(hào)有 AT24C01A/02/04/08/16 等 5 種,它們的存儲(chǔ)容量分別是1024/2048/4096/8192/16384 位,也就是128/256/512/1024/2048字節(jié)。這個(gè)系列一般用于低電壓, 低功耗的工業(yè)和商業(yè)用途, 并且可以組成優(yōu)化的系統(tǒng)。信息存取采用2

45、線串行接口。這里我們就以 24C01的結(jié)構(gòu)特點(diǎn),其它系 列比較類似。 3、結(jié)構(gòu)原理及引腳 AT24C01有地址線A0A2,串行資料引腳 SDA,串行時(shí)鐘輸入引腳 SCL,寫保護(hù)引腳 WP等 引腳。很明顯,其引腳較少,對(duì)組成的引用系統(tǒng)可以減少布線,提高可靠性。 各引腳的功能和意義如下: VCC引腳,電源+5V。 GND引腳,地線。 SCL引腳,串行時(shí)鐘輸入端。在時(shí)鐘的正跳沿即上升沿時(shí)把資料寫入EEPROM ;在時(shí)鐘的 負(fù)跳沿即下降沿時(shí)把資料從EEPROM中讀出來。 SDA引腳,串行資料I/O端,用于輸入和輸出串行資料。這個(gè)引腳是漏極開路的埠,故可 以組成“線或”結(jié)構(gòu)。 A0 , A1 , A2引

46、腳,是芯片地址引腳。在型號(hào)不同時(shí)意義有些不同,但都要接固定電平。 WP引腳,寫保護(hù)端。這個(gè)端提供了硬件數(shù)據(jù)保護(hù)。當(dāng)把WP接地時(shí),允許芯片執(zhí)行一般 讀寫操作;當(dāng)把 WP接VCC時(shí),則對(duì)芯片實(shí)施寫保護(hù)。 4、內(nèi)存的組織:對(duì)于不同的型號(hào),內(nèi)存的組織不一樣,其關(guān)鍵原因在于內(nèi)存容量存在差異。對(duì) 于AT24CXX系列的EEPROM,其典型型號(hào)的內(nèi)存組織如下。 AT24C01A :內(nèi)部含有128個(gè)字節(jié),故需要 7位地址對(duì)其內(nèi)部字節(jié)進(jìn)行尋址。 AT24C02 :內(nèi)部含有256個(gè)字節(jié),故需要 8位地址對(duì)其內(nèi)部字節(jié)進(jìn)行讀寫。 5、運(yùn)行方式: 起始狀態(tài):當(dāng)SCL為高電平時(shí),SDA由高電平變到低電平則處于起始狀態(tài)。起

47、始狀態(tài)應(yīng)處于任 何其它命令之前。 停止?fàn)顟B(tài):當(dāng)SCL處于高電平時(shí),SDA由低電平變到高電平則處于停止?fàn)顟B(tài)。在執(zhí)行完讀序列 信號(hào)之后,停止命令將把EEPROM置于低功耗的備用方式(Standby Mode)。 應(yīng)答信號(hào):應(yīng)答信號(hào)是由接受資料的器件發(fā)出的。 當(dāng)EEPROM接受完一個(gè)寫入資料之后, 會(huì)在 SDA上發(fā)一個(gè)“ 0”應(yīng)答信號(hào)。反之,當(dāng)單片機(jī)接受完來自 EEPROM的資料后,單片機(jī)也應(yīng)向 SDA 發(fā)ACK信號(hào)。ACK信號(hào)在第9個(gè)時(shí)鐘周期時(shí)出現(xiàn)。 備用方式(Standby Mode): AT24C01A/02/04/08/16都具有備用方式,以保證在沒有讀寫操作時(shí) 芯片處于低功耗狀態(tài)。在下面兩

48、種情況中,EEPROM都會(huì)進(jìn)入備用方式:第一,芯片通電的時(shí)候; 第二,在接到停止位和完成了任何內(nèi)部操作之后。 AT24C01等5種典型的EEPROM在進(jìn)入起始狀態(tài)之后,需要一個(gè)8位的“器件地址字”去啟 動(dòng)內(nèi)存進(jìn)行讀或?qū)懖僮?。在寫操作中,它們有“字?jié)寫”,“頁(yè)面寫”兩種不同的寫入方法。在讀操 作中,有“現(xiàn)行地址讀”,“隨機(jī)讀”和“順序讀”種種各具特點(diǎn)的讀出方法。下面分別介紹器件尋 址,寫操作和讀操作。 器件尋址:所謂器件尋址(Device Addressing )就是用一個(gè)8位的器件地址字 (Device Address Word)去選擇內(nèi)存芯片。在邏輯電路中的 AT24CXX系列的5種芯片中,

49、即 AT24C01A/02/04/08/16 中,如果和器件地址字相比較結(jié)果一致,則讀芯片被選中。下面對(duì)器件尋址的過程和意義加以說明。 芯片的操作地址 D7 D6 D5 D4 D3 D2 D1 D0 1010 A2A1A0R/W 用于內(nèi)存EEPROM芯片尋址的器件地址字如圖所示。它有4種方式,分別對(duì)應(yīng)于 1K/2K,4K, 8K和16K位的EEPROM芯片。 從圖中看出:器件地址字含有3個(gè)部分。第一部分是高4位,它們稱為EEPROM AT24C01A/02/04/08/16的標(biāo)識(shí)第二部分稱為硬布線地址,它們是標(biāo)識(shí)后的 3位。第三部分是最低位, 它是讀/寫操作選擇位。 第一部分:器件標(biāo)識(shí),器件地

50、址字的最高 4位。這4位的內(nèi)容恒為“ 1010”,用于標(biāo)識(shí)EEPROM 器件 AT24C01A/02/04/08/16。 第二部分:硬布線地址,是與器件地址字的最高4位相接的低3位。硬布線地址的 3位有2種 符號(hào):Ai ( i=02),Pj (j=02 )其中Ai表示外部硬布線地址位。 對(duì)于AT24C01A/02這兩種1K/2K位的EEPROM 芯片,硬布線地址為“ A2,A1,A0”。在應(yīng)用 時(shí),“ A2,A1,A0”的內(nèi)容必須和 EEPROM芯片的A2,A1,A0的硬布線情況,即邏輯連接情況 相比較,如果一樣,則芯片被選中;否則,不選中。AT24C01/02 :真正地址=字地址。 第三部分

51、:讀/寫選擇位,器件地址字的最低位,并用R/W表示。當(dāng)R/W=1時(shí),執(zhí)行讀操作; 當(dāng)R/W=0時(shí),執(zhí)行寫操作。 當(dāng)EEPROM芯片被選中時(shí),則輸出“ 0”;如果EEPROM芯片沒有被選中,則它回到備用方式。 被選中的芯片。其以后的輸入,輸出情況視寫入和讀出的內(nèi)容而定。 寫操作:AT24C01A/02/04/08/16這5種EEPROM芯片的寫操作有 2種:一種是字節(jié)寫,另一 種是頁(yè)面寫。 字節(jié)寫 這種寫方式只執(zhí)行一個(gè)字節(jié)的寫入。字節(jié)寫的過程如圖所示,其寫入過程分外部寫和內(nèi)部寫兩 部分,分別說明如下。 在起始狀中,首先寫入8位的器件地址。則 EEPROM芯片會(huì)產(chǎn)生一個(gè)“ 0”信號(hào)ACK輸出作為

52、應(yīng)答;接著,寫入 8位的字地址,在接受了字地址之后,EEPROM芯片又產(chǎn)生一個(gè)“ 0”應(yīng)答信號(hào) ACK ;隨后,寫入8位資料,在接受了資料之后,芯片又產(chǎn)生一個(gè)“ 0”信號(hào)ACK作為應(yīng)答。到此 為止,完成一個(gè)字節(jié)的寫過程,故應(yīng)在SDA端產(chǎn)生一個(gè)停止?fàn)顟B(tài),這是外部寫過程。 在這個(gè)過程中,控制 EEPROM的單片機(jī)應(yīng)在 EEPROM的SCL,SDA端送入適當(dāng)?shù)男盘?hào)。當(dāng)然 在一個(gè)字節(jié)寫過程結(jié)束時(shí),單片機(jī)應(yīng)以停止?fàn)顟B(tài)結(jié)束寫過程。在這時(shí),EEPROM進(jìn)入內(nèi)部定時(shí)的寫 周期,以便把接受的數(shù)據(jù)寫入到存儲(chǔ)單元中。在 時(shí)不響應(yīng)外部信號(hào)直到寫周期完成。 處于停止?fàn)顟B(tài)與下一個(gè)起始狀態(tài)之間。 頁(yè)面寫: 這種寫入方式執(zhí)行

53、含若干字節(jié)的 字節(jié);頁(yè)面寫的開頭部分和字節(jié)寫一樣。 EEPROM的內(nèi)部寫周期中,其所有輸入被屏蔽,同 這是內(nèi)部寫過程。 內(nèi)部寫過程大約需要 10ms時(shí)間。內(nèi)部寫過程 1個(gè)頁(yè)面的寫入。對(duì)于 在起始狀態(tài),首先寫入 “ 0”信號(hào)ACK之后,寫入8位字地址;又待芯片應(yīng)答了“ AT24C01A/02,它們的1個(gè)頁(yè)面含8個(gè) 8位器件地址;待EEPROM應(yīng)答了 0”信號(hào)ACK之后,寫入8位資料。 隨后頁(yè)面寫的過程則和字節(jié)寫有區(qū)別。 當(dāng)芯片接受了第一個(gè) 8位資料并產(chǎn)生應(yīng)答信號(hào) ACK之后,單片機(jī)可以連續(xù)向 EEPROM芯片發(fā) 送共為1頁(yè)面的資料。對(duì)于AT24C01A/02,可發(fā)送共1個(gè)頁(yè)面的8個(gè)字節(jié)(連第一個(gè)

54、8位資料在內(nèi)) 對(duì)于AT24C04/08/16,則共可發(fā)送1個(gè)頁(yè)面共16個(gè)字節(jié)(連第一個(gè)8位資料在內(nèi))。當(dāng)然,每發(fā)一個(gè) 字節(jié)都要等待芯片的應(yīng)答信號(hào) ACK。 之所以可以連續(xù)向芯片發(fā)送1個(gè)頁(yè)面資料,是因?yàn)樽值刂返牡?34位在EEPROM芯片內(nèi)部可實(shí) 現(xiàn)加1,字地址的高位不變,用于保持頁(yè)面的行地址。頁(yè)面寫和字節(jié)寫兩者一樣,都分為外部寫和 內(nèi)部寫過程。 應(yīng)答查詢:應(yīng)答查詢是單片機(jī)對(duì)EEPROM各種狀態(tài)的一種檢測(cè)。單片機(jī)查詢到EEPROM有應(yīng) 答“ 0”信號(hào)ACK輸出,則說明其內(nèi)部定時(shí)寫的周期結(jié)束,可以寫入新的內(nèi)容。單片機(jī)是通過發(fā)送 起始狀態(tài)及器件地址進(jìn)行應(yīng)答查詢的。由于器件地址可以選擇芯片,則檢測(cè)芯

55、片送出到 SDA的狀態(tài) 就可以知道其是否有應(yīng)答了。 讀操作:讀操作的啟動(dòng)是和寫操作類同的。它一樣需要圖所示的器件地址字。和寫操作不 同的就是R/W信號(hào)為“ 1”時(shí)執(zhí)行讀操作。 讀操作有3種方式,即現(xiàn)行地址讀,隨機(jī)讀和順序讀。下面分別說明它們的工作過程。 現(xiàn)行地址讀; 在上次讀或?qū)懖倏v完成之后。芯片內(nèi)部字地址計(jì)數(shù)器會(huì)加1,產(chǎn)生現(xiàn)行地址。只要沒有再執(zhí)行 讀或?qū)懖僮鳎@個(gè)現(xiàn)行地址就會(huì)在EEPROM芯片保持上電的期間一直保存。一旦器件地址選中 EEPROM芯片,并且有 R/W=1,則在芯片的應(yīng)答信號(hào) ACK之后把讀出的現(xiàn)行地址的資料送出。現(xiàn) 行地址的資料輸出時(shí),就由單片機(jī)一位一位接受,接收后單片機(jī)不用

56、向EEPROM發(fā)應(yīng)答信號(hào) ACK “ 0”電平,但應(yīng)保證發(fā)出停止?fàn)顟B(tài)的信號(hào)以結(jié)束現(xiàn)行地址讀操作?,F(xiàn)行地址讀會(huì)產(chǎn)生地址循環(huán)覆蓋 現(xiàn)象,但和寫操縱的循環(huán)覆蓋不同。在寫操縱中,地址的循環(huán)覆蓋是現(xiàn)行頁(yè)面的最后一個(gè)字節(jié)寫入 之后,再行寫入則覆蓋同一頁(yè)面的第一個(gè)字節(jié)。而在現(xiàn)行地址讀操縱中,地址的循環(huán)覆蓋是在最后 頁(yè)面的最后一個(gè)字節(jié)讀出之后,再行讀出才覆蓋第一個(gè)頁(yè)面的第一個(gè)字節(jié)。 隨機(jī)讀: 隨機(jī)讀和現(xiàn)行地址讀的最大區(qū)別在于隨機(jī)讀會(huì)執(zhí)行一個(gè)偽寫入過程以把字地址裝入EEPROM 芯片中,然后執(zhí)行讀出,顯然,隨機(jī)讀有2個(gè)步驟。 第一,執(zhí)行偽寫入一一把字地址送入EEPROM,以選擇需讀的字節(jié)。 第二,執(zhí)行讀出一一根

57、據(jù)字地址讀出對(duì)應(yīng)內(nèi)容。 當(dāng)EEPROM芯片接收了器件地址及字地址時(shí),在芯片產(chǎn)生應(yīng)答信號(hào)ACK之后,單片機(jī)必須再 產(chǎn)生一個(gè)起始狀態(tài),執(zhí)行現(xiàn)行地址讀,這時(shí)單片機(jī)再發(fā)出器件地址并且令R/W=1,則EEPROM應(yīng) 答器件地址并行輸出被讀數(shù)據(jù)。在資料讀出時(shí)由單片機(jī)執(zhí)行一位一位接收,接收完畢后,單片機(jī)不 用發(fā)“ 0”應(yīng)答信號(hào)ACK,但必須產(chǎn)生停止?fàn)顟B(tài)以結(jié)束隨機(jī)讀過程。 應(yīng)該注意:在隨機(jī)讀的第二個(gè)步驟是執(zhí)行現(xiàn)行地址讀的,由于第一個(gè)步驟時(shí)芯片接收了字地址, 故現(xiàn)行地址就是所送入的字地址。 順序讀: 順序讀可以用現(xiàn)行地址讀或隨機(jī)讀進(jìn)行啟動(dòng)。它和現(xiàn)行地址讀。隨機(jī)讀的最大區(qū)別在于:順序 讀在讀出一批資料之后才由單片

58、機(jī)產(chǎn)生停止?fàn)顟B(tài)結(jié)束讀操作;而現(xiàn)行地址讀和隨機(jī)讀在讀出一個(gè)資 料之后就由單片機(jī)產(chǎn)生停止?fàn)顟B(tài)結(jié)束讀操作。 執(zhí)行順序讀時(shí),首先執(zhí)行現(xiàn)行讀或隨機(jī)讀的有關(guān)過程,在讀出第一個(gè)資料之后,單片機(jī)輸出“ 0 ” 應(yīng)答信號(hào)ACK。在芯片接收應(yīng)答信號(hào)ACK后,就會(huì)對(duì)字地址進(jìn)行計(jì)數(shù)加1,隨后串行輸出對(duì)應(yīng)的 字節(jié)。當(dāng)字地址計(jì)數(shù)達(dá)到內(nèi)存地址的極限時(shí),則字地址會(huì)產(chǎn)生覆蓋,順序讀將繼續(xù)進(jìn)行。只有在單 片機(jī)不再產(chǎn)生“ 0”應(yīng)答信號(hào)ACK,而在接收資料之后馬上產(chǎn)生停止?fàn)顟B(tài),才會(huì)結(jié)束順序讀操作。 在對(duì)AT24CXX系列執(zhí)行讀寫的2線串行總線工作中,其有關(guān)信號(hào)是由單片機(jī)的程序和EEPROM 產(chǎn)生的。有兩點(diǎn)特別要記?。捍袝r(shí)鐘必須由單

59、片機(jī)程序產(chǎn)生,而應(yīng)答信號(hào)ACK則是由接收資料的 器件產(chǎn)生,也就是寫地址或資料時(shí)由EEPROM產(chǎn)生ACK,而讀數(shù)據(jù)時(shí)由單片機(jī)產(chǎn)生。 6、AT24CXX系列應(yīng)用注意事項(xiàng) AT24CXX系列型號(hào):AT24CXX系列EEPROM有13種型號(hào)。它們的容量不同,執(zhí)行頁(yè)面寫時(shí) 的頁(yè)面定義不同,進(jìn)行讀寫時(shí)的地址位數(shù)不同,器件地址不同。有關(guān)主要指針在應(yīng)用中要加以區(qū)別 和注意。 三、實(shí)驗(yàn)內(nèi)容與步驟 對(duì)24C01進(jìn)行讀,寫,效驗(yàn)程控,充分了解I2C總線的應(yīng)用方法。 1、 單片機(jī)最小應(yīng)用系統(tǒng)的P2.0、P2.1接I2C總線接口的SDA、SCL。 2、P1.0、P1.1、P1.2、P1.3、P1.4、P1.5、P1.6

60、、P1.7 分別接 K1、K2、K3、K4、K5、K6、K7、 K8 。 3、P0.0、P0.1、P0.2、P0.3、P0.4、P0.5、P0.6、P0.7 分別接 L1、L2、L3、L4、L5、L6、 L7、L8。 4、EA/VP接+5V、+5V和GND分別接主機(jī)板的+5V和GND。LED點(diǎn)陣漢字實(shí)驗(yàn)電路的 +5V和GND必須接主機(jī)板的+5V和GND。 5、用編程器將24C01單字節(jié)讀寫程序.bin寫入AT89C51,脫機(jī)運(yùn)行。 6、 通電運(yùn)行,L1L8顯示的是寫入 24C01的數(shù)據(jù)。 7、 若要改變寫入的數(shù)據(jù),可以通過K1K8來設(shè)置。按一下單片機(jī)最小應(yīng)用系統(tǒng)的復(fù)位按鈕(RST) 即可將數(shù)據(jù)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論