MCS51单片机实验指导书.docx
《MCS51单片机实验指导书.docx》由会员分享,可在线阅读,更多相关《MCS51单片机实验指导书.docx(53页珍藏版)》请在冰点文库上搜索。
MCS51单片机实验指导书
MCS-51单片机实验指导书
成都理工大学
2008年3月
引言
单片机技术的出现给现代测控领域带来了一次新的技术革命。
目前,单片机以其高可靠性,在工业控制系统、数据采集系统、智能化仪器仪表等领域得到极其广泛的应用。
因此对于在校的大学生熟练的掌握和使用单片机是具有深远的意义。
通过本实验的学习,可以让学生掌握单片机原理、接口技术及自动控制技术,并能设计一些小型的、综合性的控制系统,以达到真正对单片机应用的理解。
本实验仪可以实现的实验内容:
(1)单片机开发软件及仿真器的使用----Keil7.2学习
(2)I/O口实验(交通灯实验,温度传感器,蜂鸣器、I2C)
(3)定时器实验(流水灯、交通灯、数码管等)
(4)总线实验(流水灯LED、外部RAM)
(5)系统扩展(包括:
LCD、ADC、DAC、RAM等)
(6)通信实验(RS232与计算机之间的串口实验)
(7)传感器实验(1-Wire温度实验)
(8)键盘实验(扫描接口)
(9)电机实验(四相六线式步进电机)
(10)时钟实验(RTC—PCF8563)
(11)软件实验(多个数求和、排序等)
(12)中断实验(外部中断、定时器、UART)
目录
引言2
实验一单片机集成开发环境应用4
一实验目的4
二实验内容4
三实验步骤9
实验二单片机最小系统结构10
一实验目的10
二实验内容10
三实验步骤17
实验三单片机I/O口实验18
一实验目的18
二实验内容18
三实验步骤21
实验四定时器中断21
一实验目的21
二实验内容21
三实验步骤26
实验五系统外设扩展27
一实验目的27
二实验内容27
三实验步骤34
实验六通信实验35
一实验目的35
二实验内容35
三实验步骤39
实验七键盘实验40
一实验目的40
二实验内容40
三实验步骤43
实验八电机实验44
一实验目的44
二实验内容44
三实验步骤46
实验一单片机集成开发环境应用
一实验目的
1.熟悉单片机集成开发软件(Keil);
2.掌握单片机仿真器的使用。
二实验内容
1、集成开发环境Keil介绍及开发流程
KEILuVISION2是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,是众多单片机开发软件之一,它支持众多不同公司的MCS51架构的芯片,它集编辑,编译,仿真等于一体,同时还支持,PLM(产品全生命周期管理),汇编和C语言的程序设计,它的界面和常用的微软VC++的界面相似,界面友好,易学易用,在调试程序,软件仿真方面也有很强大的功能。
以上简单介绍了KEIL51软件,要使用KEIL51软件,必需先要安装它。
KEIL51是一个商业的软件,对于我们这些普通爱好者可以到KEIL中国代理周立功公司的网站上下载一份能编译2K的DEMO版软件,基本可以满足一般的个人学习和小型应用的开发。
安装好后,让我们一起来建立一个小程序项目吧。
即使你手中还没有一块实验板,甚至没有一块单片机,不过没有关系我们可以通过KEIL软件仿真看到程序运行的结果。
首先当然是运行KEIL51软件。
运行几秒后,出现如图1-1的屏幕。
图1-1启动时的屏幕
2、接着按下面的步骤建立您的第一个项目:
(1)点击Project菜单,选择弹出的下拉式菜单中的NewProject,如图1-2。
接着弹出一个标准Windows文件对话窗口,如图1-3,用法技巧也不是这里要说的,以后的章节中出现类似情况将不再说明。
在“文件名”中输入您的第一个C程序项目名称,这里我们用“test”,这是笔者惯用的名称,大家不必照搬就是了,只要符合Windows文件规则的文件名都行。
“保存”后的文件扩展名为uv2,这是KEILuVision2项目文件扩展名,以后我们可以直接点击此文件以打开先前做的项目。
图1-2NewProject菜单
图1-3文件窗口
(2)选择所要的单片机,这里我们选择常用的Ateml公司的AT89C51。
此时屏幕如图1-4所示。
AT89C51有什么功能、特点呢?
请看图中右边有简单的介绍,是英文的。
稍后的章节会作较详细的介绍。
完成上面步骤后,我们就可以进行程序的编写了。
图1-4选取芯片
(3)首先我们要在项目中创建新的程序文件或加入已经存在的程序文件。
如果您没有现成的程序,那么就要新建一个程序文件。
在KEIL中有一些程序的Demo,在这里我们还是以一个C程序为例介绍如何新建一个C程序和如何加到您的第一个项目中吧。
点击图1-5中1的新建文件的快捷按钮,在2中出现一个新的文字编辑窗口,这个操作也可以通过菜单File-New或快捷键CTRL+N来实现。
图1-5新建文件
(4)点击图1-5中的3保存新建的程序,也可以用菜单File-Save或快捷键CTRL+S进行保存。
因是新文件所以保存时会弹出类似图1-3的文件操作窗口,我们把第一个程序命名为test1.c,保存在项目所在的目录中,这时您会发现程序单词有了不同的颜色,说明KEIL的C语法检查生效了。
如图1-6鼠标在屏幕左边的SourceGroup1文件夹图标上右击弹出菜单,在这里可以做在项目中增加减少文件等操作。
我们选“AddFiletoGroup‘SourceGroup1’”弹出文件窗口,选择刚刚保存的文件,按ADD按钮,关闭文件窗,程序文件已加到项目中了。
这时在SourceGroup1文件夹图标左边出现了一个小+号说明,文件组中有了文件,点击它可以展开查看。
图1-6把文件加入到项目文件组中
(5)C程序文件已被我们加到了项目中了,下面就剩下编译运行了。
这个项目我们只是用做学习新建程序项目和编译运行仿真的基本方法,所以使用软件默认的编译设置,它不会生成用于芯片烧写的HEX文件。
图中1、2、3都是编译按钮,不同是1是用于编译单个文件。
2是编译当前项目,如果先前编译过一次之后文件没有做动编辑改动,这时再点击是不会再次重新编译的。
3是重新编译,每点击一次均会再次编译链接一次,不管程序是否有改动。
在3右边的是停止编译按钮,只有点击了前三个中的任一个,停止按钮才会生效。
5是菜单中的它们,我个人就不习惯用它了。
嘿嘿,这个项目只有一个文件,您按1.2.3中的一个都可以编译。
在4中可以看到编译的错误信息和使用的系统资源情况等,以后我们就依靠它来进行查错。
6是有一个小放大镜的按钮,这就是开启\关闭调试模式的按钮,它也存在于菜单Debug-Start\StopDebugSession,快捷键为Ctrl+F5。
图1-7编译程序
(6)进入调试模式,软件窗口样式大致如图1-8所示。
图中1为运行,当程序处于停止状态时才有效,2为停止,程序处于运行状态时才有效。
3是复位,模拟芯片的复位,程序回到最开头处执行。
图1-8调试运行程序
三实验步骤
依照实验内容开始进行实验,熟悉Keil软件的使用,自行建立工程,并新建一个文件(汇编文件为.ASM扩展名,C文件为.C扩展名),编写自己的程序,再把此文件添加到工程当中,最后进行编译,如果没有错误,则进行在线软件的仿真调试。
仿真调试分为两种:
软件仿真和硬件仿真,前者不使用仿真器,后者使用硬件仿真器。
本实验仪提供ISP方式的下载,将KEIL生成的HEX文件下载到单片机的内部flash,重复此部分内容,直到熟练掌握开发环境的使用。
实验二单片机最小系统结构
一实验目的
通过本次实验,使大家了解到有MCS-51单片机构成的最小系统的结构和组成,即:
本实验仪上的核心板最小系统。
二实验内容
1、实现Keil和最小系统的联机调试。
打开Keil软件,新建工程,新建一个程序,用C语言或汇编语言,并添加入新建的工程当中。
调试可以使用,单步、宏单步、断点调试和全速运行等方式,当程序下载到单片机内部flash后,程序会自动执行。
2、认识MCS-51单片机的时序。
MCS-51访问外部储存器的读写时序图别如下所示。
与单片机相连接的外设必须满足此时序才能正确的进行访问。
对于51单片机而言,数据和低8位地址是分时复用的,有P0口输出。
访问外设时,前半周期输出低8位地址,随后输出数据,并且在地址有效时,单片机发出读/写信号,把数据读进单片机或输出(写)到外设。
图2-1外部数据存储器读时序
图2-2外部数据存储器写时序
3、了解MCS-51单片机的最小系统组成,最小系统原理图分为MCS-51单片机的核心电路、RAM扩展电路和译码电路,分别如下所示。
MCS-51单片机的核心电路图主要包括了:
复位电路、振荡电路、电源指示灯、51单片机和ISP(InSystemProgrammable)在系统可编程电路。
图2-4MCS-51单片机引脚
图2-5单片机复位及振荡电路
RAM扩展电路包括了一块用于锁存的8位锁存器74HC573和64Kbit的SRAM(6264)。
图2-6RAM扩展电路
译码电路电路由四二入与非门74HC03和3/8线译码器组成,主要是完成对外部设备访问时,满足相应的时序要求。
图2-7MCS-51核心板译码电路
4、熟悉MCS-51核心板资源分配图。
核心板上的资源定义为:
核心器件(如:
单片机)的多有引脚及地址和数据线。
单片机有四个端口,共32个I/O口,其中,P0口和数据D0--D7时分时复用的;地址线共16条,可以访问64Kbyte的空间;P1口全部引出;由于P3口通常做为第二功能使用,所以图中以它的第二功能画出,分别为:
RXD、TXD(通用串行接口)、T0、T1(定时器外部计数)、INT0、INT1(外部中断口)、WR、RD(系统读写口)。
图2-8核心板资源接口
核心板是从系统主板上取电,从而提供给系统主板上其他的电路部分,即:
系统中的VCC,是由系统核心板提供。
由JP2的第1-4脚(5V)和第5-8脚(GND)给核心板提供电能的。
5、程序设计
(1):
已知内存单元有16个二进制无符号数,分别存放在30H~3FH中,试求它们的累加和,并将其和数存放在R4、R5中。
编程说明:
存放16个二进制无符号数的首地址为30H,此循环程序的循环次数为16次,和数放在R4、R5中。
图2-9程序流程图
程序示例:
START:
MOVR0,#30H
MOVR2,#10H
MOVR4,#00H
MOVR5,#00H
LOOP:
MOVA,R5
ADDA,@R0
MOVR5,A
MOVA,#00H
ADDCA,R4
MOVR4,A
INCR0
DJNZR2,LOOP
END
程序设计
(2):
将内部数据存贮器30H~4FH单元中的内容传送至外部数据存贮器2000H开始的单元中。
编程说明:
内部数据区首址:
R0←30H
外部数据区首址:
DPTR←2000H
循环次数:
R2←32H
图2-10流程图
程序示例:
START:
MOVR0,#30H
MOVDPTR,#2000H
MOVR2,#32H
LOOP:
MOVA,@R0
MOVX@DPTR,A
INCR0
INCDPTR
DJNZR2,LOOP
END
三实验步骤
1、自行分析实验内容中的单片机系统的时序图,并思考如何在系统中配合译码电路实现对外设的访问,这和后续的所有实验课程有很大的联系,主板上的大部分外设都是通过总线的方式来访问的,所以必须掌握单片机的时序,并且学会分析和设计。
2、分析最小系统的四要素,即:
振荡电路、复位电路和单片机的电源去耦和滤波电路、EA引脚(在不需要访问外部存储器时,应该接高电平),系统上电时检测这四点,如果正常,则单片机就会正常工作,可以在系统工作时测试这几点。
3、了解核心板的资源是如何分配的,熟练的掌握这些资源的分配可以为以后的实验打好基础。
实验三单片机I/O口实验
一实验目的
1、熟悉单片机I/O口的特点;
2、掌握单片机I/O口的编程。
二实验内容
1、单片机32条I/O口线的功能,由于P0口在访问外设时做为地址(低8位地址)/数据分时复用,P2口作为16位地址线的高8位地址线,P3口通常是使用它的第二功能,所以I/O实验主要集中在P1口上。
其中P1.4、P1.5、P1.6、P1.7这四条I/O引脚作为步进电机的控制引脚;P1.0、P1.1这两条I/O引脚作为访问I2C总线的SDA(串行数据)、SCL(串行时钟)引脚。
P1.3引脚用来作为1-Wire温度传感器DS18B20,P1.2蜂鸣器的控制引脚
图3-1P0端口的一位结构
2、DS18B20最突出的特点是它是1-Wire接口器件,下图是系统主板上DS18B20的电路图。
R14是4.7K的上拉电阻,这是1-Wire接口的特点,且通常上拉电阻为4.7K。
DS18B20是三条引脚封装,如图可以看出,1脚为地,2脚为数据,3脚为电源。
图3-2DS18B20电路
3、P1端口与P0端口的主要差别在于,P1端口用内部上拉电阻R代替了P0端口的场效应管V2,并且输出的信息仅来自内部总线。
由内部总线输出的数据经锁存器反相和场效应管反相后,锁存在端口线上,所以,P1端口是具有输出锁存的静态口。
由图3-2可见,要正确地从引脚上读入外部信息,必须先使场效应管关断,以便由外部输入的信息确定引脚的状态。
为此,在作引脚读入前,必须先对该端口写入l。
具有这种操作特点的输入/输出端口,称为准双向I/O口。
8031单片机的P1、P2、P3都是准双向口。
P0端口由于输出有三态功能,输入前,端口线已处于高阻态,无需先写入l后再作读操作。
图3-3P1端口的一位结构
4、由图可见,P2端口在片内既有上拉电阻,又有切换开关MUX,所以P2端口在功能上兼有P0端口和P1端口的特点。
这主要表现在输出功能上,当切换开关MUX向左时,从内部总线输出的一位数据经反相器和场效应管反相后,输出在端口引脚线上。
当MUX向右时,输出的一位地址信号也经反相器和场效应管反相后,输出在端口引脚线上。
图3-4P2端口的一位结构
由于8051系列单片机在变量较多时须外接数据存储器(通常为SRAM)才能构成应用电路,而P2端口就是用来周期性地输出从外存中访问的地址(高8位地址),因此,P2端口的切换开关MUX总是在进行切换,分时地输出从内部总线来的数据和从地址信号线上来的地址。
因此P2端口是动态的I/O端口。
输出数据虽被锁存,但不是稳定地出现在端口线上。
其实,这里输出的数据往往也是一种地址,只不过是外部RAM的高8位地址。
5、由图可见,P3端口和Pl端口的结构相似,区别仅在于P3端口的各端口线有两种功能选择。
当处于第一功能时,第二输出功能线为1,此时,内部总线信号经锁存器和场效应管输入/输出,其作用与P1端口作用相同,也是静态准双向I/O端口。
当处于第二功能时,锁存器输出1,通过第二输出功能线输出特定的内含信号,在输入方面,即可以通过缓冲器读入引脚信号,还可以通过替代输入功能读入片内的特定第二功能信号。
由于输出信号锁存并且有双重功能,故P3端口为静态双功能端口。
图3-5P3端口的一位结构
6、程序设计:
P1口编写交通灯程序,调试时连接JP3的8个跳线。
ORG0000H
AJMPMAIN
MAIN:
MOVA,#0FEH;送数据初值
MOVP1,A;数据送P1口点亮发光二极管
ACALLDELAY;延时
MOVR3,#07H;设置左移7次
LOOP:
RLA;左移一位
MOVP1,A;数据送P1口点亮发光二极管
ACALLDELAY;延时
DJNZR3,LOOP;R3是否为0,不为0转LOOP继续执行
AJMPMAIN;返回主程循环执
DELAY:
MOVR7,#255;延时子程序
D1:
MOVR6,#255
D2:
DJNZR6,D2
DJNZR7,D1
RET;子程序返回
END;程序结束
三实验步骤
1、根据上述实验步骤,进行I/O编程,了解MCS-51单片机各端口的特性,并掌握编程的要点。
2、实现交通灯实验:
使用P1口,编写软件延时,实习交通灯实验程序。
3、根据DS18B20的例子,对温度值进行分析,可以参考DS18B20的手册。
4、试根据蜂鸣器的例子,试分析用单片机进行音乐演奏时,须注意的事项,如何把一首曲子,变成单片机能演奏的曲子,编码是如何进行的,节拍和频率如何控制。
实验四定时器中断
一实验目的
1、熟悉单片机中断的概念;
2、熟悉单片机内部定时器的硬件结构;
3、掌握单片机定时器的编程;
4、掌握单片机的时序及锁存器的使用;
5、掌握用定时器实现交通灯和流水灯显示。
二实验内容
1、对于单片机而言,常用的输出设备有:
显示器、指示灯、微型打印机等。
输入/输出设备之间交换信息,有三种信息形式:
数据信息、控制信息和状态信息。
输入/输出设备与MCU的连接是与其外设相连接,并不直接相连,而是通过接口电路进行连接。
它们的连接关系如下图所示。
图4-1MCU与外设的连接
2、所谓中断,是指CPU正在处理某些事务的时候,外部又发生了某一事件,请求CPU及时处理。
于是,CPU暂时中断当前的工作,转而处理所发生的事件。
处理完毕,再回到原来被中断的地方,继续原来的工作。
这样的过程,称为中断。
下图分别为中断方式流程和嵌套流程。
图4-2中断方式流程
图4-3中断嵌套流程
3、单片机共有5个中断源,两个优先级,并可以实现两级中断嵌套。
下图为单片机中断系统结构图。
图4-4中断系统结构
MCS-51单片机响应中断有四个条件:
一、中断源有请求;
二、寄存器IE的总允许位EA=1,且IE相应的中断允许位为1;
三、无同级或高级中断正在服务;
四、现行指令执行完最后一个机器周期。
4、单片机有两个16位的硬件定时器/计数器,分别称为Timer0和Timer1。
每个定时器都有四种工作方式,称为方式0、方式1、方式2和方式3。
工作方式有软件控制。
其结构图如下。
图4-5定时器/计数器结构
单片机的定时器/计数器都统称为定时器,是为定时器是对机器周期进行计数,而计数器是对外部的脉冲进行计数。
通常情况下,都称为定时器。
定时器的四种工作方式是由软件来控制的,如下表所示,定时器工作方式寄存器TMOD中的M0、M1两为决定了它的工作方式。
表4-1定时器的四种工作方式
M1M0
工作方式
说明
00
方式0
13位计数器
01
方式1
16位计数器
10
方式2
自动再装入8位计数器
11
方式3
定时器0:
分为两个8位计数器
定时器1:
对外部停止计数
5、使用单片机的定时器T0产生100ms的定时信号,使实验仪主板上的流水灯(8只红色发光二极管)依次发光,并循环。
设此时系统的时钟频率为6MHz,再根据它来决定定时器T0的初始值。
由于时钟频率为6MHZ,所以,机器周期为2µs。
初始值计算有以下公式的出,t=(216-T0初值)×机器周期,就可以计算出初始值,公式是依据定时器的工作原理的出的,51单片机的定时器是加法计数的,即由有一个数开始,每一个机器周期加一,直至溢出。
6、实验主板上的8只红色发光二极管的亮/灭是由8位锁存器74HC573进行锁存。
电路如下图。
图4-6流水灯电路
由图可以看出,锁存器是挂在系统总线上的,有外部地址进行统一编址,是外部地址64K地址空间的一部分。
74HC573的锁存信号有译码电路产生,又因为573在控制端C引脚为高电平时,数据通道打开,从高变到低时,数据被锁存,所以,C端门控信号是由74HC138译码器的输出端在加一个反相器得到的。
程序设计:
由系统总线扩展IO口,实现流水灯的程序设计。
示例一:
用软件延时实现流水灯的延时。
ORG0000H
AJMPMAIN
ORG0030H
MAIN:
MOVDPTR,#2000H
MOV@R0,#0FEH
MOVA,@R0
MOVX@DPTR,A
ACALLDELAY;延时
MOVR3,#07H;设置左移7次
LOOP:
RLA;左移一位
MOVX@DPTR,A
ACALLDELAY;延时
DJNZR3,LOOP;R3是否为0,不为0转LOOP继续执行
AJMPMAIN;返回主程循环执
DELAY:
MOVR7,#255;延时子程序
D1:
MOVR6,#255
D2:
DJNZR6,D2
DJNZR7,D1
RET;子程序返回
END;程序结束
示例二:
给出定时器的中断服务程序,同学可以进行修改,形成由中断完成的流水灯程序设计。
ORG0000H
LJMPMAIN
ORG000BH
LJMPTIME
MAIN:
MOVTH0,#0D8H
MOVTL0,#0A0H
MOVTMOD,#01H;定时器工作方式1
SETBET0;开定时中断
SETBEA;开总中断
SETBTR0;定时器开始计时
TIME:
MOVTH0,#0D8H
MOVTL0,#0A0H
RETI
三实验步骤
1、首先用软件延时的方法,实现流水灯实验;
2、用定时器设计流水灯实验,让流水灯依次点亮或熄灭,并掌握外部扩展时地址的分配(扩展外部IO,使用锁存器)。
实验五系统外设扩展
一实验目的
1、熟悉单片机系统总线结构;
2、熟悉系统扩展的方法;
3、熟悉t6963控制器LCD的编程时序;
4、了解模数转换器ADC0809、数模转换器AD0832的特点;
5、了解核心板数据存储器SRAM6264的特点;
6、掌握系统扩展的方法及LCD和ADC、DAC及RAM的编程方法。
二实验内容
1、通过上一节的实验,对单片机的总线有了定性的认识,对时序也有了一定的了解。
本次实验,主要是应用总线来实现对系统外设的扩展,扩展是必须由总线来完成对外设的控制。
2、单片机系统的扩展主要有两种:
译码法和线选法。
译码法:
使用专用译码电路(本系统采用74HC138译码器,实现译码),把外部地址空间分为8部分,每一部分8K寻址空间。
线选法:
使用单片机没有使用完的高位地址线,如:
A15、A14、A13等,实现对外部设备的片选。
在两种方法中,译码法可以寻址较多的外设,而线选法能够进行扩展的外设比较有限,所以通常采用译码法。
3、由t6963作为控制器的LCD非常常见,使用非常广泛,所以系统中就使用了基于该控制器的240*128点阵的LCD。
图5-1t6963操作时序图
表5-1指令一览表
使用任何一种类型的LCD都需要对其指令进行学习,这样有利于编程。
表5-1是t6963的操作指令表,主要分为写指令和写数据,以及读状态。
LCD接口电路图如下,可变电阻是由LCD自己提供的负压调整用,可以调