单片机接口技术实验指导书6个实验Word文件下载.docx
- 文档编号:21156697
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:26
- 大小:983.77KB
单片机接口技术实验指导书6个实验Word文件下载.docx
《单片机接口技术实验指导书6个实验Word文件下载.docx》由会员分享,可在线阅读,更多相关《单片机接口技术实验指导书6个实验Word文件下载.docx(26页珍藏版)》请在冰豆网上搜索。
在计算机上已安装KeilC51软件。
这个软件既可以与硬件(ZY15MCU12BD型综合单片机实验箱)连接,在硬件(单片机)上运行程序;
也可以不与硬件连接,仅在计算机上以虚拟仿真的方法运行程序。
如果程序有对硬件的驱动,就需要与硬件连接;
如果没有硬件动作,仅有软件操作,就可以使用虚拟仿真。
实验内容:
1.掌握软件的开发过程:
1)建立一个工程项目选择芯片确定选项。
2)加入C源文件或汇编源文件。
3)用项目管理器生成各种应用文件。
4)检查并修改源文件中的错误。
5)编译连接通过后进行软件模拟仿真。
6)编译连接通过后进行硬件仿真。
2.按以上步骤实现在P1.0输出一个频率为1Hz的方波。
3.在2的基础上,实现同时在P1.0和P1.1上各输出一个频率同为1Hz但电平状态相反的方波。
预习要求:
1.熟悉使用KeilC51的步骤。
2.理解实验内容2中程序的工作原理。
3.编写实验内容3所需要的程序。
实验步骤:
以下假定你在E:
\TEST文件夹下学习、运行Keil
1.建立一个工程项目选择芯片确定选项
如图1-1所示:
Project→
NewProject→
输入工程名test→
保存工程文件(鼠标点击保存按钮)
图1-1创建工程名
弹出下一界面。
如图1-2所示:
选CPU厂家(Atmel)→
选CPU型号(89C51),
选好后确定
图1-2选厂家,选CPU型号
接着选晶振频率及生成HEX文件等。
如图1-3所示:
OptionsforTarget‘Target1’…→
在Target中→
更改CPU晶振频率为12MHz→⑤在Output中→⑥选择生成HEX格式其它采用缺省设置→⑦选好后确定。
图1-3选晶振频率及生成HEX文件等窗口
2.建立汇编源文件
如图1-4所示:
File→
New,
弹出源文件编辑窗口。
输入以下源文件:
ORG0000H
AGAIN:
CPLP1.0
MOVR0,#10;
延时0.5秒
LOOP1:
MOVR1,#100
LOOP2:
MOVR2,#250
DJNZR2,$
DJNZR1,LOOP2
DJNZR0,LOOP1
SJMPAGAIN
END
图1-4进入编辑源文件窗口
源程序编写完后,
SaveAs将文件以test.asm保存在E:
\test目录下,获得汇编语言源程序。
3.用项目管理器生成(编译)各种应用文件
点击Target1前之+号→出现
SourceGroup1→
点击它并按鼠标右键会生弹出下拉菜单见图1-5编译文件文件窗口→选择
AddFilestoGroup‘SourceGroup1’→
点击add向项目中添加Test.asm源文件→⑥点击close关闭AddFilestoGroup‘SourceGroup1’窗口→
在SourceGroup1前会出现一个+号→
点击之弹出test.asm文件名点击该文件名→
主窗口中会出现该程序
图1-5进入编译文件文件窗口
编译:
Project→Buildtarget就会生成一系列到文件如OBJ文件LST文件HEX文件等。
4.检查并修改源文件中的错误
如果在源文件中存在错误在Output窗口中会出现错误提示信息,你可以在源程序中进行修改,然后存盘后重新Build观察错误提示信息。
5.编译连接通过后进行软件模拟仿真
Debug→Start/StopDebugSession进入软件模拟的仿真窗口,可使用单步、设断点来进行调试和除错。
6.编译连接通过后进行硬件仿真
实验箱的仿真串口必须与PC机串口连接,通电,拨位开关K10必须拨在B端,连接P10和L0,连接P11和L1,设置硬件实时仿真调试选项:
Project→OptionsforTarget‘Targetl’→Debug.硬件实时仿真调试选项窗口,见图1-5选硬件仿真选项,按确定按钮确定。
图1-5硬件实时仿真调试选项窗口
进入硬件实时调试窗口后,可打开各种观察窗口,进行单步断点运行到光标连续执行等操作,无误后可连续运行观察LED发光管的显示效果。
注意退出时须按单片机的复位按键SS10,在进行硬件连接前最好也先按单片机的复位按键SS10。
7.修改以上程序,实现同时在P1.0和P1.1上各输出一个频率为1Hz但电平状态相反的方波。
重要提示:
1.指令中的“,:
;
”是西文字符,切不可使用中文符号;
数字“0”与字符“o”不可混淆。
2.以上菜单操作都可以点击工具栏中的相应图标快速实现。
3.退出硬件连接可以按SS10,在进行硬件连接前最好也按一次SS10。
4.生成源文件的方法:
从键盘上输入源文件;
用其他编辑软件(包括MicrosoftWord)编辑源文件,然后复制到KeilC51文件窗口中,使Word文档变为TXT文档,这种方法最好,可方便输入中文注释;
也可装入在其它编辑软件中编辑的源文件如:
*.asm/*.a51/*.c...等。
实验2十六进制与十进制的转换
实践汇编语言顺序结构的编程方法,掌握十六进制数转换成十进制数的编程实现,掌握单步运行程序的基本技巧。
将十六进制数转换成十进制数有多种方法,比较典型的是用待转换数除以权值的方法,即依次除以100、10,则各次的商和最后的余数就是所需要的十进制数。
实验内容:
将放在片内RAM30H中的2位十六进制数转换成3位十进制数,按照从高位到低位的顺序分别放入31H~33H中(即非压缩的BCD码)。
在本实验中,要求使用单步方式运行,以便观察各单元的变化过程。
理解实验原理,熟悉实验环境。
编写实现本实验要求的程序,并生成*.asm文件,将这个文件放在U盘上备用。
1.建立一个工程,将在预习中做好的*.asm文件加入。
2.调出存储器编辑窗口,将30H单元修改成某一值。
3.在希望停下来的指令上设断点,然后运行,在断点处停下来后,再单步运行,可以看到各单元的变化情况。
运行完最后一条指令后,在31H~33H中应获得30H中十六进制数对应的十进制数。
2.本实验可以不用硬件连接,以软件仿真的方法即可进行。
3.程序的起始地址必须为0000H(以后各实验均同)。
4.对程序修改后必须退出连接,进行编译后再重新进行连接才能生效(以后各实验均同)。
5.调出存储器编辑窗口方法是:
操作View→MemoryWindow,或点工具栏中的相应图标。
6.存储器编辑窗口可以编辑3个空间,可以用Adress调出。
在Adress中键入d:
xxH或0Xxx将从地址xxH开始显示片内RAM的低128字节和特殊功能寄存器SFR;
在Adress中键入i:
xxH或0Xxx将从地址xxH开始显示片内RAM;
在Adress中键入c:
xxxxH或0Xxxxx将从地址xxxxH开始显示程序存储器;
在Adress中键入x:
xxxxH或0Xxxxx将从地址xxxxH开始显示片外RAM。
7.将鼠标指针放在存储器编辑窗口中的某个数据上点击右键,在弹出的窗口中点ModifyMemoryat……可以修改其值。
如果要修改连续多个单元,可以在数据之间用“,”隔开。
8.设断点可以用Debug中的Insert/RemoveBreakpoint或点击工具栏中的相应图标快速实现。
运行可用Go。
6.单步运行可以用Debug中的Step(纯单步)、StepOver(将子程序调用作为一条指令运行)或点击工具栏中的相应图标快速实现。
10.在运行过程中如果希望中止当前运行,从头开始,可以点击工具栏中的RST图标实现。
实验38段LED显示器动态显示
掌握8段LED显示器的使用及显示程序的设计方法。
1.实验箱上有6位8段LED显示器,采用动态方式驱动。
即使一位LED显示器显示内容一段时间,然后下一位LED显示器显示内容一段时间……,周而复始。
只要刷新频率不小于50Hz,就可以获得清晰稳定的显示效果。
2.MCS-51CPU通过一片8255对8段LED显示器进行段驱动和位驱动,8255的A口、B口、C口、控制口的地址分别为片外RAM的4000H、4001H、4002H、4003H。
3.LED显示器的各段由8255的B口驱动,低电平对应段发光,高电平对应段熄灭。
各段的驱动位如图5-1,各显示字的字形代码如下所示:
显示字字形代码显示字字形代码显示字字形代码0C0H0.40H-BFH
1F9H1.79H灭FFH
2A4H2.24H
3B0H3.30H
499H4.19H
592H5.12H
682H6.02H
7F8H7.78H
880H8.00H
990H9.80H
A88HA.08H
B83HB.03H
图5-18段LED各段控制位
CC6HC.46H
DA1HD.21H
E86HE.06H
F8EHF.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显示0.5mS后返回。
占用:
R0、R1、R2、A、PSW、DPTR。
显示子程序的流程图如图5-2和图5-3:
Y
图5-2显示子程序流程图
图5-3显示子程序的详细流程图
2.子程序自身无法运行,为了运行这个子程序,另编写一个主程序。
这个主程序的功能是首先对8255进行初始化,然后就反复调用显示子程序,显示20H~25H中的待显示内容。
首先在20H起始的6个字节中置入00H~0FH,然后连续运行此程序,应显示0~F;
在20H起始的6个字节中置入10H~1FH,然后连续运行此程序,应显示0.~F.;
若置入20H、21H,则显示-、灭。
图5-4显示主程序流程图
3.按以下框图编写一段程序,运行后会在显示器上应出现连续向左移动的0~F。
图5-5实验内容3流程图
1.将P0.0~P0.7与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……
2.软件延时可以用循环程序实现,单片机的时钟为12MHz,每条指令的执行时间可以从教材的附表中查出。
4.退出硬件连接可以按SS10,在进行硬件连接前最好也按一次SS10。
5.对程序修改后必须退出硬件连接,进行编译后再重新进行硬件连接才能生效。
6.调用显示子程序330次可以用双重循环实现。
且使用的计数单元与显示子程序中用到的不能冲突。
7.开关KC倒向上方。
实验4矩阵键盘的使用
掌握矩阵键盘的使用及键盘扫描程序的设计方法。
实验箱上有一个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行
列驱动
图6-1键盘布置及键值
选择列驱动码使某一列为低电平而其它列为高电平,再读取行输入,若该列有键按下则相应的位便是低电平。
每个键均安排一个键值,如图6-1所示。
1.编写一个键盘扫描子程序(在主程序中已对接口芯片8255做好必要的初始化)。
这个程序对键盘作一次扫描,若无键按下,返回时累加器A中为FFH,若有键按下,返回时A中为该键键值,键盘扫描子程序流程图如图6-2所示。
图6-2键盘扫描子程序流程图
其中,查键值子程序可以自行编写,也可以使用下面这个查键值子程序,这个子程序的参数如下:
行列关键值码放在累加器A中,高4位是列驱动码(被扫描列的对应位为0,其余位均为1),低4位是行状态(按下键的对应位为0,其余位均为1)。
键码放在A中带出。
占用:
R1、A、PSW、DPTR。
程序清单如下:
;
查键值子程序,起始地址为KEY20
KEY20:
PUSHACC;
暂存关键值
MOVR1,#00H;
查键值自变量清0
KEY21:
JNBACC.4,KEY22;
计算列数
RRA
INCR1
SJMPKEY21
KEY22:
MOVA,R1;
按每列4个键计算
MOVB,#4
MULAB
MOVR1,A
POPACC;
恢复关键值
KEY23:
JNBACC.0,KEY24;
计算行数
SJMPKEY23
KEY24:
MOVDPTR,#KEYTAB;
读取键值
MOVA,R1
MOVCA,@A+DPTR
RET
KEYTAB:
DB0FH,0BH,07H,03H
DB0EH,0AH,06H,02H
DB0DH,09H,05H,01H
DB0CH,08H,04H,00H
2.键盘扫描子程序自身无法运行,为了运行这个子程序,另编写以下程序:
MOVSP,#6FH
MOVR0,#5;
LOOP1:
MOVR1,#200
LOOP2:
MOVR2,#250
DJNZR2,$
DJNZR1,LOOP2
DJNZR0,LOOP1
MOVDPTR,#(ADD_8255+3);
8255初始化
MOVA,#10000001B;
A口、B口方式0输出,C口高4位输出,低4位输入
MOVX@DPTR,A
LOOP3:
LCALLDISP;
调用显示子程序DIS,设显示子程序入口为DISP
LCALLKEY;
调用键盘扫描子程序,设键盘扫描子程序入口为KEY
CJNEA,#0FFH,LOOP4;
如果有键按下转
SJMPLOOP3
LOOP4:
MOV20H,21H
MOV21H,22H
MOV22H,23H
MOV23H,24H
MOV24H,25H
MOV25H,A
其中显示子程序使用实验3中的显示子程序。
程序运行后,每按一键便从显示器的右端移入一个对应的数。
2.建立一个工程,将在预习中做好的实验内容1和2的程序以及实验5中的显示子程序拷贝到一个的*.asm文件加入。
4.按下键盘上的各键,相应的数字会出现在LED显示器上。
注意使用的计数单元不要与程序中其他处所使用的单元发生冲突。
6.若有键按下,则读回的行状态中对应的位是0,否则对应的位就会是1。
7.判断列驱动码是否超出,可以用检测0位的方法实现。
8.在调用查键值子程序时,要保证累加器A的高4位是本次扫描的列驱动码,低4位是本次扫描读入的行状态。
9.“读行状态直到键松开”,是反复读入行状态,直到读入的各位状态都为“1”。
注意只有低4位是有效的,要将无用且不定的高4位滤掉。
10.开关KC倒向上方。
实验5A/D转换
掌握用ADC0809实现A/D的方法。
电位器W1将+5V电压分压后送入ADC0809的输入IN4~IN7,调节电位器W1可以获得0~+5V的电压输入。
ADC0809的接口参数如下:
输入电压范围0~+5V
启动IN0~IN7A/D转换写任意数到8000H~8007H取转换结果读8000H~8007HEOC通过一个反相器输出
实验内容:
设计一个程序,将IN4输入的0~+5V模拟电压转换成数字量,再将这个2位十六进制转换成3位十进制数,放在LED显示器的第四~六位显示。
其中显示子程序可以用实验3中的子程序。
判断转换是否结束可以将ADC0809的EOC(经反相器)引入到P1.0,然后查询P1.0的状态。
图7-1实验7程序流程图
2.将P0.0~P0.7与U9D0~U9D7连接起来。
3.将P1.0与EOC连接起来。
4.建立一个工程,将在预习中做好的实验程序*.asm文件加入。
5.编译后与单片机硬件连接,运行。
6.旋转电位器W1,LED显示器上的数字应在000000~000255之间变化(因受电位器的调节范围限制,有可能小于这个范围)。
2.EOC是经过一个反相器后输出的,所以要注意转换完成后检测到的是低电平。
3.调用显示子程序32次可以用循环实现,使用的计数单元与显示子程序中用到的不能冲突。
4.开关KC倒向上方。
实验6D/A转换
掌握用DAC0832实现D/A转换的方法。
DAC0832的连接使用单缓冲方式,D/A转换口地址为6000H。
当输入数字量为0~255时,输出电压0~+5V。
可以用这个电压驱动一个微型直流电动机,使它的转速在最慢到最快之间变化。
设计一个程序,在主程序中向P1.0输出频率为1Hz的方波,同时使用定时器1定时中断,在中断服务程序中用D/A转换器输出周期为20秒的三角波。
用一个工作寄存器存放电压值,使用定时器定时中断,每中断一次将电压值送D/A转换器并加1,直到最大值后再改为减1。
周而复始,这样就可以输出三角波。
这个三角波用来控制一个微型直流电动机的转速。
图8-1实验6主程序流程图
N
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 接口 技术 实验 指导书