单片机实验.docx
《单片机实验.docx》由会员分享,可在线阅读,更多相关《单片机实验.docx(23页珍藏版)》请在冰豆网上搜索。
单片机实验
电子技术实验(四)指导书
(单片机原理与接口实验)
物理科学与工程技术学院
电子技术教研室
实验一AT89S52最小系统的制作…...…………………………2
实验二单片机I/O口实验…...…………………………...………3
实验三定时器/计数器、中断实验…...…..…..…..……………9
实验四字符液晶显示实验…...……………………………...……11
附录:
AT89S52下载线说明….......………………………………15
实验一AT89S52最小系统的制作
一、实验目的:
1、制作单片机AT89S52最小系统板,学会如何调试最小系统板。
2、学会制作最小系统板的下载线,并和计算机连接起来进行调试。
二、实验设备:
AT89S52、电阻、电容、电路板、发光二极管、数码管、按键、晶振、芯片插座、万用表、示波器等
三、实验内容:
1、画出PCB板,制作出最小系统的电路板。
2、焊接元器件,并进行调试。
3、进行联机调试。
四、实验说明:
实验原理图围绕着单片机AT89S52为主的一个系统,配以一些外围接口和相关元器件设备。
图1是下载线的原理图,图2是AT89S52最小系统板的原理图。
单片机最小系统设计完成后,依据硬件的设计制作和组装及软件设计完成后,便进入系统的调试阶段。
硬件调试首先排除下面常见的硬件故障:
逻辑错误:
硬件的逻辑错误是由于设计错误或加工过程中的工艺性错误或造成的,包括错线、开路、短路、相位错等。
元器件失效:
一是器件本身已损坏或性能不符合要求;二是由于组装错误造成元器件失效,如:
电解电容、二极管的极性错误,集成块安装方向错误等。
可靠性差:
引起可靠性差的原因很多,如接插件接触不良会造成系统时好时坏,经不起振动。
电源故障:
电压值不符合设计要求,电源引线和插座不对、功率不足、负载能力差等。
调试方法:
脱机调试:
在接上电源之前,先用万用表等工具,根据硬件电气原理图和装配图仔细检查线路的正确性,并核对元器件的型号、规格和安装是否符合要求。
应特别注意电源的走线,防止电源线之间的短路和极性错误。
联机调试:
通过脱机调试可排除一些明显的硬件故障。
有些故障还是要通过联机调试才能发现和排除。
五、实验步骤:
1、根据原理图画出电路图和PCB图。
2、制作出PCB板
3、插放元器件,焊接。
4、检查硬件
5、调试
图1下载线原理图
实验二单片机I/O口实验
一、实验目的:
1.掌握单片机的工作原理
2.验证单片机振荡电路
3.验证单片机的复位电路
4.练习单片机I/O口的基本操作
二、实验设备
AT89S52最小系统板、PC机、示波器、稳压电源、万用表
三、实验内容
1、检测AT89S52最小系统板的工作状态
2、练习基本的I/O口操作
3、完成LED数码管显示
图1AT89S52引脚图
四、电路构成及原理:
1、单片机内部时钟电路(振荡电路)
单片机内部有一个用于构成振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是此放大器的输入和输出端。
在XTAL1和XTAL2两端跨接晶体或陶瓷谐振器就构成了稳定的自激振荡器,其发出的脉冲直接送入内部的时钟电路。
当外接晶振时,
和
值通常选择30PF,在设计印刷电路板时,晶体或陶瓷谐振器和电容应尽可能安装在单片机芯片附近,以减少寄生电容,保证振荡器稳定和可靠工作。
和
对频率有微调作用,振荡频率范围是1.2MHZ~12MHZ。
图2 单片机的振荡电路
2、复位电路
复位是使CPU和系统中其它部件都处于一个确定的初始状态,并从这个状态开始工作。
单片机的复位有上电复位和按钮手动复位两种
(A)上电复位(B)按钮脉冲复位(C)按钮电平复位
图3复位电路
上电复位是利用电容充电来实现的,即上电复位瞬间端RST/VpD的电位与VCC相同,随着充电电流的减少,RST/VpD的电位逐渐下降,图3(A)中8.2K电阻是施密特触发器输入端的一个下拉电阻,时间常数为
。
只要Vcc的上升时间不超过1ms,振荡器建立时间不超过10ms,这个时间常数足以保证完成复位操作。
上电复位所需的最短时间是振荡周期建立时间加上2个机器周期时间。
按钮复位电路有脉冲和电平复位两种可行方案,图3(B)、(C)所示。
第一种方案是由外部提供一个复位脉冲,此复位脉冲应保持宽于2个机器周期。
复位按钮过后,由内部下拉电阻保证复位端变为低电平。
第二种方案是,按下复位按钮时,电源对外接电容充电,使复位端为高电平,复位按钮松开后,电容通过内部下拉电阻放电,逐渐使复位端恢复低电平。
3、I/O的基本操作
连接最小系统板上的8个发光二极管和I/O口,通过控制I/O口的电位来实现8个发光二极管依次从左到右,再从右到左,依次循环不断。
图48位LED
4、数码管显示
单片机I/O的最典型应用是通过I/O口与7段LED数码管构成显示电路。
7段LED数码管,则在一定形状的绝缘材料上,利用单只LED组合排列成“8”字型的数码管,分别引出它们的电极,点亮相应的点划来显示出0-9的数字。
LED数码管根据LED的接法不同分为共阴和共阳两类,了解LED的这些特性,对编程是很重要的,因为不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同的。
下图是共阴和共阳极数码管的内部电路,它们的发光原理是一样的,只是它们的电源极性不同而已。
将多只LED的阴极连在一起即为共阴式,而将多只LED的阳极连在一起即为共阳式。
以共阴式为例,如把阴极接地,在相应段的阳极接上正电源,该段即会发光。
当然,LED的电流通常较小,一般均需在回路中接上限流电阻。
假如我们将"b"和"c"段接上正电源,其它端接地或悬空,那么"b"和"c"段发光,此时,数码管显示将显示数字“1”。
而将"a"、"b"、"d"、"e"和"g"段都接上正电源,其它引脚悬空,此时数码管将显示“2”。
其它字符的显示原理类同。
图54位数码管
图6数码管
图7原理图
所有发光二极管的阴极连在一起接地,当某个发光二极管的阳极加入高电平时,对应的二极管点亮,因此要显示某字型就应使此字型的相应段的二极管点亮,实际上就是送一个用不同电平组合代表的数据字来控制LED数码管的显示,此数据称为字符的段码。
在编写程序前,首先建立一个字型段码表TAB,在表中依次存入所能显示的字型段码。
上图为实验电路图,我们使用AT89S52单片机,电容
、
和晶振组成时钟振荡电路,这部分基本无需调试,只要元件可靠即会正常起振。
和
为单片机的复位电路,89S52的并行口P1.0—P1.7直接与LED数码管的“a-f”引脚相连,中间接上限流电阻
-
。
值得一提的是,89S52并行口的输出驱动电流并非很大,为使LED有足够的亮度,LED数码管应选用高亮度的器件。
五、实验步骤:
1.给单片机提供+5V电源
2.测量单片机的第18、19脚的电压值。
3.验证复位电路
4.将发光二极管与单片机的I/O口相连接
5.编写程序并进行编译
6.将程序烧写进单片机
7.观察并记录实验结果
六、思考题
1、如何实现8位发光二极管按以下方式点亮:
第1位亮、然后第2位亮、….第8位亮、8位同时亮,依次循环不断。
2、为了使LED有足够的亮度,应该有什么的措施?
实验三定时器/计数器、中断实验
一、实验目的:
1.掌握AT89S52单片机内的定时器/计数器的工作方式
2.掌握单片机中断方式
二、实验设备:
AT89S52单片机实验板、PC机、示波器
三、实验内容:
编写程序,实现如下要求:
1.定时器工作方式0,1ms定时,输出2ms方波。
2.定时器工作方式1,1ms定时,输出2ms方波。
3.外部中断方式0,驱动蜂鸣器发声。
四、实验原理:
1.定时
AT89S52单片机内有3个16-bit 定时器/计数器T0、T1和T2,它们的工作方式、定时时间、量程、启动方式等均可以通过程序来设置和改变。
定时器由两特殊功能寄存器TCON和TMOD及T0、T1组成,其中TMOD为模式控制寄存器,主要用来设置定时器/计数器的操作模式;TCON为控制寄存器,主要用来控制定时器的启动与停止。
2.控制寄存器—TCON
TCON的作用是用于控制定时器的启、停及定时器的溢出标志和外部中断触发方式等。
各位定义如下:
位地址
8FH
8EH
8DH
8CH
8BH
8AH
89H
88H
位符号
TF1
TR1
TF0
TR0
IE1
IT1
IE0
IT0
TFi(TF0和TF1)计数器溢出标志。
当定时器/计数器溢出时,该位置1。
使用查询方式,此位作状态位供查询,但在查询后应用软件方式及时清零;使用中断方式时,此位作中断标志,在转向中断服务程序时由硬件自动清零。
TRi(TR0和TR1)定时器运行控制位
TR0=0停止定时器/计数器工作;
TR1=1启动定时器/计数器工作;
由软件使其置1或清零.
IE(IE0和IE1)外中断请求标志位
当CPU采样到INT0(或INT1)出现中断请求时,本位由硬件置1;中断响应后,由硬件自动清0。
IT(IT)和IT1)外中断请求方式控制位
IT=0脉冲方式(后沿原跳有效)
IT=1电平方式(低电平有效)
由软件使其置1或清零。
3.工作方式控制寄存器—TMOD
TMOD是一个专用寄存器,用于控制两个定时器/计数器的工作方式.TMOD寄存器不能位寻址,因此只能用字节传送指令设置其内容,寄存器各位的内容表示如下:
位顺序
B7H
B6H
B5H
B4H
B3H
B2H
B1H
B0H
位符号
GATE
C/T
M1
M2
GATE
C/T
M1
M2
其中:
GATE:
门控位,用来控制定时器启动操作方式。
GATE=0以运行控制位TR0(T1)来启动定时器
GATE=1以外中断请求信号INT0(或INT1)来启动定时器
C/T:
功能选择位。
C/T=0定时工作方式,计数脉冲由内部提供,计数周期等于机器周期。
C/T=1计数工作方式,计数脉冲为引脚T0或T1引入的外部脉冲信号。
M1M2:
工作方式选择位
M1M2=00方式013位计数器,TLi只用低5位
M1M2=01方式116位计数器
M1M2=10方式28位自动重装计数器,THi的值在计数中不变,TLi溢出时,THi中的值自动装入Tli中。
M1M2=11方式3T0分成两个独立的8位计数器,T1停止计数。
4.计数器初始化
确定工作方式、操作模式、启动控制方式—写入TMOD寄存器。
设置定时或计数器的初值—可直接将初值写入TH0、TL0或TH1、TL1中。
根据要求是否采用中断方式启动定时器工作。
定时或计数方式下初值如何确定,定时器选择不同的工作方式,不同的操作模式其计数初值均不相同。
若设最大计数值为M,各操作模式下的M值为:
模式0:
M=
模式0:
M=
模式0:
M=
模式0:
M=256
计数初值的计算:
定时工作方式时,因为计数脉冲由内部供给,是对机器周期进行计数,所以计数脉冲频率为
、计数周期T=
定时工作方式的计数初值X等于:
X
式中:
为振荡器的振荡频率,t为要求定时的时间。
5.中断系统
AT89S52有8个中断源。
中断系统由4个与中断有关的特殊功能积存器(TCON、SCON的相关位作中断源的标志位),中断允许控制寄存器IE和中断顺序查询逻辑等组成。
外部输入中断源
(
)和
(
),3个内部中断源T0和T1的溢出中断源及串行口发送/接收中断源。
和
:
外部中断0和外部中断1,其中断求信号分别由P3.2,P3.3引脚输入。
请求信号的有效电平由IT0和IT1设置,一旦输入信号有效,则将TCON中的IE0或IE1标志位置1,可向CPU申请中断。
TF0和TF1:
定时器0和定时器1的溢出中断。
当T0或T1计数器加1计数产生溢出时,则将TCON中的TF0或TF1置位,向CPU申请中断。
RI和TI:
串行口的接收和发送中断。
6、中断处理过程:
中断处理过程可分为三个阶段:
中断响应、中断处理和中断返回。
中断响应条件:
1、有中断源发出中断请求
2、中断总允许位EA=1,即CPU开中断
3、申请中断的中断源的中断允许位为1,即没有被屏蔽。
中断处理:
CPU响应中断结束后转到中断服务程序的入口。
从中断服务程序的第一条指令开始到返回指令为止,这个过程称为中断处理或中断服务。
不同的中断源服务的内容及要求各不相同,其处理过程也有所区别。
一般情况下,中断处理包括两部分内容:
一是保护现场,二是为中断源服务。
中断返回:
中断处理程序的最后一条指令是中断返回指令RETI。
它的功能是将断点弹出送回PC中,使程序能返回到原来被中断的程序继续执行。
五、实验步骤:
1.电路设计:
图1AT89S52单片机定时器/计数器实验示波器连接图
图2AT89S52单片机中断电路图
2.确定计数时间,求出计数初值。
3.编写实验程序、编译并烧写进单片机
4.连接好示波器实验电路
5.观察并记录实验结果
六、思考题
1、说明单片机定时器及计数器的初值的计算方法。
2、说明单片机定时器工作方式0及方式2在实验中有何区别。
实验四字符液晶显示实验
一、实验目的
1、理解液晶显示模块SMC1602的工作原理
2、掌握液晶显示模块SMC1602的编程方法
3、理解单片机与外围器件接口的电路连接方法以及编程思路
二、实验设备
AT89S52单片机实验板、PC机、数字万用表
三、电路构成及原理
液晶模块与单片机的接口图如下:
各个引脚的功能如下:
编号
符号
引脚说明
编号
符号
引脚说明
1
Vss
电源地
9
D2
DataI/O
2
VDD
电源正极
10
D3
DataI/O
3
VL
液晶显示偏压信号
11
D4
DataI/O
4
RS
数据/命令选择端(H/L)
12
D5
DataI/O
5
R/W
读/写选择端(H/L)
13
D6
DataI/O
6
E
使能喜好
14
D7
DataI/O
7
D0
DataI/O
15
BLA
背光源正极
8
D1
DataI/O
16
BLK
背光源负极
液晶模块的读写时序:
控制接口说明:
1、基本操作时序:
1.1读状态:
输入:
RS=L,RW=H,E=H输出:
D0—D7=状态字
1.2写指令:
输入:
RS=L,RW=L,D0—D7=指令码,E=高脉冲输出:
无
1.3读数据:
输入:
RS=H,RW=H,E=H输出:
D0—D7=数据
1.4写数据:
输入:
RS=L,RW=L,D0—D7=数据,E=高脉冲输出:
无
2、状态字说明
STA7
STA6
STA5
STA4
STA3
STA2
STA1
STA0
D7
D6
D5
D4
D3
D2
D1
D0
STA0—STA6
当前数据地址指针的数值
STA7
读写操作使能
1:
禁止0:
允许
注:
对控制器每次进行读写操作之前,都必须进行读写检测,确保STA7=0
3、RAM地址映射图
控制器内部带有80×8位(80字节)的RAM缓冲区,对应的关系如下图所示:
4、指令说明
4.1初始化设置
显示模式设置
指令码
功能
0
0
1
1
1
0
0
0
设置16×2显示,5×7点阵,8位数据接口
显示开/关及光标设置
指令码
功能
0
0
0
0
1
D
C
B
D=1开显示;D=0关显示
C=1显示光标;C=0不显示光标
B=1光标闪烁;B=0光标不显示
0
0
0
0
0
1
N
S
N=1当读或写一个字符后地址指针加—,且光标加—
N=0当读或写一个字符后地址指针减—,且光标减—
S=1当写一个字符,整屏显示左移(N=1)或右移(N=0),以得到光标不移动而屏幕移动的效果。
S=0当写一个字符,整屏显示不移动
数据控制
控制器内部设有一个数据地址指针,可通过它们来访问内部的全部80字节RAM。
数据指针设置:
指令码
功能
80H+地址码(0—27H,40H—67H)
设置数据地址指针
其它设置:
指令码
功能
01H
显示清屏:
1.数据指针清零
0.所有显示清零
02H
显示回车:
1.数据指针清零
5、初始化过程
延时15ms
写指令38H(不检测忙信号)
延时5ms
写指令38H(不检测忙信号)
延时5ms
写指令38H(不检测忙信号)
(以后每次写指令、读/写数据操作之前均需检测忙信号)
写指令38H:
显示模式设置
写指令08H:
显示关闭
写指令01H:
显示清屏
写指令06H:
显示光标移动设置
写指令0CH:
显示开及光标设置
四、实验内容
用汇编语言或C语言编写程序段,实现在液晶显示器上显示8个字符。
五、实验步骤
1、检查电路连接是否正确无误
2、用汇编语言或C语言编写一段程序,使液晶显示器显示8个字符
3、编译连接并下载程序代码到单片机中,通电运行。
六、思考题
如何让液晶显示器动态显示字符(即从左到右滚屏)?
附录:
AT89S52下载线说明
下面讲一下在下载程序前请确保如下几点:
1.目标板(即需要写入程序的板子)上具备运行程序的硬件条件,亦即一块写入了程序的AT89S52能在该目标板上能正确运行程序,这些硬件条件包括:
5V电源,第31脚EA脚接高电平(EA接高后程序才从内部FLASH开始运行),起振电路正常工作(可以用示波器观察或者使用完用表测量,一般在2点几V)。
2.S52下载线的10芯排针和目标板正确相连(S52下载线的10芯电缆的定义见附录)。
该10芯排针未全部用到,实际使用为5-6芯。
3.请保证对AT89S52供电的电源的质量(保证正确的电平和较低的纹波)和相关下载电缆的焊接质量,这样将大大减少下载失败的几率。
事实上写入失败甚至查找不到器件基本都是由工艺不良导致的。
该“自动完成”选项集成了“擦除器件”、“写器件”、“读器件”三个功能。
基础故障排除提示:
1.确保在目标板上单片机能正常运行(EA=1,晶振起振,电源正常)
2.确保10芯电缆连接正确,同时电缆尽可能短,上限不要超过20CM。
3.如果10芯电缆中的Vcc从目标板取电时出现查找不到器件的情况时建议把10芯电缆中的Vcc悬空。
4.在更改编程器类型后需要重新启动软件,否则将出错。
5.如果出现时而能检测到器件请确保硬件可靠连接,同时降低编程速度为“一般”。
S52下载线10芯引脚定义
S52下载线10芯引脚定义