版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、實驗一 LED點陣顯示實驗-2 - 一實驗目的-2 - 二實驗說明-2 - 三實驗內容及步驟-2 - 四、源程序清單(LED.asm) - 2 - 實驗二 字符型液晶顯示實驗(密碼鎖)-5 - 一實驗目的-5 - 二實驗說明-5 - 三實驗內容及步驟-7 - 四源程序清單(LCD.asm) - 7 - 實驗三并行數據轉換成串行數據實驗 -13 - 一、實驗目的-13 - 二、實驗說明-13 - 三、實驗步驟-13 - 四、流程圖及程序-13 - 實驗四靜態(tài)串行顯示實驗 -16- 一、實驗目的 -16 - 二、實驗電路-16 - 三、實驗內容及步驟-16 - 四、源程序-16 - 實驗五I2C總
2、線實驗 -18 - 一、實驗目的-18 - 二、實驗說明-18 - 三、實驗內容與步驟-21 - 四、源程序-21 - 實驗六12864*64圖形點陣與單片機接口實驗 -25 - 一、OCM12864液晶顯示模塊概述 -25 - 二、最大工作范圍 -25 - 三、電氣特性(測試條件 Ta=25,Vdd=5.0+/-0.25V) - 25 - 四、接口說明-25 - 五、指令描述 -27 - 六、接口時序-28 - 七、屏幕顯示與 DD RAM 地址映射關系 -29 - 八、測試硬件電路 -30 - 九、實驗內容與步驟-30 - 十、源程序-31 - 實驗一 LED點陣顯示實驗 一實驗目的 了解
3、8X 8矩陣LED顯示的基本原理和功能。 掌握8X 8矩陣LED和單片機的接口和軟件設計方法。 二實驗說明 8 X 8矩陣LED為共陰極,將一筆數據8個中文字,分批顯示并向左移動,即顯示“科港” 教 儀”7“歡迎”7“你!” 科港”(左移)7“教儀”(左移)7“歡迎”(左移)7“你! ” (左移) 三實驗內容及步驟 1、使用點陣中文顯示系統(tǒ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 接單片機主機的 +5V、+12V、GND。EA/VP 接+5V。 4、用編程器將LED.bin寫入AT89C51,脫機運行。 四、源程序清單(LED.asm) org 00h sta比 mov a,#00h mov p0,a; mov p2,a call dis call move ;清除屏幕 ;調用顯示子程序 jmp start dis: mo
5、v r2,#04h ;每個畫面2個字,8個字分4次顯示 mov 20h,#00 ;取碼指針暫存地址 20H初值為00 d4: mov r4,#00h ;74154掃描指針初值 mov r1,#0ffh ;每幕停留時間 d5: mov r6,#32 海幕2個字,32個數據碼 mov r0,20h ;取碼指針存入R0 d2: call reda1 ;調用取碼子程序 inc r4;掃描下一列 djnz r6,d2;顯示 1 幕? mov r4,#00;清除74154掃描指針為00 djnz r1,d5;每幕停留時間到了? mov 20h,r0;保留取碼指針存入20H djnz r2,d4;2幕顯示完
6、畢了 ? ret move: mov 20h,#00 ;取碼指針暫存地址 20H初值為00 mov r4,#00h ;74154掃描指針初值 m1: mov r1,#0ffh ;每幕停留的時間 m2: mov r6,#32 海幕2個字,32個數據碼 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 ;調用取碼子程序 ;掃描下一行 ;顯示1幕? ;清除74154掃描指針為00 ;每幕停留時間到了 ? ;取碼指針載入A ;加 8 ;再存入20H地址取碼指針 ;8個字是否都左移完畢了 ? ;掃描指針載入A ;輸出至P1掃描列 ;取碼指針載入A ;數據指針指到TABLE ;到TABLE取上半部的數據碼 ;輸出至P0顯示 ;取下一個碼 ;取碼指針載入A ;數據指
8、針指到TABLE ;到TABLE取下半部的數據碼 ;輸出至P2顯示 ;取碼值加1 涎時 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 實驗二字符型液晶顯示實驗(密碼鎖) 一實驗目的 了解字符型液晶顯示器的工作原理 二實驗說明 本實驗用的是文字型 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、引腳功能 引腳 符號 功能說明 1 GND 接地 2 Vcc +5V 3 VL 驅動LCD,一般將此腳接地 4 RS 寄存器選擇0:指令寄存器 (WRITE ) Busy flag ,位址計數 器(READ ) 1:數據寄存器(WRITE , READ ) 5 R/W READ/WRITE 選擇 1: READ0: WRITE 6 E 讀寫使能(下降沿使能) 7 DB0 低4位一態(tài)、雙向數據總線 8 DB1 9 DB2 10 DB3 11 DB4 咼4位二態(tài)、雙向數據總線 另外DB7也是一個Busy flang 12 DB5 13 DB6 14 DB7 2 寄存器選擇,如表7.5 所示 表7.
14、5寄存器選擇控制線操作 RS R/W 操作說明 0 0 寫入指令寄存器(清除屏幕等) 0 1 讀Busy flag(DB7),以及讀取位址計數器(DB0DB6 )值 1 0 與入數據寄存器(顯示各字型等) 1 1 從數據寄存器讀取數據 3. Busy flag(DB7):在此位未被清除為“ 0”時,LCD將無法再處理其他指令要求。 4 顯示器地址 (1)內部地址計數器的計數器地址:DB7=0 ( DB0DB6 )第1行00、01、02等,第2行 40、 41、 42 / 導,可配合檢測 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+內部計數地址,可以用此方式將字顯示在某一位置。 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 * 光標回到原點 0 0 0 0 0 0 0 0 1 * 進入模式設定 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 * * 功能設定 0 0 0 0 1 DL N F * * 字發(fā)生器地址設定 0 0 0 1 ACG 設置顯示地址 0 0 1 ADD 忙碌標志位BF 0 1 B
19、F 顯示數據 1 0 寫入數據 讀取數據 1 1 讀出數據 I/DI/D=1 表示加1, I/D=0表示減1 SS=1表示顯示幕ONS=0表示OFF DD=1表示顯示屏幕OND=0表示顯示屏幕OFF CC=1表示光標ONC=1表示光標OFF BB=1表示閃爍ONB=0表示閃爍OFF S/CS/C=1表示顯示屏幕移位S/C=0光標移位 R/LR/L=1表示右移R/L=0表示左移 DLDL=1表示8位DL=0表示4位 FF=1表示5X 10點矩陣F=0表示5X7點矩陣 NN=1表示2行顯示行N=0表示1行顯示行 BF BF=1 :內部正在動作BF=0 :可接收指令或數據碼 5 三實驗內容及步驟 1
20、、使用字符型液晶顯示系統(tǒng)模塊和單片機最小應用系統(tǒng) 2、RS、R/W、E、DBO、DB1、DB2、DB3、DB4、DB5、DB6、DB7 分另U接單片機最小應用系 統(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分別接接單片機主機板的GND、+5V。 LED點陣漢字實驗電路的+5V和GND 必須接主機板的+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,脫機運行。 四源程序清單(LCD.asm) RS BIT P3.5 RW BIT P3.6 E BIT P3.7 ORG 00H MOV SP,#70H ;設置堆棧 MOV R7,#00H ;TYABLE3(密碼存放)的取碼指針 MOV R6,#06H ;6個密碼 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功能設定,DL=1(8位),N=1(2行顯示) MOV P1,#38H CALL ENABLE MOV P1,#0FH ;顯示屏幕 ON/OFF,D=1(顯示 ON) CALL ENABLE ;C=1(光標 ON),B=1(閃爍 ON) MOV P1,#06H ;LCD模態(tài)設定,I/D=1(計數地址加1) CALL ENABLE MOV P1,#80H ;LCD第1行地址 CALL ENABLE MOV DPTR,#TABLE1 ;到 TABLE1 取碼顯示PASS WORD:000000 CALL WRITE1 MOV P1,#8AH ;光標所在位置(第一個數字地址) CALL ENA
23、BLE ;清除按鍵存放RAM的內容 INC R0 DJNZ R4,CLEAR R0,#40H ;按鍵值的RAM 40H45H MOV L1: MOV R3,#0F7H ;鍵盤行掃描初值 MOV R1,#00H ;TABLE2(鍵盤內碼)的取碼指針 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個列掃描完畢否? START: MOVR4,#06H MOV R0,#40H C
24、LEAR: MOVR0,#00H MOV SETB RRC MOV A,R3 C A R3,A ;掃描下1行 ;4個行掃描完畢否? JC L2 JMP L1 KEYIN: MOVR7,#10 ;消除抖動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,以免數據被破壞 XRL A,#41H ;是否按*,設
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 ;數字碼顯示至LCD CALL WRITE2 SUBB A,#30H ;鍵盤碼為ASCII碼,減30H變?yōu)槭M制碼 MOV R0,A ;存入 40H45H INC R0
26、CALL CHECK ;檢查LCD是否顯示完第6個數字 JMP L1 SET0:MOVR6,#06H ;密碼設定 MOV R0,#40H ;鍵盤顯示器存放 RAM4045H MOV R1,#30H ;密碼存放RAM 30H35H ;RAM 40H45H 的值存入 30H35H ;清除屏幕 ;清除LCD6六位數字為000000 ;30H 為0的 ASCII 碼 ;光標位置 ;光標停在8AH位置 ;6個數 ;密碼存放RAM 30H35H ;將密碼轉換為 ASCII碼 ;為LCD顯示 ;鍵盤顯示存放 RAM 40H45H ;密碼存放RAM 30H35H ;比較6個數 ;比較是否相等? ;6個碼都相等
27、則LCD顯示RIGHT! ;電鎖動作 ;LCD 清除RIGHT! ;令電鎖不動作 ;清除為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個空白 RET
30、CHECK: MOV P1,#0FFH CLR RS SETB RW CLR E NOP SETB E JB P1.7,CHECK ;檢測 LCD DB7=BUSY FLAG=0? MOV A,P1 ;是則讀入LCD內部計數值 ANL A,#7FH ;取7個位 CJNE A,#10H,A3 ;第一行是否顯示完? MOV P1,#8AH ;是則光標回到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 ;是否取到結束碼 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碼 實驗三并行數據轉換成串行數據實驗 一、實驗目的 1、掌握89C51串行口方式0工作方式及編程方
33、法。 2、掌握用89C51的P1 口的I/O功能,讀入串行數據。 3、掌握利用串行口及I/O 口,擴展I/O通道的方法。 二、實驗說明 這個實驗主要是用 74LS165把輸入的并行數據轉換成串行數據,74LS165為8位移位寄存器, 其引腳圖如圖所示,引腳功能如下: 移位/置數端,低電平有效。 P0P7:并行數據輸入端。 CLK1、CKL2 :時鐘信號輸入端。 實驗采用單片機串行工作方式0和P1 口兩種方式串 SER:串行輸出端。行讀入數據。串行口工作在方式0時,可通過外接移位寄存器實現串并行 轉換。在這種方式下,數據為8位,從RXD端輸入,TXD端輸出移位同步時鐘信號,其波特率固 定為晶振頻
34、率Fosc/12。由軟件置位串行控制寄存器的允許接收位(REN )后,才啟動串行接收。待 8位數據接收完后,硬件將狀態(tài)寄存器的 RI位置1,RI位必須由軟件清零。用串行口工作方式0讀 入數據,是自動移位完成的,用P1端口串行讀入數據時,要編程輸出時鐘信號,移位讀入數據。 三、實驗步驟 實驗(一) 用串口方式0讀入撥碼開關的值,P0 口接8位發(fā)光二極管,顯示讀入值。 1、選用89C51最小應用系統(tǒng)模塊和并入串出實驗電路。 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點陣漢字實驗電路的 +5V和GND必須接主機板的+5V和GND。 6、EA/VP接+5V、+5V和GND接主機板的+5V和GND。 7、用編程器將74LS1651.bin寫入AT89C51,脫機運行。 實驗(二) 1、選用89C51最小應用系統(tǒng)模塊和并入串出實驗電路。 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點陣漢字實驗電路的 +5V和GND必須接主機板的+5V和GND。 6、EA/VP接+5V、+5V和GND接主機板的+5V和GND。 7、用編程器將74LS1652.bin寫入AT89C51,脫機運行。 四、流程圖及程序 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 實驗(二) 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 實驗四 靜態(tài)串行顯示實驗 一、實驗目的 1、掌握數字、字符轉換成顯示段碼的軟件編譯方法 2、靜態(tài)顯示的原理和相關程序的編寫 二、實驗電路 1、靜態(tài)顯示,電路中圖所示。顯示器由5個共陰極LED數碼管組成。輸入只有兩個信號,它 們是串行數據線 DIN和移位信號CLK。5個串/并移位寄存器芯片 74LS164首尾相連。每片的并行 輸出作為LED數碼管的段碼。 74LS164的引腳如圖所示; 74LS164為8位串入
39、并出移位寄存器,1、2為串行輸入端,Q0Q7為并行輸出端,CLK為移位 時鐘脈沖,上升沿移入一位;MR為清零端,低電平時并行輸出為零。 三、實驗內容及步驟 單片機的P3.0作數據串行輸出,P3.1作移位脈沖輸出。 1、使用單片機最小應用系統(tǒng)模塊和靜態(tài)顯示實驗模塊,用導線連接RXD、TXD到串行靜態(tài)顯 示模塊的 DIN、CLK端。EA/VP接+5V 2、LED點陣漢字實驗電路的 +5V和GND必須接主機板的+5V和GND。 DBUFO EQU30H ;置存儲區(qū)首址 TEMP EQU40H ;置緩沖區(qū)首址 DIN BIT0B0H ;置串行輸出口 CLK BIT0B1H ;置時鐘輸出口 ORG 0
40、MOV 30H, #8 ;存入顯示數據 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é)數 MOV R2, #8 ;輸出子程序 MOV A, R0 ;取段碼 3、 用編程器將靜態(tài)顯示實驗.bin寫入AT89C51
41、,脫機運行。 4、 通電運行,五位數碼管顯示“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 ;延時子程序 AA1: MOV R5, #0FFH AA: DJNZ R5, AA DJNZ R4, AA1 RET END 實驗五 12c總線實驗 一、實驗目的 1、了解i2c總線的標準及使用 2、掌握用|2C總線方式讀寫串行 EEPROM 24C01的方法 3、熟悉24C01的芯片的功能 二、實驗說明 1、串行 EEPROM (24C01 )接口方法 在新一代單片機中,無論總線型還是非總線型單片機,為了簡化系統(tǒng)結構,提高系統(tǒng)的可靠性, 都推出了芯片間的串行數據傳輸技術,設置了芯片間的串行傳輸接口或串行總線。串行總線擴展接 線靈活,極易形成用戶的模
43、塊化結構,同時將大大簡化其系統(tǒng)結構。串行器件不僅占用很少的資源 和I/O線,而且體積大大縮小,同時還具有工作電壓寬,抗干擾能力強,功耗低,資料不宜丟失和 支持在線編程等特點。目前,各式各樣的串行接口器件層出不窮,女口:串行EEPROM,串行ADC/DAC, 串行時鐘芯片,串行數字電位器,串行微處理器監(jiān)控芯片,串行溫度傳感器等等。 串行EEPROM是在各種串行器件應用中使用較頻繁的器件,和并行EEPROM相比,串行 EEPROM的資料傳送的速度較低,但是其體積較小,容量小,所含的引腳也較少。所以,它特別適 合于需要存放非揮發(fā)資料,要求速度不高,弓I腳少的單片機的應用。 2、串行EEPROM及其工
44、作原理 串行EEPROM中,較為典型的有 ATMEL公司的 AT24CXX 系列以及該公司生產的 AT93CXX 系列,較為著名的半導體廠家,包括 Microchip,國家半導體廠家等,都有 AT93CXX系列EEPROM 產品。 AT24CXX系列的串行電可改寫及可編程只讀存儲器EEPROM有10種型號,其中典型的型號有 AT24C01A/02/04/08/16 等 5 種,它們的存儲容量分別是1024/2048/4096/8192/16384 位,也就是128/256/512/1024/2048字節(jié)。這個系列一般用于低電壓, 低功耗的工業(yè)和商業(yè)用途, 并且可以組成優(yōu)化的系統(tǒng)。信息存取采用2
45、線串行接口。這里我們就以 24C01的結構特點,其它系 列比較類似。 3、結構原理及引腳 AT24C01有地址線A0A2,串行資料引腳 SDA,串行時鐘輸入引腳 SCL,寫保護引腳 WP等 引腳。很明顯,其引腳較少,對組成的引用系統(tǒng)可以減少布線,提高可靠性。 各引腳的功能和意義如下: VCC引腳,電源+5V。 GND引腳,地線。 SCL引腳,串行時鐘輸入端。在時鐘的正跳沿即上升沿時把資料寫入EEPROM ;在時鐘的 負跳沿即下降沿時把資料從EEPROM中讀出來。 SDA引腳,串行資料I/O端,用于輸入和輸出串行資料。這個引腳是漏極開路的埠,故可 以組成“線或”結構。 A0 , A1 , A2引
46、腳,是芯片地址引腳。在型號不同時意義有些不同,但都要接固定電平。 WP引腳,寫保護端。這個端提供了硬件數據保護。當把WP接地時,允許芯片執(zhí)行一般 讀寫操作;當把 WP接VCC時,則對芯片實施寫保護。 4、內存的組織:對于不同的型號,內存的組織不一樣,其關鍵原因在于內存容量存在差異。對 于AT24CXX系列的EEPROM,其典型型號的內存組織如下。 AT24C01A :內部含有128個字節(jié),故需要 7位地址對其內部字節(jié)進行尋址。 AT24C02 :內部含有256個字節(jié),故需要 8位地址對其內部字節(jié)進行讀寫。 5、運行方式: 起始狀態(tài):當SCL為高電平時,SDA由高電平變到低電平則處于起始狀態(tài)。起
47、始狀態(tài)應處于任 何其它命令之前。 停止狀態(tài):當SCL處于高電平時,SDA由低電平變到高電平則處于停止狀態(tài)。在執(zhí)行完讀序列 信號之后,停止命令將把EEPROM置于低功耗的備用方式(Standby Mode)。 應答信號:應答信號是由接受資料的器件發(fā)出的。 當EEPROM接受完一個寫入資料之后, 會在 SDA上發(fā)一個“ 0”應答信號。反之,當單片機接受完來自 EEPROM的資料后,單片機也應向 SDA 發(fā)ACK信號。ACK信號在第9個時鐘周期時出現。 備用方式(Standby Mode): AT24C01A/02/04/08/16都具有備用方式,以保證在沒有讀寫操作時 芯片處于低功耗狀態(tài)。在下面兩
48、種情況中,EEPROM都會進入備用方式:第一,芯片通電的時候; 第二,在接到停止位和完成了任何內部操作之后。 AT24C01等5種典型的EEPROM在進入起始狀態(tài)之后,需要一個8位的“器件地址字”去啟 動內存進行讀或寫操作。在寫操作中,它們有“字節(jié)寫”,“頁面寫”兩種不同的寫入方法。在讀操 作中,有“現行地址讀”,“隨機讀”和“順序讀”種種各具特點的讀出方法。下面分別介紹器件尋 址,寫操作和讀操作。 器件尋址:所謂器件尋址(Device Addressing )就是用一個8位的器件地址字 (Device Address Word)去選擇內存芯片。在邏輯電路中的 AT24CXX系列的5種芯片中,
49、即 AT24C01A/02/04/08/16 中,如果和器件地址字相比較結果一致,則讀芯片被選中。下面對器件尋址的過程和意義加以說明。 芯片的操作地址 D7 D6 D5 D4 D3 D2 D1 D0 1010 A2A1A0R/W 用于內存EEPROM芯片尋址的器件地址字如圖所示。它有4種方式,分別對應于 1K/2K,4K, 8K和16K位的EEPROM芯片。 從圖中看出:器件地址字含有3個部分。第一部分是高4位,它們稱為EEPROM AT24C01A/02/04/08/16的標識第二部分稱為硬布線地址,它們是標識后的 3位。第三部分是最低位, 它是讀/寫操作選擇位。 第一部分:器件標識,器件地
50、址字的最高 4位。這4位的內容恒為“ 1010”,用于標識EEPROM 器件 AT24C01A/02/04/08/16。 第二部分:硬布線地址,是與器件地址字的最高4位相接的低3位。硬布線地址的 3位有2種 符號:Ai ( i=02),Pj (j=02 )其中Ai表示外部硬布線地址位。 對于AT24C01A/02這兩種1K/2K位的EEPROM 芯片,硬布線地址為“ A2,A1,A0”。在應用 時,“ A2,A1,A0”的內容必須和 EEPROM芯片的A2,A1,A0的硬布線情況,即邏輯連接情況 相比較,如果一樣,則芯片被選中;否則,不選中。AT24C01/02 :真正地址=字地址。 第三部分
51、:讀/寫選擇位,器件地址字的最低位,并用R/W表示。當R/W=1時,執(zhí)行讀操作; 當R/W=0時,執(zhí)行寫操作。 當EEPROM芯片被選中時,則輸出“ 0”;如果EEPROM芯片沒有被選中,則它回到備用方式。 被選中的芯片。其以后的輸入,輸出情況視寫入和讀出的內容而定。 寫操作:AT24C01A/02/04/08/16這5種EEPROM芯片的寫操作有 2種:一種是字節(jié)寫,另一 種是頁面寫。 字節(jié)寫 這種寫方式只執(zhí)行一個字節(jié)的寫入。字節(jié)寫的過程如圖所示,其寫入過程分外部寫和內部寫兩 部分,分別說明如下。 在起始狀中,首先寫入8位的器件地址。則 EEPROM芯片會產生一個“ 0”信號ACK輸出作為
52、應答;接著,寫入 8位的字地址,在接受了字地址之后,EEPROM芯片又產生一個“ 0”應答信號 ACK ;隨后,寫入8位資料,在接受了資料之后,芯片又產生一個“ 0”信號ACK作為應答。到此 為止,完成一個字節(jié)的寫過程,故應在SDA端產生一個停止狀態(tài),這是外部寫過程。 在這個過程中,控制 EEPROM的單片機應在 EEPROM的SCL,SDA端送入適當的信號。當然 在一個字節(jié)寫過程結束時,單片機應以停止狀態(tài)結束寫過程。在這時,EEPROM進入內部定時的寫 周期,以便把接受的數據寫入到存儲單元中。在 時不響應外部信號直到寫周期完成。 處于停止狀態(tài)與下一個起始狀態(tài)之間。 頁面寫: 這種寫入方式執(zhí)行
53、含若干字節(jié)的 字節(jié);頁面寫的開頭部分和字節(jié)寫一樣。 EEPROM的內部寫周期中,其所有輸入被屏蔽,同 這是內部寫過程。 內部寫過程大約需要 10ms時間。內部寫過程 1個頁面的寫入。對于 在起始狀態(tài),首先寫入 “ 0”信號ACK之后,寫入8位字地址;又待芯片應答了“ AT24C01A/02,它們的1個頁面含8個 8位器件地址;待EEPROM應答了 0”信號ACK之后,寫入8位資料。 隨后頁面寫的過程則和字節(jié)寫有區(qū)別。 當芯片接受了第一個 8位資料并產生應答信號 ACK之后,單片機可以連續(xù)向 EEPROM芯片發(fā) 送共為1頁面的資料。對于AT24C01A/02,可發(fā)送共1個頁面的8個字節(jié)(連第一個
54、8位資料在內) 對于AT24C04/08/16,則共可發(fā)送1個頁面共16個字節(jié)(連第一個8位資料在內)。當然,每發(fā)一個 字節(jié)都要等待芯片的應答信號 ACK。 之所以可以連續(xù)向芯片發(fā)送1個頁面資料,是因為字地址的低 34位在EEPROM芯片內部可實 現加1,字地址的高位不變,用于保持頁面的行地址。頁面寫和字節(jié)寫兩者一樣,都分為外部寫和 內部寫過程。 應答查詢:應答查詢是單片機對EEPROM各種狀態(tài)的一種檢測。單片機查詢到EEPROM有應 答“ 0”信號ACK輸出,則說明其內部定時寫的周期結束,可以寫入新的內容。單片機是通過發(fā)送 起始狀態(tài)及器件地址進行應答查詢的。由于器件地址可以選擇芯片,則檢測芯
55、片送出到 SDA的狀態(tài) 就可以知道其是否有應答了。 讀操作:讀操作的啟動是和寫操作類同的。它一樣需要圖所示的器件地址字。和寫操作不 同的就是R/W信號為“ 1”時執(zhí)行讀操作。 讀操作有3種方式,即現行地址讀,隨機讀和順序讀。下面分別說明它們的工作過程。 現行地址讀; 在上次讀或寫操縱完成之后。芯片內部字地址計數器會加1,產生現行地址。只要沒有再執(zhí)行 讀或寫操作,這個現行地址就會在EEPROM芯片保持上電的期間一直保存。一旦器件地址選中 EEPROM芯片,并且有 R/W=1,則在芯片的應答信號 ACK之后把讀出的現行地址的資料送出?,F 行地址的資料輸出時,就由單片機一位一位接受,接收后單片機不用
56、向EEPROM發(fā)應答信號 ACK “ 0”電平,但應保證發(fā)出停止狀態(tài)的信號以結束現行地址讀操作。現行地址讀會產生地址循環(huán)覆蓋 現象,但和寫操縱的循環(huán)覆蓋不同。在寫操縱中,地址的循環(huán)覆蓋是現行頁面的最后一個字節(jié)寫入 之后,再行寫入則覆蓋同一頁面的第一個字節(jié)。而在現行地址讀操縱中,地址的循環(huán)覆蓋是在最后 頁面的最后一個字節(jié)讀出之后,再行讀出才覆蓋第一個頁面的第一個字節(jié)。 隨機讀: 隨機讀和現行地址讀的最大區(qū)別在于隨機讀會執(zhí)行一個偽寫入過程以把字地址裝入EEPROM 芯片中,然后執(zhí)行讀出,顯然,隨機讀有2個步驟。 第一,執(zhí)行偽寫入一一把字地址送入EEPROM,以選擇需讀的字節(jié)。 第二,執(zhí)行讀出一一根
57、據字地址讀出對應內容。 當EEPROM芯片接收了器件地址及字地址時,在芯片產生應答信號ACK之后,單片機必須再 產生一個起始狀態(tài),執(zhí)行現行地址讀,這時單片機再發(fā)出器件地址并且令R/W=1,則EEPROM應 答器件地址并行輸出被讀數據。在資料讀出時由單片機執(zhí)行一位一位接收,接收完畢后,單片機不 用發(fā)“ 0”應答信號ACK,但必須產生停止狀態(tài)以結束隨機讀過程。 應該注意:在隨機讀的第二個步驟是執(zhí)行現行地址讀的,由于第一個步驟時芯片接收了字地址, 故現行地址就是所送入的字地址。 順序讀: 順序讀可以用現行地址讀或隨機讀進行啟動。它和現行地址讀。隨機讀的最大區(qū)別在于:順序 讀在讀出一批資料之后才由單片
58、機產生停止狀態(tài)結束讀操作;而現行地址讀和隨機讀在讀出一個資 料之后就由單片機產生停止狀態(tài)結束讀操作。 執(zhí)行順序讀時,首先執(zhí)行現行讀或隨機讀的有關過程,在讀出第一個資料之后,單片機輸出“ 0 ” 應答信號ACK。在芯片接收應答信號ACK后,就會對字地址進行計數加1,隨后串行輸出對應的 字節(jié)。當字地址計數達到內存地址的極限時,則字地址會產生覆蓋,順序讀將繼續(xù)進行。只有在單 片機不再產生“ 0”應答信號ACK,而在接收資料之后馬上產生停止狀態(tài),才會結束順序讀操作。 在對AT24CXX系列執(zhí)行讀寫的2線串行總線工作中,其有關信號是由單片機的程序和EEPROM 產生的。有兩點特別要記?。捍袝r鐘必須由單
59、片機程序產生,而應答信號ACK則是由接收資料的 器件產生,也就是寫地址或資料時由EEPROM產生ACK,而讀數據時由單片機產生。 6、AT24CXX系列應用注意事項 AT24CXX系列型號:AT24CXX系列EEPROM有13種型號。它們的容量不同,執(zhí)行頁面寫時 的頁面定義不同,進行讀寫時的地址位數不同,器件地址不同。有關主要指針在應用中要加以區(qū)別 和注意。 三、實驗內容與步驟 對24C01進行讀,寫,效驗程控,充分了解I2C總線的應用方法。 1、 單片機最小應用系統(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分別接主機板的+5V和GND。LED點陣漢字實驗電路的 +5V和GND必須接主機板的+5V和GND。 5、用編程器將24C01單字節(jié)讀寫程序.bin寫入AT89C51,脫機運行。 6、 通電運行,L1L8顯示的是寫入 24C01的數據。 7、 若要改變寫入的數據,可以通過K1K8來設置。按一下單片機最小應用系統(tǒng)的復位按鈕(RST) 即可將數據
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 項目安全培訓試題附答案【培優(yōu)A卷】
- 職工安全培訓試題(完美)
- 公司項目部安全培訓試題及參考答案【預熱題】
- 職工安全培訓試題加解析答案
- 城市快速路互通立交施工設計方案
- 六年級家長會班主任發(fā)言稿總結與反思
- 幼兒園愛國教育
- 大型活動現場衛(wèi)生管理方案
- 食品安全年度工作總結15篇
- 建筑裝飾工程建設協(xié)議(3篇)
- 《創(chuàng)業(yè)投資財富》課件
- 設計水稻育種計劃書
- 電梯使用現場類隱患專項排查清單
- 新媒體視聽節(jié)目制作 第二章 新媒體視聽節(jié)目的類型與特征
- 版式設計的網格系統(tǒng)
- JCT640-2010 頂進施工法用鋼筋混凝土排水管
- 八年級物理第一二章測試題(含答案)
- 兩山之路智慧樹知到課后章節(jié)答案2023年下麗水學院
- 青光眼PPT課件完整版
- 快速消費品制造行業(yè)概述
- 類風濕性關節(jié)炎綜述4572
評論
0/150
提交評論