单片机实验指导书.docx
- 文档编号:17475805
- 上传时间:2023-07-26
- 格式:DOCX
- 页数:90
- 大小:637.37KB
单片机实验指导书.docx
《单片机实验指导书.docx》由会员分享,可在线阅读,更多相关《单片机实验指导书.docx(90页珍藏版)》请在冰点文库上搜索。
单片机实验指导书
吉林大学自编教材
单片机实验指导书
陈万忠程禹高威编
吉林大学教材发行与调配中心
2012年11月
一、实验要求
(一)实验课目的
单片机实验指导书是我院本科学生《单片机原理与应用》课程的配套教材。
单片机课程是一门重要的以应用性与技术实践性为鲜明特点的专业基础课,而单片机实验是整个单片机教学过程中的重要组成部分。
本书共选编了个12个实验,实验任务的安排由浅入深、由易到难,从验证性的实验任务逐渐过渡到综合性设计任务。
通过实验达到以下目的:
1.进一步掌握和巩固课堂所学的基本知识,培养运用单片机基本原理来分析、处理和解决实际问题的能力;
2.进行实验基本技能的实习和训练;
3.学会正确观察实验现象、读取和处理实验数据、分析实验结果和编写实验报告;
4.培养实事求是,严肃认真的科学作风和良好的实验习惯。
(二)实验课要求
1.实验前准备
(1)认真预习、仔细阅读实验指导书和有关知识,明确实验的目的、任务,了解实验的基本原理,实验线路及完成实验的方法,步骤;清楚实验中将会观察到的现象、需要记录的数据和注意事项。
(2)认真听取指导教师关于仪器设备的使用方法,搭接实验线路的注意事项等有关内容的讲解和介绍。
2.实验过程中的注意事项
(1)接线应安排合理、清楚整齐,导线的长短要适当,接线不宜过于集中于某一点。
(2)查线
线路接好后,各组同学首先自检,然后请教师检查,经教师检查无误后,方可接通电源进行实验。
(3)实验
通电后,首先观察实验板工作状态是否正常,如发现异常现象,应立即关断电源,查找原因。
如通电后情况正常,则按照实验内容和步骤,有目的的调整参数;注意观察、分析实验中的变化情况,认真分析实验原理,仔细观察、记录实验现象。
在实验过程中,不能只埋头于操作和读数,应随时观察线路和实验板的工作情况,如有发光、发热、声音、气味等异常现象,应立即切断电源,检查故障及原因。
在实验过程中,注意用电规范,确保人身安全。
实验工作结束后,先断开电源,然后再拆线、实验设备复原归位、整理导线和清理桌面。
(三)实验数据整理
实验结果和记录的现象、数据,需经老师签字后方能生效,并作为编写实验报告的依据。
实验结果和数据一经确定,不得随意涂改。
(四)实验报告编写
编写实验报告,是对实验结果的归纳、总结、分析和提高,学生在每次实验后都必须独立完成这项工作。
实验报告的编写按每个实验的要求认真填写。
(五)实验过程中,听从指导教师的指导,保持实验室的清洁。
为了利用有限的实验时间获得最大的收益,我们希望每一个做实验的人都能做到以下四点:
1.做实验之前熟读相关的资料,做到胸有成竹,最好能在课前准备好程序;
2.不放过实验过程中遇到的每一个问题,尽量尝试着自己去解决;
3.不拘泥于本书中的实验要求,敢于按照自己的想法做相关的实验;
4.课后写好实验报告,着重总结实验中遇到的问题和获得的经验。
二、熟悉实验环境
图一和图二是实验所用的单片机实验系统。
S12XS128
BDMconnector
Resetbutton
Crystal
LED
RS232DB9(SCI0)
MAX232
Powersocket
Powersocket
Signalconnector
图一最小系统板
Signalconnector
Signalconnector
keypad
Pulsegenerator
PWMD/Aconvert
Analogvoltage
generator
8LED
switch
I2C
SPI
RS232driver
7SegNumericLED
Connectpoints
图二实验扩展板
2.1实验开发系统简介
1.S12实验开发系统特点
(1)支持MC9S12DG128基本系统(子板)、MC9S12XDP512基本系统(子板)、MC9S12XS128基本系统(子板)等S12基本系统。
(2)可基于监控程序或者BDM方式调试程序。
(3)监控程序或者BDM方式为用户提供了各种基本的开发和调试功能,包括程序的下载和运行、断点设置、单步执行、内存显示修改等。
(4)用户可以实现对自编程序的100%在线实时仿真与监测。
(5)目标评估母板提供了大量外围功能模块,可辅助完成对并行I/O口、外中断、ATD、SPI、SCI等模块的实验和测试,也可直接嵌入到用户应用之中。
2.S12实验开发系统套件
S12实验开发系统套件包括:
(1)核心子板(选用MC9S12XS128核心子板)。
(2)目标评估母板。
(3)5V直流电源。
(4)RS-232串口电缆。
(5)PC终端串口调试程序、软件编程范例、核心子板和目标评估母板原理图。
3.S12实验开发系统对PC的要求
S12实验开发系统对PC的要求如下:
(1)与IBM-PC兼容的计算机,约640KB的内存和1MB以上硬盘空间。
(2)Windows98/NT/2000/XP操作系统。
4.S12实验开发系统与PC的连接
S12实验开发系统与PC的连接如图1所示。
该系统采用RS-232串行总线与PC通信,不需要安装任何驱动程序。
用户只需要将核心子板扣在目标母板的指定位置上,并配置好S12基本系统核心子板,再将其与电源和PC简单地连接起来便可使用。
BDM编程接口用来为目标系统下载程序。
Target
System
HostPC
USB接线
BDM
BKGD
unused
(Vpp)
GND
Vdd
RESET
图1S12实验开发系统与PC的连接示意图
2.2S12实验系统设计框架
S12实验开发系统的硬件部分由核心子板与目标评估母板组成。
核心子板提供了MCU正常工作的基本电路,包括MCU及复位电路、时钟电路、RS-232串行口电路、电源电路等几个部分。
目标评估母板上提供了多个外围硬件电路,包括:
(1)电源输入、与核心子板的接口定义。
(2)8位数字量输入、输出电路。
(3)A/D模拟电平产生电路。
(4)数码管显示电路。
(5)键盘电路。
(6)IRQ中断信号产生电路。
(7)SPI输入、输出电路。
在了解了各外围硬件电路的原理之后,用导线将这些外围电路和单片机相应的I/O口连接,便可以完成各种实验。
母板上提供了许多单孔插座(称为“导线接插点”)以方便导线的插拔。
需要特别说明的是,在目标评估母板上提供了MCU接口插座,其信号定义与MCU的端口定义一一对应,并通过两个欧式插座与核心子板上的MCU同名引脚直接相连。
为了方便初学者迅速学习和掌握各个外围硬件电路的使用方法,我们在下文介绍各个外围电路的同时,也会提供推荐的电路连接方法和对应的C编程实现,供选用。
在本节关于硬件电路的介绍中,提供了许多硬件原理图,其中所有在核心子板或目标评估母板上已有的连接,都以实线表示;而所有需要用户用导线实现的连接(推荐的电路连接),都以虚线表示。
1.目标评估母板与MCU的接口定义
核心子板与目标评估母板之间通过两对64针欧式插座连接,接口的具体定义请参见对核心子板的介绍部分,此处不再赘述。
2.8位数字量输入电路
目标评估母板用拨位开关为用户提供了8位数字量的输入模块,其原理图如图2所示。
当拨位开关状态为OFF时,相应的导线接插点上的电压为高
(1);当拨位开关状态为ON时,相应的导线接插点上的电压为低(0)。
拨位开关两旁的1和0指示了开关拨动的方向所对应的电平高低。
3.8位数字量显示电路
目标评估母板用LED为用户提供了8位数字量的输出模块,其原理图如图3所示。
当导线接插点的接入
电平为高时,LED处于暗状态;当导线
接插点的接入电平为低时,LED处于亮状态。
图28位数字量输入电路
图38位数字量输出电路
4.A/D模拟电平产生电路
目标评估母板为单片机的ATD模块提供了两路模拟电平输入,其原理图如图4所示。
其中,A_IN用于接入外部电路的待测电平,经过保护电路后,电平被限制在-0.3~5.3V之间,再从A_OUT输出。
用户也可以通过调节可调电阻,在0~5V输出端产生0~5V的模拟电平。
5.数码管显示电路
目标评估母板为用户提供了数码管显示模块。
整个模块包括4个选通信号、8个控制信号,其原理图如图5所示。
图4A/D模拟电平输入电路
图5数码管显示电路
注意:
为了减小MCU的灌入电流,将LED显示灯的8个控制信号连接到74LS07作为其电流驱动,该部分没有在图5中标明。
关于74LS07的详细信息可以查阅相关的技术文档。
所使用的数码管器件为LG5641B,其结构框图如图6所示。
该器件包含4个8段数码管,每一个8段数码管都有一个选通引脚SS1~SS4,而8段数据引脚A~G和DP是复用的。
图6LG5641B结构示意图
8段数码管各个引脚与所控制的发光二极管的关系如图12-8所示。
数码管显示模块下方的12个导线接触点按照编号与数码管器件LG5641B的12个引脚一一对应。
所有引脚都是低电平有效。
6.键盘电路
目标评估母板为用户提供了16键贴膜键盘。
可以直接将键盘的8个导线连接点(X1~X4,Y1~Y4)与MCU的键盘中断输入口或通用I/O的8个引脚相连,再通过编程,就可以实现16键键盘输入的确认过程。
采用行扫描法扫描键盘以判断哪个键被按下的原理如下:
将接在4个X端的I/O引脚置为输入,接在4个Y端的I/O引脚置为输出(由于X和Y在这里是对称的,故反之亦然)。
可以定义单片机键盘输入I/O端口的内部上拉电阻有效,当接在X端的I/O端口方向为输入,且没有键按下时,读X端会读到高电平,即逻辑1。
让4个Y端口都输出0,即低电平,如果有任何一个键被按下,如左边第一列中的某一个键,则X1端将会读到0,X2、X3、X4仍为1。
为判断是第一列哪一行的键被按下,需要逐次将Y口的4个输出端中的一个保持为0,另外3个置1,依次测试是哪一行的键被按下。
实际上,判断哪一列有键被按下最多要扫描4次,这个先逐列然后逐行测试的过程称为键盘扫描。
若8个键盘输入口都作为扫描输入端,另外8个口作为扫描输出端就可以扫描64个键的键盘。
如果没有键盘中断功能,单片机需要不停地扫描键盘,例如每秒20次。
由于按下键盘的动作相对于CPU运行速度是一个很慢的过程,触点接触时间在几十到几百ms量级而程序扫描一遍键盘的运行时间只需十几μs。
在实际应用中,要用软件消除键在按下瞬间触点产生的信号抖动,基本做法是,读到按键低电平后,软件延迟20ms后再读一次,以确认键确实被按下。
7.IRQ中断信号产生电路
目标评估母板利用按键和74HCT14芯片,为用户提供了正/负极性单脉冲产生电路,可用于外中断信号的输入。
该电路同时提供了两个导线接触点,分别对应正极性和负极性单脉冲信号的输出。
如图12-10所示,上面的接触点为正极性信号输出端;在按键未按下时保持低电平输出:
按键按下时输出高电平。
下面的负极性信号输出接触点,在按键未按下时保持高电平输出,按键按下时输出低电平。
负极性信号可以直接接到MCU的IRQ引脚,作为MCU的外部中断信号。
8.SPI输入电路
目标评估母板为用户提供了通用芯片74LS165,用于实现8位数字量的SPI输入。
74LS165是8位并行或串行输入/串行输出移位寄存器,用户可以通过8位拨位开关设定74LS165的并行输入值,再通过编程从SPI读入到MCU中。
SPI输入硬件原理和推荐连接方法如图12-11所示。
其中,拨位开关的设置方法与8位数字量输入模块中的设置方法一样。
9.SPI输出电路
目标评估母板为用户提供了通用芯片74LS164,用于实现8位数字量的SPI输出。
74LS164是8位串行输入/并行输出移位寄存器,用户可以通过编程将MCU中储存的数据从SPI输出,经74LS164转换成并行数据后连接到其他输出显示设备(如8位数字量输出模块等)。
实验一I/O口使用练习
1.复位
/*---------------------------------------------------------*/
/************************************************************
实验内容:
MCU复位2011-11-06
实验现象:
运行后,PB口指示灯连续闪烁五次后灭,按复位键后,再闪烁五次。
************************************************************/
/*---------------------------------------------------------*/
#include
#include"derivative.h"/*derivative-specificdefinitions*/
unsignedchark;//用于计数
/*************************************************************/
/*延时函数*/
/*************************************************************/
voiddelay(void)
{
unsignedinti,j;
for(i=0;i<5;i++)
for(j=0;j<50000;j++);
}
/*************************************************************/
/*主函数*/
/*************************************************************/
voidmain(void){
DisableInterrupts;
DDRB=0xff;//PB口输出
PORTB=0x0f;//你可以改变PB口数据,显示不同形式的闪烁,如,0x0F,0xAA,0x55等
EnableInterrupts;
for(k=0;k<5;k++)//5次闪烁
{
delay();
PORTB=~PORTB;
delay();
PORTB=~PORTB;
}
for(;;);//死循环。
//将来应用时,以上可作为你设备的自检程序,
}
2.流水灯
/*---------------------------------------------------------*/
/************************************************************
实验内容:
并口输出,移位使用2011-11-06
实验说明:
最小系统板上有8个发光二级管,每个二极管串联了一个限流电阻,用单片机的PB口控制二极管的亮灭状态,PB口的管脚置1时,二极管熄灭,置0时,二极管点亮。
实验现象:
板上的D1、D2、D3、D4、D5、D6、D7、D8中有一个点亮,并且循环移动。
************************************************************/
/*---------------------------------------------------------*/
#include
#include"derivative.h"/*derivative-specificdefinitions*/
unsignedchardata=0x01;
/*************************************************************/
/*延时函数*/
/*************************************************************/
voiddelay(void)
{
unsignedinti,j;
for(j=0;j<2;j++)
for(i=0;i<60000;i++)
;
}
/*************************************************************/
/*主函数*/
/*************************************************************/
voidmain(void){
DisableInterrupts;
DDRB=0xff;//设置为输出
PORTB=~data;//点亮LED1。
如果不取反,有什么现象?
EnableInterrupts;
for(;;)
{
delay();
data=data<<1;//左移一位,补零
if(data==0)
data=0x01;
PORTB=data;
}
}
实验二中断实用练习
1.IRQ中断控制流水灯
/************************************************************
实验内容:
IRQ中断控制流水灯2011-11-06
实验说明:
用单片机的PB口控制二极管的亮灭状态,管脚置1灭,置0亮。
实验接线:
IRQ-A或者IRQ-B连接目标板上的"HCS12I/O"区域的IRQ引脚上。
实验现象:
如果连接的是IRQ-A,则按键松开灯移动一位;
如果连接的是IRQ-B,则按键按下灯移动一位。
(用下降沿触发中断)
如果使用用XIRQ,将汇编那句注释去掉,中断处理号改为5
************************************************************/
#include
#include"derivative.h"/*derivative-specificdefinitions*/
unsignedchardata=0x01;
/*************************************************************/
/*延时函数*/
/*************************************************************/
voiddelay(void)
{
unsignedinti,j;
for(j=0;j<10;j++)
for(i=0;i<60000;i++)
;
}
/******************PE1口中断设置****************************/
voidIRQ_Init(void){//IRQ中断允许寄存器IRQCR
IRQCR_IRQE=1;//下降沿触发
//IRQCR_IRQEN=1;//中断使能。
复位默认为1,可将此句去掉
}
/*************************************************************/
/*主函数*/
/*************************************************************/
voidmain(void){
DisableInterrupts;//中断禁止
DDRB=0xff;//设置为输出
PORTB=~data;//点亮LED1
asmANDCC#$eF//XIRQ中断允许,是低电平触发,无寄存器设置
IRQ_Init();
EnableInterrupts;//中断允许
for(;;);//死循环,等中断
}
/***********************中断处理***************************************/
#pragmaCODE_SEG__NEAR_SEGNON_BANKED//中断
voidinterrupt6IRQ_interrupt(void)//IRQ中断号规定为6,见MC9S12XS128.h文件
{//XIRQ中断号规定为5,见MC9S12XS128.h文件
data=data<<1;//左移一位
if(data==0)
data=0x01;
PORTB=~data;
delay();
}
#pragmaCODE_SEGDEFAULT
2.流水灯及IRQ中断+数码管显示
/************************************************************
实验内容:
流水灯及IRQ中断+数码管显示2011-11-06
实验说明:
用单片机的PB口控制二极管的亮灭,置1灭,置0亮。
实验接线:
1.IRQ-A或IRQ-B连接IRQ上,用于中断。
2.四位数码管的段选连接到PORTP,片选连接到PORTT,上下对应接上,
原理见书259页,
数码管的引脚:
121110987654321
板上的I/O引脚:
T3P0P5T2T1P1T0P6P2P7P3P4
实验现象:
上电LED全灭,数码管显示"OFF";
当按下IRQ键时,数码管显示"ON",同时LED灯循环点亮;再按,则上述
现象交替出现。
************************************************************/
/*---------------------------------------------------------*/
#include
#include"derivative.h"/*derivative-specificdefinitions*/
unsignedcharflag;
unsignedchardata=0x01;
//***********************常量定义*********************
constunsignedcharDisplayDecode[]={~0x3f,~0x37,~0x71,0xff};
//0,n,F,灭
constunsignedcharWeiMa[]={0xf7,0xfb,0xfd,0xfe};
voidLED_yiwei(void);
//************函数声明************************
voiddisplay(unsignedcharwei,intdata);
voiddelay_ms(intm);
voiddis(inttime,inta,intb,intc,intd);
/*******
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 实验 指导书