单片机原理与接口技术实验指导书.docx
《单片机原理与接口技术实验指导书.docx》由会员分享,可在线阅读,更多相关《单片机原理与接口技术实验指导书.docx(45页珍藏版)》请在冰豆网上搜索。
单片机原理与接口技术实验指导书
机械电子工程专业《单片机原理与接口技术》
课程实验指导书
撰写人:
审定人:
目 录
第一部分绪论……………………………………………………………1
第二部分基本实验指导………………………………………………....2
实验一………………………………………………………….…….............2
实验二………………………………………………………………………..9
实验三………………………………………………………………………..11
实验四………………………………………………………………………..14
实验五………………………………………………………………………..17
实验六………………………………………………………………………..19
实验七………………………………………………………………………..21
实验八………………………………………………………………………..23
第三部分扩展实验
实验九………………………………………………………………………..26
实验十………………………………………………………………………..30
实验十一……………………………………………………………………..35
第一部分绪论
本指导书是根据《单片机原理与接口技术》课程实验教学大纲编写的,适用于机械电子工程专业。
一、本课程实验的作用与任务
本课程的实践性较强,安排适当的上机可以帮助学生理解教学内容,锻炼动手能力和综合设计能力。
二、本课程实验的基础知识
熟悉Keil软件的使用,学习过单片机原理与接口技术及有一定的电路常识。
三、本课程实验教学项目及其教学要求
序
号
实验项目名称
学
时
教学目标、要求
1
单片机程序设计
集成开发环境应用
22
掌握实验环境的应用,熟练掌握软件的各项功能
2
定时器/计数器程序
设计实验
22
掌握定时器的几种工作模式,并应用各种模式进行定时
3
数码管显示程序设计实验
22
会对数码管译码,会进行动态显示数据
4
独立式键盘程序设计实验
22
会对独立键盘进行消抖动,会识别按键
5
行列矩阵式键盘程序设计实验
22
会用扫描法识别行矩阵按键
6
秒表显示实验
22
会运用定时、中断知识进行综合设计
7
串口通信实验
22
会编程让单片机和串口进行通信
8
步进电机实验
22
能控制步进电机正传和反转
合 计
116
第二部分基本实验指导
实验一单片机C51程序设计集成开发环境应用
一、实验目的
1.了解集成开发环境KeilVision3文件管理的特点。
2.学会使用开发环境新建文件、编辑、编译程序。
3.掌握开发环境程序设计相关设置及其意义。
二、实验要求
实现单片机P1连接的LED发光二极管实现流水灯功能。
三、实验原理
1.熟练操作开发环境。
2.利用C51相关知识,编写简单程序,生成可执行文件。
3.记录编译错误信息,总结错误原因,写出解决办法。
四、主要仪器及耗材
计算机一台,Keil软件一套,STC-ISPV38A烧写软件一套,开发板一套。
五、实验内容与步骤
一)实验内容:
认识KeilVision3;新建工程、文件;工程参数设置;程序编辑、编译及调试。
二)实验步骤:
1.启动软件KeilVision3,界面如下图:
2.菜单操作Project>NewProject,在出现的对话框中输入工程名称,设计保存路径,然后保存。
3.出现CPU选择对话框,选择所用的单片机,单击确定。
4.出现加入启动代码文件对话框,单击是。
下图为建立完工程后的界面:
5.菜单操作Project>Optionsfortarget“Target1”或者直接在左侧的Target1文件夹图标上单击右键,选择Optionsfortarget“Target1”,出现下图所示的Optionsfortarget“Target1”对话框。
在Target标签下设置晶振频率、编译模式、ROM大小等,在Output标签下设置目标文件路径,是否产生可执行文件及是否产生其他信息。
6.点击File>New菜单或则点击新建图标,然后保存,设置保存路径,注意保存文件格式为:
文件名.ASM。
7.在文件管理窗口中右键单击“SourceGroup1”,选择“AddFilestoGroup‘SourceGroup1’”,选中刚刚新建的程序文件,点“Add”即可把文件加入到工程中。
8.文件管理窗口中双击任何文件名即可把该文件打开,在右边的工作区中可以编辑源程序。
9.程序编辑完成后单击图标编译,编译通过后的界面下图所示。
输出窗口中为编译信息,若有错误,系统提示错误类型及所在的行,根据此信息进行调试,直至程序编译正确通过。
六、实验注意事项
仿真软件Keil可以运行汇编和C程序,注意加入文件的格式,特别注意后缀名是否符合要求。
七、思考题
1.如何改变程序运行速度?
2.为什么要选择芯片类型?
不同类型对调试程序有何影响?
实验二定时器/计数器程序设计实验
一、实验目的
1.了解定时器/计数器在单片机开发中的重要作用。
2.通过本次实验掌握单片机定时器/计数器的编程方法。
3.在应用中巩固学生编程相关知识,对单片机编程的程序结构有初步的了解,对单片机完成控制功能的过程有初步的了解
二、实验要求
用定时器定时方法实现流水灯功能,流水灯跳动频率为1秒。
三、实验原理
单片机的计数器/定时器接收到一个脉冲,相应的寄存器加一(假设采用定时器0的方式0,用到寄存器是TH0,TL0),首先TL0+1,如果TL0溢出(即TL0>0FFH),那么TH0+1,TL0=0,如此循环下去,如果TH0>0FFH且TL0>0FFH则计数器/定时器溢出,TF0=1,如果开中断的话,向CPU发出中断申请信号。
如果THx=0,TLx=0那么可以计数65536,如果计其他数值的数,改变THx,TLx的值即可,比如THx=0,TLx=100就可以计数65436.
如果计数脉冲是周期固定的标准脉冲,就成了定时器;假定单片机的晶振是12MHz,机器周期是1us,单片机把把机器周期1us的信号送到计数器/定时器端口(内部连接),就可以定时了。
如果THx=0,TLx=0那么可以定时65536*T机器周期=65536*1us=65.536ms,改名THx和TLx的值可以定时0~65.536ms。
计数器/定时器有三种方式,方式0、方式1和方式3,其中方式0是13位计数器/定时器,是MCS-51单片机为了兼容MCS-48单片机,这种方式计数/定时值计算复杂,可以用方式1代替,方式1是16位计数器/定时器,如果用作连续计数或定时,记得重新载入THx、TLx的值,方式2是8位计数器/定时器,可自动重载计数/定时值,可用作连续计数或定时的场合;方式3占用两个计数器/定时器,而且都只能用8位,这种方式较少使用,除非计数器或定时器不够用。
方式1的计数寄存器THx和TLx,共16位,可最大计数0~65536,如果需要计数Cx,则,THx,TLx的设置如下:
THx=(65536-Cx)/256TLx=(65536-Cx)mod256.
方式2的定时寄存器TLx,8位,可最大定时0~256*T机器周期,如果需要定时Tx(us),则,THx,TLx的设置如下:
THx=(256-Tx/T机器周期)TLx=256-Tx/T机器周期,可以看出方式2可以循环计数,可以用在连续定时的场合,串行通信的波特率发生器一般有采用定时器1的方式2。
定时/计数值的计算
方式1:
定时值THx=(65536-T定时时间/T机器周期)/256
TLx=(65536-T定时时间/T机器周期)mod256
计数值THx=(65536-X计数)/256
TLx=(65536-X计数)mod256
方式2:
定时值THx=(256-T定时时间/T机器周期)
TLx=(256-T定时时间/T机器周期)
计数值THx=(256-X计数)
TLx=(256-X计数)。
四、主要仪器及耗材
计算机一台,Keil软件一套,STC-ISPV38A烧写软件一套,开发板一套。
五、实验要求与参考程序
实验要求:
用定时器实现流水灯功能,即轮流点亮P0口连接的8张发光二极管,点亮灯的时间间隔为1秒。
2.实例代码:
ORG0000H
LJMPMAIN
ORG0100H
MAIN:
GO:
MOVR0,#08H
MOVA,#111111110B
LOOP:
SETBC
MOVP1,A
RLCA
ACALLDELAY
DJNZR0,LOOP
SJMPGO
DELAY:
MOVTMOD,#01H
MOVTH0,#(65536-50000)/256
MOVTL0,#(65536-50000)%256
SETBTR0
MOVR1,#20
L1:
JNBTF0,$
CLRTF0
MOVTH0,#(65536-50000)/256
MOVTL0,#(65536-50000)%256
DJNZR1,L1
RET
六、实验注意事项
1.根据定时器的不同工作方式进行定时,注意计数值是否自动重载。
2.验证是否定时满足要求。
七、思考题
1.定时器不同方式实现定时有什么不同?
2.影响定时精度有哪些因素?
实验三数码管显示程序设计实验
一、实验目的
1.掌握数码管静态显示与动态显示原理。
2.通过本次实验掌握数码管显示电路的编程方法。
二、实验任务
用数码管动态扫描原理显示学号后八位,要求从左向右显示。
三、实验原理
数码管分共阳极和共阴极,发光颜色也分几种(单红,黄,蓝,绿,白,七彩等);数码管的封装分为单独一体的,两位一体的,三位一体,四位一体等;
数码管的显示分:
动态扫描和静态扫描。
数码管的显示的原理和发光二极管相同,数码管的8个发光二级连接在一起,连接方法中的共同部分如果是阳极那么这个数码管称为共阳极数码管,反之,称为共阴极数码管;其中共阳极或共阴极称为位码,其他八位称为段码。
上图的数码管就是共阴极数码管。
其中四位一体数码管,内部的四个数码管共用a~dp这8根数据线,为人们的使用提供了方便,因为里面有四个数码管,所以它有四个公共端,加上a~dp,共有12个引脚。
动态扫描原理:
设定数码管显示12345678
显示流程:
单片机送1的段码给数码管,并选中位码1,延时2ms;
单片机送2的段码给数码管,并选中位码2,......单片机送8段码给数码管,并选中位码8;单片机送1的段码给数码管,并选中位码1,如此循环,由于眼睛对2ms的短暂闪烁感觉不出来,所以看到的数码管显示和要求的显示一致的;但如果延时时间过大,就会发现显示数字闪动,这种扫描方法就是根据人眼的视觉停顿,使人眼分辨不出闪动频率很高的数码管数字。
四、主要仪器及耗材
计算机一台,Keil软件一套,STC-ISPV38A烧写软件一套,开发板一套。
五、实验内容与步骤
1.新建工程,建立文件扩展名为ASM的文件;
2.置工程选择project->OptionforTarget'Target1',把文件加入到工程中;
3.输入所编写的程序。
4.编译,无错误后,用STC单片机烧写软件烧写进单片机中,注意串口和单片机型号不要错,单片机冷启动后启动烧写。
六、实验参考程序
动态扫描:
GO:
PUSHACC
MOVCA,@A+DPTR
MOVP0,A
MOVA,R0
MOVP2,A
RLA
MOVR0,A
ACALLDELAY
POPACC
INCA
DJNZR1,GO
延时程序:
DELAY:
MOVR5,#2
DEL:
MOVR7,#100
DEL1:
MOVR6,#225
DEL2:
DJNZR6,DEL2
DJNZR7,DEL1
DJNZR5,DEL
RET
数码管段码:
TAB:
03H,9FH,25H,00H,99H,49H,41H,1FH,01H,09H
七、实验注意事项
1.选择合适的延时时间来消除动态显示的抖动。
2.显示时要正确对数码管译码。
八、思考题
1.动态扫描的原理?
2.动态扫描的优缺点?
实验四独立式键盘程序设计实验
一、实验目的
1.通过本次实验掌握独立式键盘的编程方法。
2.在应用中巩固学生去抖等键盘编程相关知识。
二、实验要求
按下独立按键,分别在数码上显示相应1,2,3,4数字。
三、实验原理
当系统需要少量的功能键时,一般采用独立式结构。
独立式按键是各按键相互独立的接通一条输入数据线,每个键的工作不会影响其它的I/0口。
这种键盘结构较为简单,电路采用查询方式。
当某一个键闭合时,相应的I/O口线变为低电平(或高电平)。
当程序查询到低电平的I/O口线时,就可以确定处于闭合状态的键。
这种键盘的优点是电路简单;缺点是当键数较多时,要占用较多的I/O线。
组成键盘的按键有触点式和非触点式两种,单片机中应用的一般是由机械触点构成的。
在下图中,当开关S未被按下时,P1.0输入为高电平,S闭合后,P1.0输入为低电平。
由于按键是机械触点,当机械触点断开、闭合时,会有抖动动,P1.0输入端的波形如图所示。
这种抖动对于人来说是感觉不到的,但对计算机来说,则是完全可以感应到的,因为计算机处理的速度是在微秒级,而机械抖动的时间至少是毫秒级,对计算机而言,这已是一个“漫长”的时间了。
只按了一次按键,可是计算机却已执行了多次查询或中断的过程。
为使CPU能正确地读出P1口的状态,对每一次按键只作一次响应,就必须考虑如何去除抖动,常用的去抖动的方法有两种:
硬件方法和软件方法。
1.软件法,在单片机获得P1.0口为低的信息后,不是立即认定S1已被按下,而是延时10毫秒或更长一些时间后再次检测P1.0口,如果仍为低,说明S1的确按下了,这实际上是避开了按键按下时的抖动时间。
而在检测到按键释放后(P1.0为高)再延时5-10个毫秒,消除后沿的抖动,然后再对键值处理。
不过一般情况下,我们通常不对按键释放的后沿进行处理,实践证明,也能满足一定的要求。
当然,实际应用中,对按键的要求也是千差万别,要根据不同的需要来编制处理程序,但以上是消除键抖动的原则。
2.硬件法
如图所示RS触发器为常用的硬件消抖。
图中两个与非门构成一个RS触发器,当按键未按下时输出高电平;按下时输出低电平。
四、主要仪器及耗材
计算机一台,Keil软件一套,STC-ISPV38A烧写软件一套,开发板一套。
五、实验内容与步骤
1.新建工程,建立文件扩展名为ASM的文件;
2.置工程选择project->OptionforTarget'Target1',把文件加入到工程中;
3.输入所编写的程序。
4.编译,无错误后,用STC单片机烧写软件烧写进单片机中,注意串口和单片机型号不要错,单片机冷启动后启动烧写。
六、程序参考
检测按键程序(包括按键释放和消抖动):
LL:
JBP3.1,LL
ACALLDELAY
JBP3.1,LL
JNBP3.1,$
...
显示程序:
S1OK:
MOVP0,#0F9H;
MOVP2,#11111110B
七、注意事项
1.消抖动要考虑延时时间和判断按键释放的判断。
2.识别按键要考虑两个按键同时按下的情况。
八、思考题
1.消抖动的原理?
消抖动需要延时多长时间?
2.如何识别按键?
实验五行列矩阵式键盘程序设计实验
一、实验目的
1.掌握行列矩阵键盘扫描原理。
2.通过本次实验掌握行列矩阵键盘电路的编程方法。
二、实验任务
若按下16个按键之一,数码管能显示出来,分别用行列矩阵和数码管动态扫描原理进行编程。
三、实验原理
行列式键盘的接法比独立式键盘的接法复杂,编程实现上也会比较复杂。
但是,在占用相同的I/O端口的情况下,行列式键盘的接法会比独立式接法允许的按键数量多。
在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,如下图,而是通过一个按键加以连接。
这样,一个端口(如P1口)就可以构成4*4=16个按键,比之直接将端口线用于键盘多出一倍,而且线数越多,区别越明显。
由此可见,在需要的键数比较多时,采用矩阵法来做键盘是可行的。
矩阵式结构的键盘比直接法要复杂一些,识别也较复杂;按键处于行线和列线的交叉处,如果按下按键则行线和列线短路,矩阵键盘行线单片机I/O口作为输出端,而列线接的单片机I/O口的输入,扫描按键时,单片机输出低电平使行线电平置低,没有按键被按下时,列线的输出为高电平,当有按键(如A)被按下时,某个行线(R2)和列线(C2)短路,列线(C2)被拉成低电平,通过检测算法就可检测按键的值。
四、主要仪器及耗材
计算机一台,Keil软件一套,STC-ISPV38A烧写软件一套,开发板一套。
五、实验内容与步骤
1.新建工程,建立文件扩展名为ASM的文件;
2.置工程选择project->OptionforTarget'Target1',把文件加入到工程中;
3.输入所编写的程序。
4.编译,无错误后,用STC单片机烧写软件烧写进单片机中,注意串口和单片机型号不要错,单片机冷启动后启动烧写。
六、实验注意事项
1.软件调试时确认数码管的译码正确。
2.矩阵键盘的扫描程序要考虑按键消抖。
七、思考题
1.键盘扫描的工作原理。
2.P0、P2口的作用
3.
实验六秒表显示实验
一、实验目的
a)进一步掌握定时器工作原理和应用
b)掌握定时器中断嵌套和控制方法
八、实验任务
用定时器和数码管做一个0-99的循环显示定时,每次间隔一秒,超过99后从0开始显示
九、实验原理
中断是单片机的一个亮点,在CPU正常工作情况下,有重要的任务,可以不需要等待,使用中断,优先执行此重要的任务,执行完后还可以继续执行刚才的程序。
中断这种方法,既不耽误重要任务,重要任务执行完后,也不会妨碍了正常操作的执行。
中断的特点及应用注意事项:
1.中断最大的优点是实时性,而且与查询法相比,占用CPU的时间只是在中断期间,而查询法可能会一直占用CPU时间。
2.中断的应用要比查询复杂,调试难度较大,如果中断任务多而且比较频繁的时候,CPU很大的时间花费在进出中断程序了,如果时序没有安排好,更会造成一个中断还没结束,另一个又接踵而至,造成系统的瘫痪,这时候尽可能采用中断结合查询的方法来减轻CPU的负担。
3.中断难点
1)设置难:
设置的参数比较多,需要设置中断入口和出口参数(保护断点、保护现场、开关中断等);需要设置中断优先级;如果中断信号不匹配时候需要更改硬件电路,外部中断还需要设置触发方式(电平触发或边缘触发);
2)调试难:
中断的发生是满足条件下随机发生的,不像子程序的执行是知道的,这给调试中断带来了一定的困难;
定时器常用中断方式的基本程序
ORG0000H
LJMPMAIN
ORG000BH/*中断服务程序入口地址*/
LJMPITIM0
MAIN:
ANLTMOD,#0F0H/*设置工作模式*/
ORLTMOD,#02H/*设置时尽量不影响其它设置*/
MOVTH0,#05H/*设置定时值*/
MOVTL0,#05H
SETBEA/*总中断开*/
SETBET0/*计数器/定时器x中断开*/
SETBTR0/*启动定时器x*/
…
SJMP$
主要仪器及耗材
计算机一台,Keil软件一套,STC-ISPV38A烧写软件一套,开发板一套。
一十、实验内容与步骤
1.新建工程,建立文件扩展名为ASM的文件;
2.置工程选择project->OptionforTarget'Target1',把文件加入到工程中;
3.输入所编写的程序。
4.编译,无错误后,用STC单片机烧写软件烧写进单片机中,注意串口和单片机型号不要错,单片机冷启动后启动烧写。
一十一、实验注意事项
1.充分考虑定时的影响因素,保证计时准确。
2.采用数码管动态扫描原理进行显示。
一十二、思考题
1.中断与查询法在定时器上的区别。
2.提高计时精度的方法。
实验七串口通信
一、实验目的
1.掌握串口通信的基础知识;
2.熟练掌握通信协议于计算机进行通信
二、实验任务
用计算机串口助手发送0-9数字到单片机串行口,单片机收到数据后在数码管上显示出来(单片机通过可以用于烧写用途的USB虚拟串口线和计算机通信)。
三、实验原理
串口通信的概念非常简单,串口按位(bit)发送和接收字节。
尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。
它很简单并且能够实现远距离通信。
通信使用3根线完成:
(1)地线,
(2)发送,(3)接收。
由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。
其他线用于握手,但是不是必须的。
串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。
对于两个进行通信的端口,这些参数必须匹配:
a,波特率:
这是一个衡量通信速度的参数。
它表示每秒钟传送的bit的个数。
例如300波特表示每秒钟发送300个bit。
当我们提到时钟周期时,我们就是指波特率例如如果协议需要4800波特率,那么时钟是4800Hz。
这意味着串口通信在数据线上的采样率为4800Hz。
通常电话线的波特率为14400,28800和36600。
波特率可以远远大于这些值,但是波特率和距离成反比。
高波特率常常用于放置的很近的仪器间的通信,典型的例子就是GPIB设备的通信。
b,数据位:
这是衡量通信中实际数据位的参数。
当计算机发送一个信息包,实际的数据不会是8位的,标准的值是5、7和8位。
如何设置取决于你想传送的信息。
比如,标准的ASCII码是0~127(7位)。
扩展的ASCII码是0~255(8位)。
如果数据使用简单的文本(标准ASCII码),那么每个数据包使用7位数据。
每个包是指一个字节,包括开始/停止位,数据位和奇偶校验位。
由于实际数据位取决于通信协议的选取,术语“包”指任何通信的情况。
c,停止位:
用于表示单个包的最后一位。
典型的值为1,1.5和2位。
由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。
因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。
适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。
d,奇偶校验位:
在串口通信中一种简单的检错方式。
有四种检错方式:
偶、奇、高和低。
当然没有校验位也是可以的。
对于偶和奇校验的情况,串口会设置校验位(数据位后面的一位),用一个值确保传输的数据有偶个或者奇个逻辑高位。
例如,如