1、单片机实验指导书1目录实验一 P1 口输出实验 .2实验二 查询式键盘实验 4实验三 5LED 静态串行显示实验 .6实验四 6LED 动态扫描显示实验 .9实验五 阵列式键盘 11实验六 外部中断实验 13实验七 计数器实验 15实验八 定时器实验 16实验九 串口通讯实验(1) 18实验十 串口通讯实验(2) 20实验十一 8155 输入、输出实验 .23实验十二 自主设计实验 25单片机实验指导书2实验一 P1 口输出实验一、实验目的1、学习 P1 口的使用方法2、学习延时子程序的编写和使用二、实验说明P1 口是准双向口,它作为输出口时与一般的双向口使用方法相同。由准双向口结构可知当 P
2、1 口用为输入口时,必须先对它置“1”。若不先对它置“1”,读入的数据是不正确的。三、实验内容及步骤用 P1 口做输出口,接八位发光二极管。程序功能:发光二极管单只从右到左轮流循环点亮。1、连接硬件电路。在实验台上找到本次实验使用的电路模块,把 89C51 单片机最小应用系统模块的 P1 口用十线扁平插头和八位发光二极管显示模块连接。2、安装好仿真器。用串行数据通信线连接计算机与仿真器,把仿真头插到模块的单片机插座中,打开模块电源,插上仿真器电源插头。3、启动计算机,双击 Keil 图标,进入 Keil 集成开发环境。建立新工程,进行工程配置,主要配置包括选择单片机型号,一般选择 AT89C5
3、1 即可;选择仿真器型号、仿真头型号;选择通信端口,点击测试串行口,通信成功既可退出设置。4、编写源程序,编译,链接。无误后,进入调试运行环境,点击全速执行按钮运行程序,观察发光二极管显示情况。发光二极管从右到左轮流循环点亮。5、使用单片机 P1.0 和蜂鸣器电路设计发生实验。四、流程图及源程序1流程图2源程序单个发光二极管左循环显示实验ORG 0000HSTART:MOV A,#0FEHLOOP:MOV P1,ARLC AACALL DELAYAJMP LOOPDELAY:MOV R0,#0DY00:MOV R1,#0DY01:DJNZ R1, DY01DJNZ R0, DY00RETEND
4、五、思考题1、对于本实验延时子程序 DELAY:DELAY:MOV R0,#0DY00:MOV R1,#0DY01:DJNZ R1, DY01DJNZ R0, DY00RET本模块使用 12MHz 晶振,计算此程序的执行时间为多少?2、如何实现两个以上发个二极管循环显示?3、如何实现发光二极管右循环显示?六、电路图单片机实验指导书31K10033pF33pF12MHzRESETEA/VP31X119 X218RESET9RD17 WR16INT012 INT113T014 T115P101 P112P123 P134P145 P156P167 P178P00 39P01 38P02 37P03
5、 36P04 35P05 34P06 33P07 32P20 21P21 22P22 23P23 24P24 25P25 26P26 27P27 28PSEN 29ALE/P30TXD 11RXD 10AT89C5110uFD0 3Q02 D1 4Q15D2 7Q26 D3 8Q39D4 13Q412 D5 14Q515D6 17Q616 D7 18Q719OE 1LE 1174LS373270*8VCCVCCVCC单片机实验指导书4实验二 查询式键盘实验一、实验目的1、掌握键盘和显示器的接口方法和编程方法2、掌握键盘扫描和八段码显示器的工作原理3、静态显示的原理和相关程序的编写二、实验说明
6、本实验提供了 8 个按钮的小键盘,向 P0 口逐个输出低电平,如果有键盘按下,则相应输出为低,如果没有键按下,则输出为高。通过这样可以判断按下什么键。在有键按下后,要有一定的延时,防止键盘抖动。三、实验步骤及内容1、用一根扁平 10 线插头把查询式键盘实验模块通过 P1 口连接到单片机接口模块,另一根扁平 10线把八个 LED 通过 P0 口连接到单片机模块。如无键按下时,LED 数码显示八段全灭,有键按下时,则对应的 LED 亮。2、安装好仿真器,用串行数据通信线连接计算机与仿真器,把仿真头插到模块的单片机插座中,打开模块电源,插上仿真器电源插头。3、启动计算机,进入仿真环境。选择仿真器型号
7、、仿真头型号、CPU 类型;选择通信端口,测试串行口。4、编写源程序,编译无误后运行程序,在键盘上按下某个键,观察数显是否与按键值一致。键值从左至右为 07,LED 从右到左为 07。四、流程图及源程序 1、流程图2、源程序ORG 0000HMAIN:MOV P0,#00HKEY:MOVP1,#0FFHMOV A,P1CJNE A, #0FFH, K00AJMP MAINK00:ACALL DELAYMOV A,P1CJNEA,#0FFH,K01AJMP MAINK01:CPL AMOV B,AMOV P0,BK02:MOVP1,#0FFHMOV A,P1CJNEA,#0FFH,K02AJMP
8、 MAINDELAY:MOV R4, #02HDY00:MOVR5,#0F8HDY01:DJNZ R5, DY01DJNZ R4, DY00RETEND五、思考题1、程序如何确保每按一次键,只处理一次。六、电路图单片机实验指导书5S 4SW-PBS 2SW-PBS 5SW-PBS 6SW-PBS 7SW-PBS 1SW-PBS 3SW-PBS 8SW-PBR 81 0 KR 71 0 KR 61 0 KR 51 0 KR 41 0 KR 31 0 KR 21 0 KR 11 0 KV C C12345678J P18 H EA D ER单片机实验指导书6实验三 5LED 静态串行显示实验一、实
9、验目的1、掌握数字、字符转换成显示段码的软件译码方法2、静态显示的原理和相关程序的编写二、实验电路及说明静态串行显示电路由 5 个 LED 数码管和 5 个 8 位串/并移位寄存器 74LS164 组成,输入端只有两个接口,分别是串行数据线 DIN 口和串行移位时钟信号 CLK 口。74LS164 首尾相连,组成 40 位的串/并移位寄存器。每个移位寄存器 8 位输出和 LED 数码管连接。单片机的 P3.0 作数据串行输出,P3.1 作移位脉冲信号输出。在单片机程序中设置一组(5 个)数据,把这组数据通过 P3.0 和 P3.1 口发送到静态显示电路模块进行显示。三、实验内容及步骤1、使用
10、89C51 单片机最小应用系统模块,用导线把单片机的 P3.0、P3.1 分别和串行静态显示模块的DIN、CLK 端连接。2、安装好仿真器。用串行数据通信线连接计算机与仿真器,把仿真头插到模块的单片机插座中,打开模块电源,插上仿真器电源插头。3、启动计算机,进入仿真环境。建立工程,进行工程的设置,选择单片机型号,一般选择 AT89C51即可。选择仿真器型号、仿真头型号;选择通信端口,点击测试串行口,通信成功既可退出设置,进行仿真。4、编写源程序,编译,链接。无误后,进入调试运行环境,点击全速执行按钮运行程序,观察数码管显示情况。如果程序没有逻辑错误,5 个数码管从左至右应该显示“8” , “9
11、”, “c”, “5”, “1”。四、流程图及源程序1、流程图2、源程序(1)左循环发送数据程序DBUF0 EQU 30HTEMP EQU 40HDIN BIT P3.0CLK BIT P3.1ORG 0000HMOV 30H,#8MOV 31H,#9MOV 32H,#0CHMOV 33H,#5MOV 34H,#1DISP:MOV R0, #DBUF0MOV R1, #TEMPMOV R2, #5DP00:MOV DPTR,#SEGTABMOV A,R0MOVC A,A+DPTRMOV R1,AINC R0INC R1DJNZ R2, DP00MOV R0, #TEMPMOV R1, #5DP
12、01:MOV R2,#8MOV A,R0DP02:RLC AMOV DIN,CCLR CLKSETB CLKACALL DELAYDJNZ R2, DP02INC R0ACALL DELAYDJNZ R1, DP01OK:SJMP OKDELAY:/在延时程序中一定不能使用前边已经使用过的寄存器,否则会导致程序执行错误。MOV R3,#0DY00:MOV R4,#0DY01:MOV R5,#0DY02:DJNZ R5,DY02DJNZ R1,DY01DJNZ R0,DY00RETSEGTAB:DB 3FH,06H,5BH,4FH,66H,6DHDB 7DH,07H,7FH,6FH,77H,7C
13、HDB 39H,5EH,7BH,71H,00H,40HEND单片机实验指导书7(2)右循环发送数据程序DBUF0 EQU 30HTEMP EQU 40HDIN BIT P3.0CLK BIT P3.1ORG 0000HMOV 30H,#8MOV 31H,#9MOV 32H,#0CHMOV 33H,#5MOV 34H,#1DISP:MOV R0, #DBUF0MOV R1, #TEMPMOV R2, #5DP00:MOV DPTR,#SEGTABMOV A,R0MOVC A,A+DPTRMOV R1, AINC R0INC R1DJNZ R2,DP00MOV R0, #TEMPMOV R1, #
14、5DP01:MOV R2,#8MOV A,R0DP02:RRC AMOV DIN,CCLR CLKSETB CLKACALL DELAYDJNZ R2, DP02INC R0ACALL DELAYDJNZ R1,DP01OK:SJMP OKDELAY:/在延时程序中一定不能使用前边已经使用过的寄存器,否则会导致程序执行错误。MOV R3,#0DY00:MOV R4,#0DY01:MOV R5,#0DY02:DJNZ R5,DY02DJNZ R1, DY01DJNZ R0, DY00RETSEGTAB:DB 0FCH,60H,0DAH,0F2H,66H,0B6HDB 0BEH,0E0H,0FEH
15、,0F6H,0E6H,3EHDB 1AH,7AH,9FH,8AH,00H,02HEND五、电路图单片机实验指导书8A 1B 2Q03Q14Q25Q36Q410Q511Q612Q713CLK 8MR 9U474ALS164A 1B 2Q03Q14Q25Q36Q410Q511Q612Q713CLK 8MR 9U374ALS164A 1B 2Q03Q14Q25Q36Q410Q511Q612Q713CLK 8MR 9U274ALS164A 1B 2Q03Q14Q25Q36Q410Q511Q612Q713CLK 8MR 9U174ALS164A 1B 2Q03Q14Q25Q36Q410Q511Q612Q
16、713CLK 8MR 9U574ALS164abfcgdeDPY1234567abcdefg8dpdpDS5DPY_7-SEG_DPabfcgdeDPY1234567abcdefg8dpdpDS4DPY_7-SEG_DPabfcgdeDPY1234567abcdefg8dpdpDS3DPY_7-SEG_DPabfcgdeDPY1234567abcdefg8dpdpDS2DPY_7-SEG_DPabfcgdeDPY1234567abcdefg8dpdpDS1DPY_7-SEG_DPDINCLK单片机实验指导书9实验四 6LED 动态扫描显示实验一、实验目的1、掌握数字、字符转换成显示段码的软件译
17、码方法2、动态显示的原理和相关程序的编写二、实验说明动态显示,也称扫描显示。显示器由 6 个 LED 数码管构成。三、实验内容及步骤单片机 P0 输出段码,P1 口输出位控码,输出 6 个字符。1、使用 89C51 单片机最小应用系统模块,用十线扁平插头连接 P0 口、P1 口到动态扫描显示模块的段码口和位码口。2、安装好仿真器,用串行数据通信线连接计算机与仿真器,把仿真头插到模块的单片机插座中,打开模块电源,插上仿真器电源插头。3、启动计算机,进入仿真环境。选择仿真器型号、仿真头型号、CPU 类型;选择通信端口,测试串行口。4、编写源程序,编译无误后,全速运行程序。6LED 显示“16816
18、8” 。程序停止运行后,显示随之变化,说明运态扫描显示模块不具有数据锁存的功能。5、可把源程序编译成 OBJ 文件,烧录到 89C51 芯片中。四、流程图及源程序1、源程序ORG 0000HDBUF EQU 30HTEMP EQU 40HAJMP STARTORG 0030HSTART:MOV 35H,#1MOV 34H,#2MOV 33H,#2MOV 32H,#3MOV 31H,#3MOV 30H,#5DISP:MOV R0,#DBUFMOV R1,#TEMPMOV R2,#6MOV DPTR,#SEGTABDP00:MOV A,R0MOVC A,A+DPTRMOV R1,AINC R1IN
19、C R0DJNZ R2,DP00DP01:MOV R0,#TEMPMOV R1,#6MOV R2,#1DP02:MOV A,R0MOV P2,AMOV A,R2MOV P1,AACALL DELAYMOV A,R2RL AMOV R2,AINC R0DJNZ R1,DP02SJMP DP01DELAY:MOV R7,#1DD1:MOV R6,#1DD2: MOV R5,#0DJNZ R5,$DJNZ R6,DD2DJNZ R7,DD1RETSEGTAB:DB 3FH,06H,5BH,4FH,66H,6DHDB 7DH,07H,7FH,6FH,77H,7CHDB 58H,5EH,7BH,71H,
20、00H,40HEND2、流程图五、思考题1、如何修改程序,实现六位 LED 数码管只显示其中的两位?六、电路图单片机实验指导书10abfcgdeDPY1234567abcdefg8dpdpDS? DPY_7-SEG_DPabfcgdeDPY1234567abcdefg8dpdpDS?DPY_7-SEG_DPabfcgdeDPY1234567abcdefg8dpdpDS?DPY_7-SEG_DPabfcgdeDPY1234567abcdefg8dpdpDS?DPY_7-SEG_DPabfcgdeDPY1234567abcdefg8dpdpDS?DPY_7-SEG_DPabfcgdeDPY1234
21、567abcdefg8dpdpDS?DPY_7-SEG_DP12U?A74ALS0412U?A74ALS0412U?A74ALS0412U?A74ALS04A02A13A24A35A46A57A68A79B0 18B1 17B2 16B3 15B4 14B5 13B6 12B7 11E19DIR1U174ALS24512345678JP?8 HEADER12345678JP?8 HEADER12U?A74ALS0412U?A74ALS04单片机实验指导书11实验五 阵列式键盘2、源程序ORG 0000HDBUF EQU 30HTEMP EQU 40HDIN BIT P2.0CLK BIT P2
22、.1MOV A, #0START:LCALL DISPAJMP KEY1AJMP STARTKEY1:MOV P1, #0FHMOV A, P1CJNE A, #0FH,K11K10:AJMP KEY1K11:LCALL DELAYMOV P1, #0FHMOV A, P1CJNE A, #0FH, K12SJMP K10K12:MOV B, AMOV P1, #0F0HMOV A, P1ORL A, BMOV B, AMOV R1, #16MOV R2, #0MOV DPTR, #K1TABK13:MOV A, R2MOVC A, A+DPTRCJNE A, B, K15MOV P1, #0
23、FHK14:MOV P1,#0FHMOV A, P1CJNE A, #0FH, K14MOV A, R2MOV B, R2AJMP STARTK15:INC R2DJNZ R1, K13AJMP K10K1TAB:DB 00HDB 0EEH, 0DEH, 0BEH, 07EHDB 0EDH, 0DDH, 0BDH, 07DHDB 0EBH, 0DBH, 0BBH, 07BHDB 0E7H, 0D7H, 0B7H, 077HDISP:MOV DBUF, AMOV DBUF+1, #16MOV DBUF+2, #16MOV DBUF+3, #16MOV DBUF+4, #16MOV R0, #DB
24、UFMOV R1, #TEMPMOV R2, #5DP10:MOV DPTR, #SEGTABMOV A, R0MOVC A, A+DPTRMOV R1, AINC R0INC R1DJNZ R2, DP10MOV R0, #TEMPMOV R1, #5DP12:MOV R2, #8MOV A, R0DP13:RLC AMOV DIN, CACALL DELAYCLR CLKSETB CLKDJNZ R2, DP13INC R0DJNZ R1, DP12RETSEGTAB:DB 3FH, 06H, 5BH, 4FH, 66H, 6DHDB 7DH, 07H, 7FH, 6FH, 77H, 7C
25、HDB 58H, 5EH, 79H, 71H, 00H, 40H DELAY:MOV R4, #01HAA1:MOV R5, #01HAA:DJNZ R5, AADJNZ R4, AA1RETEND单片机实验指导书12S2SW-PBS3SW-PBS4SW-PBS8SW-PBS7SW-PBS6SW-PBS5SW-PBS9SW-PBS14SW-PBS11SW-PBS12SW-PBS13SW-PBS10SW-PBS14SW-PBS15SW-PBS1SW-PBEA/VP31X119X218RESET9RD17WR16INT012INT113T014T115P101P112P123P134P145P15
26、6P167P178P00 39P01 38P02 37P03 36P04 35P05 34P06 33P07 32P20 21P21 22P22 23P23 24P24 25P25 26P26 27P27 28PSEN 29ALE/P 30TXD 11RXD 10U?8051R110KR210KR310KR410KVCC单片机实验指导书13实验六 外部中断实验2、源程序ORG 0000HAJMP STARTORG 0003HAJMP INTEX0ORG 0030HSTART:SETB EACLR IT0SETB EX0SETB PX0MOV DPTR,#LEDTABMOV R0,#0MOV A
27、,#0NEXT:RLC AMOV P0,ALCALL DELAYSJMP NEXTINTEX0:CLR EACJNE R0,#4,EX00MOV R0,#0EX00:MOV A,R0MOVC A,A+DPTRINC R0CLR CLCALL DELAYSETB EARETILEDTAB:DB 01H,03H,07H,0FHDELAY:MOV R4, #0FFHAA1:MOV R5, #0FFHAA:DJNZ R5, AADJNZ R4, AA1RETEND实验七 计数器实验四、流程图及源程序ORG 0000HMOV P1,#00HMOV TMOD,#05HMOV TH0,#0FFHMOV TL
28、0,#9BHSETB TR0LOOP:MOV A,#0FFHSUBB A,TL0MOV P1,AJBC TF0,STOPLJMP LOOPSTOP:CLRTR0AJMP STOPEND实验八 定时器实验2、源程序(1)无中断的定时程序 ORG 0000HSJMP STARTSTART:MOV R0,#10MOV TMOD,#01HMOV TH1,#00HMOV TL1,#00HMOV IE,#00HLOOP:SETB TR1JBC TF1,LOOP1AJMP LOOPLOOP1:MOV TH1,#00HMOV TL1,#00HDJNZ R0,LOOP2CPL P1.1MOV R2,#10LOO
29、P2:AJMP LOOP2RETEND(2)有中断的定时程序ORG 0000HAJMP STARTORG 000BHAJMP INTC_T0单片机实验指导书14ORG 0030HSTART:MOV A,#0MOV TMOD,#01HMOV TH0,#00HMOV TL0,#00HSETB EASETB ET0SETB PT0SETB TR0MOV DPTR,#LEDTABMOV R0,#10NEXT:SJMP NEXTRETINTC_T0:CLR EAPUSH PSWMOV TH0,#00HMOV TL0,#00HDJNZ R0,INTC_T00CPL P1.1MOV R0,#10POP PS
30、WINTC_T00:SETB EARETIEND实验九 串口通讯实验(1)1、 源程序(1)不带中断的串口通信ORG 0030HDBUF0 EQU 30HTEMP EQU 40HMOV 30H,#8MOV 31H,#9MOV 32H,#0CHMOV 33H,#5MOV 34H,#1DISP:MOV R0, #DBUF0MOV R1, #TEMPMOV R2, #5DP00:MOV DPTR,#SEGTABMOV A,R0MOVC A,A+DPTRMOV R1, AINC R0INC R1DJNZ R2, DP00START:MOV SCON,#0MOV R0,#TEMPMOV R2,#5LOO
31、P:MOV A,R0MOV SBUF,AJNB TI,$ CLR TIACALL DELAYINC R0DJNZ R2,LOOPSJMP $DELAY:MOV R7,#3DD1:MOV R6,#01HDD2: MOV R5,#01HDJNZ R5,$DJNZ R6,DD2DJNZ R7,DD1RETSEGTAB:DB 0FCH,60H,0DAH,0F2H,66H,0B6HDB 0BEH,0E0H,0FEH,0F6H,0E6H,3EHDB 1AH,7AH,9FH,8AH,00H,02HEND(2)带中断的串口通信ORG 0000HAJMP DISPORG 0023HAJMP SERIALORG
32、0030HDISP:DBUF0 EQU 30HTEMP EQU 40HMOV 30H,#8MOV 31H,#9MOV 32H,#0CHMOV 33H,#5MOV 34H,#1MOV R1, #TEMPMOV R0, #DBUF0MOV R2, #5DP00:MOV DPTR,#SEGTABMOV A,R0MOVC A,A+DPTRMOV R1, AINC R0INC R1DJNZ R2, DP00START:MOV SCON,#0MOV IE,#90HMOV R0,#TEMP单片机实验指导书15MOV R2,#5MOV A,R0MOV SBUF,ASJMP $SERIAL:DJNZ R2,LO
33、OPMOV IE,#00HAJMP LOOP1LOOP:CLR TIACALL DELAYINC R0MOV A,R0MOV SBUF,ALOOP1:RETIDELAY:MOV R7,#3DD1:MOV R6,#0FFHDD2: MOV R5,#0FFHDJNZ R5,$DJNZ R6,DD2DJNZ R7,DD1RETSEGTAB:DB 0FCH,60H,0DAH,0F2H,66H,0B6HDB 0BEH,0E0H,0FEH,0F6H,0E6H,3EHDB 1AH,7AH,9FH,8AH,00H,02HEND实验十二 自主设计实验实验一:密码锁实验实验二:电子琴模拟实验实验三:汽车转弯信号灯控制实验实验四:数字频率计实验