电子科技大学单片机原理与应用实验.docx
《电子科技大学单片机原理与应用实验.docx》由会员分享,可在线阅读,更多相关《电子科技大学单片机原理与应用实验.docx(19页珍藏版)》请在冰豆网上搜索。
电子科技大学单片机原理与应用实验
教师备课教案本
(实验课程)
系别:
电子工程系
课程名称:
单片机原理与应用
教师姓名:
张正明
授课时间:
2018-2019学年第1学期
电子科技大学中山学院
实验课程授课计划
课程名称
单片机原理与应用
总学时数
16
授课班级
系别:
15级电子系专业班级:
电子信息工程,通信工程
授课地点
A304
编号
实验项目名称
计划学时
周次
1
Keil集成开发环境练习和编程调试
4
2
走马灯实验
4
3
串口通信
4
4
并行模数转换
4
考核要求
每次实验占25分。
注:
如授课时间适逢节假日冲突则顺延或另行安排。
填表日期:
2008年8月3日
项目名称
Keil集成开发环境练习和编程调试
实验类别
必做
课时安排
4
授课班级
电子信息工程05级
授课时间
授课人数
分组情况
教学
目的
了解Keil系统的环境和程序调试
预习
要求
教
学
内
容
与
过
程
1编写程序,完成内存中两个字节内容的交换。
建立工程文件。
双击桌面的Keil快捷图标,进入Keil集成开发环境。
点击工具栏的Project选项,在弹出的下拉菜单中选择NewProject命令,建立一个新的µVision2工程,为工程取一个名字,并选择将要使用的器件的型号(Philips公司的P80/87C52X2CPU)。
编写程序,加入到刚才建立工程文件中。
在File下采用New命令,建立新文件,送入程序内容,并保存为ASM类型文件。
在ProjectWindos窗口内,选中SourceGroup1后点击鼠标右键,在弹出的快捷菜单中选择AddfilestoGroup“SourceGroup1”(向工程中添加源程序文件)命令,选择刚才创建单击Add命令即可把源程序文件添加到项目中。
ORG0000H
LJMPMAIN
ORG0100H
MAIN:
MOVSP,#60H;SP=?
MOVR0,#30H;R0=?
MOVR1,#40H;R1=?
MOV@R0,#55H;(30H)=?
MOV@R1,#0AAH;(40H)=?
MOVA,@R1;A=?
XCHA,@R0;A=?
(30H)=?
XCHA,@R1;A=?
(40H)=?
;下面是另一种方法
MOV@R0,#33H;(30H)=?
MOV@R1,#44H;(40H)=?
MOVA,@R0;A=?
PUSHACC;SP=?
(61H)=?
MOVA,@R1;A=?
PUSHACC;SP=?
(62H)=?
NOP
POPACC;SP=?
A=?
MOV@R0,A;(30H)=?
POPACC;SP=?
A=?
MOV@R1,A;(40H)=?
NOP
SJMP$
END
选择Project下的Rebuildalltargetfiles对工程文件进行汇编和连接,如果出错,系统会提示出错并指出出错地方和出错类型,请按照提示返回程序进行修改,直到系统提示没有错误,表明程序没有语法错误,可以进行动态调试了。
选择Project下的Optionsfortarget‘Target1’进行动态调试的参数设置,点击debug,再点击UseSimulator,最后点击完成。
对程序进行动态调试,查看相关寄存器、内存和外部存储器的内容。
常用的工具条上的命令有开始/暂停动态调试
,单步执行
或
,执行到光标处
等。
查看存储器内容的方式是在存储区地址写上要查看的初始地址就可以了。
比如D:
0000H,C:
0000H,X:
0000H。
将每行程序执行后的结果写到该行程序的注释部分。
2编写一个数据填充和数据块搬移程序。
仿照实验内容和步骤1的过程,建立、编辑、汇编、连接和动态调试程序,查看和验证数据区的内容是否正确。
ORG0000H
LJMPMAIN
ORG0100H
MAIN:
MOVR0,#30H;R0指向30H单元
MOVR2,#16;R2作循环计数器
NEXT1:
MOV@R0,#'*';填充当前单元
INCR0;指针下移一个单元
DJNZR2,NEXT1;未填完16个单元,继续
;以下程序将30H开始的16个字节内容送到100H开始的外部存储器中
MOVR1,#30H
MOVDPTR,#0100H
MOVR3,#10H
NEXT2:
MOVA,@R1
MOVX@DPTR,A
INCR1
INCDPTR
DJNZR3,NEXT2
SJMP$
END
3编写一个多字节的算术运算程序。
仿照实验内容和步骤1的过程,建立、编辑、汇编、连接和动态调试程序,将运行结果写到程序的注释部分。
ORG0000H
LJMPMAIN
ORG0100H
MAIN:
MOVSP,#60H
MOVR1,#12H
MOVR0,#34H;R1R0=?
MOVR2,#21H
MOVR3,#0EFH;R3R2=?
;下面是加法运算
MOVA,R0
ADDA,R2;低8位相加
MOVR4,A;
MOVA,R1
ADDCA,R3;高8位相加
MOVR5,A
MOVA,#0
ADDCA,#0
MOVR6,A;R6存放进位R6R5R4=?
NOP
;以下是减法运算
CLRC
MOVA,R2
SUBBA,R0
MOVR4,A
MOVA,R3
SUBBA,R1
MOVR5,A
MOV,#00H
SUBBA,#00H
MOVR6,A;R6R5R4=?
;以下是乘法运算
NOP
MOVA,R0
MOVB,R2
MULAB
MOVR4,A
MOVR5,B
MOVA,R1
MOVB,R2
MULAB
ADDA,R5
MOVR5,A
MOVA,B
ADDCA,#00H
MOVR6,A
NOP
MOVA,R0
MOVB,R3
MULAB
ADDA,R5
MOVR5,A
MOVA,B
ADDCA,R6
MOVR6,A
MOVA,R1
MOVB,R3
MULAB
ADDA,R6
MOVR6,A
MOVA,B
ADDC,#00H
MOVR7,A;R7R6R5R4=?
SJMP$
END
教学
后记
项目名称
实验二走马灯实验
实验类别
必做
课时安排
4
授课班级
电子信息工程05级
授课时间
授课人数
分组情况
教学
目的
1、学会DP-51PRO实验仪监控程序下载、动态调试功能的使用;
2、理解和学会单片机并口的作为通用I/O的使用;
3、理解和学会单片机外部中断的使用;
4、了解单片机定时器/计数器的应用。
预习
要求
教
学
内
容
与
过
程
1.编写一段程序,用P1口作为控制端口,使D1区的LED轮流点亮。
仿照实验一的过程,编写程序、汇编、连接、软件仿真,基本达到功能要求。
ORG0000H
LJMPMAIN
ORG0100H
MAIN:
MOVA,#0FEH;准备点亮第一只发光管
NEXT:
MOVP1,A
ACALLDELAY
RLA;准备点亮下一只发光管
SJMPNEXT
;延时子程序
DELAY:
MOVR2,#5
DELAY2:
MOVR3,#100
DELAY3:
MOVR4,#100
DJNZR4,$
DJNZR3,DELAY3
DJNZR2,DELAY2
RET
END
调试成功以后,将程序中的ORG部分的偏移地址再加上8000H,重新编译。
按照原理图,将A1区P1口的引线分别连接到D1区J52上。
下载监控程序到实验仪上。
短接A1区的JP15,连接实验仪串口和主机的串口,将MOD-SW1拨到LOAD一边,FLASH-E和SRAM-E断开,运行主机上DPFLASH,下在MON51.HEX到实验仪上。
在Keil系统上,完成程序的动态调试。
在主菜单DEBUG下的OptionsforTarget‘Target1’,点击Debug,选择UseKeilMonitor-51Driver,并且设置其他参数,将MOD-SW1拨到RUN一边,就可以进行动态调试了。
观察和记录各个寄存器内容的变化,端口P1的内容变化,以及对应的LED的变化。
全速运行时,观察LED的变化。
2.编写一段程序,用P1口作为控制端口,使D1区的LED轮流点亮。
用外部中断0控制走马灯的暂停/继续。
ORG0000H
LJMPMAIN
ORG0003
LJMPZEX0
ORG0100H
MAIN:
MOVSP,#60H
CLRIT0
SETBEX0
SETBEA
MOVA,#0FEH;准备点亮第一只发光管
MOVR5,#00H
NEXT:
CJNER5,#00H,NEXT;00表示继续,FF表示暂停
MOVP1,A
ACALLDELAY
RLA;准备点亮下一只发光管
SJMPNEXT
;延时子程序
DELAY:
MOVR2,#5
DELAY2:
MOVR3,#100
DELAY3:
MOVR4,#100
DJNZR4,$
DJNZR3,DELAY3
DJNZR2,DELAY2
RET
;外部中断0服务子程序
ZEX0:
PUSHACC
MOVA,R5
XRLA,#0FFH
MOVR5,A
POPACC
RETI
END
将A1区P1口的引线分别连接到D1区J52上,将D1区的J53的KEY1连接到A1区的外部中断0上。
3.编写一段程序,用P1口作为控制端口,使D1区的LED轮流点亮。
用定时/计数器0控制走马灯的闪烁速度。
ORG0000H
LJMPMAIN
ORG000BH
LJMPZIT0
ORG0100H
MAIN:
MOVSP,#60H
MOVTMOD,#01H
MOVTH0,#3CH
MOVTL0,#0B0H
MOVR6,#20
MOVR7,#0FEH;准备点亮第一只发光管
SETBET0
SETBEA
SETBTR0
SJMP$
;定时中断0服务子程序
ZIT0:
DJNZR6,ZRET
MOVA,R7
MOVP1,A
RLA
MOVR7,A
MOVR6,#20
ZRET:
RETI
END
改变程序中R6的值,观察走马灯的移动速度。
教学
后记
项目名称
实验三串口通信
实验类别
必做
课时安排
4
授课班级
电子信息工程05级
授课时间
授课人数
分组情况
教学
目的
1、学会实验仪用户程序的下载和执行;
2、理解单片机的串口通信原理,学会单片机串行口的使用;
3、学会单片机串行口中断的使用。
预习
要求
教
学
内
容
与
过
程
1、编写一段程序,利用单片机的串行口向PC机发送字符串。
在下面的原理图中,短接JP15就将单片机的串口,通过MAX232和插座连接到主机的串口信号线上了。
编写程序,成功通过KEIL系统的编辑、编译和部分程序的动态调试。
ORG0000H
LJMPMAIN
ORG0050H
DB'WELCOMETOZSC'
ORG0100H
MAIN:
CLREA
MOVSP,#60H;给堆栈指针赋初值
MOVTMOD,#20H;设置T1为方式2
MOVTH1,#0FDH;设置波特率为9600
MOVTL1,#0FDH
MOVSCON,#40H;设置串口位方式1
MOVPCON,#00H
SETBTR1;定时器1开始计数
MOVR7,14
MOVDPTR,#0050H
LOOP:
MOVA,#00H
MOVCA,@A+DPTR
MOVSBUF,A;开始发送
JNBTI,$
CLRTI
INCDPTR
DJNZR7,LOOP
SJMP$
END
连接实验仪的串口和主机的串口,参照实验二中的方法将用户程序下载到单片机的FLASH中。
运行主机上的DPFLASH,点击主菜单上的串口调试器,并设置相应的参数。
将MOD-SW1拨到RUN一边,按一下复位键,程序就开始运行了。
观察主机上接收到的字符串。
2、编写一段程序,接收主机串行口发送来的字符,在单片机接收到‘A’的时候返回一个‘T’表示正确,否则返回一个‘F’表示错误。
ORG0000H
LJMPMAIN
ORG0100H
MAIN:
CLREA
MOVSP,#60H;给堆栈指针赋初值
MOVTMOD,#20H;设置T1为方式2
MOVTH1,#0FDH;设置波特率为9600
MOVTL1,#0FDH
MOVSCON,#50H;设置串口位方式1
MOVPCON,#00H
SETBTR1;定时器1开始计数
LOOP:
JNBRI,$
CLRRI
MOVA,SBUF
CJNEA,#'A',FSEND
MOVA,#'T'
AJMPSEND
FSEND:
MOVA,#'F'
SEND:
JNBTI,$
CLRTI
MOVSBUF,A;开始发送
SJMPLOOP
END
3、采用串行口中断方式,实现实验内容和步骤2的要求。
ORG0000H
LJMPMAIN
ORG0023H
LJMPZRS232
ORG0100H
MAIN:
CLREA
MOVSP,#60H;给堆栈指针赋初值
MOVTMOD,#20H;设置T1为方式2
MOVTH1,#0FDH;设置波特率为9600
MOVTL1,#0FDH
MOVSCON,#50H;设置串口位方式1
MOVPCON,#00H
SETBES
SETBTR1;定时器1开始计数
SETBEA
SJMP$
ZRS232:
JBRI,ZR
ZT:
CLRTI
AJMPZEND
ZR:
CLRRI
MOVA,SBUF
CJNEA,#'A',FSEND
MOVA,#'T'
AJMPSEND
FSEND:
MOVA,#'F'
SEND:
MOVSBUF,A;开始发送
ZEND:
RETI
END
教学
后记
项目名称
实验四并行模数转换
实验类别
必做
课时安排
4
授课班级
电子信息工程05级
授课时间
授课人数
分组情况
教学
目的
1、了解系统设计的基本概念;
2、掌握A/D芯片ADC0809与单片机的接口方法及ADC0809芯片性能;
3、了解单片机实现数据采集的方法。
预习
要求
教
学
内
容
与
过
程
1.编写一段程序,使P3.5口输出不同频率的脉冲,控制蜂鸣器发出不同的音调,并且输入0~255用以改变蜂鸣器的音调;将P3.5和J8相连接。
DACDATA30H
ORG0000H
LJMPMAIN
ORG0100H
MAIN:
MOVDAC,#44
LOOP:
MOVR7,DAC
SETBP3.5
LOOP1:
MOVR6,#3
DJNZR6,$
DJNZR7,LOOP1
MOVR7,DAC
CLRP3.5
LOOP2:
MOVR6,#3
DJNZR6,$
DJNZR7,LOOP2
AJMPLOOP
END
改变DAC的值,观察声调的变化。
2.AD0809DATA7000H
DACDATA30H
TIME0HEQU00H
TIME0LEQU00H
ORG0000H
LJMPMAIN
ORG0003H
LJMPZEX0
ORG000BH
LJMPZINT0
ORG0100H
MAIN:
MOVSP,#60H
SETBIT0
SETBEX0
SETBEA
MOVDPTR,#AD0809
MOVX@DPTR,A
MOVTMOD,#01H
MOVTH0,#TIME0H
MOVTL0,#TIME0L
MOVDAC,#44
LOOP:
MOVR7,DAC
SETBP3.5
LOOP1:
MOVR6,#3
DJNZR6,$
DJNZR7,LOOP1
MOVR7,DAC
CLRP3.5
LOOP2:
MOVR6,#3
DJNZR6,$
DJNZR7,LOOP2
AJMPLOOP
ZEX0:
PUSHPSW
PUSHACC
MOVDPTR,#AD0809
MOVXA,@DPTR
MOVDAC,A
POPACC
POPPSW
RETI
ZINT0:
CLRTR0
MOVTH0,#TIME0H
MOVTL0,#TIME0L
MOVDPTR,#AD0809
MOVX@DPTR,A
SETBTR0
RETI
END
ADC0809的时钟从B2区的时钟源获取,选用时钟源的1/32分频(也可以通过D触发器将单片机ALE信号分频获取)。
使用导线把A2区的J66接口与B4区的J1接口从A0~A2到ADDA~ADDC分别对应相连;使用导线把A2区的J63接口的A15与B4区J1接口的/0809CS相连;使用导线把A2区的J58接口的INT0与B4区J1接口的/EOC相连;使用导线把A2区的J58接口的T1与D4区的J8接口的BUZZ相连;使用导线把B4区的J1接口的+Vref、-Vref分别与VCC、GND相连;使用导线把B4区的J44接口的IN0与D2区的J18中间接口相连;将B2区J112的1/32分频与B4区J1的AD_CLK连接,短接B2区JP20跳线,X2上接上晶振;使用短路片把W2电位器与VCC、GND相连;
编写汇编程序,实现本实验的模拟要求;
下载程序,运行程序,调节电位器电压,观察蜂鸣器声调的变化;
教学
后记