《单片机原理》
实验指导书
张毅刚 何谨 李华
哈尔滨工业大学
2007年4月
I
目 录
序-------------------------------------------------------------------------------------------------------------1
实验1 单片机实验开发系统操作实验-------------------------------------2 实验2 单片机数据区传送程序设计------------------------------------------4 实验3 数据排序实验---------------------------------------------------------------------6 实验4 查找相同数个数-----------------------------------------------------------------8 实验5 P1口转弯灯实验---------------------------------------------------------------10 实验6 工业顺序控制--------------------------------------------------------------------13 实验7 8255控制交通灯---------------------------------------------------------------16 实验8 A/D转换实验-----------------------------------------------------------------------19 实验9 D/A转换实验-----------------------------------------------------------------------22 实验10 电子时钟(定时器、中断综合实验)--------------------26 附录1 DAIS-80958B单片机实验开发系统简介--------------------37 附录2 实验开发系统的字形/字位/键值表---------------------------39
II
序
一、实验素养和一般知识
1.实验前准备工作
(1) 明确实验目的、熟悉实验内容、掌握实验步骤、了解所用单片机实验开发系统及仪器设备的性能。
(2) 做好实验前预习和必要的准备(先编好程序),作到有的放矢。 2. 进入实验室后
(1) 熟悉所用的单片机实验开发系统及仪器设备,了解其外观、性能。
(2) 接线要简单、正确、明了,一个人接线,另一个人检查,经老师复查后允许后才可通电。
(3) 通电瞬间,应注意仪器是否正常工作,不要只看开关,如有不正常现象,应立即断电找出原因。
(4) 不允许自带光盘和软盘上机,违反者取消实验资格!(指导教师允许情况除外)。
3. 实验进行时
(1) 正常请况下,按规定步骤进行,读取数据,并及时纪录。 (2) 各种操作要有目的进行,不可盲动。
(3) 实验完后,经老师察看或签字,并把仪器、导线、工具清理、收拾完毕后,学生签到方可离开实验室。
二、实验报告内容和要求
1. 实验报告要用学校统一的纸。
2. 实验内容应包括,是实验目的、设备、原理、步骤简述、原始数据、结果和分析以及程序清单等。
3. 每个实验后的思考题必须完成。
4. 对实验中发现的问题应加以讨论,并提出自己的改进意见和要求、希望等。
1
实验1 单片机实验开发系统操作实验
一、实验目的和要求
1. 掌握汇编语言的设计和调试。
2. 熟悉Dais-80958B微机实验开发系统调试软件的应用。
二、实验设备
1. Dais-80958B单片机实验开发系统 一套 2. WD990微机专用电源 一台 3. PC机 一套
三、实验线路及使用仪器
1.实验连接图
Dais-80958B单片机实验开发系统与PC机的连接如下图所示。
2.Dais-80958B单片机开发系统组成及功能
单片机实验开发系统自带32个键的键盘和6位LED数码管。系统有两种工作方式:运行的单板机工作方式以及与PC通过串行口相连的串行监控工作方式。
(1)运行的样板机工作方式
无需任何设备,利用开发系统上的单片机、监控程序、键盘和LED数码管,自构成一台样板机运行。
(2)串行监控工作方式
通过RS-232C串行口与PC机的串行口相连,以PC机为操作平台,配合系统操作软件,适用于PC机的系统编程和调试界面。
实验开发系统提供以Windows98操作平台的在线仿真调试软件包。支持汇编语言(ASM51)及高级语言(PL/M51、C51)源程序级及反汇编窗口式调试环境,该仿真软件具有:编辑、汇编、连接、反汇编、开观察窗口、单点跟踪、设置断点、全速/非全速运行、系统设置、程序固化等功能,具有查看SFR、内部RAM、外部RAM等选项。
PC机 PC机串口2 电源 +5V•LED显示器 ••主机板 Dais-80958B单片机开发系统
32键键盘 2
四、实验开发系统的使用
1.按实验线路接好线后,检查无误在指导教师允许下才可通电。先打开电源+5V,主机板上的六位LED显示器最左边一位出现提示符“P”,表明系统正常。否则应立即关掉电源!!!
2.80958B主机板通电后,不允许在上面放置任何物品,特别是金属物!(因集成芯片或线路引起短路损坏设备)。
五、实验步骤
1.Dais-80958B接好线后,电源线红色接+5V,黑色接地。先打开电源,出现提示符“P”,表明该系统工作正常。
2.打开PC机电源,正常工作后,在显示器的桌面上点击快捷图标“MCS-51仿真开发系统“,进入Dais-MCS-51仿真开发系统的调试平台。
3. 源文件的建立和打开:
(1) 选菜单栏文件/新文件或者工具栏新文件,出现源文件编辑窗口,输入程序S1。 (2) 选文件/存储(或另存),要求输入文件名,同时保存类型选*.asm。文件名按下面要求写:
1P 26 S1
保存路经为:D盘,然后单击保存即可。
(3)编译源文件,选菜单栏/编译、连接、装载或者工具栏“!”,弹出“装载完毕OK”,根据编译结果的错误提示,修正源程序S1,直至成功。此时可以关闭“编译结果”和源文件编辑窗口。
(4)出现“当前模块:1P26S1”,同时打开菜单栏视图/调试、寄存器、存储空间,然后可以选主菜单/窗口或者工具栏/ XX窗口;整理平台视野。
4.调试和运行程序S1
(1)“当前模块:1P26S1”中“小手光标”位置是PC指针所在,“寄存器”中显示当前各寄存器中的内容。“数据存储区”中地址用右键选显示地址,“输入数据”为十六进制2000,确认后调试。
(2)首先单步运行,选主菜单/调试/单步运行或者选工具栏单步运(F7)。运行一个循环,观察相关的寄存器和存储区的变化。
(3)运用连续运行和设断点运行。
工具栏/为连续运行,在“当前模块”中鼠标出现“小手”时点击,“红色手”即为断点位置。
5. 记录下数据区2000H~20FFH中,在执行程序S1前后的内容变化。
一班 学号 文件名
六、实验内容
程序S1的参考程序如下:
3
机器代码 汇编语言 注释
7800 902000
F0
SE01:
ORG 0000H
MOV R0,#00H ; MOV DPTR,#2000H ;
CLR A ; MOVX @DPTR,A ; INC DPTR ; INC R0 ; CJNE R0,#00H,L001 ; SJMP LOOP ; END
E4 L001:
A3
08 B800F9
80FE
LOOP:
七、思考题
1. 程序S1的功能是什么?画出S1程序框图,并写出注释。 2. 把2000H~20FFH中内容改成FF,如何修改程序S1? 3. 把3000H~20FFH中内容改成AA,如何修改程序S1? 4.程序S1中指令:“CJNE R0,#00H,L001”的作用是什么?
实验2 单片机数据区传送程序设计
一、实验目的
1. 进一步掌握汇编语言程序设计和调试方法。 2. 了解单片机RAM中的数据操作。
二、实验设备
1.Dais-80958B单片机实验开发系统 2.WD990微机专用电源 3.PC机
一套 一台 一套
三、实验线路
同实验1。
四、实验内容
1.要求:编写程序把R2、R3源RAM区首地址内的R6、R7字节数据传送到R4、R5目的地址的RAM区。
2.框图如下,文件名为:X X X X S2 班级 学号
4
字节数到吗? 目的地址加1 源地址加1 (A)送目的的地址 源地址内容送A 开始 N y 结束 五、实验步骤
1.打开电源,PC机开机正常工作后,进MCS-51仿真开发系统调试平台,编译源文件S2成功。(详细过程同实验1的步骤1~3)
2.在R2、R3中输入源地址(例如:0000H),R4、R5中输入目的地址(例如2000H),R6、R7中输入字节数(例如:1FFFH)。
3. 查看RAM 区0000~1FFFH和2000~3FFFH内容,也可自己重新赋值。
4. 运行程序XXXXS2,首先单步,然后用自动单步,最后用连续运行方式。
5. 记录下运行结果,检查0000~1FFFH中内容是否和2000~3FFFH内容完全一致。
六、要求
1.写出自己编写的程序,并写出原理性注释。 2.将检查程序运行的结果,分析一下是否正确。
七、思考题
如果使0000~1000H中内容与2000~3000H内容完全一致,如何来改写程序?
八、参考程序
ORG 0100H
8B82
SE22: MOV DPL,R3
5
8A83 E0 8D82 8C83 F0 BBFF01 0B BDFF01 OC OD BF0006 BE0006 80FE 00 1F 80E0 1F 1E 80DC
MOV DPH,R2 MOVX A,@DPTR MOV DPL,R5 MOV DPH,R4 MOVX @DPTR.A CJNE R3,#OFFH,LO42
;建立源程序首址 ;取数 ;目的地首址 ;传送
0A INC R2
LO42: INC R3
CJNE R5,#0FFH,L043 INC R4
;目的地址加1
CJNE R7,#00H,LO44
CJNE R6,#00H,LO45 ;字节数减1 SJMP $ NOP SJMP SE22 DEC R6 SJMP SE22 END
;未完继续 ;源地址加1
LO43: INC R5
LO44: DEC R7 LO45: DEC R7
实验3 数据排序实验
一、实验目的
熟悉MCS-51指令系统,掌握数据排序程序的设计方法。
二、实验设备
1.Dais-80958B微机实验开发系统 2.WD990微机专用电源 3.PC机
一套 一台 一套
三、实验线路
同实验1。
四、实验内容
1.编写并调试一个排序程序,其功能为用冒泡法(参见单片机教材84页)将RAM中几个单字节无符号的正整数,按从小到大的次序重新排列。程序框图如下:
6
N 长度减1=0?(A)<((R0))?(R0)+1送R0 根据(R0)取数 A 清标志位 开始Y N 置标志位,交换内容 Y N 标志位=0?N 结束五、实验步骤
1.编写程序XXXXS3,满足程序要求,在CPU内部的RAM 50H~5AH中放入不等的数据。
2.运行该程序后检查50H~5AH内容是否按从小到大排列,结果记录下表中: RAM 状态 运行前内容 运行后内容 50 51 52 53 55 56 57 58 59 5A 六、思考题
修改程序S3,将50H~5AH中内容按从大到小排列,并且记录下程序运行前后的结果,分析是否正确。
七、参考程序
ORG 0300H
7
7B50 QUE: MOV R3,#50H EB F8 7F0A C200 E6 08 FA C3 8622 B52201 D3 EA 4006 D200 C6 18 C6 08 E6 DFEB 2000E1 80FE
QUE1: MOV A,R3 QL2: QL3: QL1:
MOV R0,A MOV R7,#0AH CLR 00H MOV A,@R0 INC R0 MOV R2,A CLR C MOV 22H,@R0 CJNE A,22H,QL3 SETB C MOV A,R2 JC QL1 SETB 00H XCH A,@R0 DEC R0 XCH A,@R0 INC R0 MOV A,@R0 DJNZ R7,QL2 JB 00H,QUE1 SJMP $
;一次循环中有交换继续 ;无交换退出
;大于则交换位置 ;大于则交换位置 ;取后数 ;相等吗? ;长度送R7 ;标志位为0 ;指针送R0
END
实验4 查找相同数个数
一、实验目的
熟悉汇编语言编程
二、实验内容
在2000~200FH中查出有几个字节是零,把零的个数放在2100H中。
三、程序框图
8
结束 (R1)送2100H DPTR+1 相同否? 字节数送 R0,查找字节送R1 开始 YR1+1 N字节数到吗? 四、实验步骤
在2000~200FH的几个单元中填入零,运行本程序后检查2100H单元中的数是否与2000~200FH中零的个数相同。
五、思考
在1000~100FH的几个单元中填入8H,检查8H的个数,并填入1100H单元中,如何来修改程序?
六、参考程序
ORG 0AA0H
0AA0 7810 L5800: MOV R0,#10H ;查找16个字节 0AA2 7900 MOV R1,#00H 0AA4 902000 MOV DPTR,#2000H 0AA7 E0 L5811: MOVX A,@DPTR
0AA8 B40001 CJNE A,#00H,L5816;取出内容与00H相等吗? 0AAB 09 INC R1 ;取出个数加1 0AAC A3 L5816: INC DPTR
0AAD D8F8 DJNZ R0,L5811 ;未完继续 0AAF 902100 MOV DPTR,#2100H 0AB2 E9 MOV A,R1
9
0AB3 F0 MOVX @DPTR,A ;相同数个数送2100H 0AB4 80FE L581E: SJMP L581E END
实验5 P1口转弯灯实验
一、实验目的
进一步了解P1口的使用,学习汇编语言编程方法与调试技巧。
二、实验内容
P1.0开关接5V时,右转弯灯闪亮,P1.1开关接5V时左转弯灯闪亮。 P1.0、P1.1 开关同时接5V或接地时,转弯灯均不闪亮。
三、程序框图
开始关灯N只是P1.0高吗?Y标志位为1吗?只是P2.0高吗?Y标志位为1吗?N关灯开右灯关左灯开左灯关右灯关灯NY延时.清标志位延时.置标志位延时.置标志位延时.清标志位 四、实验电路
10
VCCR8R7LED4R6LED3R5LED2K1R4K2R3LED55L13LL92L13P1.4P1.5P1.1P1.68032五、实验步骤
P1.7P1.07047
P1.0接K1,P1.1接K2,P1.4~P1.7分别接L1、L5、L9、L13 ,连续运行本程序,应看到转弯灯正确闪亮,在用单步方式调试本程序时需修改延时子程序,(例如可把延时程序第一个字节改成返回指令22H),以便观察。
六、参考程序
0C30 0C33 0C35 0C37 0C39 0C3C 0C3F 0C41 0C43 0C45 0C47 0C49 0C4C 0C4E 0C51 0C53 0C55
7590EF E590 F5F0 03 B40126 200012 C294 C295 D296 D297 7A20 120213 D200 020C33 D294 D295 D296
PX00: PX03: PX04:
ORG 0C30H MOV P1,#0FFH MOV A,P1 MOV B,A ANL A,#03H
CJNE A,#01H,PX01 ;满足只是P1.0为高条件吗? JB 00H,PX04 ;闪烁标志位 CLR P1.4 CLR P1.5 SETB P1.6 SETB P1.7 MOV R2,#20H LCALL DELY SETB 00H LJMP PX03 SETB P1.4 SETB P1.5 SETB P1.6
11
;初始化
;开右灯 ;关左灯 ;延时 ;置标志位
;继续查状态 ;关灯
0C57 0C59 0C5B 0C5E 0C60 0C62 0C65 D297 7A20 120213 C200 8133 B40227 200112
SETB P1.7 MOV R2,#20H LCALL DELY CLR 00H AJMP PX03
;延时 ;清标志位
;继续查状态 ;吗?
PX01: CJNE A,#02H,PX02 ;满足只是P1.1为高条件 JB 01H,PX05 ;判标志位 0C68 D294 0C6A D295 0C6C C296 0C6E C297 0C70 7A20 0C72 120213 0C75 D201 0C77 020C33 0C7A D294 0C7C D295 0C7E D296 0C80 D297 0C82 7A20 0C84 120213 0C87 C201 0C 020C33 0C8C D294 0C8E D295 0C90 D296 0C92 D297 0C94 020C33 0213 C002 0215
C002
0217 C002 0219 DAFE 021B D002 021D DAF8 021F D002 0221 DAF2 0223 D002
SETB P1.4 SETB P1.5 CLR P1.6 CLR P1.7 MOV R2,#20H LCALL DELY SETB 01H LJMP PX03 PX05: SETB P1.4 SETB P1.5 SETB P1.6 SETB P1.7 MOV R2,#20H LCALL DELY CLR 01H LJMP PX03 PX02: SETB P1.4 SETB P1.5 SETB P1.6 SETB P1.7 LJMP PX03 ORG 0213H DELY: PUSH 02H DEL2: PUSH 02H DEL3: PUSH 02H DEL4: DJNZ R2,DEL4 POP 02H DJNZ R2,DEL3 POP 02H DJNZ R2,DEL2
POP 02H
12
;开左灯
;关右灯 ;延时
;置标志位 ;继续查状态 ;关灯 ;延时 ;清标志位 ;继续查状态 ;关灯 ;继续
;延时
0225 DAEC 0227 22
DJNZ R2,DELY RET END
实验6 工业顺序控制
一、实验目的
掌握工业顺序控制程序的简单编程,中断的使用。
二、实验预备知识
在工业控制中,象冲压、注塑、轻纺、制瓶等生产过程,都是一些继续生产过程,按某种顺序有规律的完成预定的动作,对这类继续生产过程的控制称顺序控制,象注塑机工艺过程大致按“合模→注射→延时→开模→产伸→产退”顺序动作,用单片机最易实现。
三、实验内容
8031的P1.0~P1.6控制注塑机的七道工序,现模拟控制七只发光二极管的点亮,低电平有效,设定每道工序时间转换为延时,P3.4为开工启动开关,高电平动作。P3.3为外部故障输入模拟开关,低电平报警,P1.7为报警声音输出,设定6道工序只有一位输出,第七道工序三位有输出。
四、程序框图
开始关输出
F中断.P1,P3初始化 现场保护报警
等开工 工序1延时工序2延时 故障清除了吗? Y N : : 工序7延时恢复现场返回中断服务子程序
13
五、实验电路
六、实验步骤
按实验电路图接好连线。执行程序,把K1接到高电平,观察发光二极管点亮情况,确定工序执行是否正常,然后把K2置为低电平,看是否有声音报警,恢复中断1,报警停,又从刚才报警时一道程序执行下去。可以单步、单步跟踪,非全速断点、全速断点、连续执行功能调试软件,直到符合程序设计要求为止。
七、思考
修改程序,使每道工序中有多位输出。
八、参考程序
0190 75907F 0193 43B000 0196 30B4FD 0199 43A884 019C 43B801 019F 75D000 01A2 758153 01A5 75907E 01A8 31F1 01AA 75907D 01AD 31F1 01AF 75907B
ORG 0190H ORL P3,#00H
;开工吗? ;初始化 ;第一道工序 ;第二道工序 ;第三道工序
ORL IE,#84H ORL IP,#01H MOV PSW,#00H MOV SP,#53H ACALL PO1B MOV P1,#7DH ACALL PO1B MOV P1,#7BH
14
PO10: MOV P1,#7FH PO11: JNB P3.4,PO11
PO12: MOV P1,#7EH
01B2 31F1 01B4 759077 01B7 31F1 01B9 75906F 01BC 31F1 01BE 75905F 01C1 31F1 01C3 75900F 01C6 31A5 01C8 80DB 01CA 8AF0 01CC 75907F 01CF 7520A0 01D2 D297 01D4 31EC 01D6 C297 01D8 31EC 01DA D520F5 01DD C297 01DF 31EC 01E1 30B3E8 01E4 AAF0 01E6 32 01E7 7A10 01E9 5113 01EB 22 01EC 7A06 01EE 5113 01F0 22 01F1 7A30 01F3 5113 01F5 22
0213 C002 0215 C002 0217 C002 0219 DAFE 021B D002 021D DAF8
ACALL PO1B MOV P1,#77H ACALL PO1B MOV P1,#6FH ACALL PO1B MOV P1,#5FH ACALL PO1B MOV P1,#0FH ACALL PO12 SJMP PO12 PO16: MOV B,R2 PO17: MOV P1,#7FH MOV 20H,#0A0H PO18: SETB P1.7 ACALL PO1A CLR P1.7 ACALL PO1A DJNZ 20H,PO18 CLR P1.7 ACALL PO1A JNB P3.3,PO17 MOV R2,B RETI
PO19: MOV R2,#10H ACALL DELY RET
PO1A: MOV R2,#06H ACALL DELY RET
P01B: MOV R2,#30H ACALL DELY RET
ORG 0213H DELY: PUSH 02H DEL2: PUSH 02H DEL3: PUSH 02H DEL4: DJNZ R2,DEL4 POP 02H
DJNZ R2,DEL3
15
;第四道工序 ;第五道工序 ;第六道工序 ;第七道工序
;保护现场 ;关输出 ;振荡次数 ;振荡 ;延时 ;停振 ;延时 ;不为0转 ;停振
;故障消除吗? ;恢复现场
;延时1
;延时2
;延时3
021F D002 0221 DAF2 0223 D002 0225 DAEC 0227 22
POP 02H DJNZ R2,DEL2 POP 02H DJNZ R2,DELY RET END
实验7 8255控制交通灯
一、实验目的
进一步了解8255芯片的结构及编程方法,学习模拟交通控制的实现方法。
二、实验内容
用8255作输出口,控制12个发光二极管燃灭,模拟交通灯管理。
三、程序框图
东西红灯亮南北黄灯闪烁延时东西红灯亮南北绿灯亮延时东西黄灯闪烁南北红灯亮延时东西绿灯亮南北红灯亮延时四个路口红灯亮8255初始化开始
四、实验电路
16
五、实验步骤
8255的PA0~PA7、 PB0~PB3接发光二极管L15~L13、L11~L9、L7~L5、L3~L1。 执行程序,初始态为四个路口的红灯全亮之后,东西路口的绿灯亮,南北路口的红灯亮,东西路口方向通车,延时一段时间后东西路口的绿灯熄灭,黄灯开始闪烁,闪烁若干次后,东西路口红灯亮,而同时南北路口的绿灯亮,南北路口方向开始通车,延时一段时间后,南北路口的绿灯熄灭,黄灯开始闪烁,闪烁若干次后,再切换到东西路口方向,之后重复以上过程。
六、参考程序
0BB0 758160 0BB3 90FFDB 0BB6 7488 0BB8 F0 0BB9 90FFD8 OBBC 74B6 0BBE F0 0BBF A3 0BC0 740D 0BC2 F0 0BC3 7A25 0BC5 120213 0BC8 90FFD8 0BCB 7475
ORG 0BB0H MOV DPTR,#0FFDBH MOV A,#88H MOVX @DPTR,A MOV DPTR,#0FFD8H MOV A,#0B6H MOVX @DPTR,A INC DPTR MOV A,#0DH MOVX @DPTR,A MOV R2,#25H LCALL DELY MOV A,#75H
17
JOD0: MOV SP,#60H
;8255初始化
;点亮4个红灯 ;延时
JOD3: MOV DPTR,#0FFD8H
0BCD F0 0BCE A3 0BCF 740D 0BD1 F0 0BD2 7A55 0BD4 120213 0BD7 7F05 MOVX @DPTR,A INC DPTR MOV A,#0DH MOVX @DPTR,A MOV R2,#55H LCALL DELY MOV R7,#05H ;东西绿灯亮,
;南北红灯亮
;延时 ;闪烁次数
0BD9 90FFD8 0BDC 74F3 0BDE F0 0BDF A3 0BE0 740C 0BE2 F0 0BE3 7A20 0BE5 120213 0BE8 90FFD8 0BEB 74F7 0BED F0 0BEE A3 0BEF 740D 0BF1 F0 0BF2 7A20 0BF4 120213 0BF7 DFE0 0BF9 90FFD8 0BFC 74AE 0BFE F0 0BFF A3 0C00 740B 0C02 F0 0C03 7A55 0C05 120213 0C08 7F05 0C0A 90FFD8 0C0D 749E 0C0F F0 0C10 A3 0C11 7407
JOD1: MOV DPTR,#0FFD8H MOV A,#0F3H MOVX @DPTR,A INC DPTR MOV A,#0CH MOVX @DPTR,A MOV R2,#20H LCALL DELY
MOV DPTR,#0FFD8H MOV A, #0F7H MOVX @DPTR, A INC DPTR MOV A, #0DH MOVX @DPTR, A MOV R2, #20H LCALL DELY DJNZ R7, JOD1 MOV DPTR,#0FFD8H MOV A, #0AEH MOVX @DPTR,A INC DPTR MOV A, #0BH MOVX @DPTR,A MOV R2,#55H LCALL DELY MOV R7,#05H JOD2: MOV DPTR,#0FFD8H MOV A,#9EH MOVX @DPTR,A INC DPTR
MOV A,#07H
;东西黄灯亮,南北红灯亮 ;延时
;南北红灯亮 ;延时
;闪烁次数未到,继续
;东西红灯亮,南北绿灯亮 ;延时 ;闪烁次数
18
0C13 F0 0C14 7A20 0C16 120213 0C19 90FFD8 0C1C 74BE 0C1E F0 0C1F A3 0C20 740F 0C22 F0 0C23 7A20
MOVX @DPTR,A MOV R2,#20H LCALL DELY
MOV DPTR,#0FFD8H MOV A,#0BEH MOVX @DPTR,A INC DPTR MOV A,#0FH MOVX @DPTR,A MOV R2,#20H
;东西红灯亮,南北黄灯亮 ;延时
;东西红灯亮
0C25 120213 LACLL DELY ;延时
0C28 DFE0 DJN R7,JOD2 ;闪烁次数未到继续 0C2A 020BC8 LJMP JOD3 ;循环 ORG 0213H
0213 C002 DELY: PUSH 02H 0215 C002 DEL2: PUSH 02H 0217 C002 DEL3: PUSH 02H 0219 DAFE DEL4: DJNZ R2,DEL4 021B D002 POP 02H 021D DAF8 DJNZ R2,DEL3 021F D002 POP 02H 0221 DAF2 DJNZ R2,DEL2 0223 D002 POP 02H 0225 DAEC DJNZ R2,DELY 0227 22 RET END
;延时
实验8 A/D转换实验
一、实验目的
(1)掌握A/D转换与单片机接口的方法; (2)了解A/D芯片0809转换性能及编程方法; (3)通过实验了解单片机如何进行数据采集。
二、实验内容
利用实验系统上的0809做A/D转换器,实验系统上的电位器提供模拟量输入,编制程序,将模拟量转换成数字,通过数码管显示出来。
三、程序框图
19
错误!
0809通道0采样 显示 0809初始化 开始 四、实验电路
五、实验步骤
把0809的0通道INT0用插针接至AIN1孔,0809的CS位接至FFE0孔,运行程序,数码管上显示0809.XX,后二位显示当前采集的电压转换的数字量,调节W1,该二位将随着电压变化而相应变化。
六、思考题
修改程序,能对INT0~INT7 8个通道轮流采样显示,每次显示1秒钟。
七、参考程序
ORG 05A0H 05A0 758153 SE11: MOV SP,#53H 05A3 757E00 MOV 7EH,#00H
20
05A6 757D08 MOV 7DH,#08H 05A9 757C00 MOV 7CH,#00H 05AC 757B09 MOV 7BH,#09H 05AF 757A10 MOV 7AH,#10H
05B2 757910 MOV 79H,#10H ;显示缓冲区初值 05B5 120425 LO18: LCALL DIS ;显示 05B8 7400 MOV A, #00H 05BA 90FFE0 MOV DPTR,#0FFE0H
05BD F0 MOVX @DPTR,A ;080905BE 120425 LCALL DIS
05C1 E0 MOVX A,@DPTR ;取出采样值 05C2 7879 MOV R0,#79H
05C4 120077 LCALL PTDS ;采样值送显示缓冲区 05C7 80EC SJMP LO18 ;循环 ORG 0077H
0077 F9 PTDS: MOV R1,A ;拆送显示缓冲区 0078 117C ACALL PTDS1 007A E9 MOV A,R1 007B C4 SWAP A 007C 0F PTDS1: ANL A, #0FH 007E F6 MOV @R0,A 007F 08 INC R0 0080 22 RET
ORG 0425H 0425 C083 DIS: PUSH DPH 0427 C082 PUSH DPL 0429 D2D4 SETB RS1 042B 787E MOV R0,#7EH 042D 7A20 MOV R2,#20H 042F 7B00 MOV R3,#00H 0431 90044F MOV DPTR, #LS0 0434 E6 LS2: MOV A,@R0 0435 93 MOVC A,@A+DPTR 0436 79DC MOVX R1, #0DCH 0439 EA MOV A,R2 043A 09 INC R1 043B F3 MOVX @R1,A 043C DBFE LS1: DJNZ R3, LS1 043E C3 CLR C
21
的0通道采样 043F 13 RRC A 0440 FA MOV R2,A 0441 18 DEC R0 0442 70F0 JNZ LS2 0444 F2 MOVX @R0,A 0445 18 DEC R0 0446 F4 CPL A 0447 F2 MOVX @R0,A 0448 C2D4 CLR RS1 044A D082 POP DPL 044C D083 POP DPH 044E 22 RET
044F C0F9A4 LS0: DB 0C0H, 0F9H,0A4H, 0B0H, 99H, 92H ;字形表 0452 B09992
0455 82F880 DB 82H, 0F8H, 80H, 90H, 88H, 83H, 0C6H 0458 908883 045B C6
045C A1868E DB 0A1H, 86H, 8EH, 0FFH, 0CH, H, 7FH, 0BFH 045F FF0C 0462 7FBF
END
实验9 D/A转换实验
一、实验目的
(1) 了解D/A转换芯片与单片机的接口方法; (2) 了解D/A转换芯片0832的性能及编程方法; (3) 了解单片机系统中扩展D/A转换芯片的基本方法。
二、实验内容
利用0832输出一个从0V开始逐渐升至5V再降至0V的电压,数码管显示送入的数字量值。
三、程序框图
22
0832初始化 开始
四、实验电路
如下图所示:
显示 转换显示加1 输入是否加到FF N Y 转换显示减1 输入是否减到00? N Y 23
五、实验步骤
把0832译码线0832 CS接至FFE0孔运行程序,数码管显示不断加大或减小的数字量,用万用表测试D/A输出孔AOUT应也能测出不断加大或减小的电压值。
六、思考
修改程序,使能产生锯齿波。
七、参考程序
ORG 05E0H 05E0 758153 SE13: MOV SP,#53H 05E3 757E00 MOV 7EH,#00H 05E6 757D08 MOV 7DH,#08H 05E9 757C03 MOV 7CH,#03H
05EC 757B02 MOV 7BH,#02H ;显示缓冲区初值 05EF 7E00 LO20: MOV R6,#00H 05F1 90FFE0 LO21: MOV DPTR,#0FFE0H 05F4 EE MOV A,R6
05F5 F0 MOVX @DPTR,A; ;送0382转换 05F6 7879 MOV R0,#79H 05F8 120077 LCALL PTDS 05FB 7A10 MOV R2,#10H
05FD 120425 LO23: LCALL DIS ;显示 0600 DAFB DJNZ R2,LO23
24
0602 0E INC R6 ;加1
0603 BEFFEB CJNE R6, #0FFH,LO21 ;不到FF继续加 0606 90FFE0 LO22: MOV DPTR,#0FFE0H 0609 1E DEC R6 060A EE MOV A,R6
060B F0 MOVX @DPTR,A ;减1送0832转换 060C 7879 MOV R0,#79H 060E 120077 LCALL PTDS 0611 7A10 MOV R2,#10H
0613 120425 LO24: LCALL DIS ;显示 0616 DAFB DJNZ R2,LO24
0618 BE00EB CJNE R6,#00H,LO22 ;不为 0061B 80D2 SJMP LO20 ;循环 ORG 0077H
0077 F9 PTDS: MOV R1,A ;拆送缓冲区 0078 117C ACALL PTDS1 007A E9 MOV A,R1 007B C4 SWAP A 007C 0F PTDS1: ANL A,#0FH 007E F6 MOV @R0,A 007F 08 INC R0 0080 22 RET
ORG 0D59H
0D59 D2D4 SSEE: SETB RS1 ;换工作区 0D5B 7D05 MOV R5,#05H 0D5D 753020 SSE2: MOV 30H,#20H 0D60 75317E MOV 31H,#7EH 0D63 7F06 MOV R7,#06H 0D65 79DD SSE1: MOV R1,#0DDH 0D67 E530 MOV A,30H
0D69 F3 MOVX @R1,A ;字位送入 0D6A A831 MOV R0,31H 0D6C E6 MOV A,@R0 0D6D 900D85 MOV DPTR,#0DDFFH
0D70 93 MOVC A,@A+DPTR ;取字形代码 0D71 79DC MOV R1,#0DCH
0D73 F3 MOVX @R1,A ;字形送入 0D74 E530 MOV A,30H ;右移 0D76 03 RR A
25
继续减 0D77 F530 MOV 30H,A 0D79 1531 DEC 31H 0D7B 74FF MOV A,#0FFH
0D7D F3 MOVX @R1,A ;关显示
0D7E DFE5 DJNZ R7,SSE1 ;6位显示完了吗? 0D80 DDDB DJNZ R5,SSE2 ;5次显示完了吗? 0D82 C2D4 CLR RS1 0D84 22 RET ORG 044FH
044F C0F9A4 LS0: DB 0C0H,0F9H,0A4H,0B0H,99H,92H 0452 B09992
0455 82F880 DB 82H,0F8H,80H,90H,88H,83H,0C6H 0458 908883 045B C6
045C A1868E DB 0A1H,86H,8EH,0FFH,0CH, 045F FF0C 0462 7FBF
ORG 0E2AH 0E2A C002 DELYA: PUSH 02H 0E2C C002 DELYB: PUSH 02H 0E2E C002 DELYC: PUSH 02H 0E30 DAFE DELYD: DJNZ R2,DELYD
0E32 120D59 LCALL,SSEE ;调显示子程序 0E35 D002 POP 02H 0E37 DAF5 DJNZ R2,DELYC 0E39 D002 POP 02H 0E3B DAEF DJNZ R2,DELYB 0E3D D002 POP 02H
0E3F DAE9 DJNZ R2,DELYA ;延时 0E41 22 RET
END
DB H,7FH,0BFH
实验10 电子时钟(定时器、中断综合实验)
一、实验目的
熟悉MCS-51定时器,串行口和中断初始化编程方法,了解定时器的应用,时钟程序的设计与调试技巧。
二、实验内容
26
编写程序,从本实验系统键盘上输入时间初值,用定时器产生0.1S定时中断,对时钟计数器计数,并将数值实时地送数码管显示。
三、程序框图
中断返回 1秒到吗? 定时中断 恢复初值,保护 显示 定时,中断,初始化,开定时 开始 N 键盘输入时、分、秒合乎规定吗? 关中断显示P N 0.1秒加1 Y 0.1秒单元清零,60秒到吗? N 秒加1 Y 秒单元清零,60分到吗? N 分加1 Y 分单元清零,24小时到吗? N 时加1 Y 时单元清零 四、实验步骤
27
连续运行程序,在键盘上输入时间初值,按执行键EXEC执行,数码管上实时显示时间值。
五、思考题
1.电子钟走时精度和程序中哪些常数有关?
2.修改程序使定时器工作方式改变,调节有关参数,进一步提高精度。 3.设计一个倒计时时钟,如何来修改程序?
六、参考程序
0030 758160 CHK00: MOV SP,#60H 0033 1204A5 LCALL LEDP 0036 900081 MOV DPTR,#CLOCK 0039 A882 MOV R0,DPL 003B A983 MOV R1,DPH 003D 90000B MOV DPTR,#000BH 0040 7402 MOV A,#02H 0042 F0 MOVX @DPTR,A 0043 A3 INC DPTR 0044 E9 MOV A,R1 0045 F0 MOVX @DPTR,A 0046 A3 INC DPTR 0047 E8 MOV A,R0 0048 F0 MOVX @DPTR,A
0049 120DF0 CHK0: LCALL LCK0 ;键扫,显示子程序 004C 120068 LCALL PTDS0 ;显示缓冲区放数子程序 004F 7501 MOV TMOD,#01H 0052 43A882 ORL IE,#82H 0055 758AB7 MOV TL0,#0B7H
0058 758C3C MOV TH0,#3CH ;定时中断初始化 005B 752300 MOV 23H,#00H
005E D28C SETB TR0 ;开定时 0060 120425 LOO5: LCALL DIS ;显示 0063 120068 LCALL PTDS0 0066 80F8 SJMP LOO5 0068 7879 PTDS0: MOV R0,#79H 006A E522 MOV A,22H 006C 1177 ACALL PTDS 006E E521 MOV A,21H
28
0070 1177 ACALL PTDS 0072 E520 MOV A,20H 0074 1177 ACALL PTDS
0076 22 RET
0077 F9 PTDS: MOV R1,A ;拆送显示缓冲区
0078 117C ACALL PTDS1
007A E9 MOV A,R1
007B C4 SWAP A
007C 0F PTDS1: ANL A,#0FH
007E F6 MOV @R0,A
007F 08 INC R0
0080 22 RET 0081 758AB7 CLOCK: MOV TL0,#0B7H
0084 758C3C MOV TH0,#3CH ;恢复初值
0087 C0D0 PUSH PSW 00 C0E0 PUSH ACC 008B D2D3 SETB 0D3H ;保护 008D 0523 INC 23H ;0.1008F E523 MOV A,23H
0091 B40A27 CJNE A,#0AH,DONE ;10094 752300 MOV 23H,#00H ;清0097 E522 MOV A,22H
0099 04 INC A ;秒加009A D4 DA A 009B F522 MOV 22H,A ;十进制调整
009D B4601B CJNE A,#60H,DONE ;6000A0 752200 MOV 22H,#00H ;秒单元清零
00A3 E521 MOV A,21H
00A5 04 INC A 00A6 D4 DA A ;分加00A7 F521 MOV 21H,A
00A9 B4600F CJNE A,#60H,DONE ;6000AC 752100 MOV 21H,#00H ;分单元清零
00AF E520 00B1 04 INC A
00B2 D4 DA
00B3 F520 MOV 20H,A
00B5 B42403 CJNE A,#24H,DONE ;2400B8 752000 MOV 20H,#00H ;时单元清零
MOV A,20H 29
秒加1
秒到吗?
0.1秒单元 1
秒到吗?
1,十进制调整
分到吗?
A ;时加1,十进制调整
小时到吗?
00BB D0E0 DONE: POP ACC ;退栈
00BD D0D0 POP PSW
00BF 32 RET1 0D59 D2D4 SSEE: SETB RS1 ;换工作区
ORG 0D59H
0D58 7D05 MOV R5,#05H
0D5D 753020 SSE2: MOV 30H,#20H
0D60 75317E MOV 31H,#7EH
0D63 7F06 MOV R7,#06H
0D65 79DD SSE1: MOV R1,#0DDH 0D67 E530 MOV A,30H
0D69 F3 MOVX @R1,A ;字位送入
0D6A A831 MOV R0,31H
0D6C E6 MOV A,@R0
0D6D 900D85 MOV DPTR,#0DDFFH
0D70 93 MOVC A,@A+DPTR ;取字形代码 0D71 79DC MOV R1,#0DCH
0D73 F3 MOVX @R1,A ;字形送入 0D74 E530 MOV A,30H ;右移
0D76 03 RR A
0D77 F530 MOV 30H,A
0D79 1531 DEC 31H 0D7B 74FF MOV A,#0FFH
0D7D F3 MOVX @R1,A ;关显示
0D7E DFE5 DJNZ R7,SSE1 ;60D80 DDDB DJNZ R5,SSE2 ;50D82 C2D4 CLR RS1
0D84 22 RET
0D85 C0F9A4 ODFF: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H
0D88 B09992,
0D8B 82F880 0D8E 90
0D8F 8883C6 0D92 A1868E
0D95 FF0C
0D98 DE
ORG 038EH
038E FC X3: MOV R4,A
038F 7850 MOV R0,#50H 位显示完了吗?
次显示完了吗?
DB 0F8H,80H,90H DB 88H,83H,0C6H,0A1H,86H
DB 8EH,0FFH,0CH,H,0DEH
30
0391 E6 MOV A,@R0
0392 F9 MOV R1,A
0393 EC MOV A,R4
0394 F7 MOV @R1,A
0395 E4 CLR A
0396 D083 POP DPH
0398 D082 POP DPL
039A 93 MOVC A,@A+DPTR
039B A3 INC DPTR
039C B5010A CJNE A,01H,X30
039F 19 DEC R1
03A0 E4 CLR A
03A1 93 MOVC A,@A+DPTR
03A2 F6 X31: MOV @R0,A
03A3 A3 INC DPTR
03A4 C082 PUSH DPL
03A6 C083 PUSH DPH
03A8 22 RET
03A9 19 X30: DEC R1 03AB 80F5 SJMP X31 03AD 03AF 03B1 03B4 03B6 03B8 03BA 03BB 03BC 03BD 03BE 03C0 03C1 03C3 03C6 03C8 03C9
;-------------------------------------- 7E50 71D1 30E51C DEF9 7E20 7850 E6 F8 E6 FF 7410 F6 71D1 30E506 DEF9 EF F6
X2: X0: X1:
31
03AA E9 MOV A,R1
MOV R6,#50H ACALL XLE JNB ACC.5,XX0 DJNZ R6,X0 MOV R6,#20H MOV R0,#50H MOV A,@R0 MOV R0,A MOV A,@R0 MOV R7,A MOV A,#10H MOV @R0,A ACALL XLE JNB ACC.5,XX1 DJNZ R6,X1 MOV A,R7 MOV @R0,A
03CA 03CC 03CD 03CE 03CF 03D0 03D1 03D3 80E1 FE EF F6 EE 22 9125 91 XX1: XX0: XLE: SJMP X2 MOV R6,A MOV A,R7 MOV @R0,A MOV A,R6 RET
ACALL DIS ACALL KEY
03D5 FC 03D6 7948 03D8 E7 03D9 FA 03DA 09 03DB E7 03DC FB 03DD EC 03DE 6B 03DF AB04 03E1 AC02 03E3 6004 03E5 7A88 03E7 7C88 03E9 1C 03EA EC 03EB 82 03ED 600F 03EF EC 03F0 0E 03F2 600A 03F4 EC 03F5 6005 03F7 7C02 03F9 1A 03FA 8006 03FC 7C0F 03FE AA04 0400 AC03 0402 7948 0404
EA
MOV R4,A MOV R1,#48H MOV A,@R1 MOV R2,A INC R1 MOV A,@R1 MOV R3,A MOV A,R4 XRL A,R3 MOV R3,04H MOV R4,02H JZ X10 MOV R2,#88H MOV R4,#88H X10: DEC R4 MOV A,R4 XRL A,#82H JZ X11 MOV A,R4 XRL A,#0EH JZ X11 MOV A,R4 JZ X12 MOV R4,#20H DEC R2 SJMP X13 X12: MOV R4,#0FH X11: MOV R2,04H MOV R4,03H X13: MOV R1,#48H
MOV A,R2
32
0405 F7 0406 09 0407 EB 0408 F7 0409 EC 040A 20E507 040D 20E404 0410 900415 0413 93 0414 22 0415
070408 0418 050906 041B 0A 041C 0B0100 041F 020F03 0422 0E 0423 0C0D 0425 C083 0427 C082 0429 D2D4 042B 787E 042D 7A20 042F 7B00 0431 90044F 0434 E6 0435 93 0436 79DC 0438 F3 0439 EA 043A 09 043B F3 043C DBFE 043E C3 043F 13 0440 FA 0441 18 0442 70F0 0444 F2 0445
18
MOV @R1,A INC R1 MOV A,R3 MOV @R1,A MOV A,R4 JB ACC.5,X113 JB ACC.4,X113 MOV DPTR,#LS3 MOVC A,@A+DPTR X113: RET
LS3: DB 07H,04H,08H,05H,09H,06H,0AH
DB 0BH,01H,00H,02H,0FH,03H,0EH
DB 0CH,0DH
DIS: PUSH DPH
PUSH DPL SETB RS1 MOV R0,#7EH MOV R2,#20H MOV R3,#00H MOV DPTR,#LS0 LS2: MOV A,@R0 MOVC A,@A+APTR
MOV R1,#0DCH MOVX @R1,A MOV A,R2 INC R1
MOVX @R1,A
LS1: DJNZ R3,LS1 CLR C RRC A MOV R2,A DEC R0 JNZ LS2 MOVX @R0,A DEC R0
33
0446 F4 0447 F2 0448 C2D4 044A D082 044C D083 044E 22 044F C0F9A4 0452 B09992 0455 82F880 0458 908883 045B C6 045C A1868E 045F FF0C 0462 7FBF 04 D2D4 0466 7AFE 0468 7B08 046A 7800 046C 79DD 046E EA 046F F3 0470 23 0471 FA 0472 09 0473 E3 0474 F4 0475 0F 0477 700E 0479 08 047A DBF0 047C 7420 047E FA 047F E4 0480 79DD 0482 F3 0483 EA 0484 C2D4 0486 22 0487
F4
CPL A
MOVX @R0,A CLR RS1 POP DPL POP DPH RET LS0: DB 0C0H,0F9H,0A4H,0B0H,99H,92H DB 82H,0F8H,80H,90H,88H,83H,0C6H
DB 0A1H,86H,8EH,0FFH,0CH,H,7FH,0BFH
KEY: SETB RS1
MOV R2,#0FEH MOV R3,#08H MOV R0,#00H LP1: MOV R1,#0DDH MOV A,R2 MOVX @R1,A RL A MOV R2,A INC R1 MOVX A,@R1 CPL A ANL A,#0FH JNZ LP0 INC R0 DJNZ R3,LP1 XP33: MOV A,#20H XP3: MOV R2,A CLR A MOV R1,#0DDH MOVX @R1,A MOV A,R2 CLR RS1 RET LP0:
CPL A
34
0488 048B 048D 048F 0492 0494 0496 0499 049B 049D 04A0 04A2 04A3 04A5 04A8 04AA 04AC 04AD 04AE 04B1 04B2 04B3 04B5 04B7 04B9
20E004 7400 8013 20E104 7408 800C 20E204 7410 8005 20E3DC 7418 28 80D9 75507E 7410 7879 F6 08 B87EFB 04 F6 7420 F8 F9 22
XP0: XP1: XP2: LPP: LEDP: LEDS:
JB ACC.0,XP0 MOV A,#00H SJMP LPP JB ACC.1,XP1 MOV A,#08H SJMP LPP JB ACC.2,XP2 MOV A,#10H SJMP LPP JB ACC.3,XP33 MOV A,#18H ADD A,R0 SJMP XP3 MOV 50H,#7EH MOV A,#10H MOV R0,#79H MOV @R0,A INC R0
CJNE R0,#7EH,LEDS INC A MOV @R0,A MOV A,#20H MOV 48H,A MOV 49H,A RET
;---------------------------------------
END
35
36
附录1 Dais-80958B单片机实验开发系统简介
一、系统结构
51/96/8088 CPU卡 通信/电源接口 LED显示 系统管理区 键盘区 CPU接口 实验区
主机板
附录图1 系统结构框图
二、系统连接
(1) 电源线/通信线
先将多股护套线的9芯插头插到仿真实验仪的CZ1上,另一9芯插头连到PC机的串口上(COM1、COM2),然后按照电源线颜色接入微机专用电源,接入方法如下:
红 +2V
黑 地 橙 +12V 绿 -12V 黄 VPP (2) 仿真电缆线
40芯仿真电缆线用于连51目标机,一头接入51 CPU卡的CZ4插座,另一头插入用户板CPU位置。
(3) 68芯仿真电缆
将68芯仿真电缆一头连96CPU卡,另一头连用户系统。
三、系统测试
(1) 系统初始化
将电源线/通信线连好后,应仔细检查连接的正确性,然后打开电源,实验开发系统就显示闪动的“P”,否则按一下RESET键,如再不显示,应立即切断电源,检查后重新进行。
(2) 系统功能自检
按键:[MOVE]→0→[STEP]*3→[EXEC],系统应先显示“┍”字循环,后显示“8”
37
循环向右移动,说明系统功能基本正常。
38
附录2 实验开发系统的字形/字位/键值表
一、字形表
代码
D7 D6h 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1
g 1 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1
D5 f 0 1 1 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 1 1 1
D4 e 0 1 0 1 1 1 0 1 0 1 0 0 0 0 0 0 1 0 0 0 1
D3 d 0 1 0 0 1 0 0 1 0 0 1 0 0 0 1 1 1 0 0 0 1
D2 c 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 1 1 0 0 1 1
D1 b 0 0 0 0 0 1 1 0 0 0 0 1 1 0 1 1 1 1 0 1 1
D0 a 0 1 0 0 1 0 0 0 0 0 0 1 0 1 0 0 1 1 1 1 1
0 1 2 3 4 5 6 7 8 9 A B C D E F P H • - 字形
Hex C0 F9 A4 B0 99 92 82 F8 80 90 88 83 C0 A1 86 8E FF 0C 7F BF
二、字位表
未 用
G5 20
G4 10
G3 08
G2 04
G1 02
G0 01
三、键值表
07 0
8 04 0
09 0
0A 0
39
1011
12 1
14 1
16 1
5 01 0
2 00 0
F
6 03 0E
B 0C 0D
1918
3 1A 1B
5 1C 1D
7 1E 1F
40
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- sceh.cn 版权所有 湘ICP备2023017654号-4
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务