版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、机电专业综合实验实验指导书 大连交通大学机械工程学院机械电子工程教学与研究中心2009年9月序言机电专业综合实验是为提高学生的实际动手能力而开设的专业实验课。本实验课以单片机原理与接口技术、计算机控制技术2门课为理论基础,以“mini51单片机实验板”为硬件基础,结合典型接口应用实例,进行微机接口技术的实际操作训练。所用软件说明:汇编语言编译仿真软件“WAVE6000”,单片机程序下载软件“STC_ISP”,均为绿色软件。但实验板上的USB转RS232接口电路需要先安装驱动程序,下载软件“STC_ISP”才能正常工作。实验1:mini51单片机实验板的使用一、实验目的学习mini51单片机实验
2、板的使用,对实验板的结构、组成及工作原理有基本的认识。通过最基本的实验,掌握实验板的程序下载与实验方法。二、实验要求1、了解mini51单片机实验板的基本功能。2、学习单片机仿真软件的使用方法。3、掌握汇编指令的输入与编辑方法,并能仿真运行。4、将编译后的代码下载到mini51单片机实验板中,运行并观察结果。5、学习最基本的程序调试方法。三、实验内容1.1、学习WAVE单片机仿真程序的使用:了解其基本功能,学习汇编程序的输入、编辑,熟悉各窗口界面的基本功能。操作指导:运行WAVE.exe单片机仿真程序,先观察与熟悉操作界面,特别注意:DATA窗口为单片机内存数据窗口,REG、SFR、BIT等窗
3、口分别显示寄存器、特殊功能寄存器、位地址数据等信息,中间部分是输入与编辑指令的窗口。特别提示:按“窗口()CPU窗口”可以打开反汇编(Disassembly)窗口,显示程序反汇编数据与程序代码的对应关系。1.1.2、仿真程序实例“数据传送编程”编程与仿真运行:将0、1、2、等数据依次送入30H、31H、3FH内。1.1.3 程序输入与编辑:新建一个文件,输入能实现上述要求的程序。典型程序如下:PG11: MOV R2,#16 ;送循环次数 MOV A,#0 ;送数据初值 MOV R0,#30H ;送起始地址X: MOV R0,A ;送数据 INC R0 ;改地址指针 INC A ;改数据 DJ
4、NZ R2,X ;判断循环次数 AJMP $ ;原地循环,防止程序往下执行到乱码区 输入技巧:以第一行程序为例,进入英文输入状态,选择大写输入,输入“PG11:”之后,按一下“Tab”键,光标会右移到第8格的位置,输入“MOV”,再按一次“Tab”键,再输入“R3,#16 ”,再按一次“Tab”键,再输入“;送循环次数”。这样程序会很整齐。特别注意:分号(包括分号本身)之前的字符,必须是半角英文字符。回车之后,要先按一下“Tab”键,再输入第2行。输入程序之后,先要保存文件(文件名不准超过8个英文字符或4个汉字,必须加扩展名.asm),统一命名为PG11.ASM。之后,即可按“编译”进行编译,
5、如果有错误,会有提示。双击错误提示处,可以直接定位到程序错误之处,进行修改。如果无误,则编译通过,也会有提示。1.1.4 查看程序编译代码:打开Disassembly窗口,查看程序反汇编数据与代码的对应关系。 1.1.5 运行程序与查看结果:编译通过后,按全速执行按钮 ,即可执行程序。由于程序的最后一条为原地循环指令,不会自行停止,必须按暂停按钮 ,才能停止。接着可以查看内存单元30H3FH内的数据。 1.1.6 程序单步执行与断点执行:先将内存单元30H3FH内的数据全部清零,或全部改为FFH。方法是:点击要改的数据,用键盘输入即可。按复位 | ,使程序复位。按F8即可单步执行程序。每执行一
6、条指令,可立即察看执行结果。要分别察看累加器A、状态寄存器PSW、寄存器R0、R3,以及相应内存单元的数据变化,了解每一条程序所作的工作。注意:执行一步,如果数据有变化,数据会变为红色的。如果要迅速查看每个循环后的执行结果,可以在“DJNZ R3,X”这条指令上设置一个断点。方法是:点击此条指令的左侧的灰色竖条,成功后,此条指令的背景色变为红色。此后,可以用全速执行方式执行程序,执行到“DJNZ R3,X”这条指令,就会自动暂停,再按全速执行按钮 ,即可继续执行。1.2、实验板入门程序1:“按键与灯”编程与实验程序功能:分别按下实验板上的K2K7(对应P3.2P3.7)键,可分别点亮P0.2P
7、0.7对应的灯D2D7。1.2.1 接口说明:P2.0输出:选通8个灯D0D7(=1选通)。P2.1P2.6输出:分别选通(=1选通):数码管16(右侧为1)。P2.7输出:驱动蜂鸣器(=0响)。P0.0P0.7输出:分别驱动8个灯D0D7(=0亮),或分别驱动数码管的a、b、c、d、e、f、g、p段(=0亮)。P3.2P3.7:按键输入,对应K2K7 (按下时=0)。1.2.2 程序输入与编辑:新建一个文件,输入能实现上述要求的程序。典型程序如下:PG12: MOV P2,#81H ;禁止发声,选通灯X: MOV P0,P3 ;按键状态直接送到P0口,驱动灯 AJMP X ;循环编译通过后,
8、会在PG12.ASM在同一个文件夹内生成PG12.hex文件,这就是要下载到单片机内的程序文件。1.2.3 下载程序到实验板的单片机:将实验板与电脑的USB口相连,启动STC_ISP下载软件,按软件界面的步骤来操作:步骤1:在“MCU Type”选择框内选择单片机型号:“STC89C51RC”。步骤2:点击“OpenFile/打开文件”,打开刚才生成的PG12.hex文件。步骤3:选择COM口,这是实验板上的USB转RS232芯片生成的COM口。具体是几号口,要查看电脑的硬件资源。鼠标右键点击桌面图标“我的电脑”,点“属性硬件设备管理器”,如果生成的COM口为3号口,双击“端口(COM和LPT
9、)”,会列出“Prolific USB-to-Serial Vomm Port (COM3)”。根据此端口号来选择对应的COM口。其他参数用默认,不要改动。步骤4:全部按默认配置,不要改动。步骤5:点击“Download/下载”,下面的文本框内会出现提示:“Chinese:正在尝试与 MCU/单片机 握手连接 .”,此时按下实验板上的电源按钮,即可开始下载程序,片刻之后就可完成。步骤5补充说明:选中“每次下载前重新调入已打开在缓冲区的文件,方便调试使用”选项,如果程序有改动,再次编译之后,可以不用进行步骤2打开新文件,可直接进入步骤5。1.2.4 程序功能验证:依次按下实验板上的K2K7键,观
10、察对应的指示灯变化情况,看是否能够达到要求。补充说明:实验板上有一个电位器,有2个作用:一是为AD转换器提供可调节的模拟电压输入,二是用于调节NE555振荡器的频率,顺时针旋转时频率增加。当振荡器振荡时,电位器旁的指示灯会有同步闪烁指示。如果频率较低,会看到指示灯闪烁,如果频率较高,由于人眼的分辨力有限,高速闪烁的指示灯看上去就一直在亮。此频率输出信号与P3.2相连,如果振荡器振荡,在本实验中就会导致D2灯闪烁或一直亮,但比按下K2键的亮度低。如果出现这种情况,就需要逆时针旋转电位器,一直到电位器旁的指示灯不亮为止。此时振荡器振荡停止,不再影响实验。1.3 实验板入门程序2“按键与灯”编程与实
11、验程序功能:在程序PG12的基础上,增加:按下按键的同时,蜂鸣器要发声。按程序PG12的步骤,再做一遍。参考程序如下:PG13: MOV P2,#81H ;禁止发声,选通灯X: MOV P0,P3 ;按键状态直接送到P0口,驱动灯 MOV A,P3 ;读入按键状态到A CJNE A,#255,Y ;若有键按下,转Y SETB P2.7 ;若无按键按下,关闭声音 AJMP X ;循环Y: CLR P2.7 ;若有键按下,发声 AJMP X ;循环四、补充实验与思考1、PG12与PG13中,如何选择让按健控制某(几)个数码管的段位亮?2、将PG12与PG13的第一条指令中的“#81H”改为“#83
12、H”,或分别改为“#87H”、“#84H”、“#96H”、“#95H”、甚至“#0FFH”等,会出现什么结果?为什么?3、如果要求:按键不按时亮,按下灭。如何实现?实验2:数码管的静态显示及驱动一、实验目的学习数码管静态显示及其驱动方法,进一步了解实验板数码管显示电路的工作原理。通过典型实验,掌握设计数码管静态显示的基本方法。二、实验要求1、了解mini51单片机实验板的数码管显示电路。2、学习驱动数码管静态显示的软件方法。3、将典型程序下载到mini51单片机实验板中,运行并观察结果。4、掌握数码管静态显示程序的调试方法。三、实验内容2.1、数码管显示程序1:“4按键转1位16进制数显示”编
13、程与实验程序功能:将P3.4P3.7对应的K4K7的按键状态转为1位16进制数:0F,查表得到显示码,在最右侧的数码管显示出来。要求:4个键都不按,对应数字0,K7对应低位,K4对应高位。例如:按下K7显示1,按下K6显示2,同时按下K6与K7显示3同时按下K4、K5、K6、K7则显示F。2.1.1 接口说明:P2.0输出:选通8个灯D0D7(=1选通)。P2.1P2.6输出:分别选通(=1选通):数码管16(右侧为1)。P2.7输出:驱动蜂鸣器(=0响)。P0.0P0.7输出:分别驱动8个灯D0D7(=0亮),或分别驱动数码管的a、b、c、d、e、f、g、p段(=0亮)。P3.2P3.7:按
14、键输入,对应K2K7 (按下时=0)。2.1.2 主程序参考:PG21: MOV P2,#82H ;禁止发声,选通最右侧的数码管X: MOV A,P3 ;读P3口按键状态 ACALL KATX ;8个位反向排序 CPL A ;取反 ANL A,#0FH ;保留低4位Y: ACALL PTABH ;调用查表子程序 MOV P0,A ;将查到的显示码送P0口显示 AJMP X ;循环2.1.3 按键状态8个位反向排序子程序要求:将A内的8个位:D7D6D5D4D3D2D1D0,排列顺序反过来,变为:D0D1D2D3D4D5D6D7 。参考程序如下:KATX: MOV R2,#8 ;循环次数8KAL
15、P: RRC A ;A带C右循环 XCH A,B ;A与B交换内容 RLC A ;A带C左循环 XCH A,B ;A与B交换内容 DJNZ R2,KALP ;判循环次数 MOV A,B ;反序后的数据送A RET ;返回2.1.4 显示码查表子程序要求:传入参数:A:待查数据为1位16进制数:0F,返回值: A:对应的显示码(负逻辑:共阳数码管,0亮,1灭)。参考程序如下:PTABH: INC A MOVC A,A+PC RET DB 0C0H,0F9H,0A4H,0B0H,99H ;04的负逻辑显示码DB 92H,82H,0F8H,80H,90H ;59的负逻辑显示码DB 88H,83H,0
16、C6H,0A1H,86H,8EH ;AF的负逻辑显示码2.1.5 输入上述程序,编译通过后,下载到实验板的单片机。2.1.6 程序功能验证:依次按实验板上的K4K7键,形成4位二进制数:0000B1111B,即1位16进制数:0F。观察对应的数码管显示变化情况,看是否能够达到要求。2.2、数码管显示程序2:“按键转为键值显示”编程与实验程序功能:将P3.2P3.7对应的按键K2K7的按键状态转为键值27,查表得到显示码,在最右侧的数码管显示出来。2.2.1 接口说明:P2.0输出:选通8个灯D0D7(=1选通)。P2.1P2.6输出:分别选通(=1选通):数码管16(右侧为1)。P2.7输出:
17、驱动蜂鸣器(=0响)。P0.0P0.7输出:分别驱动8个灯D0D7(=0亮),或分别驱动数码管的a、b、c、d、e、f、g、p段(=0亮)。P3.2P3.7:按键输入,对应K2K7 (按下时=0)。2.2.2 主程序参考:PG22: MOV P2,#82H ;禁止发声,选通最右侧的数码管X: ACALL KTV ;调用键状态转键值子程序 CJNE A,#255,Y ;若有键按下,转Y MOV P0,#255 ;不显示 AJMP X ;循环Y: ACALL PTAB10 ;调用查表子程序 MOV P0,A ;将查到的显示码送P0口显示 AJMP X ;循环2.2.3 按键状态转键值子程序要求:将
18、P3口的状态读入A,用带C右循环的方法转为键值,仍送A。无键按下时,键值为255,K2K7的键值分别为27。参考程序如下:KTV: MOV A,P3 ;读P3口输入状态 MOV B,#255 ;B初值为255(无键按下) CJNE A,#255,KTV2 ;若有键按下,转KTV2 RET ;无按键,直接返回KTV2: INC B ;键值+1 RRC A ;带C右循环 JC KTV2 ;C=1时,继续循环 MOV A,B ;键值送A RET ;返回2.2.4 显示码查表子程序要求:传入参数:A:待查数据,09,返回值: A:显示码(负逻辑:共阳数码管,0亮,1灭)。参考程序如下:PTAB10:
19、INC A MOVC A,A+PC RET DB 0C0H,0F9H,0A4H,0B0H,99H ;04的负逻辑显示码DB 92H,82H,0F8H,80H,90H ;59的负逻辑显示码2.2.5 输入上述程序,编译通过后,下载到实验板的单片机。2.2.6 程序功能验证:依次按下实验板上的K2K7键,观察对应的数码管显示变化情况,看是否能够达到要求。2.3、数码管显示程序3:“1位显示按键加减”编程与实验程序功能:将内存单元NX作为计数器,计数范围:09,将其值显示在最右侧的数码管上。按K5(-)键,计数器减1,按K6(+)键,计数器加1。计数值一直在09之间循环。2.3.1 接口说明:参考2
20、.1.1。2.3.2 主程序参考:PG23: NX EQU 30H ;定义计数器内存地址 K5 BIT P3.5 ;定义按键K5的端口 K6 BIT P3.6 ;定义按键K6的端口 MOV P2,#82H ;禁止发声,选通最右侧的数码管 MOV NX,#0 ;计数器清零LP: MOV A,NX ;读计数器值到A ACALL PTAB10 ;查表得显示码 MOV P0,A ;显示码送显示 MOV A,#200 ;准备延时200mS ACALL DELAYMS ;调延时子程序PKEY: JB K5,PKEY2 ;若无K3键按下,转PKEY2 DEC NX ;若按下K3,计数器减1 MOV A,NX
21、 ;读计数器值到A CJNE A,#255,LP ;若计数器值不小于0,转LP MOV NX,#9 ;若计数器值小于0,则计数器装9 AJMP LP ;转LP去显示PKEY2: JB K6,PKEY ;若无K4键按下,转PKEY INC NX ;若按下K4,计数器加1 MOV A,NX ;读计数器值到A CJNE A,#10,$+3 ;判计数器值是否大于等于10 JC LP ;若小于10,转LP去显示 MOV NX,#0 ;否则计数器清零 AJMP LP ;转LP去显示2.3.3 软件延时毫秒子程序要求:按A内的待延时时间值(mS单位)进行软件循环延时,到时间后返回。实验板的晶振为11.059
22、2MHz。参考程序如下:DELAYMS:; 毫秒延时子程序(11.0592MHz晶振); 传入参数:A:延时值(mS),若A=0,则延时256mS MOVB,#183 NOP NOP NOPDELALP: NOP NOP NOP DJNZB,DELALP DJNZACC,DELAYMS RET2.3.4 显示码查表子程序:与上述2.2.4相同。2.3.5 输入上述程序,编译通过后,下载到实验板的单片机。2.3.6 程序功能验证:分别按下实验板上的按K5(-)键、K6(+)键,观察数码管显示值变化情况,看是否能够达到要求。四、补充实验与思考1、去掉PG21程序的第3行指令“ACALL KATX”
23、,会出现什么结果?为什么?2、去掉PG21程序的第4行指令“CPL A”,会出现什么结果?为什么?3、PG21、PG22、PG23这三个程序,如何选择其他位置的数码管亮?如何选择多个数码管亮?4、PG22程序,将按键K2K7对应显示27,改为对应显示38、或49,如何实现?5、PG23程序,按住K5或K6键不松开,会出现什么现象?为什么?6、PG23程序,如果将第9行的延时时间,由200减小为150或100,甚至更小,会出现什么现象?为什么?实验3:流水灯显示及驱动一、实验目的学习状态指示灯变化显示及其驱动方法,进一步了解实验板指示灯显示电路的工作原理。通过典型实验,掌握设计指示灯按一定频率变
24、化显示的基本方法。二、实验要求1、了解mini51单片机实验板的指示灯显示电路。2、学习驱动指示灯轮流变化显示的软件方法。3、将典型程序下载到mini51单片机实验板中,运行并观察结果。4、掌握指示灯轮流变化显示程序的调试方法。三、实验内容3.1、流水灯显示程序1:“软件延时循环控制流水灯”编程与实验程序功能:依次顺序点亮8个灯,软件定时循环执行。亮灯时间由参数TIME决定,时间范围1256mS。3.1.1 接口说明:P2.0输出:选通8个灯D0D7(=1选通)。P2.1P2.6输出:分别选通(=1选通):数码管16(右侧为1)。P2.7输出:驱动蜂鸣器(=0响)。P0.0P0.7输出:分别驱
25、动8个灯D0D7(=0亮),或分别驱动数码管的a、b、c、d、e、f、g、p段(=0亮)。P3.2P3.7:按键输入,对应K2K7 (按下时=0)。3.1.2 主程序参考:PG31: TIME EQU 200 ;延时时间(单位:mS) MOV P2,#81H ;禁止发声,选通灯 MOV P0,#0FEH ;初始灯状态:点亮D0 MOV R7,#0FEH ;保存初始灯状态LP: MOV A,#TIME ;装入延时时间 LCALL DELAYMS ;延时 MOV A,R7 ;取灯状态 RL A ;循环左移 MOV R7,A ;保存到R7 MOV P0,A ;送P0口 AJMP LP ;不停循环3.
26、1.3毫秒延时子程序,用2.3.3中的延时子程序DELAYMS 。3.1.4 输入上述程序,编译通过后,下载到实验板的单片机。3.1.5 程序功能验证:观察对应的状态灯显示变化情况,看是否能够达到要求。3.2、流水灯显示程序2:“速度可调流水灯”编程与实验程序功能:在上一个实验的基础上,增加变化速度可调功能,按K6(+)键:增大延时值,按K5(-)键:减小延时值。3.2.1 接口说明:参考上述3.1.1。3.2.2 主程序参考:PG32: TADR EQU 30H ;保存延时时间的地址(单位:mS) K5 BIT P3.5 K6 BIT P3.6 MOV P2,#81H ;禁止发声,选通灯 M
27、OV P0,#0FEH ;初始灯状态:点亮D0 MOV R7,#0FEH ;保存初始灯状态 MOV TADR,#100 ;装入延时时间初值:100mSLP: MOV A,TADR ;装入延时时间 LCALL DELAYMS ;延时 CPL P2.7 ;发声取反:每循环2个灯响1下 MOV A,R7 ;取灯状态 RL A ;循环左移 MOV R7,A ;保存到R7 MOV P0,A ;送P0口 JB K5,PKEY DEC TADR ;K5按下,TADR-1 AJMP LP ;循环PKEY: JB K6,LP INC TADR ;K6按下,TADR+1 AJMP LP ;循环3.2.3毫秒延时子
28、程序,用2.3.3中的延时子程序DELAYMS 。3.2.4 输入上述程序,编译通过后,下载到实验板的单片机。3.2.5 程序功能验证:按K5与K6键,观察对应的状态灯显示速度变化情况,看是否能够达到要求。3.3、流水灯显示程序3:“按键选择流水灯”编程与实验程序功能:在PG31实验的基础上,增加按键选择数码管段位参与流水灯显示的功能,按键K2K7分别与数码管LED6LED1对应,按一下按键,对应的数码管段位就参与流水灯显示,再按一下,就取消参与。3.3.1 接口说明:参考上述3.1.1。3.3.2 主程序参考:PG33: TIME EQU 200 ;延时时间(单位:mS) K2 BIT P3
29、.2 K3 BIT P3.3 K4 BIT P3.4 K5 BIT P3.5 K6 BIT P3.6 K7 BIT P3.7 KK BIT 70H ;按键已执行标志 MOV P2,#81H ;禁止发声,选通灯 MOV P0,#0FEH ;初始灯状态:点亮D0 MOV R7,#0FEH ;保存初始灯状态LP1: SETB KK CLR P2.7 ;发声LP: MOV A,#TIME ;装入延时时间 LCALL DELAYMS ;延时 MOV A,R7 ;取灯状态 RL A ;循环左移 MOV R7,A ;保存到R7 MOV P0,A ;送P0口 SETB P2.7 ;静音 MOV A,P3 CJ
30、NE A,#255,PKEY CLR KK ;若无键按下,清除KK标志 AJMP LPPKEY: JB KK,LP ;若有KK标志,不再扫描按键 JB K2,PKEY3 CPL P2.6 ;K2按下,P2.2取反 AJMP LP1 ;循环PKEY3: JB K3,PKEY4 CPL P2.5 ;K2按下,P2.2取反 AJMP LP1 ;循环PKEY4: JB K4,PKEY5 CPL P2.4 ;K2按下,P2.2取反 AJMP LP1 ;循环PKEY5: JB K5,PKEY6 CPL P2.3 ;K2按下,P2.2取反 AJMP LP1 ;循环PKEY6: JB K6,PKEY7 CPL
31、 P2.2 ;K2按下,P2.2取反 AJMP LP1 ;循环PKEY7: JB K7,LP CPL P2.1 ;K2按下,P2.2取反 AJMP LP1 ;循环3.2.3毫秒延时子程序,用2.3.3中的延时子程序DELAYMS 。3.2.4 输入上述程序,编译通过后,下载到实验板的单片机。3.2.5 程序功能验证:分别按K2K7键,观察对应的数码管段位是否参与流水灯显示,看是否能够达到要求。四、补充实验与思考1、程序PG31中,改变延时时间TIME,会有什么结果?2、程序PG31中,第2行“MOV P2,#81H”中的“81H”,分别改为“82H”、“83H”、“0C1H”、“0FFH”等,
32、会有什么结果?3、程序PG31、PG32、PG33中,所有的“RL A”改为“RR A”,会有什么结果?4、程序PG31、PG32、PG33中,都是1个亮的在循环,其他都不亮。如何实现让2个、3个或更多的同时亮,且循环?如何实现其他都亮,只有1个不亮的循环?5、利用中的毫秒延时子程序DELAYMS,设计一个以0.01秒为单位的延时子程序DELAY001S,延时时间范围为:0.012. 56秒。在PG31、PG32、PG33中,由调用DELAYMS改为调用DELAY001S,使显示切换速度变慢。实验4:数码管的动态显示及驱动一、实验目的学习数码管动态显示及其驱动方法,进一步了解实验板数码管显示电
33、路的工作原理。通过典型实验,掌握设计数码管动态显示的基本方法。二、实验要求1、了解mini51单片机实验板的数码管显示电路。2、学习驱动数码管动态显示的软件方法。3、将典型程序下载到mini51单片机实验板中,运行并观察结果。4、掌握数码管动态显示程序的调试方法。三、实验内容4.1、数码管动态显示程序1:“单字节计数器”编程与实验程序功能:将内存单元NX内的数值(范围:0255)显示在右侧的3位数码管上。用定时中断动态显示方式显示。按K2(INT0外中断)键:NX加1,按K3(INT1外中断)键:NX减1,用中断方式计数。4.1.1 接口说明:P2.0输出:选通8个灯D0D7(=1选通)。P2
34、.1P2.6输出:分别选通(=1选通):数码管16(右侧为1)。P2.7输出:驱动蜂鸣器(=0响)。P0.0P0.7输出:分别驱动8个灯D0D7(=0亮),或分别驱动数码管的a、b、c、d、e、f、g、p段(=0亮)。P3.2P3.7:按键输入,对应K2K7 (按下时=0)。4.1.2 主程序参考:PG41: NX EQU 30H ;定义NX地址 ORG 0000H LJMP MAIN ORG 0003H INC NX ;INT0中断:NX加1 RETI ORG 000BH LJMP INT_T0 ;T0定时中断 ORG 0013H DEC NX ;INT0中断:NX减1 RETI ORG 0
35、030H ;主程序开始MAIN: MOV P2,#81H ;禁止发声,选通灯 MOV 20H,#255 ;灯不亮 MOV 24H,#255 ;高3位数码管不亮 MOV 25H,#255 MOV 26H,#255 MOV NX,#0 ;NX清零 MOV R0,#20H ;显示码首地址 MOV TMOD,#1 ;T0模式1 MOV TL0,#LOW(65536-921) ;定时1mS初值(11.0592MHz) MOV TH0,#HIGH(65536-921) SETB TR0 ;启动T0 SETB ET0 ;允许T0中断 SETB EX0 ;允许外部INT0中断 SETB EX1 ;允许外部IN
36、T1中断 SETB IT0 ;设INT0为下跳沿中断 SETB IT1 ;设INT1为下跳沿中断 SETB EA ;开总中断WK: MOV A,NX ;将NX化为3个BCD码,分别送21H23H MOV B,#100 DIV AB ACALL PTAB10 MOV 23H,A MOV A,B MOV B,#10 DIV AB ACALL PTAB10 MOV 22H,A MOV A,B ACALL PTAB10 MOV 21H,A AJMP WK4.1.3 定时中断子程序要求:1mS中断1次,每次中断都要先装定时器初值。每次中断,切换显示1位数码管。8个状态灯,相当于1位数码管,其显示码在20
37、H内,6个数码管,从低位(右侧)开,其显示码依次放在21H26H内。中断子程序要注意保护现场。参考程序如下:INT_T0: MOV TL0,#LOW(65536-921) ;重装1mS定时器初值 MOV TH0,#HIGH(65536-921) PUSH ACC PUSH PSWIT04: MOV P0,#255 ;关闭显示 MOV A,P2 ;P2状态送A ANL P2,#80H ;P2口不选通显示 ANL A,#7FH ; RL A ;选通位左移1位 INC R0 ;显示码指针加1 JNB ACC.7,IT05 MOV A,#1 ;选通灯状态 MOV R0,#20H ;指针指向灯状态显示码
38、:20HIT05: ORL A,P2 MOV P2,A ;新的显示选通 MOV P0,R0 ;新的显示码送P0口 POP PSW POP ACC RETI4.1.4 显示码查表子程序,与前面中的PTAB10一致。4.1.5 输入上述程序,编译通过后,下载到实验板的单片机。4.1.6 程序功能验证:依次按1下实验板上的K2、或K3键,观察对应的数码管显示变化情况,看是否能够达到要求。4.1.7 特别实验:顺时针旋转板上的电位器,板上的振荡电路就会振荡,振荡脉冲直接输入给P3.2脚,这就会使计数器按脉冲数快速计数。脉冲频率不同,计数速度就不同。4.2、数码管动态显示程序2:“6位多功能计数器”编程
39、与实验程序功能:将内存单元50H、51H、52H内的3字节压缩BCD码数N(低位在前,数值范围:0999999)显示在6位数码管上。用定时中断动态显示方式显示,并采用高位消隐方式(高位的0不显示)。按K2(INT0外中断)键:N加1,按K3(INT1外中断)键:N减1,用中断方式计数。扩展功能:按K4键:加减换向:K2与K3的加减功能互换,最左侧的指示灯亮。按K5键:计数器启动,最右侧的指示灯亮。按K6键:计数器停止,最右侧的指示灯灭。按K7键:计数器清零。特别要求:此程序的数字显示,要带高位消隐功能。补充说明: 什么是“高位消隐”。在6位显示器上显示小于6位的数字,如果不经过处理,高位都会显
40、示为0。例如:1023会显示为:“001023”。要使高位的2个0不显示,就称为“高位消隐”处理。但要注意,如果仅仅令0不显示,1023会显示为“1 23”,这也不行。4.2.1 接口说明:参考上述4.1.1。4.2.2 主程序参考:PG42: BEEP BIT P2.7 ;蜂鸣器(=0响),上电后先令其=1 STOP BIT 7 ;停止标志,=1时不亮,=0时亮 FWD BIT 0 ;正向标志,=0时亮,表示反向 KEN BIT 2FH.0 ;允许按键输入标志 BELT EQU 15 ;蜂鸣器响声定时器,单位1mS KENT EQU 14 ;所有按键全都抬起定时器,单位1mS;全抬起50mS后,令KEN=1,允许按键工作 RPT EQU 13 ;按键自动重复定时器,单位1mS K4 BIT P3.4 ;加减换向 K5 BIT P3.5 ;计数器启动 K6 BIT P3.6 ;计数器停止 K7 BIT P3.7 ;计数器清零ORG 0000H LJMP MAIN ORG 0003H LJMP PINT0 ;加1中断(反向时为减1) ORG 000BH LJMP INT_T0 ORG 0013H LJMP PINT1 ;减1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中国铁路集团有限公司2026年招聘1784人备考题库及完整答案详解一套
- 2026年武汉启云方科技有限公司校园招聘-备考题库及参考答案详解
- 2026年顺义区马坡镇卫生院公开招聘编外人员计划备考题库及完整答案详解一套
- 中国烟草总公司郑州烟草研究院2026年高层次人才招聘备考题库有答案详解
- 太原市市政工程设计研究院2026年校园招聘备考题库完整参考答案详解
- 2025-2030欧洲农产品深加工行业市场现状供需结构分析及投资评估市场布局规划分析研究报告
- 2025-2030欧州创意产业园区市场供需分析状况报告及投资前景规划研究
- 2025-2030橡胶制品行业技术研究市场需求竞争格局及商业投资分析
- 2025-2030未来玻璃纤维增强复合材料行业市场前景及投资决策分析报告
- 2025-2030日韩液晶面板市场现状供需格局投资前瞻专业分析报告
- 商业广场物管费测算表
- 申论范文宝典
- 【一例扩张型心肌病合并心力衰竭患者的个案护理】5400字【论文】
- 四川桥梁工程系梁专项施工方案
- 贵州省纳雍县水东乡水东钼镍矿采矿权评估报告
- GB.T19418-2003钢的弧焊接头 缺陷质量分级指南
- 污水管网监理规划
- 2023年杭州临平环境科技有限公司招聘笔试题库及答案解析
- 《看图猜成语》课件
- LF炉机械设备安装施工方案
- 企业三级安全生产标准化评定表(新版)
评论
0/150
提交评论