资源描述
实 验 报 告实验课程: 单片机原理与应用实验 学生姓名: 学 号: 专业班级: 实验一:I/O 口输入、输出实验一、实验目的掌握单片机P1口、P3口的使用方法。二、实验内容以P1 口为输出口,接八位逻辑电平显示,LED 显示跑马灯效果。以P3 口为输入口,接八位逻辑电平输出,用来控制跑马灯的方向。三、实验说明与电路原理图P1口是准双向口,它作为输出口时与一般的双向口使用方法相同。由准双向口结构可知当P1口作为输入口时,必须先对它置高电平使内部MOS管截止。因为内部上拉电阻阻值是20K40K,故不会对外部输入产生影响。若不先对它置高,且原来是低电平,则MOS管导通,读入的数据是不正确的。本实验需要用到CPU模块(F3区)和八位逻辑电平输出模块(E4区)和八位逻辑电平显示模块(B5区),八位逻辑电平输出电路原理图参见图1-1。八位逻辑电平显示电路原理图参见图1-2。 2四、实验步骤1)系统各跳线器处在初始设置状态。用导线连接八位逻辑电平输出模块的K0 到CPU 模块的RXD(P3.0 口);用8 位数据线连接八位逻辑电平显示模块的JD4B 到CPU 模块的JD8(P1 口)。2)启动PC 机,打开THGMW-51 软件,输入源程序,并编译源程序。编译无误后,下载程序运行。3)观察发光二极管显示跑马灯效果,拨动K0 可改变跑马灯的方向。五、实验程序 DIR BIT P3.0 ORG 0000H LJMP START ORG 0100H START: Output1: mov a, #0fEH mov r5, #8 loop1: CLR C mov C,DIR JC Output2 mov P1, a rl a Acall Delay djnz r5, loop1 Sjmp Output1 Output2: mov a, #07fH mov r5, #8 loop2: CLR C mov C,DIR JNC Output1 mov P1, a rr a Acall Delay djnz r5,loop2 Sjmp Output2Delay: mov r6,#0 DelayLoop1: mov r7,#0DelayLoop2: NOP NOP djnz r7,DelayLoop2 djnz r6,DelayLoop1 ret六、实验现象当ko处于低电平时,跑马灯从当前位置左移;当ko处于高电平时,跑马灯从当前值右移。七、 程序分析 本程序运行后,拨动开关ko,可以实现左移和右移的灯方式。这主要是由语句JC Output2和JNC Output1语句实现的。当ko拨到下面时,其状态为0跳转到Output1,所以跑马灯从右向左一次点亮。当ko拨到上面时,其状态为1,跳转到Output2,所以跑马灯为从左向右一次点亮。综合分析,本实验主要有三个模块:左移模块,右移模块,延时模块。八、实验心得从这个实验中我们了解到如何用PI口输出来点亮二极管,也学会了如何根据具体的单片机的原理图进行编写程序,及线路的连接。通过这次实验我了解到单片机芯片的结构及编程方法,巩固了汇编语言编程的能力。通过实验和学会了流水灯的实验方法和实现延时的程序编写方法,为下面的实验做好了充分的准备。实验二:外部中断实验一、实验目的学习外部中断技术的基本使用方法。二、实验内容INT0 端接单次脉冲发生器。按一次脉冲产生一次中断,CPU 使P1.0 状态发生一次反转,P1.0接LED 灯,以查看信号反转。三、实验要求根据实验内容编写一个程序,并在实验仪上调试和验证。四、实验说明1) 外部中断的初始化设置共有三项内容:中断总允许即EA=1,外部中断允许即EXi=1(i=0或1),中断方式设置。中断方式设置一般有两种方式:电平方式和脉冲方式,本实验选用后者,其前一次为高电平后一次为低电平时为有效中断请求。因此高电平状态和低电平状态至少维持一个周期,中断请求信号由引脚INT0(P3.2)和INT1(P3.3)引入。2)中断服务的关键:a、保护进入中断时的状态。堆栈有保护断点和保护现场的功能使用PUSH 指令,在转中断服务程序之前把单片机中有关寄存单元的内容保护起来。b、必须在中断服务程序中设定是否允许中断重入,即设置EX0 位。c、用POP 指令恢复中断时的现场。3)中断控制原理:中断控制是提供给用户使用的中断控制手段。实际上就是控制一些寄存器,51 系列用于此目的的控制寄存器有四个:TCON 、IE 、SCON 及IP。4)中断响应的过程:首先中断采样然后中断查询最后中断响应。采样是中断处理的第一步,对于本实验的脉冲方式的中断请求,若在两个相邻周期采样先高电平后低电平则中断请求有效,IE0 或IE1 置“1”;否则继续为“0”。所谓查询就是由CPU 测试TCON 和SCON 中各标志位的状态以确定有没有中断请求发生以及是那一个中断请求。中断响应就是对中断请求的接受,是在中断查询之后进行的,当查询到有效的中断请求后就响应一次中断。本实验需要用到CPU 模块(F3 区)和八位逻辑电平显示模块(B5 区)、单次脉冲模块(E3区)。五、实验步骤1)系统各跳线器处在初始设置状态,用导线连接单次脉冲模块的输出端到CPU 模块的P32;CPU 模块的P10 接八位逻辑电平显示模块的灯。2)启动PC 机,打开THGMW-51 软件,输入源程序,并编译源程序。编译无误后,下载程序运行。3)连续按动单次脉冲产生电路的按键,发光二极管L0 每按一次状态取反,即隔一次点亮。六、实验程序 LED BIT P1.0 LEDBuf BIT 20H org 0 ljmp Start org 3Interrupt0: push PSW cpl LEDBuf mov c, LEDBuf mov LED, c pop PSW retiStart: clr LEDBuf clr LED mov TCON, #01h mov IE, #81h OK: ljmp OK end七、实验现象程序运行,没按下脉冲产生键时,LED灯没有变化,以后每按一次脉冲产生键时,LED灯的状态取反一次,即每隔一次点亮。八、 程序分析 本实验主要有两个模块:中断模块和主程序模块,主程序主要是用来初始化中断的,包括中断模式的选择,中断开关的打开,当脉冲变化时触发中断,硬件自动产生ACALL指令,跳转到中端口执行程序。九、实验心得从这个实验中,我们了解到单次脉冲产生电路,也学会了如何通过外部的控制,达到对中端的处理。通过这次实验我了解了单片机芯片的结构及编程的方法,巩固了汇编语言编程的能力,进一步加深了对汇编语言的认识,以及软件、硬件的结合有了深入的理解。实验三:定时/计数器实验一、实验目的学习MCS-51 内部计数器的使用和编程方法。二、实验内容使用MCS-51 内部定时/计数器,定时一秒钟,CPU 运用定时中断方式,实现每一秒钟输出状态发生一次反转,即发光管每隔一秒钟亮一次。三、实验要求根据实验内容编写一个程序,并在实验仪上调试和验证。四、实验说明关于内部计数器的编程主要是定时常数的设置和有关控制寄存器的设置。内部计数器在单片机中主要有定时器和计数器两个功能。本实验使用的是定时器,定时为一秒钟。定时器有关的寄存器有工作方式寄存器TMOD 和控制寄存器TCON。TMOD 用于设置定时器/计数器的工作方式0-3,并确定用于定时还是用于计数。TCON 主要功能是为定时器在溢出时设定标志位,并控制定时器的运行或停止等。内部计数器用作定时器时,是对机器周期计数。每个机器周期的长度是12 个振荡器周期。假设实验系统的晶振是12MHZ,程序工作于方式2,即8 位自动重装方式定时器, 定时器100uS中断一次, 所以定时常数的设置可按以下方法计算:机器周期=1212MHz=1uS(256-定时常数)1uS=100uS定时常数=156。然后对100uS 中断次数计数10000 次,就是1 秒钟。在本实验的中断处理程序中,因为中断定时常数的设置对中断程序的运行起到关键作用,所以在置数前要先关对应的中断,置数完之后再打开相应的中断。本实验需要用到CPU 模块(F3 区)和八位逻辑电平显示模块(B5 区)。五、实验步骤1)系统各跳线器处在初始设置状态,用导线连接CPU 模块P10 到八位逻辑电平显示模块的L0。2)启动PC 机,打开THGMW-51 软件,输入源程序,并编译源程序。编译无误后,下载程序运行。3)运行程序观察发光二极管隔一秒点亮一次,点亮时间为一秒。六、实验程序Tick equ 10000 T100us equ 156 C100us equ 30h LEDBuf bit 20h org 0 ljmp Start org 000bhT0Int: push PSW mov a, C100us+1 jnz Goon dec C100usGoon: dec C100us+1 mov a, C100us orl a, C100us+1 jnz Exit mov C100us, #27H mov C100us+1, #10H cpl LEDBuf Exit: pop PSW retiStart: mov TMOD, #02h mov TH0, #t100us mov TL0, #t100us mov IE, #10000010b setb TR0 clr LEDBuf clr P1.0 mov C100us, #27H mov C100us+1, #10H Loop: mov c, LEDBuf mov P1.0, c ljmp Loop end七、实验现象 程序运行后,发光二极管LO每隔一秒点亮一次。八、程序分析 本实验主要有两个模块:定时初始化模块和中断模块。主程序主要是用来初始化定时的,包括定时模式的选择,为方式2模式,该模式精度高能够准确定时,还包括定时器的初值设定,设定为100us。当定时标志位高电位自动跳转到中断程序中,如果未满10000次就得继续返回主程序,无法实现CPL LEDBuf指令。而要实现本功能,最重要的是orl a,C100us+1这条语句,只有当计数单元的高位和地位都位0才使得a为0,也就是说只有计满10000次才能调转。否则跳转到exit.九、实验心得通过本次实验,我对单片机的定时计数功能有了一定的了解,熟悉了定时计数的设置。另外我也掌握了它的控制和最基本的应用,初步获悉了定时计数器的内部结构,再结合上一次实验对中断的了解,二者配合,巩固了对中断和定时计数的知识,为下一步的学习打下坚实的基础。实验四:交通灯控制实验一、实验目的掌握十字路口交通灯控制方法。二、实验内容利用系统提供的双色LED 显示电路,和四位静态数码管显示电路模拟十字路口交通信号灯。4 位LED 数码管显示时间,LED 显示红绿灯状态。三、实验要求根据实验内容编写一个程序,并在实验仪上调试和验证。四、实验说明与电路原理图交通信号灯控制逻辑如下:假设一个十字路口为东西南北走向。开始为四个路口的红灯全部亮之后,东西路口的绿灯亮,南北路口的红灯亮,东西路口方向通车,延时一段时间后(20 秒),东西路口的绿灯,闪烁若干次后(3 秒),东西路口的绿灯熄灭,同时东西路口的黄灯亮,延时一段时间后(2 秒),东西路口的红灯亮,南北路口的绿灯亮,南北路口方向通车,延时一段时间后(20 秒),南北路口的绿灯闪烁若干次后(3 秒),南北路口的绿灯熄灭,同时南北路口的黄灯亮,延时一段时间后(2 秒),再切换到东西路口的绿灯亮,南北路口的红灯亮,之后重复以上过程。双色LED 是由一个红色LED 管芯和一个绿色LED 管芯封装在一起,共用负极,当红色正端加高电平,绿色正端加低电平时,红灯亮;红色正端加低电平,绿色正端加高电平时,绿灯亮;两端都加高电平时,黄灯亮。本实验需要用到CPU 模块(F3 区)、静态数码管/双色LED 显示模块(B4 区)双色LED显示电路原理参见下图。五、实验程序框图实验示例程序框图如图4-2。图4-2 程序流程图六、实验步骤1)系统各跳线器处在初始设置状态。P10 同时接G1、G3;P11 同时接R1、R3;P1.2 同时接G2、G4;P1.3 同时接R2、R4;P1.6、P1.7 分别接静态数码显示的DIN、CLK。2)启动PC 机,打开THGMW-51 软件,输入源程序,并编译源程序。编译无误后,下载程序运行。3)观察十字路口交通灯效果。七、实验程序 SECOND1 EQU 30H SECOND2 EQU 31H DBUF EQU 40H TEMP EQU 44H LED_G1 BIT P1.0 LED_R1 BIT P1.1 LED_G2 BIT P1.2 LED_R2 BIT P1.3 Din BIT P1.6 CLK BIT P1.7 ORG 0000H LJMP START ORG 0100HSTART: LCALL STATE0 LCALL DELAY MOV TMOD,#01H MOV TH0, #3CH MOV TL0, #0B0H SETB TR0 CLR EALOOP: MOV R2,#20 MOV R3,#20 MOV SECOND1,#25 MOV SECOND2,#25 LCALL DISPLAY LCALL STATE1 WAIT1: JNB TF0,WAIT1 CLR TF0 MOV TH0, #3CH MOV TL0, #0B0H SETB TR0 DJNZ R2,WAIT1 MOV R2,#20 DEC SECOND1 DEC SECOND2 LCALL DISPLAY DJNZ R3,WAIT1 MOV R2,#5 MOV R3,#3 MOV R4,#4 MOV SECOND1,#5 MOV SECOND2,#5 LCALL DISPLAYWAIT2: LCALL STATE2 JNB TF0,WAIT2 CLR TF0 MOV TH0, #3CH MOV TL0, #0B0H DJNZ R4,WAIT2 CPL LED_G1 MOV R4,#4 DJNZ R2,WAIT2 MOV R2,#5 DEC SECOND1 DEC SECOND2 LCALL DISPLAY DJNZ R3,WAIT2 MOV R2,#20 MOV R3,#2 MOV SECOND1,#2 MOV SECOND2,#2 LCALL DISPLAYWAIT3: LCALL STATE3 JNB TF0,WAIT3 CLR TF0 MOV TH0, #3CH MOV TL0, #0B0H DJNZ R2,WAIT3 MOV R2,#20 DEC SECOND1 DEC SECOND2 LCALL DISPLAY DJNZ R3,WAIT3 MOV R2,#20 MOV R3,#20 MOV SECOND1,#25 MOV SECOND2,#25 LCALL DISPLAYWAIT4: LCALL STATE4 JNB TF0,WAIT4 CLR TF0 MOV TH0, #3CH MOV TL0, #0B0H DJNZ R2,WAIT4 MOV R2,#20 DEC SECOND1 DEC SECOND2 LCALL DISPLAY DJNZ R3,WAIT4 MOV R2,#5 MOV R4,#4 MOV R3,#3 MOV SECOND1,#5 MOV SECOND2,#5 LCALL DISPLAYWAIT5: LCALL STATE5 JNB TF0,WAIT5 CLR TF0 MOV TH0, #3CH MOV TL0, #0B0H DJNZ R4,WAIT5 CPL LED_G2 MOV R4,#4 DJNZ R2,WAIT5 MOV R2,#5 DEC SECOND1 DEC SECOND2 LCALL DISPLAY DJNZ R3,WAIT5 MOV R2,#20 MOV R3,#2 MOV SECOND1,#2 MOV SECOND2,#2 LCALL DISPLAYWAIT6: LCALL STATE6 JNB TF0,WAIT6 CLR TF0 MOV TH0, #3CH MOV TL0, #0B0H DJNZ R2,WAIT6 MOV R2,#20 DEC SECOND1 DEC SECOND2 LCALL DISPLAY DJNZ R3,WAIT6 LJMP LOOP STATE0: MOV P1,#0 CLR LED_G1 SETB LED_R1 CLR LED_G2 SETB LED_R2 RETSTATE1: SETB LED_G1 CLR LED_R1 CLR LED_G2 SETB LED_R2 RETSTATE2: CLR LED_R1 CLR LED_G2 SETB LED_R2 RETSTATE3: SETB LED_G1 SETB LED_R1 CLR LED_G2 SETB LED_R2 RETSTATE4: CLR LED_G1 SETB LED_R1 SETB LED_G2 CLR LED_R2 RETSTATE5: CLR LED_G1 SETB LED_R1 CLR LED_R2 RETSTATE6: CLR LED_G1 SETB LED_R1 SETB LED_G2 SETB LED_R2 RETDISPLAY: MOV A, SECOND1 MOV B, #10 DIV AB MOV DBUF+1,A MOV A,B MOV DBUF, A MOV A, SECOND2 MOV B, #10 DIV AB MOV DBUF+3, A MOV A,B MOV DBUF+2, A MOV R0,#DBUF MOV R1,#TEMP MOV R7,#4DP10:MOV DPTR,#LEDMAP MOV A,R0 MOVC A,A+DPTR MOV R1,A INC R0 INC R1 DJNZ R7,DP10 MOV R0,#TEMP MOV R1,#4DP12:MOV R7,#8 MOV A,R0DP13:RLC A MOV DIN,C CLR CLK SETB CLK DJNZ R7,DP13 INC R0 DJNZ R1,DP12 RETLEDMAP: DB 3FH,6,5BH,4FH,66H,6DH ;0,1,2,3,4,5 DB 7DH,7,7FH,6FH,77H,7CH ;6,7,8,9,A,B DB 58H,5EH,7BH,71H,0,40H ;C,D,E,F, , -Delay: mov r5, #5DLoop0:mov r6, #0DLoop1:mov r7, #0DLoop2: NOP NOP djnz r7, DLoop2 djnz r6, DLoop1 djnz r5, DLoop0 ret END八、 实验现象 运行程序后,开始四个路口的红灯全部亮之后,东西路口的绿灯亮,南北路口的红灯亮,路口方向通车。延时一段时间后(20s),东西路口的绿灯,闪烁若干次后(3s),东西路口的绿灯熄灭,同时东西路口的黄灯亮,延时一段时间后(2s),东西路口的红灯亮,南北路口的绿灯亮,南北路口方向通车,延时一段时间后(20s),南北路口的绿灯闪烁若干次后(3s),南北路口的绿灯熄灭,同时南北路口的黄灯亮,延时一段时间后(2s),再切换到东西路口的绿灯亮,南北路口的红灯亮,之后重复以上过程。九、程序分析 本实验共分为五个模块,交通灯初始模块,6种交通状态的调用模块,6种交通状态和1个初始状态模块,显示模块,以及延时模块,每一个状态的原理如下:首先调用交通状态模块中的各状态,以此达到个I/O端口的设置,然后进行延时,设置定时器的工作方式,初值,接着采用中断查询的方式来判断状态是否结束,最后调用显示模块。在每个状态也是需要进行循环设置和显示的。另外显示模块中,采用动态显示的方式,利用数据线和控制线船型显示数码管,节约了导线成本,只有2个输入端。十、 实验心得 通过本次实验,我对交通灯有了更进一步的了解。交通灯是有6种状态的。本实验让我学会和巩固了以前的知识。另外我对数码管的显示原理也有了进一步的理解,收获很大。实验五:串转并与并转串实验一、实验目的1掌握使用74LS164 扩展输出的方法。2掌握使用74LS165 扩展输入的方法。二、实验内容使用74LS165 扩展输入数据,使用74LS164 扩展输出数据。74LS165 的并行口接八位逻辑电平输出(开关),CPU 使用P1.0、P1.1 和P1.2 串行读入开关状态;74LS164 的并行口接一只数码管,CPU 使用P1.3 和P1.4 串行输出刚读入的开关状态,使之在数码管上显示出来。三、实验要求根据实验内容编写一个程序,并在实验仪上调试和验证。四、实验说明与电路原理图1)74LS165 为8 位移位寄存器,其引脚功能如下:S/L:移位/置数端,低电平有效。P0P7:并行数据输入端。QH、QH:串行数据输出端。CLK、CKLINH:时钟信号输入端。2)74LS164 为串行输入并行输出移位寄存器,其引脚功能如下:A、B:串行输入端;Q0Q7:并行输出端;MR:清零端,低电平有效;CLK:时钟脉冲输入端,上升沿有效。3)用P1 端口输出数据时,要编程位移数据,每操作一个数据位,对应一个移位脉冲。4)本实验需要用到CPU 模块(F3 区)、八位逻辑电平输出模块(E4 区)和静态数码管显示模块(B4 区)。74LS165 电路原理图参见图5-1,74LS164 电路原理图参见图8-2。注:74LS164 集成电路芯片在主板反面。图5-1 74LS165 电路 16图5-2 74LS164电路五、实验步骤1)系统各跳线器处在初始设置状态。用导线对应连接八位逻辑电平输出模块的QH165、CLK165、SH/LD 到CPU 模块的P10、P11、P12。用导线对应连接静态数码管显示模块的DIN、CLK 到CPU 模块的P13、P14。2)启动PC 机,打开THGMW-51 软件,输入源程序,并编译源程序。编译无误后,下载程序运行。3)观察数码(八段码)管的亮灭与拨动开关的状态是否一致。拨动开关拨上输出为高电平,段码点亮。六、实验程序 QH165 BIT P1.0 CLK165 BIT P1.1 SH_LD BIT P1.2 DAT164 BIT P1.3 CLK164 BIT P1.4 MEMORY EQU 30H ORG 0000H AJMP START ORG 00B0HSTART: setb CLK165 clr SH_LD setb SH_LD mov r7, #8 Input: rr a mov c, QH165 mov ACC.7, c clr CLK165 nop setb CLK165 djnz r7, Input mov MEMORY,A mov A,MEMORY mov r6,#8 Output: rrc A mov DAT164,C clr CLK164 setb CLK164 djnz r6, Output acall DELAY sjmp START DELAY: mov R0,#5DD2: mov R1,#0FFH djnz R1,$ djnz R0,DD2 RET END七、实验现象程序运行后,波动开关,对应的发光二极管发光,且波动开关拨下的时候输出低电平。八、程序分析 本实验主要是74LS165与74LS164这两块芯片的使用,CPU使用P1.0、P1.1、P1.2串行读入开关状态。74LS164的并行口接一只数码管,CPU使用P1.3、P1.4串行输出刚读入的开关状态,使之在数码管上显示出来。实验流程主要是先将并行口的开关通过74LS165进行转换成串行输出,然后经过单片机的控制,再在74LS164的作用下将串行数据转换成并行数据,从而使得对应的静态数码管点亮。九、实验心得 通过本次实验,我对串行并和并转串的原理和结构有了进一步的了解。通过单片机的控制可以使得74LS165与74LS164进行完美的结合,二结构主要是个芯片的连接。在实验室当中我们体会到了实验的神奇,激励我们不断学习。实验六:8255 控制键盘与显示实验一、实验目的1掌握8255 输入、输出编程方法。2掌握阵列键盘和数码管动态扫描显示的控制方法。二、实验内容用8255 可编程并行口做一个键盘、显示扫描实验,把按键输入的键值,显示在8255 控制的七段数码管上。8255 PB 口做键盘输入线,PC 口做显示扫描线,PA 口做显示数据线。三、实验要求根据实验内容编写一个程序,并在实验仪上调试和验证。四、实验说明本实验需要用到 CPU 模块(F3 区)、8255 模块(C6 区)、8279 键盘与显示模块(E7 区)。CS_8255 接8000H,则8255 状态/命令口地址为8003H,PA 口地址为8000H,PB 口地址为8001H、PC 口地址为8002H。8255 键盘与显示电路原理图参见图7-1A、图7-1B。图7-1A 键盘显示电路1 22图7-1B 键盘显示电路2五、实验步骤1)系统各跳线器处在初始设置状态,S11E 和S12E 红开关全部打到下方(OFF)。2)用8 位数据线对应连接8255 模块的JD3C(PA 口)、JD4C(PB 口)、JD5C(PC 口)到8279模块的JD3E、JD2E、JD4E;用导线连接8255 模块的CS_8255 到地。3)启动PC 机,打开THGMW-51 软件,输入源程序,并编译源程序。编译无误后,下载程序运行。4)在键盘上按任一单键,观察数码管的显示,数码管低位显示按键值。六、实验程序D8255A EQU 8000H D8255B EQU 8001H D8255C EQU 8002H D8255 EQU 8003H LEDBUF EQU 50H KEYVAL EQU 60H ORG 0000H LJMP START ORG 0100HSTART: MOV SP,#80H MOV DPTR,#D8255 MOV A,#90H MOVX DPTR,A MOV LEDBUF,#10H MOV LEDBUF+1,#11H MOV LEDBUF+2,#11H MOV LEDBUF+3,#11H MOV LEDBUF+4,#5 MOV LEDBUF+5,#5 MOV LEDBUF+6,#2 MOV LEDBUF+7,#8 KB_DIS: LCALL RD_KB MOV A,#0FFH CJNE A,KEYVAL,TOSHOW SJMP SHOW TOSHOW: MOV LEDBUF,KEYVAL SHOW: LCALL DISPLAY SJMP KB_DIS RD_KB: MOV A,#02H MOV DPTR,#D8255C MOVX DPTR,A MOV DPTR,#D8255A MOVX A,DPTR MOV R1,#00H CJNE A,#0FFH,KEYCAL MOV A,#01H MOV DPTR,#D8255C MOVX DPTR,A MOV DPTR,#D8255A MOVX A,DPTR MOV R1,#08H CJNE A,#0FFH,KEYCAL SJMP NOKEY KEYCAL: MOV R0,#08H SHIFT: RRC A JNC TORET INC R1 DJNZ R0,SHIFT SJMP NOKEY TORET: MOV KEYVAL,R1 RET NOKEY: MOV KEYVAL,#0FFH RET Display:MOV R7,#8 MOV R5,#0 MOV R0,#LEDBUF DLOOP: MOV A,R5 RL A RL A RL A ANL A,#11111011B INC R5 MOV DPTR,#D8255C MOVX DPTR,A MOV A,R0 MOV DPTR,#LEDSEG MOVC A,A+DPTR INC R0 MOV DPTR,#D8255B MOVX DPTR,A LCALL Delay DJNZ R7,DLOOP RETDelay: PUSH R7 MOV R7,#200DelayLoop: NOP DJNZ R7,DelayLoop POP R7 RETLEDSEG: 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 39H,5EH,79H,71H,00H,40H;C,D,E,F, ,- END七、实验现象运行程序后,本次实验共有2排键盘,各个键盘上面都有数字,在键盘上按任意键,可以看到数码管上显示了按键的数字。八、程序分析程序通过对输入量的识别,跳转到不同的程序段执行来实现不同按键输出。并且通过查表来实现不同字符的显示。实验通过8255芯片来对键盘的输入和显示,并采用扫描法对键盘输入进行识别,并采用动态显示结果。通过程序的编写和电路的连接基本上实现实验的要求。九、实验小结通过本次实验我基本上掌握了键盘输入和显示的方法。通过实验基本上掌握了8255的使用方法,并且掌握了键盘按键识别的方法,可以为以后的电路设计提供方法。实验七:LCD 显示实验一、实验目的掌握点阵式(12864点)带汉字字库液晶显示屏的程序设计方法。二、实验内容根据系统提供的电路,掌握12864 点阵LCD 的工作原理,编程实现显示字符、汉字和图片。三、实验要求根据实验内容编写一个程序,并在实验仪上调试和验证。四、实验说明系统使用OCMJ4X8C_3型液晶显示屏(奥可拉中文集成模块)。此模块可以显示字母、数字符号、中文字型及图形,具有绘图及文字画面混合显示功能。提供三种控制接口,分别是8位微处理器接口,4位微处理器接口及串行接口(OCMJ4X16A/B无串行接口)。所有的功能,包含显示RAM,字型产生器,都包含在一个芯片里面,只要一个最小的微处理系统,就可以方便操作模块。内置2M-位中文字型ROM (CGROM) 总共提供8192个中文字型(16x16点阵),16K位半宽字型ROM(HCGROM) 总共提供126 个符号字型(16x8点阵),64x16位字型产RAM(CGRAM),另外绘图显示画面提供一个64x256点的绘图区域(GDRAM),可以和文字画面混和显示。提供多功能指令:画面清除(Display clear)、光标归位(Return home)、显示打开/关闭(Display on/off)、光标显示/隐藏(Cursor on/off)、显示字符闪烁(Displaycharacter blink)、光标移位(Cursor shift)、显示移位(Displayshift)、垂直画面卷动(Vertical line scroll)、反白显示(By_line reverse display)、待命模式(Standbymode)。本实验需要用到CPU模块(F3区)、LCD液晶显示模块(B3区)。五、实验步骤1)系统各跳线器处在初始设置状态,JT2B 跳线器的两只短路帽置位上端。用导线对应连接液晶显示模块的RS、R/W、E、PSB、RST
展开阅读全文