单片机实验教案

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1单片机技术实验教案冯杰2实验一(1)顺序结构程序设计一、实验目的掌握汇编语言设计和调试方法。熟悉KeilC和Protus仿真软件的使用。二、实验内容1、电路如图一所示。将A的内容通过P2口送LED发光二极管显示。2、修改程序,实现跑马灯的显示效果。四、实验步骤1、在计算机某个硬盘中建立项目文件夹。例如“shiyan1”或者“ex1”。2、启动KEILC程序。3、打开主菜单中的“project”下的“newproject”建立新的项目。按照要求输入项目文件名,例如“shiyan1.prj”。注意:项目应该建立在第一部的文件夹中。4、打开主菜单中的“file”下的“newfile”,建立新的汇编语言文件。录入程序,并将文件命名为“ex1.asm”,存入项目文件夹中。5、将第四步建立的文件加入到项目中。6、编译项目文件,查错。7、启动protus软件,将电路图一输入计算机,并存到项目文件夹中。8、在protus软件中,使用鼠标左键双击,将第六步编译后所产生的“shiyan1.hex”文件写入到单片机中。9、在protus软件中运行程序。10、将A中的内容修改为“0AAH”,重新编译程序,并运行,观察结果。五、思考如何用断点方式调试本程序。ORG0000HLJMPSTARTORG0030HSTART:MOVA,#55HMOVP1,A3SJMP$END实验一(2)循环结构程序设计一、实验目的熟悉MCS-51指令系统,掌握程序设计方法。二、实验内容编写并调试一个排序子程序,其功能为用冒泡法将内容RAM中几个单元字节无符号的正整数,按从小到大的次序重新排列。三、程序框图五、思考:修改程序把50~5Ah中内容按从小到大排列。ORG0000HLJMPSTARTORG0030HSTART:MOVR7,#09HMOVR0,#50HMOVR6,#00H;清除标志START1:CLRCMOVA,@R0INCR0SUBBA,@R0JCLOOP1MOVR6,#01HDECR0MOVA,@R0INCR0XCHA,@R0DECR0MOV@R0,AINCR0LOOP1:DJNZR7,START1CJNER6,#00H,STARTSJMP$END实验一(3)选择结构程序设计4一、实验目的掌握汇编语言的编程。二、实验内容编写程序,根据送入的数据转移运行。三、程序框图四、实验步骤ORG0000HLJMPSTARTORG0030HSTART:MOV20H,#00HMOVA,20HMOVB,#03HMULABMOVDPTR,#TABJMP@A+DPTRSJMP$ORG3000HTAB:LJMPLOOPALJMPLOOPBLJMPLOOPCLOOPA:MOVA,#01HLOOPA1:MOVP1,ALCALLDELAY1SRLALJMPLOOPA1LOOPB:MOVA,#03HLOOPB1:MOVP1,ALCALLDELAY1SRLALJMPLOOPB1LOOPC:MOVA,#07HLOOPC1:MOVP1,ALCALLDELAY1SRLALJMPLOOPC1DELAY1S:MOVR7,#5DELAY1S3:MOVR6,#200DELAY1S2:MOVR5,#2505DELAY1S1:DJNZR5,DELAY1S1DJNZR6,DELAY1S2DJNZR7,DELAY1S3RETEND实验二中断实验一、实验目的熟悉单片机中断概念及中断编程方法。二、实验内容编写程序,从P3.3(INT1)输入脉冲,记录输入脉冲个数,并用P1口外部链接的发光二极管显示计数结果。如果改为从P3.2(INT0)输入脉冲,程序如何修改?二、参考程序ORG0000HLJMPSTARTORG0013H6LJMPINT1_COUNTORG0030HSTART:MOVSP,#60HMOVA,#00HSETBIT1;下降边沿触发方式SETBEX1;开启INT1中断SETBEASJMP$INT1_COUNT:INCAMOVP1,ARETIEND实验三LED显示实验一、实验要求利用实验系统提供的显示设备,动态显示一行数据。二、实验目的⑴了解数码管动态显示的原理;⑵了解用总线方式控制数码管显示。三、实验说明UN2003芯片,是7个带驱动的反相器。8个数码管均为共阴极接法。四、程序框图7汇编语言参考程序:ORG0000HLJMPSTARTORG0030HSTART:MOVSP,#60HMOV50H,#8CH;显示字符P.MOV51H,#40HMOV52H,#79HMOV53H,#24HMOV54H,#30HMOV55H,#19HMOV56H,#12HMOV57H,#02HLOOP1:LCALLDISPLAYLJMPLOOP1DISPLAY:MOVP2,#0FHMOVP0,50HLCALLDELAY20MSMOVP2,#1FHMOVP0,51HLCALLDELAY20MSMOVP2,#2FHMOVP0,52HLCALLDELAY20MS8MOVP2,#3FHMOVP0,53HLCALLDELAY20MSMOVP2,#4FHMOVP0,54HLCALLDELAY20MSMOVP2,#5FHMOVP0,55HLCALLDELAY20MSMOVP2,#6FHMOVP0,56HLCALLDELAY20MSMOVP2,#7FHMOVP0,57HLCALLDELAY20MSLJMPDISPLAYDELAY20MS:MOVR7,#20DELAY1:MOVR6,#100DELAY2:DJNZR6,DELAY2DJNZR7,DELAY1RETTAB:DB40H,79H,24H,30H,19H,12H,02H;0123456的字符码DB78H,00H,10H,08H,03H,46H,21H,06H,0EH;789ABCDEF的字符码TAB1:DB8CH;P.的字符码TAB2:DB7FH;空,不显示的字符END9键盘电路实验电路图:程序:;用int1中断实现按键功能,键值存放在4fh单元中;通过P1口输出按键值,用发光二极管显示按键值;通过P2.4--P2.6和三八译码器输出八列按键扫描码;通过P2.0---P2.3读入按键的行值;行列值组合,就是按键的键值ORG0000HLJMPSTARTORG0013HLJMPkey_valueORG0030HSTART:MOV4fH,#00h;存放按键键值单元MOVP1,#00HMOVP2,#0FFHsetbex1setbit1setbeaKEY_SCAN:MOVP2,#0FHLCALLDELAY5MSMOVP2,#1FHLCALLDELAY5MSMOVP2,#2FH10LCALLDELAY5MSMOVP2,#3FHLCALLDELAY5MSMOVP2,#4FHLCALLDELAY5MSMOVP2,#5FHLCALLDELAY5MSMOVP2,#6FHLCALLDELAY5MSMOVP2,#7FHLCALLDELAY5MSLJMPKEY_SCANDELAY5MS:MOVR7,#40DELAY1:MOVR6,#100DELAY2:DJNZR6,DELAY2DJNZR7,DELAY1RETKEY_VALUE:PUSHACCPUSHPSWMOVA,P2MOV4FH,AMOVP1,APOPPSWPOPACCRETIEND11LED和键盘综合实验电路图:参考程序:ORG0000HLJMPSTARTORG0013HLJMPKEY_VALUEORG0030HSTART:MOVSP,#60HMOV4fH,#00h;存放按键键值单元MOVP2,#0FFHsetbex1setbit1setbeaMOV50H,#0CH;显示字符P.MOV51H,#0CHMOV52H,#7FHMOV53H,#7FHMOV54H,#7FHMOV55H,#7FHMOV56H,#7FH12MOV57H,#0CHLOOP1:LCALLDISPLAYLJMPLOOP1DISPLAY:MOVP2,#0FHMOVP0,50HLCALLDELAY20MSMOVP2,#1FHMOVP0,51HLCALLDELAY20MSMOVP2,#2FHMOVP0,52HLCALLDELAY20MSMOVP2,#3FHMOVP0,53HLCALLDELAY20MSMOVP2,#4FHMOVP0,54HLCALLDELAY20MSMOVP2,#5FHMOVP0,55HLCALLDELAY20MSMOVP2,#6FHMOVP0,56HLCALLDELAY20MSMOVP2,#7FHMOVP0,57HLCALLDELAY20MSLJMPDISPLAYDELAY20MS:MOVR7,#20DELAY1:MOVR6,#100DELAY2:DJNZR6,DELAY2DJNZR7,DELAY113RETKEY_VALUE:PUSHACCPUSHPSWMOV4FH,P2LCALLKEY_VALUE_DISPPOPPSWPOPACCRETIKEY_VALUE_DISP:MOVA,4FHANLA,#0F0HSWAPAMOVDPTR,#TABMOVCA,@A+DPTRMOV56H,AMOVA,4FHANLA,#0FHMOVCA,@A+DPTRMOV57H,ARETTAB:DB40H,79H,24H,30H,19H,12H,02H;0123456的字符码DB78H,00H,10H,08H,03H,46H,21H,06H,0EH;789ABCDEF的字符码TAB1:DB8CH;P.的字符码TAB2:DB7FH;空,不显示的字符END实验四A/D转换实验一、实验目的(1)掌握A/D转换与单片机接口的方法;(2)了解A/D芯片0809转换性能及编程方法;(3)通过实验了解单片机如何进行数据采集。二、实验内容利用实验系统上的0809做A/D转换器,实验系统上的电位器提供模拟量输入,编制程序,将模拟量转换成数字,通过数码管显示出来。三、程序框图14四、实验电路五、实验步骤把0809的零通道INT0用插针接至AINl孔,0809CS位FFE0孔,运行程序,数码管显示0809.XX,后二位显示当前采集的电压转换的数字量,调节W1,该二位将随着电压变化而相应变化。六、思考修改程序,用其它通道轮流采样显示。实验五电脑时钟(定时器、中断综合实验)一、实验目的熟悉MCS-51定时器,串行口和中断初始化编程方法,了解定时器的应用实时程序的设计与调试技巧。二、实验内容编写程序,从本实验系统键盘上输入时间初值,用定时器产生0.1S定时中断,对时钟计数器计数,并将数值实时地送数码管显示。三、程序框图15四、实验步骤连续运行程序,在键盘上输入时间初值,按执行键EXEC执行,数码管上实时显示时间值。五、思考(1)电子钟走时精度和程序中那些常数有关?(2)修改程序使定时器工作方式改变,调节有关参数,进一步提高精度。六、参考程序ORG0000HLJMPSTARTORG000BHLJMPT0_INTORG0030HSTART:MOV50H,#00H;时的低位字符码MOV51H,#00H;时的高位字符码MOV52H,#00H;“-”的字符码MOV53H,#00H;分的低位字符码MOV54H,#00H;分的高位字符码MOV55H,#00H;“-”的字符码MOV56H,#00H;秒的低位字符码MOV57H,#00H;秒的高位字符码MOV5FH,#00H;存放小时的单元MOV5EH,#00H;存放分钟的单元MOV5DH,#00H;存放秒的单元MOV5CH,#00H;存放T0中断次数,50次为1秒MOVSP,#60H;设置堆栈栈顶MOVTH0,#???;设置T0定时器初值MOVTL0,#???MOVTMOD,#00000001H;T0工作在定时方式,工作方式0SETBET0;开放T0中断SETBEA;开放总中断SETBTR0;启动定时器T0LOOP:movP2,#11111110HMOVR0,#50Hloop1:MOVR7,#08HLOOP2:MOVA,@R0MOVP1,ALCALLDELAYINCR0MOVA,P2RLAMO

1 / 28
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功