单片机实验指导书2008版.doc_第1页
单片机实验指导书2008版.doc_第2页
单片机实验指导书2008版.doc_第3页
单片机实验指导书2008版.doc_第4页
单片机实验指导书2008版.doc_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单片机原理与应用实验指导书编写: 邬芝权、李 骐西南交通大学峨眉校区计算机与通信工程系实验中心(8. 9)MCS-51系列单片机实验指导本实验指导是为适应西南交通大学峨眉校区计算机系开设单片机原理与应用方面的课程需做大量软硬件实验的需要而编写的,供学生编程用。完成本实验指导中的实验,可使学生基本掌握 MCS-51单片机的结构原理、接口技术、程序设计技巧。手册中详细叙述了各实验的目的、内容,列出了接线图、程序框图和实验步骤。 为了解决上述问题,我们独立开发了“学生实验板”以及相应的开发软件 。这套实验设备通过串行口下载编程,便可以直接对各个系列的单片机编程写入,从而省略了专门的单片机编程器。学生在自己的电脑上使用这个软件,便可以进行单片机制作,给学生提供了一个节省、高效的单片机系统设计制作的开发工具。我们精心设计了与理论课紧密结合的实验项目:单片机最小系统、单片机扩展接口、单片机中断控制、单片机定时器应用、单片机键盘显示系统、单片机动态显示、单片机通信接口、A/D转换及数据采集、D/A转换及PWM控制,通过这些实验项目的训练,使学生能够较好地掌握单片机的原理与应用。其中,单片机动态显示制作、键盘及LED显示制作。第1 章 单片机实验开发板及开发软件简介1.1 电路外观 单片机实验开发板电路布局如图1.1。如图1.1 单片机实验开发板电路布局1.2 功能特点单片机实验板集成有常用的硬件资源,并且为用户提供了多种选择,使用用户可以进行各种相关的实验。1、通过PC机USB端口提供电源,电压为5V。2、采用RS232通信方式,可以和计算机直接通信。3、复位方式采用上电复位,按键复位及串行口RTS端复位。4、8个LED,6个数码管,4个按键,1个蜂鸣器。5、可扩展IIC接口芯片。1.3 51开发软件KEIL uVision2Keil C51 Vision2 集成开发环境是Keil Software, Inc/Keil Elektronik GmbH开发的基于80C51内核的微处理器软件开发平台,内嵌多种符合当前工业标准的开发工具,可以完成从工程建立到管理,编译,连接,目标代码的生成,软件仿真,硬件仿真等完整的开发流程。尤其C 编译工具在产生代码的准确性和效率方面达到了较高的水平,而且可以附加灵活的控制选项,在开发大型项目时非常理想。Keil C51 集成开发环境的主要功能有以下几点:l Vision2 for WindowsTM:是一个集成开发环境,它将项目管理、源代码编辑和程序调试等组合在一个功能强大的环境中;l C51 国际标准化C 交叉编译器:从C 源代码产生可重定位的目标模块;l A51 宏汇编器:从80C51 汇编源代码产生可重定位的目标模块;l BL51 连接/定位器:组合由C51 和A51 产生的可重定位的目标模块,生成绝对目标模块;l LIB51 库管理器:从目标模块生成链接器可以使用的库文件;l OH51 目标文件至HEX 格式的转换器:从绝对目标模块生成Intel HEX 文件;l RTX51 实时操作系统:简化了复杂的实时应用软件项目的设计。这个工具套件是为专业软件开发人员设计的,但任何层次的编程人员都可以使用,并获得80C51 微控制器的绝大部分应用。Keil Software 提供了一流的80C51 系列开发工具软件,下面描述每个套件及其内容:l PK51 专业开发套件PK51 专业开发套件提供了所有工具,适合专业开发人员建立和调试80C51 系列微控制器的复杂嵌入式应用程序。专业开发套件可针对80C51及其所有派生系列进行配置使用。l DK51 开发套件DK51 开发套件是PK51 的精简版,它不包括RTX51 Tiny 实时操作系统。开发套件可针对80C51 及其所有派生系列进行配置使用。l CA51 编译器套件如果开发者只需要一个C 编译器而不需要调试系统,则CA51 编译器套件就是最好的选择。CA51 编译器套件只包含Vision2 IDE 集成开发环境,CA51 不提供Vision2 调试器的功能。这个套件包括了要建立嵌入式应用的所有工具软件,可针对80C51 及其所有派生系列进行配置使用。l A51 汇编器套件A51 汇编器套件包括一个汇编器和创建嵌入式应用所需要的所有工具。它可针对80C51 及其所有派生系列进行配置使用。l RTX51 实时操作系统(FR51)RTX51 实时操作系统是80C51 系列微控制器的一个实时内核。RTX51 Full 提供RTX51 Tiny 的所有功能和一些扩展功能,并且包括CAN 通讯协议接口子程序。l 比较表:表2.1 列出了每个套件的功能,表的顶上一栏为工具套件名称,表的左边一列为软件组成部分,使用这个对照表可以选择符合您需要的套件。表2.1 比较表DP-51PROC 单片机综合仿真实验仪在自身强大硬件功能基础之上集成了Keil C51 开发调试软件,使用户能够较轻松、快捷的掌握硬件设计方法和软件编程技巧。为了使您在较短的时间内熟悉和掌握这些技术,随机提供了测试版Keil C51 V7.0 软件,其中包含了一些示范程序和一些受限制的工具。Keil C51 测试版工具软件在功能、创建应用程序和程序代码长度方面都有限制,对于大型应用程序或需要功能更全的Keil C51 软件,则需要购买正版的Keil C51 软件。实验一 熟悉软件开发流程一、实验目的1学会使用Keil-C51编程软件,并进行编译调试程序,熟悉单片机实验板;2学会观察各个特殊功能寄存器中数据的变化;3掌握单片机在执行过程中PSW的状态;4学会用汇编语言编写数据传送以及加减乘除等运算类指令程序;5学会下载程序。二、实验设备1微机一台2KeilC51编程软件3单片机实验板4数据下载线三、开发工具 Keil uVision2 IAP专用下载工具Turbo FAST COM UltraEdit-32四、实验内容(一)单片机的开发流程 1 建立一个工程项目,选择芯片类型,确定选项; 2 建立C 源文件或汇编源文件;3 用项目管理器生成各种应用文件; 4 检查并修改源文件中的错误;5 编译连接通过后进行软件模拟仿真;6 用编程器或用软件把程序载入单片机;7 硬件测试。(二)Keil uVision2软件的学习 以下假定你在“D:单片机实验”目录下学习 1 建立一个工程项目选择芯片确定选项 (1)在工程菜单下选新建工程一项(2)键入工程文件名dpjsy1然后保存 (3)CPU选择Atmel公司下的89C51,按确定键 (4)接着选晶振频率及生成HEX 文件等操作: 工程目标Target 1属性在目标Target 1属性选项中,可以更改CPU 晶振频率在输出选项中,选择生成HEX 。2.建立汇编源文件或C 源文件文件新建弹出源文件编辑窗口,进入编辑源文件窗口 在文件窗口中编辑源程序 将文件以“dpjsy1.asm”汇编文件或“dpjsy1.c” C源文件保存在“D:单片机实验”目录下 3 用项目管理器生成各种应用文件 点击Target1前之“+” 号,出现Source Group1 点击它,按鼠标右键会 弹出下拉菜单,出现一个编译文件窗口, 选择增加文件到组Source Group1,向项目中添加dpjsy1.asm 源文件在Source Group1 前会出现一个“+”号,点击之弹出dpjsy1.asm 文件名点击该文件名主窗口中会出现该文件编辑窗口。编译(Project-ReBuild all target files 或点击快捷图标)就会生成一系列的文件如OBJ 文件、LST 文件、HEX 文件等 4 检查并修改源文件中的错误 如果在源文件中存在错误在输出窗口中会出现错误提示信息,你可以在源 程序中修改后存盘,然后重新编译(Build)观察错误提示信息,直到没有错误(最好没有警告)5 编译连接通过后,进行软件模拟仿真 点击“开始/停止调试”进入软件模拟的仿真窗口, 在存储器#1 窗口中观察程序存贮区中的内容时,在窗口上方地址栏中输入C:0000H 回车,即可。在存储器#1 窗口中观察数据存贮区中的内容时,在窗口上方地址栏中输入d:0000H 回车,即可。观察P1口的状态:点击“外围设备-I/O-Ports-Port1” 在程序中某一行设置断点的方法光标到该行按鼠标右键在弹出菜单中选“设置/删除断点” 然后按鼠标左键,在该行首出现红色方块标志,说明该行已设置断点。6 用编程器或用软件把程序载入单片调试结束后,将生成的“工程名.HEX” 文件载入芯片即可。7 硬件测试 (三)UltraEdit 软件的学习 UltraEdit是一套功能强大的文本编辑器可以编辑文字HexASCII 码可以取代记事本内建英文单字检查C+ 及VB 指令突显可同时编辑多个文件而且即使开启很大的文件速度也不会慢软件附有HTML Tag 颜色显示搜寻替换以及无限制的还原功能一般大家喜欢用其来修改EXE 或DLL 文件众多的游戏玩家喜欢用它来修改存盘文件或是可执行文件 1. 十六进制编辑模式 UltraEdit具有十六进制编辑功能编辑二进制代码文件就不用退回DOS下用古老PCTOOLS了我们可以打开一个文件然后选择Edit菜单下的Hex Edit文件就变为十六进制的了做了相应的修改后你可以用同样的方法将退出十六进制编辑状态 2. 同时编辑多个文件 如果要同时修改很多文件可以将其全部选中然后用右键菜单中的UltraEdit-32命令可以一次全都打开打开多个文件后在工具条下面会出现文件切换条你既可以用鼠标单击相应条目来切换文件也可以按下Ctrl+F6键或Ctrl+Shift+F6键按顺序切换 3. 保存为项目文件 如果我们经常要修改一些文件可以将这些文件全部打开然后保存为一个项目文件以后只要打开这个项目文件就自动打开了此项目下的所有文件现在已打开了好几个文件选择Project菜单下的New Project/Workspace就能将这些文件保存为一个项目文件以后可以直接打开所保存的项目文件进行编辑 4. 支持多种文件格式 UltraEdit支持的文件包括*.txt*.doc*.Bat*.iniC语言源程序*.c和*.cpp头文件*.h和*.hppHTML语言*.html和*.htmJAVA语言*.java和*jav这些文件类型基本覆盖了所有的常见文件类型我们还可以让UltraEdit打开指定类型的文件添加方法为单击Advanced菜单选configuration在File Association选项卡中可以的添加 新的文件类型单击File菜单下的Conversions可以展开UltraEdit的文本格式转换菜单这里提供了UNIX/MAC与DOSEBCDIC与ASCIIOEM与ANS之间文本的相互转换 (四)串行口调试软件“Turbo FAST COM”的学习熟悉软件的使用;打开要载入的HEX程序,按“下载”键即可。(五)简单编程1加法(1)不带进位加法指令编程计算34H与46H之和,送P1口,观察结果。(2)带进位加法指令计算34H与46H之和,送P1口,观察结果(3)BCD码加法计算BCD码34H与99H相加, ,送P1口,观察结果2减法(1) 计算34H与46H之差,送P1口,观察结果(2) 减一指令,送P1口,观察结果3乘法计算45H与34H之积,送P1,P2口,观察结果4除法计算45H除以04H,送P1,P2口,观察结果5数据传送P2 FFHR0 38HA 03H五、思考题1INC A与ADD A,#01H有何不同?2写出复位后各寄存器的状态第二章 指令系统实验一、实验目的1学会用汇编语言编写控制跳转类指令程序;2学会使用KeiC51编程软件,并进行调试;3学会调用子程序;4掌握控制跳转类指令转移条件以及转移后的地址。二、实验设备1微机一台2单片机实验板3数据下载线三、开发工具 Keil uVision2 IAP专用下载工具Turbo FAST COM UltraEdit-32四、实验内容实验二.指令实验,执行以下指令,察看并分析相关内存和寄存器的值。1.数据传送类指令训练: ORG 0000HMOV A,#34H ;A=(),PSW=()MOV 30H,#52H ;30H=()MOV 01H,#45H;01H=(),R1=()MOV 31H,R1;31H=()MOV PSW, #18H;PSW=(),R1=()MOV R1,#30H;R1=()MOV 67H,R1;67H=()MOV A,#82HSWAP A;A=()MOV R0,#49HXCH A,R0;A=(),R0=( )MOV R1,#30HXCHD A,R1;A=(),R1=( ),30H=( )SJMP $END 2.算术运算类指令训练ORG 0000HMOV A,#85H ADDC A,97H;A=(),PSW=()DA A ;A=(),PSW=()CLR CMOV A,#47HSUBB A,#67H;A=(),PSW=()INC A;A=(),PSW=()MOV A,33HMOV B,44HMUL AB;A=(),B=(),PSW=()MOV A,93HMOV B,14HDIV AB;A=(),B=(),PSW=()SJMP $END3.逻辑运算类指令运算ORG 0000HMOV A,#67HRL A;A=()SETB CRLC A;A=()RR A;A=()CPL A;A=()MOV R2,#56MOV A,#72HANL A,#66H;A=()ORL A,R2;A=()XRL A,#44;A=()XRL A,#44;A=()SJMP $END4.调试下面程序,用软件仿真P1口状态ORG 0000HSTARR:MOV A,#01H;置初值OUT:MOV P1,A;向P1口送数ACALL DELAY;调用延时子程序CPL A;(A)反向LJMP OUT;继续从P1口输出DELAY:MOV R3,#0AH;延时子程序DL:MOV R2,#0FFHNOPDJNZ R2,$DJNZ R3,DLRETEND实验三.设计程序,实现以下功能。1. 清零程序(1)实验题目:把2000H-20FFH的内容清零。(2)算法:用连续或单步方式运行程序,检查2000-20FF中执行程序前后的内容变化。(3)程序框图2拆字程序(1)实验题目:把2000H的内容拆开,高位送2001H低位,低位送2002H低位,2001H、2002H高位清零,一般本程序用于把数据送显示缓冲区时用。(2)算法:用连续或单步方式运行程序,检查20002002H中内容变化情况。(3)程序框图 3拼字程序(1)实验题目:把2000H、2001H的低位分别送入2002H高低位,一般本程序用于把显示缓冲区的数据取出拼装成个字节。(2)算法:单步或用断点方式运行程序,检查2002H内容变化情况。(3)程序框图 4数据区传送子程序(1)实验题目:把R2、R3源RAM区首址内的R6、R7字节数据传送到R4、R5目的RAM区。(2)算法:在R2、R3中输入源首址(例如0000H),R4、R5中输入目的地址(例如2000H), R6、R7中输入字节数(例如1FFFH),运行程序,检查0000-1FFFH中内容是否和2000-3FFFH中内容完全致。(3)程序框图 5数据排序实验(1)实验题目:编写并调试一个排序子程序,其功能为用冒泡法将内容RAM中几个单字节无符号的正整数,按从小到大的次序重新排列。(2)算法:把8032中RAM 50H-5AH中放入不等的数据,运行本实验程序后检查50-5AH中内容是否按从小到大排列。(3)程序框图 6查找相同数个数(1)实验题目:在2000200FH中查出有几个字节是零,把个数放在2100H中。(2)算法:在2000200FH的几个单元中填入零,运行本程序后检查2100H中是几个单元数。(3)程序框图 7数据排序(1)实验题目:在片内数据存储区70H至7FH单元写入随机数,将此组数据从下到大排序,使之成为有序数列。(2)算法:本程序用的是“冒泡排序”法,算法是将一个数与后面的数相比较,如果比后面的数大,则交换,如此将所有的数比较一遍后,最大的数就会在数列的最后面。再进行下一轮比较,找出第二大数据,直到全部数据有序。(3)程序框图(4)编写程序,上机调试第三章 单片机应用实验实验四 流水灯实验一、题目要求:实现LED灯的循环闪亮二、算法要求:1.每次闪亮一个灯,2.亮的LED从左到右移,熄灭,3.亮的LED从右到左移,熄灭,返回2循环。三、实验电路四、实验说明: 1. P1口是准双向口。它作为输出口时与一般的双向口使用方法相同,当P1口用为输入口时,必须先对它置“1”。若不先对它置“1”,读入的数据可能是不正确的。2. 延时子程序的延时计算问题。对于程序DELAY:MOVR6,#200DEL1:MOVR7,#250DEL2:DJNZR7,DEL2DJNZR6,DEL1RET由指令表可知MOV、DJNZ指令均需用两个机器周期,在采用6MHz晶振时,一个机器周期时间长度为,所以该段程序执行时间约为:3. 有余力的同学可进一步考虑信号灯控制能否达到如霓虹灯的效果,并通过编程实现。五、思考题1、1K欧的电阻的作用是什么。2、P1端口采用的是低电平驱动,为什么不采用高电平驱动。 实验五 定时计数器实验一、实验目的1了解MCS-51单片机中定时/计数器的基本结构、工作原理和工作方式;2掌握定时/计数常数的设定;3定时/计数器中断的应用。二、实验设备1微机一台2KeilC51编程软件3单片机实验板4数据下载线三、开发工具 Keil uVision2 IAP专用下载工具Turbo FAST COM UltraEdit-32四、实验原理1本实验中内部计数器起计数的作用。外部事件计数脉冲由P3.4引入定时器T0。单片机在每个机器周期采样一次输入波形,因此单片机至少需要两个机器周期才能检测到一次跳变。这就要求被采样电平至少维持一个完整的机器周期,以保证电平在变化之前即被采样。同时这就决定了输入波形的频率不能超过机器周期频率。8051单片机的定时/计数器组成定时/计数器方式寄存器TMOD定时/计数器方式寄存器TMOD 的地址为89H,其各位的意义如下图:定时/计数器方式寄存器M1和M0为工作方式选择。M1 M0 工作方式0 0 方式0 13位计数器;0 1 方式1 16位计数器;1 0 方式2 可自动重新装入初值的8位计数器;1 1 方式3 将定时器0分为两个8位计数器。关闭定时器1,定时器做串行口时钟。C/:定时/计数选择。GATE:门控位。定时器0有0、1、2、3共四4种工作方式,定时器1只有0、1、2共三种工作方式。定时控制寄存器TCON定时/计数器控制寄存器TCON的地址为88H(可位寻址),其各位的意义如图2-20:定时/计数器控制寄存器TF1/TF0:定时器1/0溢出中断标志位。由硬件置位,当转向中断服务程序时由硬件清0,也可以由软件清0。TR1/TR0:定时器1/0运行控制位。1为计数,0为停止。IE1/IE0: 外部中断1/0请求标志位。中断时由硬件置位,当转向中断服务程序时由硬件清0,也可以由软件清0。(具体用法详见中断系统)IT1/IT0:外部中断触发方式控制位。IT1/IT0=1时为下降沿触发中断;IT1/IT0=0时为低电平沿触发中断。(具体用法详见中断系统)在实际应用中,若要使用定时/计数器,应按以下步骤进行编程:1设定定时计数器的工作方式2给定时计数器赋初值3启动定时计数器计数4开放定时计数器的中断(若需要)五、实验内容(一)定时器实验实验要求:用CPU内部定时器方式计时,实现每一秒钟P1口输出状态发生一次反转。(可设置定时器溢出时间为50ms,溢出20次则为1秒)。(二)对外部信号计数实验要求:1、单片机对从P3.4输入的信号计数,T0工作与方式12、将计数数值结果送至P1口显示。(三)对外部信号计数实验要求:1、单片机测试P3.2低电平的宽度,将测试时间显示输出到P1口,单位为10ms。六、思考题1、若该定时器0工作在方式1下,该如何设定定时常数?2、若定时计数器1工作在方式2下,又该如何设定定时常数?实验六 中断系统实验一、实验目的1掌握中断的应用,中断源,中断入口地址等概念;2掌握中断的开放与屏蔽,中断优先级的设定,中断响应过程;3理解中断服务程序与主程序的关系。二、实验设备1微机一台2 KeilC51编程软件3单片机实验板4数据下载线三、开发工具 Keil uVision2 IAP专用下载工具 UltraEdit-32四、实验说明在MCS51系列单片机中,不同类型的单片机,其中断源个数和中断标志位的定义也有所不同。下面以8051为例子来加以说明。中断源名称申请中断的原因中断申请标志允许中断的控制位外部中断0引脚有低电平、或下降沿IE0( TCON )EX0( IE )定时器0T0定时器/计数器0溢出TF0( TCON )ET0( IE )外部中断1引脚有低电平、或下降沿IE1( TCON )EX1( IE )定时器1T1定时器/计数器1溢出TF1( TCON )ET1( IE )串行口中断RXD、TXD接收一个字节或发送一个字节完成RI、TI( SCON )ES( IE )定时器控制寄存器TCON各位的含义如图44所示:中断允许寄存器IE各位的含义如图45所示:中断优先级特殊功能寄存器IP :B8H(字节地址) D7 D6 D5 D4 D3 D2 D1 D0IPPT2PSPT1PX1PT0PX0位地址BDBCBBBAB9B88051内部中断系统对各中断源中断优先级有一个统一的规定,各中断源在同一优先级时从高到低的排列顺序为:外部中断0定时器0中断外部中断1定时器1中断串行口中断(定时器2中断)。中断入口地址表见书P78。五、实验内容(一)、利用定时器中断,在P1口实现1秒钟移动一次的流水灯。(二)、通过外部中断0,启动流水灯 ,通过外部中断1,暂停流水灯六、思考题1比较定时器在查询法和中断法两个程序中溢出控制位TF0的异同2记录P1.0引脚每两次变化时(高低电平)的时间差,定时器0的状态值。实验七 学习使用C语言进行单片机程序设计一、实验目的:1学习Keil uVisinon中特有的语言类库(reg51.h等);2学习使用语言编写单片机程序的方法;3学习并掌握几种常见的编程技巧。二、实验设备1微机一台2 KeilC51编程软件3单片机实验板4数据下载线三、开发工具 Keil uVision2 IAP专用下载工具Turbo FAST COM UltraEdit-32四、实验说明- C51的编程规范 -现在单片机的程序设计,C51已经得到广泛的推广和应用,是单片机的主流设计程序,甚至可以说作为单片机开发人员必须要掌握的一门语言了。作为一门工具,最终的目的就是实现功能。在满足这个前提条件下,我们希望我们的程序能很容易地被别人读懂,或者能够很容易地读懂别人和自己以前的程序,在团体合作开发中就能起到事半功倍之效。在网上请求帮助时,如能以规范的写法贴出程序,网友会比较容易地明白你的问题,则会比较快的得到网友的帮助,否则让人看上半天也不明所以然,这样就达不到预期的效果了。因此,为了便于源程序的交流,减少开发中的障碍,能够按规范对C51进行编程。下面介绍一下C51的编程规范。一、注释文件(模块)注释内容:公司名称、版权、作者名称、修改时间、模块功能、背景介绍等,复杂的算法需要加上流程说明;函数开头的注释内容:函数名称、功能、说明输入、返回、函数描述、流程处理、全局变量、调用样例等,复杂的函数需要加上变量用途说明;程序中的注释内容:修改时间和作者、方便理解的注释等。注释内容应简炼、清楚、明了,一目了然的语句不加注释。二、编程风格缩进:缩进以Tab为单位,一个Tab为四个空格大小。预处理语句、全局数据、函数原型、标题、附加说明、函数说明、标号等均顶格书写。语句块的“”“”配对对齐,并与其前一行对齐;空格:数据和函数在其类型,修饰名称之间适当空格并据情况对齐。关键字原则上空一格;对齐:原则上关系密切的行应对齐,对齐包括类型、修饰、名称、参数等各部分对齐。另每一行的长度不应超过屏幕太多,必要时适当换行,换行时尽可能在“,”处或运算符处,换行后最好以运算符打头,并且以下各行均以该语句首行缩进,但该语句仍以首行的缩进为准,即如其下一行为“”应与首行对齐。空行:程序文件结构各部分之间空两行,若不必要也可只空一行,各函数实现之间一般空两行 修改:版本封存以后的修改一定要将老语句用/*/封闭,不能自行删除或修改,并要在文件及函数的修改记录中加以记录。 形参:在定义函数时,在函数名后面括号中直接进行形式参数说明,不再另行说明五、实验内容1练习P3口的输入的8位直接由P1口输出;2练习将P3的左移/右移之后送P输出;3练习定时计数器中断使用:利用定时器中断产生延时50ms(使用定时器0产生延时);4练习使用串行口中断,接收一个字节直接返回它。六、思考题1比较用C语言和用汇编语言编写程序时的异同.实验八 串行口通信实验一、实验目的1了解MCS-51单片机串行口(UART)的结构;2掌握PC机与单片机串行通信的编程方法;3掌握串行口的工作方式及波特率的设置方法。二、实验设备1微机一台2 KeilC51编程软件3单片机实验板4数据下载线三、开发工具 Keil uVision2 IAP专用下载工具Turbo FAST COM UltraEdit-32四、实验原理8051串行口是全双工的,它能作通用异步接收器发送器(UART)用,也能做同步移位寄存器用。在作UART使用时,相关的寄存器要有SBUF、SCON,还要设定PCON中的SMOD位。SBUF是数据发送缓冲器和数据接受缓冲器,逻辑上用同一个地址,物理上是分开的,SCON是串行口控制寄存器,其中,SM0和SM1位是工作方式选择位,决定四种工作方式,方式0对应的是移位寄存器输入输出方式,方式1对应的是8位的UART,方式2和方式3对应的是9位UART,还支持主从方式的多机通信,SM2位允许方式2和方式3的多机通信,REN是串行接受控制位,TB8,RB8是方式2和方式3的第9 位数据,TI,RI是发送中断和接受中断的标志位。在串行通信方式1和方式3中,通信的波特率是可变得。串行口特殊功能控制寄存器SCON的格式如下D7D6D5D4D3D2D1D0SM0SM1SM2RENTB8RB8TIRISM0、SM1:为串行口工作方式选择位。8051串行口共有4种工作方式。通过对SM0、SM1的设置可以选择串行口的工作方式。具体工作方式见下表。SM0SM1方式功能说明000移位寄存器方式(波特率为fosc/12)0118位UART,波特率可变(T1溢出率/n)1029位UART,波特率为fosc/64或fosc/321139位UART,波特率可变(T1溢出率/n)串行口工作方式选择特殊功能寄存器PCONPCON主要是为CHMOS型单片机的电源控制设置的专用寄存器,单元地址为87H,不能位寻址。SMOD:波特率选择位。在方式1、方式2和方式3时,串行通信的波特率和SMOD有关。当SMOD=1时,通信波特率乘以2;否则波特率不变。PCON的其它位为掉电方式控制位,详见有关CHMOS工艺单片机的介绍。其格式如下表所示:位地址8E8D9C8B8A898887PCONSMODGF1GF2PDIDL特殊功能寄存器PCON五、实验内容1、采用查询法编写一个异步串行口通信程序,实现与PC机之间的通信。 2、采用中断法编写一个异步串行口通信程序程序,实现与PC机之间的通信。六、思考题1写出PCON ,SCON中各位的作用2若串行口波特率为2400,定时常数x的值为多少?实验九 键盘显示程序一、实验目的1 熟悉键盘的工作方式;2 掌握静态、动态显示程序;二、实验设备1微机一台2 KeilC51编程软件3单片机实验板4数据下载线三、开发工具 Keil uVision2 IAP专用下载工具Turbo FAST COM UltraEdit-32四、实验内容(一)编写键盘程序按下按键“K1”,将55H送至P1口,放开“K1”,将AAH送至P1口。注意去抖动。(二)编写显示程序,通过按键控制,在所有数码管上显示09数字。(三)编写显示程序,在6个数码管上动态显示“123456”。五、实验要求1 使用C语言编程;2 程序结构合理;3 思路清晰;第四章 单片机综合实验实验十 编写电子钟程序(一)一、实验目的1 熟悉定时器的工作方式;2 掌握定时中断方式;3 学会使用显示接口程序。二、实验设备1微机一台2 KeilC51编程软件3单片机实验板4数据下载线三、开发工具 Keil uVision2 IAP专用下载工具Turbo FAST COM UltraEdit-32四、实验内容制作一个简单的电子钟。电子钟的功能:1 实验电子表的显示功能,显示格式:23:34:56,2 预置开始时间为12:01:29,使用定时计数器0(每20ms中断一次,每20ms刷新数码管显示一次;每50次刚好是一秒,则“秒值”1。)五、实验要求1 使用C语言编程;2 程序结构合理;3 思路清晰;4 功能模块化强;5 按实验内容要求完成显示及计时功能。实验十一 编写电子钟程序(二)一、实验目的1 掌握定时器及串行口的编程方法;2 掌握定时中断方式;3 掌握串行中断方式;4 掌握外部中断方式;5 掌握键盘接口程序;6 掌握键盘“消抖”的方法;7 掌握显示接口程序。二、实验设备1微机一台2 KeilC51编程软件3单片机实验板4数据下载线三、开发工具 Keil uVision2 IAP专用下载工具Turbo FAST COM UltraEdit-32四、实验内容在上一个实验的基础上制作一个功能较全面的电子钟。电子钟的功能:1 实验电子表的显示功能,显示格式:23:34:56;2 预置开始时间为12:00:00,使用定时计数器0;(每20ms中断一次,每20ms刷新数码管显示一次;每50次刚好是一秒,则“秒值”1。)3 通过设置按键的功能来调整小时、分钟、秒;4 通过串行口进行时间设置。五、实验要求1 使用C语言编程;2 程序结构合理;3 思路清晰;4 功能模块化强;5 充分发挥各种编程技巧,按实验内容要求完成各项功能。实验十二 编写液晶显示器驱动程序一、实验目的1 了解液晶显示器显示原理;2 掌握液晶显示器与单片机连接方法;3 掌握液晶显示器驱动原理和方法;4 掌握一种型号LCD的命令控制字;5 独立编写简易液晶显示驱动程序;二、实验设备1微机一台2 KeilC51编程软件3单片机实验板4数据下载线5 液晶显示板6 液晶显示器7液晶显示板、液晶显示器与主板的连接带线三、开发工具 Keil uVision2 IAP专用下载工具Turbo FAST COM UltraEdit-32四、实验内容通过阅读指定型号LCD资料,熟悉其工作方式和命令控制字。根据LCD和单片机实验板的连接方式和LCD具体型号编写驱动程序,使LCD能正常工作。五、实验要求1 使用C语言编程;2 程序结构合理;3 思路清晰;4 功能模块化强;5 充分发挥各种编程技巧,按实验内容要求完成各项功能。六、实验原理 在实验中使用JHD162a字符或12232图形液晶显示器。这里主要介绍JHD162a:电气特性如下:电参数(VDD=5.0V 10%,VSS=0V,Ta=25 )、显示内容16 字符x 2 行、字符点阵5 x 8点、驱动方式1/16D、TN STN(黄绿模黑白模)、反射型带EL或LED背光源、EL/100VAC 400HZ、LED/4.2VDCLED接口示意图LCD驱动的编写很关键的资料就是它的读写时序图,只有读懂它才能开发LCD的驱动程序,时序图如下: RS:Select register(H:data L:instruction)寄存器选择引脚R/W: Select read or write(H:read L:write)数据或指令读写信号引脚E:Start data read or write(H:read L:write)允许读写引脚DB0DB7:Data bit数据输入端口 (注:H 高电平 L 低电平)LCD工作原理简要介绍: 输入/读取数据和指令都时从数据输入端口输入/读取,当要输入指令的时候通过给寄存器选择引脚低电平从而选中指令寄存器,这时再从数据输入端口输入所需要执行的指令。在传送数据的时候也时一样,不同的是要求寄存器选择引脚为高电平。在对数据输入端口读写同时不仅要对寄存器选择,还要控制读写允许引脚,产生相应的读写信号,配合单片机的读写。七、LCD驱动参考程序 (见附录2)八、思考题1 LCD驱动程序和数码管的驱动有什么不同和共同点2 比较两种LCD驱动方式异同点实验十三 编写矩阵键盘驱动程序一、实验目的1 掌握矩阵键盘原理和使用方法;2 掌握定时器及串行口的编程方法;3 掌握键盘接口程序;4 掌握键盘“消抖”的方法;5 掌握数码管的显示驱动;6 掌握显示接口程序。二、实验设备1微机一台2 KeilC51编程软件3单片机实验板4数据下载线5矩阵键盘实验板6矩阵键盘与主板连接带线 三、开发工具 Keil uVision2 IAP专用下载工具Turbo FAST COM UltraEdit-32四、实验内容在理解矩阵键盘原理基础上编写矩阵键盘的驱动程序,使键盘上每个按键都起作用,在数码管上出现相应的显示,实现按键的基本功能。五、实验要求1 使用C语言编程;2 程序结构合理;3 思路清晰;4 功能模块化强;5 充分发挥各种编程技巧,按实验内容要求完成各项功能。六、实验原理1、 准矩阵式组合键盘电路硬件结构在如下图所示键盘电路中单键电路和矩阵扫描键盘电路是目前最为常用的两种键盘电路。那么这两种键盘电路的关键是什么呢?单键电路是以地线(低电平)为参考电平,当按键按下时相应的IO线由高电平变成低电平;矩阵扫描键盘电路是以某条行或列IO线扫描输出低电平,当按下与此条IO线相连的按键时,与这个按键另一端相连的列或行输入IO线由高电平变成低电平。下图中K12、K13、K14、K21、K23、K24、K31、K32、K34、K41、K42、K43相对于PA3、PA2、PA1、PA0来说是矩阵扫描键盘电路,也可以说是由4组以PA3、PA2、PA1、PA0扫描低电平为“地线”,(K12K13K14)、(K21K23K24)、(K31K32K34)、(K41、K42、K43)为按键的单键电路。在对角线上少4个键是由于一个按键两端不能接在同一条IO线上,接在同一条IO线上没有相对的低电平(无论是真实的地线还是由IO线输出的低电平)。 上图中的二极管是起隔离作用。以D0和D1为例,K12是以PA0输出低电平,判断PA1是否被拉成低电平来判断K12是否按下;而K21以PA1输出低电平,判断PA0是否被拉成低电平来判断K21是否按下。如果没有D0和D1,当以PA0输出低电平时,K12和K21按下PA1都将被拉成低电平,无法区别K12和K21按键。如D0和D1存在,当以PA0输出低电平时D0断开(正极为低电平),只有K12的按键会将PA1拉成低电平;反之,当以PA1输出低电平时D1断开(正极为低电平),只有K21的按键会将PA0拉成低电平。因此D0、D1、D2、D3的作用是区分对角线两边的按键。按照上图中43准矩阵式组合键盘电路的组成原理,可以根据需要按键的数量使用N条IO线构造N(N1)准矩阵式组合键盘电路。这种电路与传统的矩阵扫描键盘电路相比仅多用N个二极管。2、 准矩阵式组合键盘电路工作原理准矩阵式组合键盘电路判断按键的工作原理是将PA0、PA1、PA2、PA3分别做为扫描线(输出低电平),分别将(PA1PA2PA3)、(PA0PA2PA3)、(PA0PA1PA3)、(PA0PA1PA2)设置为输入后直接读(PA1PA2PA3)、(PA0PA2PA3)、(PA0PA1PA3)、(PA0PA1PA2)的状态即可确定相应的按键。七、矩阵键盘驱动程序 (见附录三)八、思考题1 比较矩阵键盘和传统键盘的异同2 总结矩阵键盘的优点3 深刻理解矩阵键盘原理实验十四 编写点阵LED显示驱动程序一、实验目的1 了解点阵LED显示原理;2 掌握8位串行寄存器74HC595的使用方法;3 掌握3-8译码器74HC138的使用方法; 4 掌握驱动点阵LED的方法。5 对单片机C语言的编程有更深刻的理解和掌握二、实验设备1微机一台2 KeilC51编程软件3点阵LED控制板4数据下载线5点阵LED显示屏与点阵LED控制板连接带线 三、开发工具 Keil uVision2 IAP专用下载工具Turbo FAST COM UltraEdit-32字模转换工具四、实验内容了解8*8点阵LED显示原理,学会控制8位串行寄存器74HC595、3-8译码器74HC138;在以单片机系统为依托的平台上用单片机C语言进行编程,使LED屏幕能实现丰富的显示功能,如:横向刷屏、纵向刷屏、滚动显示、左右循环等。五、实验原理点阵LED是通过若干个二极管组合而成,比如8*8点阵LED一共有6

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论