实验一认识实验一、实验目的1、了解实验台的基本使用2、掌握单片机实验板、仿真器与实验台的连接方法3、掌握MCS-51仿真软件的使用4、对MCS-51单片机内部的工作寄存器、累加器A和RAM单元进行操作;5、输入数据传送指令并单步执行输入的指令。二、实验内容1、实验台的使用2、仿真系统连接3、仿真软件使用三、实验步骤:1、实验台的基本使用:(1)电源:+5V;(2)串行口;(3)微机2、仿真系统连接:(1)仿真头安装(2)单片机主板与扩展板连接(3)主板与仿真器的连接(4)仿真系统与实验台连接:电源、数据线3、仿真软件的使用:(1)仿真软件启动(2)仿真模式设置:a)仿真器b)通信c)仿真头(3)数据观察及设置(SFR、寄存器、内RAM及外RAM等)a)复位后读出R0~R7、A、PSW、B和SP的值,并填入下表。R0~R7DPTRAPSWBSP初值b)观察RS1和RS0对R0~R7工作寄存器区的控制作用1)把R0~R7修改成12H,读出内RAM00H~1FH中内容并填入表中第一行。2)使PSW=08H,把R0~R7修改成33H,读出内RAM00H~1FH中内容并填入表中第二行。3)使PSW=10H,把R0~R7修改成44H,然后读出内RAM00H~1FH中内容并填入表中第三行。4)使PSW=18H,把R0~R7修改成55H,然后读出内RAM00H~1FH中内容并填入表中第四行。PSWR0—R70区00H~07H1区08H~0FH2区10H~17H3区18H~1FHc)练习对寄存器、内外RAM的数据设置操作。4、程序文件的建立、调试与执行(1)程序建立及编辑a)新建项目;b)新建程序文件;c)输入编辑源程序内容;ORG0030HMAIN:MOVSP,#60HMOVA,#0FEHLOOP:MOVP1,ALCALLDELAYCPLACC.0SJMPLOOPDELAY:MOVR5,#10REL1:MOVR6,#200REL2:MOVR7,#123REL3:DJNZR7,REL3DJNZR6,REL2DJNZR5,REL1RETENDd)保存程序文件(设置文件名应带扩展名.ASM);e)保存项目文件(2)运行程序,观察现象(运行前需先用导线连接P1.0与LED1)。(3)程序调试:a)单步运行:在程序中LCALL指令前面加上;号,单步运行程序。b)设置断点:将LCALL指令前面加上;号去掉,在该指令上设置断点,并运行。c)运行观察及数据设置:调试程序过程中,需要随时观察内外RAM及SFR的状态,甚至是一些可寻址位的状态,必要时还要进行相关单元、位的数据设置。四、实验总结:1、本次实验的收获及疑难问题。实验数据传送类指令练习一、实验目的1、进一步掌握MCS-51仿真软件的使用。2、熟悉8031/8051传送指令功能。二、实验内容1、输入数据传送指令并单步执行输入的指令;2、练习数据传送指令的基本应用。三、实验步骤1、传送指令的功能1)输入如下程序:ORG0030H0030H74BBHMOVA,#0BBH0032H900070HMOVDPTR,#0070H0035HF0HMOVX@DPTR,A0036H7870HMOVR0,#70H0038HF6HMOV@R0,A0039H74CCHMOVA,#0CCH003BHD6HXCHDA,@R0003CH80F1HSJMP$END2)观察DPTR、A、R0、内部RAM70H和外部RAM70H单元中内容并填入表中第一空行。3)单步执行完上述程序,重新观察上述寄存器和存储单元中内容并填入表中第二空行。表1程序执行前后有关寄存器和RAM单元内容对照表程序执行DPTRAR070H内RAM70H外RAM前后4)分析程序并把分析结果和运行结果进行比较。2、PUSH指令对堆栈的影响1)输入如下程序:ORG0040HMOVA,#0AAHMOVPSW,#0CCHPUSHACCPUSHPSWSJMP$END2)观察A、PSW、SP、07H、08H和09H单元中内容,并填入表表。表2PUSH指令对堆栈的影响程序执行APSWSP堆栈区07H08H09H前后3)单步执行上述程序,重新观察上述寄存器和堆栈区中内容填入表中。4)分析程序并把分析结果和实验结果进行比较,看两者是否相同。3、编写把A、PSW、DPTR中内容入栈保护并恢复的程序,并验证。4、编写将内RAM的30H、40H单元内容相互交换的程序,并验证。5、编程实现交换外RAM1050H、1060H单元的数据,并运行验证。6、ROM区从SQR开始的10个单元中依次存放着0~9的平方值,内RAM的40H单元中有0~9之间的一个整数,试编程实现用查表的方法得到该数的平方值,并存入41H单元。四、实验总结:1、堆栈操作的原则是什么?在程序设计中需要保护和恢复数据时应注意什么?2、对内RAM、外RAM及ROM进行数据传送的指令,分别可使用如此寻址方式?实验算术及逻辑运算指令练习一、实验目的1、熟悉算术及逻辑运算类指令的功能。2、掌握算术及逻辑运算类指令对标志位的影响。3、掌握算术、逻辑运算指令的基本应用。二、实验内容1、求两个16位二进制数的和2、四位十进制数的加法3、算术、逻辑运算指令的基本应用三、实验步骤1、求两个16位数的和设30H和32H开头的两个单元分别存放有两个16位无符号二进制数(低8位在30H或32H单元,高8位在31H或33H单元),如下程序可以使两个数相加并把其和存放在30H和31H单元。ORG0030HMOVR0,#30HMOVR1,#32HMOVA,@R0ADDA,@R1MOV@R0,AINCR0INCR1MOVA,@R0ADDCA,@R1MOV@R0,ASJMP$END1)把被加数1122H和加数3344H分别送入CPU内部RAM的相应存储单元,即(31H)=33H、(30H)=44H、(33H)=11H、(32H)=22H。如表1所示。2)执行程序并观察31H和30H单元两数之和以及CY中进位位,填入表中相应栏目。3)把被加数和加数分别改为AABBH和CCDDH并送入相应存储单元,然后重新运行程序,并将运行结果填入到表中。表1求和程序执行前后的结果第一遍执行程序第二遍执行程序CY十六进制数CY十六进制数程序执行前1122H3344HAABBHCCDDH程序执行后计算值4)手工计算上述两组加数和被加数,并填入到表中相应栏目,检查计算值和程序运行值是否一致。2、四位十进制数的加法:设30H和32H开头的两个单元分别存放有两个四位十进制数的压缩BCD码(低8位在30H或32H单元,高8位在31H或33H单元),试编写程序求这两个十进制数的和,并将结果放在从34H单元开始的存储区(低8位在低地址单元)。使用表格中提供的数据执行程序,并将结果填入表中。表2BCD数求和程序执行前后的结果第一遍执行程序第二遍执行程序CYBCD数CYBCD数程序执行前5656H3344HAABBHCCDDH程序执行后计算值3、分别编写实现如下功能的程序并运行、验证。(1)四个8位无符号二进制数求和。(源数据位于内RAM的连续存储区,结果存储在源数据之后的存储区,低字节在低地址存储单元)(2)外RAM的1000H和2000H单元中分别放着一个8位无符号二进制数X和Y,计算3X+4Y,并将结果存入内RAM的30H单元和31H单元。(低8位位于30H单元)。(3)将两位十进制数的压缩BCD码转换成ASCII码。(源数据在内RAM20H单元,结果存放在内RAM的31H单元开始的两个单元,低字节在31H单元)四、实验总结:1、算术加、减法指令如何影响PSW中的有关标志位?2、如何实现两个BCD数的减法?实验P1口控制LED发光二极管一、实验电路(如图3.3.29所示)图3.3.29P1口控制LED发光二极管二、实验目的1、熟悉51系列单片机2、掌握AT89C51P1口的使用方法3、掌握LED发光二极管的原理及使用方法4、学习AT89C51的编程、仿真、调试、编译、芯片烧录。对应文件LED.HEX三、实验器材1、单片机主板2、单片机扩展板3、连接导线若干四、实验注意事项1、单片机主板、单片机扩展板均采用+5V电压2、因J14为有极性排阻,故单片机扩展板一定要连接GND和+5V3、图中粗线部分为要求学生自己连线部分五、实验现象1、8个LED发光二极管循环显示(发光的移位),间隔时间为一秒。六、思考1、将本实验的实验现象改为“不发光二极管循环移位”。2、将本实验的实验现象改为“每隔0.5秒发光二极管循环移位”。实验数码管静态显示实验一、实验电路(如图3.3.32所示)图3.3.32数码管静态显示电路原理图二、实验目的1、熟悉51系列单片机2、了解AT89C51P1口的使用方法3、掌握共阴数码管的原理及使用方法4、学习AT89C51的编程、仿真、调试、编译、芯片烧录。对应文件LEDGT.HEX三、实验器材1、单片机主板2、单片机扩展板3、连接导线若干四、实验注意事项1、单片机主板、单片机扩展板均采用+5V电压3、图中粗线部分为要求学生自己连线部分五、实验现象数字0—9循环显示,延迟时间为1秒六、思考在共阴数码管上显示字母A—F(不区分大小写)实验矩阵键盘实验一、实验电路(如图3.3.34所示)图3.3.34矩阵键盘实验电路原理图二、实验目的1、熟悉51系列单片机2、了解AT89C51P1口、P2口的使用方法3、了解共阳数码管的原理及使用方法4、掌握矩阵键盘的原理及使用方法5、学习AT89C51的编程、仿真、调试、编译、芯片烧录。对应文件KEY.HEX三、实验器材1、多功能实验板2、单片机扩展板3、连接导线若干四、实验注意事项1、多功能实验板、单片机扩展板接+5V电压2、数码管为共阳数码管,公共端接+5V3、图中粗线部分为要求学生自己连线部分五、实验现象1、ENTER键为全亮键,ESC键为全灭键,其它数字键为按哪一位数字键,在数码管上显示其数字。实验外部中断实验一、实验电路(如图3.3.45所示)图3.3.45外部中断实验电路原理图二、实验目的1、熟悉51系列单片机2、了解AT89C51P1口、P3口的使用方法3、了解键盘的原理及使用方法4、了解发光二极管的原理及使用方法5、掌握外部中断的原理及使用方法6、学习AT89C51的编程、仿真、调试、编译、芯片烧录。对应文件INT.HEX三、实验器材1、单片机主板2、单片机扩展板3、连接导线若干四、实验注意事项1、单片机主板、单片机扩展板接+5V2、因J14为有极性排阻,故单片机扩展板一定要连GND和VCC,否则发光二极管不亮3、图中粗线部分为要求学生自己连线部分五、实验现象正常情况下8个LED发光二极管循环显示,延迟时间为1秒,当有按键按下即产生外部中断时,8个LED发光二极管全亮,延迟时间为2秒。六、思考请同学们自己试一下外部中断0。实验定时器中断一、实验电路(如图3.3.46所示)图3.3.46定时器中断电路原理图二、实验目的1、熟悉51系列单片机2、了解AT89C51P1口的使用方法3、掌握定时器、计数器的原理及使用方法4、学习AT89C51的编程、仿真、调试、编译、芯片烧录。对应文件INT.HEX三、实验器材1、单片机主板2、单片机扩展板3、连接导线若干四、实验注意事项1、单片机主板、单片机扩展板接+5V电压2、因J14为有极性排阻,故单片机扩展板一定要接GND和VCC,否则LED发光二极管不亮3、图中粗线部分为要求学生自己连线部分五、实验现象LED发光二极管循环显示,延迟时间为1秒。六、思考将LED发光二极管的循环延迟时间设置的更长或更短。实验数码管动态显示实验一、实验电路(如图3.3.33)图3.3.33数码管动态显示电路原理图二、实验目的1、熟悉51系列单片机2、了解AT89C51P1口、P2口的使用方法3、学习驱动芯片ULN2003A的原理及使用方法4、学习驱动芯片74HC245的原理及使用方法5、掌握数码管(共阴、共阳两种)的原理及使用方法6、学习AT89C51的编程、仿真、调试、编译、芯片烧录。对应文件LEDDT.HEX