单片机原理及其接口技术实验报告.docx
- 文档编号:7929904
- 上传时间:2023-01-27
- 格式:DOCX
- 页数:44
- 大小:30.78KB
单片机原理及其接口技术实验报告.docx
《单片机原理及其接口技术实验报告.docx》由会员分享,可在线阅读,更多相关《单片机原理及其接口技术实验报告.docx(44页珍藏版)》请在冰豆网上搜索。
单片机原理及其接口技术实验报告
单片机原理及其接口技术实验指导书
实验1KeilC51的使用(汇编语言)
一.实验目的:
初步掌握KeilC51(汇编语言)和ZY15MCU12BD型综合单片机实验箱的操作和使用,能够输入和运转简单的程序。
二.实验设施:
ZY15MCU12BD型综合单片机实验箱一台、拥有一个
RS232串行口并安装
KeilC51的计算机一台。
三.实验原理及环境:
在计算机上已安装KeilC51软件。
这个软件既能够与硬件(ZY15MCU12BD型综合单片机实验箱)连结,在硬件(单片机)上运转程序;也能够不与硬件连结,仅在计算机上以虚构仿真的方法运转程序。
假如程
序有对硬件的驱动,就需要与硬件连结;假如没有硬件动作,仅有软件操作,就能够使用虚构仿真。
四:
实验内容:
1.掌握软件的开发过程:
1)成立一个工程项目选择芯片确定选项。
2)加入C源文件或汇编源文件。
3)用项目管理器生成各样应用文件。
4)检查并改正源文件中的错误。
5)编译连结通事后进行软件模拟仿真。
6)编译连结通事后进行硬件仿真。
2.按以上步骤实此刻输出一个频次为1Hz的方波。
3.在2的基础上,实现同时在和上各输出一个频次同为
1Hz但电平状态相反的方波。
五:
程序清单:
ORG0000H
AGAIN:
CPL
MOVR0,#10;延时秒
LOOP1:
MOVR1,#100
LOOP2:
MOVR2,#250
DJNZR2,$
DJNZR1,LOOP2
DJNZR0,LOOP1
SJMPAGAIN
END
六:
实验步骤:
1.成立一个工程项目选择芯片确定选项
如图1-1所示:
①Project→②NewProject→③输入工程名test→④保留工程文件(鼠标点击保留按钮)
1-1建工程名
出下一界面。
如1-2所示:
①CPU厂家(Atmel)→②CPU型号(89C51),③好后确定
1-2厂家,CPU型号
接着晶振率及生成HEX文件等。
如1-3所示:
①Project→②OptionsforTarget‘Target1→③’⋯在Target中→④改正
CPU
晶振率
12MHz→⑤在Output中→⑥生成HEX格式其余采纳缺省置→⑦好后确定。
图1-3选晶振频次及生成HEX文件等窗口
2.成立汇编源文件
如图1-4所示:
①File→②New,③弹出源文件编写窗口。
输入以下源文件:
ORG0000H
AGAIN:
CPL
MOVR0,#10;延时秒
LOOP1:
MOVR1,#100
LOOP2:
MOVR2,#250
DJNZR2,$
DJNZR1,LOOP2
DJNZR0,LOOP1
SJMPAGAIN
END
图1-4进入编写源文件窗口
源程序编写完后,①File→②SaveAs将文件以保留在E:
\test目录下,获取汇编语言源程序。
3.用项目管理器生成(编译)各样应用文件
①点击Target1前之+号→出现②SourceGroup1→③点击它并按鼠标右键会生弹出下拉菜单见图1-5
编译文件文件窗口→选择④AddFilestoGroup‘SourceGroup→⑤1’点击add向项目中增添源文件→⑥点
击close封闭AddFilestoGroup‘SourceGroup窗口1→⑦’在SourceGroup1前会出现一个+号→⑧点击之弹出test.asm文件名点击该文件名→⑨主窗口中会出现该程序
编译:
Project→Buildtarget
图1-5进入编译文件文件窗口
就会生成一系列到文件如OBJ文件LST文件HEX文件等。
4.检查并改正源文件中的错误
假如在源文件中存在错误在Output
窗口中会出现错误提示信息,你能够在源程序中进行改正,而后
存盘后从头Build察看错误提示信息。
5.编译连结通事后进行软件模拟仿真
Debug→Start/StopDebugSession进入软件模拟的仿真窗口,可使用单步、设断点来进行调试和除错。
6.编译连结通事后进行硬件仿真
实验箱的仿真串口一定与PC机串口连结,通电,拨位开关和L01,设置硬件及时仿真调试选项:
Project→OptionsforTarget
K10一定拨在B端,连结P10和L00,连结‘Targetl→Debug’.硬件及时仿真调试选项窗
P11
口,见图1-5选硬件仿真选项,按确定按钮确定。
图1-5硬件及时仿真调试选项窗口
进入硬件及时调试窗口后,可翻开各样察看窗口,进行单步断点运转到光标连续履行等操作,无误后可
连续运转察看LED发光管的显示成效。
注意退出时须按单片机的复位按键SS10,在进行硬件连结前最好也先按单片机的复位按键SS10。
7.改正以上程序,实现同时在和上各输出一个频次为
1Hz但电平状态相反的方波。
七:
试验总结:
经过第一次实验我熟习了
KeilC51(汇编语言)和
ZY15MCU12BD的基本操作过程,但还不是很熟
练,课后要增强练习。
实验2十六进制与十进制的变换
一:
实验目的:
实践汇编语言次序构造的编程方法,掌握十六进制数变换成十进制数的编程实现,掌握单步运转程序的基本技巧。
二:
实验设施:
ZY15MCU12BD型综合单片机实验箱一台、拥有一个RS232串行口并安装KeilC51的计算机一台。
三:
实验原理及环境:
将十六进制数变换成十进制数有多种方法,比较典型的是用待变换数除以权值的方法,即挨次除以
100、10,则各次的商和最后的余数就是所需要的十进制数。
四:
实验内容:
将放在片内RAM30H中的2位十六进制数变换成3位十进制数,依据从高位到低位的次序分别放入31H~33H中(即非压缩的BCD码)。
在本实验中,要求使用单步方式运转,以便察看各单元的变化过程。
五:
程序清单:
LJMP0100H
ORG0100H
MOVA,30H
MOVB,#16
DIVAB
MOVR0,B
MOVB,#16
MULAB
ADDA,R0
MOVB,#10
DIVAB
MOV33H,B
MOVA,33H
MOV33H,A
MOVB,#10
DIVAB
MOV32H,B
MOVA,32H
MOV32H,A
MOV31H,A
SJMP$
END
六:
步:
1.成立一个工程,将在中做好的*.asm文件加入。
2.出存器窗口,将30H元改正成某一。
3.在希望停下来的指令上断点,而后运转,在断点停下来后,再步运转,能够看到各元的
化状况。
运转完最后一条指令后,在31H~33H中得30H中十六制数的十制数。
七:
:
个麻的就是程十六制与十制的,特别是算数运算指令的使用。
程中不是很熟;有一个领会就是算法写程序至关重要,假如写程序以前没有确定算法,
那么程将没法下手。
实验38段LED显示器动向显示
目的:
掌握8段LED示器的使用及示程序的方法。
:
ZY15MCU12BD型合片机箱一台、拥有一个RS232串行口并安装KeilC51的算机一台。
原理及境:
1.箱上有6位8段LED示器,采纳方式。
即便一位LED示器示内容一段,而后下
一位LED示器示内容一段⋯⋯,循环往复。
只需刷新率不小于50Hz,就能够得清楚定的
示成效。
通一片82558段LED示器行段和位,8255的A口、B口、C口、控制口的地点分片
外RAM的4000H、4001H、4002H、4003H。
示器的各段由8255的B口,低平段光,高平段熄。
各段的位如
3-1,各
示字的字形代以下所示:
示字
字形代
示字
字形代
示字
字形代
0
C0H
0.
40H
-
BFH
1
F9H
1.
79H
灭
FFH
2
A4H
2.
24H
3
B0H
3.
30H
D0
4
99H
4.
19H
5
92H
5.
12H
D5
D1
6
82H
6.
02H
D6
7
F8H
7.
78H
8
80H
8.
00H
D4
D2
9
90H
9.
80H
D3
D7
A
88H
A.
08H
B
83H
B.
03H
C
C6H
C.
46H
图3-1
8段LED各段控制位
D
A1H
D.
21H
E
86H
E.
06H
F
8EH
F.
0EH
4.LED显示器的各位由8255的A口驱动,低电平对应位发光,高电平对应位熄灭。
LED显示器
对应位口位
左起第一位
D0
左起第二位
D1
左起第三位
D2
左起第四位
D3
左起第五位
D4
左起第六位
D5
实验内容:
1.编写一个6位LED显示器驱动子程序(在主程序中已对接口芯片
8255做好必需的初始化)。
字形表
按0~F、0.~F、.-、灭的次序摆列。
该子程序的要求以下:
进口:
待显示数(00H~1FH)放在20H~25H(
分别对应显示器的左起第
1~第6位)中。
出口:
每位LED显示后返回。
占用:
R0、R1、R2、A、PSW、DPTR。
显示子程序的流程图如图
3-2和图3-3:
开始
置显示数地点指针初值20H
显示器位码指向左起第一位
拿出待显示数
查出字形代码
字形代码送段口
位码送位口
软件延时
封闭全部显示位
位码指向下一位
显示数地点指针加1
N
显示地点指针高出
返回
Y
图3-2显示子程序流程图
开始
显示地点指针R0=20H
位码初值R2=FEH
A←(R0)
DPTR←表头首址
A←(A+DPTR)
DPTR←4001H
(DPTR)←A
A←R2
DPTR←4000H
(DPTR)←A
软件延时
(用R1作计数器)
A←FFH
(DPTR)←A
R2左移
R0←R0+1
N
R0=26H
Y
返回
图3-3显示子程序的详尽流程图
2.子程序自己没法运转,为了运转这个子程序,另编写一个主程序。
这个主程序的功能是第一对
进行初始化,而后就频频调用显示子程序,显示20H~25H中的待显示内容。
8255
第一在个字节中置入
20H开端的6个字节中置入00H~0FH,而后连续运转此程序,应显示0~F;在20H开端的
10H~1FH,而后连续运转此程序,应显示0.~F.;若置入20H、21H,则显示-、灭。
6
开始
设置货仓栈底SP
软件延时秒
等候8255复位结束
8255初始化
A口、B口方式0输出
C口随意
调用显示子程序
图3-4显示主程序流程图
3.按以下框图编写一段程序,运转后会在显示器上应出现连续向左挪动的0~F。
开始
设置货仓栈底SP
软件延时秒
等候8255复位结束
8255初始化
A口、B口方式0输出
C口随意
20H~25H清0
调用显示子程序330次,运转时间约1秒
(20H)←(21H)
(21H)←(22H)
(22H)←(23H)
(23H)←(24H)
(24H)←(25H)
(25H)←(25H)+1
(25H)←(25H)∧#0FH
图3-5实验内容3流程图
6位LED显示器驱动子程序程序清单:
ORG0000H
MOVSP,#6FH
MOV20H,#00
MOV21H,#00
MOV22H,#00
MOV23H,#00
MOV24H,#00
MOV25H,#00
MOVDPTR,#4003H;8255初始化
MOVA,#B;A口、B口方式0输出,C口高4位输出,低4位输入
MOVX@DPTR,A
;ACALLDELAY500MS;延时秒
LOOP3:
LCALLDISP;调用显示子程序
SJMPLOOP3
DISP:
MOVR0,#20H
MOVR2,#0FEH
DISP1:
MOVA,@R0
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVDPTR,#4001H
MOVX@DPTR,A
MOVA,R2
MOVDPTR,#4000H
MOVX@DPTR,A
CALLDELAY500US
MOVA,#0FFH
MOVX@DPTR,A
MOVA,R2
RLA
MOVR2,A
INCR0
CJNER0,#26H,DISP1
RET
DELAY500MS:
PUSH00H
MOVR0,#25;延时秒
NEXT:
ACALLDELAY20MS
DJNZR0,NEXT
POP00H
RET
DELAY500US:
PUSH03H
MOVR3,#250
DJNZR3,$
POP03H
RET
DELAY20MS:
PUSH06H
PUSH07H
MOVR7,#99
AGAIN:
MOVR6,#100
DJNZR6,$
DJNZR7,AGAIN
POP07H
POP06H
RET
TAB:
DB
DB
DB
DB
0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H;0,1,2,3,4,5,6,780H,90H,88H,83H,0C6H,0A1H,86H,8EH;8,9,A,B,C,D,E,F40H,79H,24H,30H,19H,12H,2H,78H;0.,1.,2.,3.,4.,5.,6.,7.00H,10H,08H,03H,46H,21H,06H,0EH;8.,9.,A.,B.,C.,D.,E.,F.
END
主程序程序清单:
ORG0000H
MOVSP,#6FH
MOV20H,#00
MOV21H,#00
MOV22H,#00
MOV23H,#00
MOV24H,#00
MOV25H,#00
MOVDPTR,#4003H;8255初始化
MOVA,#B;A口、B口方式
MOVX@DPTR,A
;ACALLDELAY500MS;延时秒
0输出,
C口高
4位输出,低
4位输入
LOOP3:
LCALLDISP
MOV20H,21H
;调用显示子程序
MOV21H,22H
MOV22H,23H
MOV23H,24H
MOV24H,25H
INC25H
ANL25H,#0FH
SJMPLOOP3
DISP:
MOVR0,#20H
MOVR2,#0FEH
DISP1:
MOVA,@R0
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVDPTR,#4001H
MOVX@DPTR,A
MOVA,R2
MOVDPTR,#4000H
MOVX@DPTR,A
CALLDELAY500US
MOVA,#0FFH
MOVX@DPTR,A
MOVA,R2
RLA
MOVR2,A
INCR0
CJNER0,#26H,DISP1
RET
DELAY500MS:
PUSH00H
MOVR0,#25;延秒
NEXT:
ACALLDELAY20MS
DJNZR0,NEXT
POP00H
RET
DELAY500US:
PUSH03H
MOVR3,#250
DJNZR3,$
POP03H
RET
DELAY20MS:
PUSH06H
PUSH07H
MOVR7,#99
AGAIN:
MOVR6,#100
DJNZR6,$
DJNZR7,AGAIN
POP07H
POP06H
RET
TAB:
DB
DB
DB
DB
END
0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H;0,1,2,3,4,5,6,780H,90H,88H,83H,0C6H,0A1H,86H,8EH;8,9,A,B,C,D,E,F40H,79H,24H,30H,19H,12H,2H,78H;0.,1.,2.,3.,4.,5.,6.,7.00H,10H,08H,03H,46H,21H,06H,0EH;8.,9.,A.,B.,C.,D.,E.,F.
步:
1.将~与JD0~JD7接起来。
开关KC倒向上方。
2.成立一个工程,将在中做好的内容1和2的程序拷到一个*.asm文件加入。
3.后与片机硬件接,运转。
4.在20H开端的6个字中置入00H~0FH中的随意6个,而后运转此程序,示0~F中的
6个数字;在20H开端的6个字中置入10H~1FH中的随意6个,而后运转此程序,示0.~
F.中的6个数字。
5.假如运转果不正常,能够用断点、步运转的方法找所在,改正后从头、与片机硬件接,运转。
直至得正确的果。
6.成立一个工程,将在中做好的内容
1和3
的程序拷到一个
*.asm文件加入。
7.后与片机硬件接,运转。
8.察LED示器,从右向左挨次出
0、1、2、
3⋯⋯
重要提示:
1.指令中的“,:
;”是西文字符,切不行使用中文符号;数字“0”与字符“o”不行混杂。
2.软件延时能够用循环程序实现,单片机的时钟为12MHz,每条指令的履行时间能够从教材的附表中查出。
3.程序的开端地点一定为0000H(此后各实验均同)。
4.退出硬件连结能够按SS10,在进行硬件连结前最好也按一次SS10。
5.对程序改正后一定退出硬件连结,进行编译后再从头进行硬件连结才能奏效。
6.调用显示子程序330次能够用两重循环实现。
且使用的计数单元与显示子程序顶用到的不可以矛盾。
7.开关KC倒向上方。
实验总结:
本次试验编程比较复杂,但在老师的指导和同学的帮助下仍是达成了试验。
经过这前三次
的实验多单片机的实验过程有了较稳固的掌握。
实验4矩阵键盘的使用
实验目的:
掌握矩阵键盘的使用及键盘扫描程序的设计方法。
实验设施:
ZY15MCU12BD型综合单片机实验箱一台、拥有一个RS232串行口并安装KeilC51的计算机一台。
实验原理及环境:
实验箱上有一个16键的矩阵键盘,分为4行×4列。
4行分别连结到一片8255(与8段LED显示器的
段驱动和位驱动共用)的PC0~PC3,4列分别连结到8255的PC4~PC7。
8255的A口、B口、C口、控制
口的地点分别为片外RAM的4000H、4001H、4002H、4003H。
第4列(PC7)
第3列(PC6)
第2列(PC5)
第1列(PC4)
行
PC3
00H
01H
02H
03H
第4行
输
PC2
04H
05H
06H
07H
第3行
入
PC1
08H
09H
0AH
0BH
第2行
PC0
0CH
0DH
0EH
0FH
第1行
00H
01H
02H
03H
列
驱动
图4-1键盘部署及键值
选择列驱动码使某一列为低电平而其余列为高电平,再读取行输入,若该列有键按下则相应的位即是
低电平。
每个键均安排一个键值,如图4-1所示。
实验内容:
1.编写一个键盘扫描子程序(在主程序中已对接口芯片8255做好必需的初始化)。
这个程序对键盘作
一次扫描,若无键按下,返回时累加器A中为FFH,如有键按下,返回时A中为该键键值,键盘扫描子程序
流程图如图4-2所示。
开始
N
图4-2键盘扫描子程序流程图
此中,查键值子程序能够自行编写,也能够使用下边这个查键值子程序,这个子程序的参数以下:
进口:
队列要点值码放在累加器
A中,高4位是列驱动码(被扫描列的对应位为
0,其余位均为
1),
低4位是行状态(按下键的对应位为
0,其余位均为
1)。
出口:
键码放在A中带出。
占用:
R1、A、PSW、DPTR。
程序清单以下:
;查键值子程序,开端地点为KEY20
KEY20:
PUSHACC
;暂存要点值
MOVR1,#00H;查键值自变量清
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 原理 及其 接口 技术 实验 报告