单片机实验指导书上.docx
《单片机实验指导书上.docx》由会员分享,可在线阅读,更多相关《单片机实验指导书上.docx(67页珍藏版)》请在冰点文库上搜索。
单片机实验指导书上
单片机实验构成目录
基础实验
1keil集成开发环境练习
2汇编指令实验
3端口控制实验
4定时器实验
5流水灯实验
6交通灯实验
7数码管实验
8数码管扫描实验
9键盘扫描实验
10外部中断与计数器实验
11端口扩展实验
12扩展显示实验
13数字时钟设计(秒表设计
14计算器设计
15D/A转换实验
16A/D转换实验
17并行通信实验
18串口通信实验
19多机通信实验
20存储器扩展实验
扩展实验
21C语言程序实验
22发声器实验
23红外探测实验
24红外数据通信实验
25无线通信协议的构建
26步进电机驱动实验
27直流电机驱动实验
28LCD显示实验
29菜单系统设计
30PWM波形调制
31频率测量
32简易数字万用表设计
33点阵汉字显示设计
34Pc键盘实验
35Pc鼠标实验
36无线键盘设计
第一章CS-I型单片机实验开发设备硬件结构简介
CS-I型单片机实验开发设备是由计算机学院独立设计开发,用于《单片机
原理及应用》课程的实验教学。
这套设备的设计和开发采用模块化组合设计,可
以结合不同类型的单片机模块进行实验开发。
针对课程的教学采用了ATMEL公
司的AT89S52单片机芯片,同时配合keil集成开发环境,支持汇编语言和C语
言的程序设计。
本实验教程专门针对51模块。
一功能特点
*使用CPU主模块与实验板分离设计的方式,同时可以兼容不同类型的单片机模块,并可根据用户需要独立设计模块。
*采用ISP通信技术,支持在线编程,方便用户开发。
*采用开关电源设计,安全可靠(板上最高电压不超过18v,驱动电流最高可达5V/3A,过载自动保护,方便用户其他设备的引入
*所有IO端口全部引出,方便与外部端口连接搭配。
*实验板上的功能器件可直接采用跳线器直接连接,减少过多的飞线连接。
*2个端口模拟显示,可直接模拟端口高低电平状态,方便用户观察。
*8个状态开关,可模拟256种开关状态,利用一个端口直接读取。
*交通灯模拟显示。
*6个数码管显示,方便开发秒表,时钟,计算器,以及显示特殊提示信息等。
*一个4*4矩阵键盘,配合状态模拟LED,可作键盘全扫描和逐行扫描,一个shift键,方便键盘功能开发
*独立脉冲产生模块,可产生脉冲及方波,配合中断和计数器使用。
*普通键盘接口和鼠标接口,方便用户开发通信协议。
*采用串转并的方式进行端口扩展,同时配合汉字点阵模块显示,可作汉字显示和字库开发。
*扩展显示模块。
*具有发声器,配合定时器方便用户开发电子音乐盒。
*具备8k字节程序/数据存储器扩展。
*具有RS232转换电路,完成UART通信实验,可与上位机进行通信设计。
*8通道8位A/D转换模块,可外接信号源,方便数据采集。
*8位D/A转换实验,两路模拟量输出。
*具有液晶显示模块接口,方便用户开发液晶显示以及菜单系统的设计。
*红外模块,数据传输载波可调,用户作红外产品开发以及无线通信协议开发。
*电机驱动模块,采用4相步进电机,可实现整步,半步驱动,同时配有直流电机,可直接利用PWM进行直流电机的调速。
二开发板硬件原理
2.1实验开发板功能框图
2.2实验板原理说明
1端口模拟
基本功能:
模拟端口状态以及端口操作。
利用发光二极管的亮灭来反映端口的高
低电平,以反映对端口的操作,可以编辑出各种不同的发光二极管亮灭状态,如
流水灯,指示灯,霓虹灯显示。
2状态开关
基本功能:
利用控制器读取外部开关量状态,以接受外部控制命令。
开关一边连
接到地,端口则由上拉电阻拉高,在开关闭合后,返回低电平,开关断开后,返
回高电平
3交通灯
基本功能:
控制主干道次干道红黄绿交通灯显示,同时利用拨动开关模拟特种车
辆通行,红黄绿交通灯显示原理类似于端口模拟的发光二极管,模拟特种车辆的
拨动开关类似于状态开关操作。
4数码显示
基本功能:
显示0-----f的十六进制数据,通过扫描同时显示6位16进制数据,6
个数码管的数据线复用同一个8位的数据线,P10------P15分别选择6个数码管,
低电平选中,通过循环扫描,使数码管显示数据。
为保证显示不出现闪烁,扫描
频率应大于50HZ,过高的扫描频率会更过的浪费CPU资源,一般扫描频率不大
于80HZ,数码管的8位数据对应数码管上的8个显示点。
16进制数据对应的显
示段码为,
数据段码数据段码
00X3F80X7F
10X0690X6F
20X5BA0X77
30X4FB0X7C
40X66C0X39
50X6DD0X5E
60X7DE0X79
70X07F0X715键盘模块
本电路板键盘采用4*4矩阵键盘方式,表示0-----f,也可以由用户自己定义按键
功能,带一个shift键,shift直接连接到P37,低电平表示按下,设计可以采用
逐行扫描方式,也可以采用全扫描方式,行列和shift均带扫描状态灯,方便用
户扫描调试。
该键盘模块采用低电平扫描,正常的键盘扫描频率一般为24Hz,
6端口扩展
基本功能:
可将端口的3位扩展为N*8位。
由于单片机端口资源有限,实际应
用中往往需要进行端口扩展,本端口扩展方式采用移位方式进行扩展。
本模块可
采用SPI对数据进行输出,然后由扩展模块将数据重新组合为字节且为并行输
出,模块与模块之间通过级联的方式以实现大规模扩展端口的应用,
7存储扩展:
本存储扩展采用一片8KEEROM,即为可写可读存储器,支持掉电保存,可作
为程序存储器,也可作为数据存储器。
只需合理选择控制信号即可完成数据存储
器和程序存储器的选择。
做数据存储器时,EEROM的输出控制端连接单片机的
P3.6,做程序存储器时通过单片机的PSEN端选择。
汇编程序操作方式可以通过
MOVX指令来完成。
应用C语言时,程序中对外部存储器数据的读写可以通过
定义外部变量来实现,C语言的操作方式为:
xdatachardata,定义一个名为data
的变量,并保存在外部存储区。
8A/D转换模块:
基本功能:
将模拟量转换为8位数字信号,8通道,模拟量可采集外部来源,可
直接利用板载旋钮开关控制(板上自带0----3通道模拟量调节。
9D/A转换
基本功能:
将控制器输出的8位数据转换为模拟量,两路模拟量输出,带一路跟
踪输出(模拟量的大小取决于参考电平和采样电阻。
10发声器
本实验设备采用单音驱动蜂鸣器发声,可通过控制器产生一定频率驱动以产生单
音音乐。
该模块由低电平驱动。
11脉冲中断发生器/计算器
该脉冲发生器采用一对红外线对管构成,可以将输出端连接到INT1,INT0以产
生中断(无尖峰脉冲现象,也可以连接到T0,T1端以记录外部脉冲数据。
12串口通信
基本功能:
实现实验板之间以及实验板与PC之间的通信。
与PC之间的通信采
用标准RS232方式实现,数据传输波特率可以采用9600或19200。
单片机的波
特率由定时器2构成。
13红外通信
红外通信采用38K载波传输方式(可以通过调节可调电阻以设置为其他频率载
波传输方式,红外模块由发送部分和接受部分组成,可以实现自发自收受(前
面需加一块反射物体,也可实现实验板之间的通信,通信距离一般为5M(可通过调节功率实现改变传输距离。
该红外模块可以实现对障碍物体的判断,基本原理是:
发生部分发送红外载波,如果前面没有障碍物,接受部分不能收到载波,如果前面有障碍物体,载波将返回被接受模块接受,于是通过接受模块判断是否收到载波就可以判断前面是否有障碍物。
如果在载波上载有数据,则该模块可以进行数据传输。
以上红外数据输出采用串口方式实现。
14电机驱动、
电机驱动部分采用光电隔离,可驱动步进电机和直流电机(配合DA模块可实现精密步进电机控制。
直流电机速度调节可通过调制PWM波实现,步进电机速度调节可通过驱动频率来改变。
15LCD模块
LCD驱动方式可利用其内部控制命令完成对LCD数据的操作,利用单片机端口控制读写和发送控制命令。
16扩展显示模块
采用端口扩展方式实现8个数码管的显示和8个按键状态的读取。
三实验板布局图
四实验开发板的使用
用户可以根据具体实验利用实验板上的功能模块进行实验的设计与开发。
对于具体实验,可以利用跳线器或飞线连接相应的数据线路或控制线路,以选择相应的功能模块。
1跳线器:
用于实验板上相应功能模块的连接。
用户使用某个功能部件时,将相
应的功能模块在跳线位置通过跳线器连接即可。
跳线位置设计在各自的功能模块内,跳线的引脚上均有相应的线路功能说明(通常情况下一边面向处理器的端口,另一边面向功能模块,对于不同的功能模块之间的配合连接,可以采用飞线进行连接。
对于不使用的功能模块,用户最好将该功能模块的跳线断开。
2跳线连接约定。
(等待插入图片说明
3实验板电源,本实验板只允许接220V交流电源,在上电前,最好先关闭实验
板上的电源开关。
本实验设备允许带电拔插CPU模块和下载线模块,以及跳线器和飞线。
实验板不允许与其他电源连接,否则将导致实验板的损坏。
4CPU模块,本实验设备CPU模块采用模块化设计,通过两排排针插入对应的
排座中工作。
CPU模块的连接有一定的方向,应按照固定孔与固定螺钉相对应的方向插入CPU模块,且保证排针与排座的对应性,插入后应使用固定螺钉将CPU模块固定,需要更换CPU时,先将原来的CPU换下。
使用时,注意CPU模块与排针的连接方向,不能过分用力,以造成CPU模块的损坏。
第二章KEIL集成开发环境
一KEIL集成开发环境简介
本实验设备采用KEILC51编译器,支持汇编语言和标准C语言。
随着应用的不断扩大,C51编译器的功能也在不断增强。
目前,C51已被完全集成到uVision2的集成开发环境中,这个集成开发环境包含:
编译器、汇编器、实时操作系统、项目管理器、调试器等。
uVision2IDE可提供灵活的开发环境。
uVision2包含一个器件数据库(devicedatabase,可以自动设置汇编器、编译器、连接定位器和调试器选项,以满足用户选择各种不同型号微控制器的要求。
此数据库包含:
片上存储器和外围设备的信息、扩展数据指针(extradatapointer和加速器(mathaccelerator的特性。
同时,uVision2还可以为片外存储器产生必要的连接选项,以确定起始地址和使用规模。
以下将详细介绍KEIL集成开发环境的使用。
二KEIL集成开发环境的使用
2.1建立工程
点击桌面KEIL图标,如下图所示,进入keil集成开发环境。
桌面上的KEIL快捷图标
如果原来编译过工程,则直接进入上一次编译过的工程页面。
如果做一个新的应用程序的开发,则应该先建立工程并做好工程的相应设置。
⑴点击Project——>newproject来开始一个新工程的建立,如下图
New菜单
(如果原来建有工程,可以直接选择OpenProject菜单打开原来的工程重新编辑
⑵选择路径并保存相应的的保存,如下图
工程保存对话框
为工程命名并保存在相应的目录下(注意保存的路径,对以后建立的其他源文件或头文件,尽量保存在该目录下。
⑶点击保存,进入如下的器件选择界面。
器件选择界面
左边列出的是各CPU制造厂商,因为KEIL支持不同型号的CPU模块,针对具体的单片机芯片,KEIL可以完成特定的编译。
我们的实验板使用的是Atmel公司的At89s52芯片,选择如下:
AT89S52芯片选择界面
左边是我们要具体选择的芯片,右边Description栏给出所选择的芯片的具体参数,如内核、端口数、定时器、内存大小等,以方便使用。
⑷点击确定进入。
弹出如下对话框。
表示是否将系统提供的该芯片的初始化代码拷贝在该工程目录下,由于KEIL连接器能够自动识别器目录下的头文件,所以我们最好选择“否(NO”进入下一步的设置。
如果我们只利用KEIL来编译源程序并进行软件的调试或仿真,我们的工程就建立完毕,但我们需要将源文件编译后下载到我们的实验板上,通过我们实验板上的At89s52中执行,所以我们还需要将工程编译完成后输出一个可执行的文件,因此我们还得对工程做如下设置。
⑸在编译器左边的Files窗口中选中Taget1,点击右键,如下图所示:
TAGET设置
选择“OptionsforTarget1”进入对象的相关设置。
⑹选择output选项,将如图中尖头处的复选框选重,表示程序编译完成后生成可下载执行的16进制文件。
生成的文件自动保存在工程目录下,点击确定,完成工程的建立。
如下图所示:
输出设置
2.2建立文件
⑴工程建立以后,我们需要建立一个文本文件,以便于用户程序的输入。
点击“NewTextFile”图标,如下图所示:
“NewTextFile”图标按纽
⑵文本文件建立后,就可以直接在文本文件中编辑程序了,但建议在编辑源程序以前,最好先将文件保存为特定的格式,如C程序保存为.c文件,汇编程序保存为.asm文件,如下图所示:
文本文件的保存
⑶文件保存后,还需要将该源文件添加到工程下,方法如下:
文件添加到工程中
选择如上图菜单项,将需要的文件添加到该工程目录下。
这样我们就可以在源文件中按照一定的语法格式进行程序的设计,同时编译器将会以特殊的显示方式方便用户的编程,如使用特定颜色显示关键字等。
2.3程序的编译调试
程序编辑完成后,我们可以通过按“F7”直接编译,输出栏中将会提示编译信息。
如错误信息,警告信息,文件的大小等,如下图:
输出窗口
如果程序没有错误,编译器同时将生成16进制文件。
我们可以先用软件来调试程序的运行情况,选择Debug菜单的Start/StopDebugsession,如下图
Debug选择菜单
进入Debug后,我们可以选择多种调试方式,如断点,单步执行,跟踪等,甚至可以直接打开与源程序对应的机器代码,在程序运行过程中,我们同样可以查看CPU的内部资源情况,以及寄存器数据变化情况等。
调试情况下的寄存器查看窗口
我们可以具体选择内部资源的某个模块进行观察,方便程序的调试,下图为资源查看选择方法。
资源查看选择
从上图可以看出,在调试中,我们可以选择内部具体的资源情况进行查看,如中断,IO端口,串口,定时器等,显示所选器件的具体信息。
下图为所选存储器的观察界面:
存储器界面
存储器界面可以仿真内部存储器的内容。
在地址框中输入需要观察的存储器地址,界面中将显示以该地址为起始地址的存储器内容。
地址前面的前缀代表不同的显示内容。
如果在输入的地址前面加前缀“D:
”表示观察内部数据存储区内容;加前缀“C:
”表示观察内部程序存储区内容;加前缀“I:
”表示观察立即地址的内容。
我们也可以通过VIEW菜单项选择机器代码窗口,汇编代码窗口(C源程序,程序性能分析窗口等。
有了这些友好的界面,我们在程序调试过程中,就可以及时掌握程序的运行情况。
2.4程序的下载
编译调试完成后,我们需要将生成的HEX文件下载到实验板上去运行。
运行ISP程序下载软件,将编译器生成的HEX文件装载进实验板的CPU中,下载程序软件界面如下图:
程序下载软件
该软件有以下几个设置。
1参数设置。
可以选择通信的接口,下载速度和相应的器件。
2文件的装载。
负责将HEX文件或二进制文件装载在缓冲区中。
3编程选项。
设置下载时的一些特殊操作(一般情况下,选择“重载文件”,
“擦除”,“FLASH”,文件需要加密时可以选择“加密”选项。
4编程操作。
在软件最下部由一排按钮,“擦除”键允许对CUP芯片整片擦
除,“校验”键校验写入的数据,“读取”键允许将CPU中的程序数据读出,一般情况下我们可以直接点击“编程”键完成相应程序的下载。
三错误警告信息的处理
如果下载线路连接错误,或者实验箱没有开机,则执行下载操作后会提示线路未连接,使用时应确保数据线的连接和实验板处于开机状态。
如果正常操作时依然出现上述问题,此时应用跳线器短接CPU模块中的S跳线,然后选择“擦除”,再拔下跳线,重新下载即可。
第三章基础实验
实验一KEIL集成开发环境练习
1实验目的:
熟悉实验系统的集成开发环境,掌握Keil的基本使用方法。
2实验设备:
硬件PC机一台
软件Windows98/XP系统,KEIL集成开发环境
3实验内容:
1建立一个新的工程。
2建立一个汇编预源文件或C源文件,并添加到工程中去。
3设置编译连接控制选项。
4编译连接工程。
4实验预习要求:
仔细阅读本实验手册第二章“Keil集成开发环境学习”。
5实验步骤:
1启动keil集成开发环境,并新建一个工程。
2选择路径保存工程,选择ATMEL公司的AT89S52芯片。
3设置工程输出选项,保证工程编译生成十六进制文件。
4建立一个新的文本文件,同时保存为*.C格式或*.ASM文件格式。
5将新建的文本文件添加到工程目录下。
6编译空的工程文件,仔细观察输出提示。
7进入调试模式,尝试打开寄存器窗口,存储器窗口,以及IO端口,定时
器,中断,串口等资源窗口,仔细观察窗口中所列出的寄存器样式。
8退出调试模式,在文本文件中输入程序关键字,如#include,voidmov
等,观察关键字颜色情况。
9尝试菜单其他的一些设置。
6思考题:
1如果要为已存在的工程重新选择器件,该如何操作?
2工程中如果添加了多个源文件,按F7编译的文件是哪一个?
如何在该工程下实现分开编译?
编译后的16进制文件名为哪个?
实验二汇编指令实验
1实验目的:
1熟悉Keil集成开发环境,学习使用Debug进行软件调试仿真。
2掌握51汇编指令的用法,理解汇编程序的格式,并能够编写简单的汇编程序。
3了解汇编程序的头文件用途,熟练掌握中断存储区的意义和堆栈的定义。
2实验设备:
硬件PC机一台
软件Windows98/XP系统,KEIL集成开发环境
3实验内容:
1.建立一个新的工程和源文件,并完成工程的设置和源文件的添加。
2.建立一个完整的汇编语言程序框架。
3.小实验1:
为两个寄存器中置初值,分别将两个寄存器的数据执行加或
减操作,如果运算结果不等于0x8f,将数据保存在数据存储器中0x40
地址中,如果等于0x8f,则将数据保存在数据存储器中0x50地址中。
4.小实验2:
将数据存储器0x40——0x50地址随意赋值,然后利用汇编程
序将数据从小到大重新排列
5.编译连接上述程序,利用Debug调试仿真,验证程序的正确性。
4实验预习要求:
仔细学习《单片微机原理及应用》,熟悉汇编指令系统。
5实验步骤:
1启动keil集成开发环境,并新建一个工程。
建立源文件,完成工程设置和
源文件添加。
2建立汇编程序框架,如头文件的加入,地址定义,结束定义
3在框架中添加程序,或编写子程序,完成以上要求的汇编程序
4按F7编译,观察输出窗口的编译信息,如有错误,在错误信息上点击鼠标
可以直接定位到错误的行
5进入调试模式,打开寄存器窗口和数据存储器窗口
6按F10单步执行程序,寄存器窗口中寄存器和数据存储器中相应数据的变
化情况。
以此验证程序的正确性。
7程序的修改完善。
6以上两个实验的参考流程图:
小实验1参考流程图
小实验2参考流程图
7汇编程序框架
org0000h;程序起始入口或复位中断入口,如有其它中
断在中断地址处定义对应的中断程序入口jmpstart
org0030h;主程序段,必须跳过中断区
start:
movSP,#30H;设置堆栈指针
/*
此处添加用户的应用程序段。
*/
end
8思考题
1.在程序转移中用什么方式实现在条件大于,或小于的情况下控制程序转
移。
2.独立编写通过运算方式产生随机数的子程序,并能保证数据在某一定的
范围。
3.修改实验2,要求数据由从小到大排序改为由大到小排序,并仔细考虑
实现效率问题。
实验三端口控制实验
1实验目的:
1.熟练掌握51单片机8位端口的操作控制。
熟悉对特定端口位的控制。
2.理解51单片机端口驱动原理。
3.熟练掌握端口数据的输出输入特性。
2实验设备
硬件PC机一台
实验开发板一套
软件Windows98/XP系统,KEIL集成开发环境
ISP下载软件
3实验内容
1.使用汇编程序控制端口P1,P2的状态,同时通过模拟模块中的LED的
亮和灭状反映端口P1,P2的数据状态。
可以将端口置特定的数值,观
察状态灯的亮和灭与所置数据的关系。
2.使用汇编程序控制端口P1,P2的特定位的状态,同时观察状态灯的状
态。
3.使用汇编程序读取外部状态开关的状态,同时将开关的状态反映在状态
灯上。
4硬件连接
本实验涉及到端口模拟和状态开关读取两部分,请确保状态灯模块中的跳线器连接在ON端,以打开LED的连接,同时确保状态开关模块中的开关与端口连接的跳线器连接上。
并确认所连接的端口。
5实验原理
1.实验硬件原理
状态开关原理图状态灯原理图
2.实验软件原理
读取状态开关时,如果开关打开,端口对应的位由上拉电阻将电平拉高,读取端口的对应位为“1”;开关闭合后,端口直接连接到地,读取端口的对应位应为“0”,通过此种方法来判断开关是否闭合。
控制状态灯时,当端口输出为低电平时,状态灯的两端存在电势差,驱动发光二极管发光,当端口输出为高时,发光二级管两端均为高电平,无法驱动
发光二极管,发光二极管灭。
通过输出高低电平来控制发光二级管的亮灭,从而可以很直观地模拟端口对应位的电平状态。
6实验预习要求
⑴学习《单片微机原理及应用》教程,掌握单片机的并行输入输出。
⑵熟悉实验开发板的硬件结构和硬件连接,学习跳线连接器的使用。
7实验步骤
1.确保状态开关和状态灯中跳线器的正确连接
2.启动keil集成开发环境,建立一个新工程,选择ATMEL公司的AT89S52
芯片,同时选择对象输出的CreatHEXfile复选框。
3.建立汇编源文件,同时将汇编源文件添加到新的工程下
4.编写程序,控制状态灯的亮灭状态。
5.编写程序,控制状态灯的特定位的亮灭状态
6.编写程序,读取外部状态开关的状态量,并通过P1,P2口的状态灯模
拟显示
7.编译文件,并利用DEBUG调试工具模拟对端口操作的正确性
8.将编译生成的16进制文件下载到实验板上,验证实验程序的正确性。
8状态开关读取与状态灯控制程序参考流程图
9思考题
1若要控制状态灯闪烁,应如何设计该程序?
2根据状态开关的状态数据量,将数据量转换为BCD码,并利用状态灯
显示出来?
3修改9.3实验程序,根据开关的状态数据,控制对应的状态灯闪烁。
4设计一个延时程序,让端口以一定规律灯闪烁。
实验四定时器/计数器实验
1实验目的:
1.熟练掌握51单片机定时器/计数器0,定时器/计数器1,