单片机C语言程序设计实验指导书.pdf_第1页
单片机C语言程序设计实验指导书.pdf_第2页
单片机C语言程序设计实验指导书.pdf_第3页
单片机C语言程序设计实验指导书.pdf_第4页
单片机C语言程序设计实验指导书.pdf_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

单片机单片机 C 语言程序设计语言程序设计 实验指导书实验指导书 (必修)(必修) 电子与信息工程学院 储茂祥 巩荣芬 主编 单片机 C 语言程序设计实验指导书 前 言 单片机体积小,重量轻,具有很强的灵活性,而且价格不高,越来越得到广泛的应 用。而 C 语言是一种编译型设计语言。它兼顾了多种高级语言的特点,并具备汇编语言 的功能。用 C 语言来编写目标系统软件,会大大缩短开发周期,且明显的增加软件的可 读性,便于改进和扩充,以研制出规模更大、性能更完备的系统。用 C 语言进行 8051 单片机程序设计是单片机开发与应用的必然趋势。单片机的程序设计应该以 C 语言为 主,以汇编语言为辅。而且采用 C 语言也不必对单片机和硬件接口的结构有很深入的了 解,编译器可以自动完成变量的存储单元的分配,编程者就可以专注于应用软件部分的 设计, 大大加快软件的开发速度。 采用 C 语言可以很容易地进行单片机的程序移植工作, 有利于产品中单片机的重新选型。为此,特开设了单片机的 C 语言应用程序设计这门选 修课。 课程的内容主要包括了单片机 C 语言编程的基本语法和思想, 单片机内部资源的 C 编程,单片机常见外部扩展资源的 C 编程等。基于本课程的特点,结合高等院校要求, 为了不断提高大学生的实验研究能力、分析编程能力、总结归纳能力和解决实际问题的 能力,特意编写了本实验指导书,以指导如何利用现有的实验设备进行单片机内外资源 的 C 编程以及简单系统的开发等。它不仅包括了一系列的验证性实验,而且还包括了综 合性和设计性实验。实验的开设有利于培养学生分析问题和解决问题的能力,以及使抽 象的概念和理论形象化、 具体化, 对增强学习的兴趣有极大的好处, 做好本课程的实验, 是学好本课程的重要教学辅助环节。 总之,不论是验证性实验还是综合性实验都会加深学生对基本知识的理解和渗透, 提高他们的动手操作能力,以更好的适应时代发展的需要。本实验要求同学在做实验之 前要很好的完成预习任务和调试程序的编写; 在完成每个实验后, 要认真书写实验报告, 对实验程序的正确性进行分析,并写出调试心得和体会。 1 单片机 C 语言程序设计实验指导书 目 录 目 录 前 言 .1 目 录 .2 实验一 I/O口扩展实验 3 实验二 定时器及外部中断实验 .8 实验三 8255 扩展八段数码管实验12 实验四 8253 多路定时/计数器实验.15 实验五 8279 键盘显示扩展实验(综合性)18 实验六 点对点异步串口通信实验 (设计性) .21 参考文献 24 2 单片机 C 语言程序设计实验指导书 实验一 I/O 口扩展实验 一、实验目的 一、实验目的 1、学习在单片机系统中扩展简单 I/O 口的方法。 2、学习 C51 语言数据输入,输出程序的编程方法。 二、实验设备 二、实验设备 EL-MUT-III 型单片机实验箱、8051CPU 模块、PC 机 三、实验内容 三、实验内容 本实验的原理图如下图所示。 该实验利用单片机 C 语言编程, 实现单片机数据口由 74LS244 读取八个开关的状态, 并将此状态由单片机数据口输出,经过 74LS273 锁存并驱动发光二极管显示。其中 74LS244 的输入端口接开关 K1K8,74LS273 的输出端口接发光二极管。74LS244 的片 选 CS244 接 CS1,表明 74LS244 对于单片机而言的外部地址为 0CFA8H,74LS273 的片选 CS273 接 CS2,表明 74LS273 对于单片机而言的外部地址为 0CFB0H。 四、实验原理 四、实验原理 1、I/O 接口 1、I/O 接口 MCS-51 系列单片机共有 4 个 I/O 口,分别是 P0、P1、P2、P3,此四个接口都可以 单独的做输入或输出使用。实际应用中,P0 口用于输出外部数据存储器的低 8 位,并分 时复用作为与外部连接的数据总线口;P2 口用于输出高 8 位地址;P3 口常操作于定义 的第二功能;P1 口一般为留给用户使用的基本 I/O 口。 3 单片机 C 语言程序设计实验指导书 在单片机 C 语言中,对于端口(位)的使用可以使用 sbit 来定义,如: sbit P10=P10/定义变量 P10 指向 P1 端口的第 0 位 在程序中就可以使用 P10 变量来访问 P1 口的第 0 位。对于 P0 口、P2 口,一般在 访问外部数据空间时使用,在单片机 C 语言中的使用方法可以看下例: #include #include #define INPORT XBYTE0XCFA8/定义变量 INPORT 指向外部空间 0XCFA8 #define OUTPORT XBYTE0XCFB0/ 定义变量 OUTPORT 指向外部空间 0XCFB0 void main(void) OUTPORT=INPORT; 该例实现了将外部空间 0xCFA8 的数据转存入外部空间 0xCFB0 的功能,注意的是, 在单片机 C 语言中,对于外部空间的使用,需要用 XBYTE 关键字来定义,而且程序要包 含 absacc.h 这一函数库。 本实验利用单片机的外部扩展空间, 实现由单片机数据总线口读取固定地址的外部 空间状态,同时将状态数据由单片机数据总线口输出到另一外部空间显示。本实验中扩 展的芯片可理解为单片机对应地址的外部空间,对应芯片的外部地址由片选信号确定, 对于本实验原理图,74LS244 的片选 CS244 接 CS1,表明 74LS244 对于单片机而言的外 部地址为 0CFA8H,74LS273 的片选 CS273 接 CS2,表明 74LS273 对于单片机而言的外部 地址为 0CFB0H。因此,可利用 P0 口、P2 口实现外部存储空间的访问,方法如上面的例 子。如果单片机外扩芯片过多,则 MCS-51 总线口的负载过重,74LS244 是一个扩展输入 口,同时也是一个单向驱动器,它可以减轻总线口的负担。 本实验程序为减少总线口读写的频繁程度,需要增加一段延时程序,延时时间约为 0.01 秒,不会影响显示的稳定。单片机 C 语言中延时的方法可以采用:for 循环、定时 器定时。 2、仿真调试 2、仿真调试 单片机 C 语言的实验将以 EL-MUT-III 型单片机实验箱为硬件调试平台, 以 EL 型教 4 单片机 C 语言程序设计实验指导书 学实验环境软件为调试工具,实现本课程所有实验的仿真、调试任务。首先打开实验台 的电源,打开 PC 机进入桌面。然后点击桌面快捷图标 MCS51MCS51,以默认的通信方式点击确 定。在点击确定确定按钮的同时,立即打开实验台左上方的 POWER SWITCHPOWER SWITCH 开关,此时,调 试软件能够正确地进入调试环境,如图 1 所示。 图 1 新建 C51 文件 如图 1 所示点击:文件新建C51 文件文件新建C51 文件,建立新 C51 文件,即可进入编辑环境,编 辑 C51 语言代码,如图 2 所示。 图 2 编辑源代码 编辑完成代码后,可点击:文件保存文件保存,并选择保存路径和设定文件名,就可实现 文件的保存。注意的是,文件保存的路径不可太深,且不要有中文目录,文件名也不要 太长,可参照下例: D:workex1.c 源代码编辑完成后,进行编译、链接调试,如图 3 所示。只要依次点击:编译、链 接 编译、链 接按钮即可,也可以直接点击编译链接编译链接按钮。编译、链接按钮都有快捷键方式,可以使 用快捷键,实现同样的功能。 5 单片机 C 语言程序设计实验指导书 图 3 编译、链接 在编译、链接的过程中,会弹出对话框,可观察源代码中是否有错,如果有错,可 修改源代码,重新编译、链接,直至正确为止。 上面的过程实际上是软件调试的过程,接下来要进行硬件调试。首先在断电的情况 下将实验箱对应电路连线,组成需要的硬件电路,然后按上面步骤做好软件调试,正确 无误后,开始进行硬件调试。如图 4 所示,点击调试调试按钮,实现程序的编译、链接代码 HEX 文件下载到实验箱单片机的程序区。 图 4 调试 程序下载完成后,进行硬件调试,实现程序对应的功能。如图 5 所示,对应一系列 的按钮,完成各种调试功能,一般情况下如果程序完全正确无误后,可直接点击运行运行按 钮,此时,程序以全速的方式运行,我们就可以观察实验箱的实验现象。 实验中,我们还要注意的是,如果硬件调试有问题,经过修改程序需要重新硬件调 试的时候,可以使用如下方法实现快速的重新调试:如图 4 点击单片机复位单片机复位按钮,弹出 确定确定提示框,根据提示按一下实验箱左下方的 RESETRESET 按钮,并立刻点击确定确定按钮,如果 6 单片机 C 语言程序设计实验指导书 实验箱上的六个数码管显示 C_C_ , 表明复位且通信良好, 此时就可重新进行硬件调试了, 如果显示 P_ P_ ,表示复位或者通信存在问题,需要重新操作。 图 5 运行 五、实验步骤 五、实验步骤 1、74LS244 的 IN0IN7 接开关的 K1K8,片选信号 CS244 接 CS1。 2、74LS273 的 O0O7 接发光二极管的 L1L8,片选信号 CS273 接 CS2。 3、按实验内容编写程序(注:以 for 循环的方式实现定时) 。 4、仿真调试(参照实验原理) ,拨动开关 K1K8,观察发光二极管状态的变化。 六、实验报告要求 六、实验报告要求 1、写出实验目的、实验设备、实验内容,分析实验原理,总结实验步骤。 2、画出流程图,并写出实验仿真调试后正确的程序。 3、对实验思考题加以分析,按照要求做出回答,并作实验总结。 七、实验思考题 七、实验思考题 1、编写程序,用定时器中断来做延时实现任意拨动开关 K1K8,都能够由发光二 极管显示出来。 2、实验总结(实验调试过程中的问题和调试体会) 。 预习任务: 预习任务: 1、查阅 74LS244 和 74LS273 芯片资料。 2、按照实验内容,画出流程图,编写程序,采用软件延时(for 循环)实现任意拨 动开关 K1K8,都能够由发光二极管显示出来。 7 单片机 C 语言程序设计实验指导书 实验二 定时器及外部中断实验 有急救车的交通灯控制实验有急救车的交通灯控制实验 一、实验目的 一、实验目的 1、熟练在单片机系统中扩展简单 I/O 接口的方法。 2、熟练 C51 语言数据输出程序的设计方法。 3、学习模拟交通灯控制的 C51 实现方法。 4、学习外部中断技术及定时器中断的 C51 基本使用方法。 5、学习中断处理程序 C51 编程方法。 二、实验设备 二、实验设备 EL-MUT-III 型单片机实验箱、8051CPU 模块、PC 机 三、实验内容 三、实验内容 本实验的原理图如下: 1扩展实验箱上的 74LS273 作为输出口,控制八个发光二极管亮灭,模拟交通灯 管理。 2. 在上述实验内容的基础上增加允许急救车优先通过的要求。 具体要求为: 当有急救车到达时, 东西和南北方向上的红灯亮, 以便让急救车通过, 假定急救车通过路口的时间为 10 秒,急救车通过后,交通灯恢复中断前的状态。本实 8 单片机 C 语言程序设计实验指导书 验以单脉冲为中断申请,表示有急救车通过。 四、实验原理 四、实验原理 1、实验方案 1、实验方案 本实验的设计可以有两种设计方案: 方案一:用十二个发光二极管分别表示南面路口的绿灯、黄灯、红灯,东面路口的 绿灯、黄灯、红灯,北面路口的绿灯、黄灯、红灯,西面路口的绿灯、黄灯、红灯。 方案二:虽然实际交通灯的数量是十二个,但是因为南北路口的两个红灯、绿灯以 及黄灯的亮灭 规律相同,其它路口的灯也满足同样的规律,所以用六个发光二极管也 能模拟交通灯。由原理图可定义如下: LED1、LED2、LED3 南北方向的绿灯、黄灯、红灯 LED4、LED5、LED6 东西方向的绿灯、黄灯、红灯 要完成本实验,首先必须了解交通路灯的亮灭规律,本实验的亮灭规律如下: 1、 初始态是两个方向路口的红灯全亮。 2、 东西路口的绿灯亮,南北路口的红灯亮,东西方向通车。 3、 延时一段时间后,东西路口绿灯灭,黄灯开始闪烁。 4、闪烁若干次后,东西路口红灯亮,同时南北路口绿灯亮,南北方向开始通车。 5、延时一段时间后,南北路口的绿灯灭,黄灯开始闪烁。闪烁若干次后,再切换 到东西路口方向,如此反复下去。 本实验以单脉冲为中断申请,表示有急救车通过。特别注意的是中断现场的保护。 要求用软件或者定时器来完成延时。 2、实验说明 2、实验说明 本实验 74LS273 芯片对于单片机而言,为外扩的外部资源,其对应的地址由片选信 号 CS273 控制, 本实验 74LS273 的片选 CS273 接片选信号 CSO , 则 74LS273 项对于单片 机的外部空间抵制为 0xCFB0,C51 语言定义如下: #define OUTPORT XBYTE0xCFB0 因此交通灯(发光二极管)的显示数据可以赋给 OUTPORT 变量,实现结果的输出。 本实验中还要注意的是,交通灯的每一种状态的显示,都需要延时一段时间再切换到另 一种状态,从而实现每一种状态的稳定显示。其 C51 语言的实现方法如下: OUTPORT=x;/显示交通灯某一状态数据 x 9 单片机 C 语言程序设计实验指导书 Delay(1);/延时 1ms OUTPORT=y; /显示交通灯另一状态数据 y Delay(1); /延时 1ms 实验中涉及到急救车通过,要求使用外部中断的方式实现。在本实验中我们可以利 用单片机的外部中断 INT0 实现。也就是说,急救车通过时,首先利用 INT0 外部中断给 单片机发脉冲,告知单片机,急救车要求通过,然后单片机接收到脉冲,并做出判断并 使东西和南北方向上的红灯亮,同时延时 10 秒,10 秒后表明急救车已经通过,此时单 片机恢复原状态。利用 C51 语言可定义外部中断如下: void Rescure_bus() interrupt 0 EA=0;/关闭中断,即不允许其它中断 OUTPORT=0x11;/ 0x11 为东西和南北方向上红灯亮的状态数据 Delay(10000);/延时 10s EA=1;/开启中断 在调用外部中断 0 时,一定要注意的是中断现场的保护,要就是说,中断完成后, 一定能够恢复中断前的状态,那么在中断程序中使用的变量、外部端口、内部资源,如 果在中断前正在使用,那么在中断开始前一定要保护,中断后一定要恢复。 同时,注意的是由于在实验中使用到单片机资源外部中断 0,需要对对应的特殊寄 存器作一定的配置。首先需要定义特殊寄存器变量: sfr IE=0xA8; sbit EA=IE7; sbit EX0=IE0; 当然,这些特殊寄存器的定义实际上在 reg51.h 库中定义了,因此在 C51 编程时, 只要包含上 reg51.h 即可,如下所示: #include 本实验需要使用到这些特殊寄存器,就是在程序初始化时需要对这些寄存器赋初 10 单片机 C 语言程序设计实验指导书 值,才可保证对应的 INT0 中断正常工作。本实验赋初值如下: IT0=1; EX0=1; EA=1; 本实验可以根据实际实验箱的配置来选择以上方案中的任意一种。 本实验按照方案 二来设计, 选用实验箱上八个发光二极管中的六个, 即红、 黄、 绿各两个。 例如将 L1(红)、 L2(绿) 、L3(黄)作为东西方向的指示灯,将 L5(红) 、L6(绿) 、L7(黄)作为南北 方向的指示灯,同学们还可以用别的设计方法。各发光二极管的阳极通过保护电阻接到 +5V 的电源上,阴极接到输入端上,因此使其点亮应使相应输入端为低电平低电平。 五、实验步骤 五、实验步骤 1、将 74LS273 的输出 O0O7 接发光二极管 L1L8,74LS273 的片选 CS273 接片选 信号 CSO,此时 74LS273 的片选地址为 CFA0H。 2、脉冲输入端_接 8051CPU 模块上的 INT0,用来表示救护车的急救信号。 3、按实验内容以及方案二编写程序。 4、仿真调试,观察 LED 显示情况是否与实验内容相符。 六、实验报告要求 六、实验报告要求 1、写出实验目的、实验设备、实验内容,分析实验原理,总结实验步骤。 2、画出流程图,并写出实验仿真调试后正确的程序。 3、对实验思考题加以分析,按照要求做出回答,并作实验总结。 七、实验思考题 七、实验思考题 1、本实验作了哪些中断现场保护,并解释其保护的过程? 2、实验总结(实验调试过程中的问题和调试体会) 。 预习任务: 预习任务: 1、按照指导书提供的方案画出程序实现的流程框图。 2、编写实验程序来模拟有急救车的交通灯控制。 3、用软件延时或者定时器延时来完成延时函数的书写。 11 单片机 C 语言程序设计实验指导书 实验三 8255 扩展八段数码管实验 一、 实验目的 一、 实验目的 1、学习 8255 芯片的结构及编程方法。 2、掌握八段数码管的使用方法,及动态显示的编程方法。 二、实验设备 二、实验设备 EL-MUT-III 型单片机实验箱、8051CPU 模块、PC 机 三、实验内容 三、实验内容 实验的原理图如下所示: 本实验通过单片机控制 8255 芯片,利用 8255 的 PA 口输出数码管的段码,PB 口输 出数码管的位码。 编写 C51 程序实现六个数码管以固定时间间隔交替动态显示 “012345” 和“ABCDEF” 。 四、实验原理 四、实验原理 8255 芯片是单片机通用的并行接口扩展芯片,可扩展 PA、PB、PC 三个 8 位并行口。 对于单片机而言,如果外接 8255 芯片,那么 8255 所对应的外部空间地址不再是固定为 一个值了。本实验 8255 的片选信号接 CS0,则表明 8255 相对于单片机的外部地址范围 是 0xCFA0-0xCFA7,此时 8255 的 PA 口、PB 口、PC 口、控制字寄存器对应于单片机的外 部地址为:0xCFA0、0xCFA1、0xCFA2、0xCFA3,其对应 C51 定义可如下例: #define PA XBYTE0xCFA0 #define PB XBYTE0xCFA1 #define PC XBYTE0xCFA2 #define PCTL XBYTE0xCFA3 对于八段数码管,显示数据时需要同时送入段码和位码,位码就是选择哪一个数码 12 单片机 C 语言程序设计实验指导书 管接收段码数据,段码就是需要显示的字符的编码。在 C51 中段码可定义如下: unsigned char code table17=0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7f,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00; 上面定义的是字符 0-9、A-F 以及黑屏的段码数据,而且是共阴极八段数码管的段 码数据。当需要显示某一个字符时,只要查询 table数组即可,如:显示 A 字符,直接 调用 table10即可。 对于单片机控制 8255,实现依次点亮数码管的方法,可参照下例程序: main m=1; PCTL=0x80;/设置 PA、PB 的工作方式 while(1)/保证 0-5 字符能够稳定显示在数码管上 for(i=0;i=5;i+) PA=tablei;/六个数码管依次点亮 0-5 PB=255-(mi);/选通对应的数码管,如:0 字符由数码管 1 点亮 Delay(1);/延时 1ms 对于 8255 芯片的控制字的各个位含义以及对应的方式可查阅 8255 芯片的资料。 五、实验步骤 五、实验步骤 1、实验连线:PA0PA7 接 LED-ALED-DP,PB0PB5 接 LED1LED6, 8255cs 接片选 信号 CS0,LED JUMP 的帽全部去掉。 2、按实验内容编写程序,实现八位数码管交替动态显示“012345”和“ABCDEF” 。 3、仿真调试,观察数码管的显示情况。 六、实验报告要求 六、实验报告要求 1、写出实验目的、实验设备、实验内容,分析实验原理,总结实验步骤。 13 单片机 C 语言程序设计实验指导书 2、画出流程图,并写出实验仿真调试后正确的程序。 3、对实验思考题加以分析,按照要求做出回答,并作实验总结。 七、实验思考题 七、实验思考题 1、本实验如果实现“012345”从右向左依次进入六个数码管动态显示,该如何完 成?请画出流程图。 2、实验总结(实验调试过程中的问题和调试体会) 。 预习任务: 预习任务: 1、按照上述要求画出只动态显示“012345”的程序流程框图,并编写相应的程序。 2、按照上述要求画出只动态显示“ABCDEF”的程序流程框图,并编写相应的程序。 3、用定时器延时和软件延时两种方法来完成延时函数的书写。 14 单片机 C 语言程序设计实验指导书 实验四 8253 多路定时/计数器实验 一、实验目的 一、实验目的 1、学习 8253 扩展定时器的工作原理。 2、学习 8253 扩展定时器的使用方法。 3、继续熟练掌握数码管的显示。 二、实验设备 二、实验设备 EL-MUT-III 型单片机实验箱、8051CPU 模块、PC 机 三、实验内容 三、实验内容 本实验的原理图如下所示: 本实验利用 8253 的控制字设置 8253 定时/计数器 0 为工作方式 5, 并实现计数过程 的闩锁操作,然后将该定时/计数器 0 的计数值读取出并由数码管显示。其中 CLK1 是单 片机晶振频率的二分频。 四、实验原理 四、实验原理 8253 芯片是可编程定时器/计数器,片内包含有三个独立的通道,每个通道均为 16 位的计数器。本实验首先启动 8253 定时/计数器 0 开始计数,并由单片机内部定时器实 现定时一段固定的时间,然后对 8253 定时/计数器 0 进行闩锁操作,并将得到的计数数 据显示在数码管上。 本实验 8253 的片选信号接 CS2,则表明 8253 相对于单片机的外部地址范围是 0xCFB0-0xCFB7,此时 8253 的计数器 0、计数器 1、计数器 2、控制字寄存器对应于单片 机的外部地址为:0xCFB0、0xCFB1、0xCFB2、0xCFB30xCFB0、0xCFB1、0xCFB2、0xCFB3,其对应 C51 定义可如下例: 15 单片机 C 语言程序设计实验指导书 #define C0 XBYTE0xCFB0 #define C1 XBYTE0xCFB1 #define C2 XBYTE0xCFB2 #define CTL XBYTE0xCFB3 对于 8253 芯片的控制字的各个位含义以及对应的方式可查阅 8253 芯片的资料。 8253 芯片在使用时,首先要初始化,如下: CTL=0x3a;/计数器 0;工作在方式 5;先读低字节,后读高字节方式 C0=0x00;C0=0x00;/设计数器 0 初值为 0,16 位赋两次值 CTL=0x7a; /计数器 1;工作在方式 5;先读低字节,后读高字节方式 C1=0x00;C1=0x00; /设计数器 1 初值为 0 CTL=0xba; /计数器 2;工作在方式 5;先读低字节,后读高字节方式 C2=0x00;C2=0x00; /设计数器 2 初值为 0 对于计数器的其它操作,都是按照先对控制字寄存器设置,后对计数器进行操作的 过程来执行即可。例如,对计数器 0 进行闩锁操作并读取计数值: 1)现将控制字寄存器赋值:CTL=0x0a; 2)然后进行读计数值,其对应的计数器取值函数如下: void ReadNum(P_C1)/P_C1 为对应的计数器地址指针,即 unsigned char H,L; L=*P_C1;/读出 16 位计数器的计数值低 8 位 P_C1+; P_C1-;/改变指针指向计数器的高 8 位 H=* P_C1; /读出 16 位计数器的计数值高 8 位 Buf8253=65536-(H*256+L);/8253 为减计数,应取其补得到 Buf8253 本实验中利用 74LS273 控制数码管实现计数器数据的显示,单片机的 P10P13 作 为数码管的位码,选择哪一数码管点亮,段码由单片机的 P0 口输入 74LS273 的输入端 锁存,并输出到对应位选的数码管接收段码,进行点亮显示。由于 74LS273 的片选信号 接 CS1,则 74LS273 相对于单片机而言,其外部地址为 0xCFA80xCFA8,对于数码管的 C51 编程 可参照实验三。 五、实验步骤 五、实验步骤 1、将 74LS273 的 0007 分别与八段数码管的 LED-A 至 LED-P 相连。CS273 与 CS1 16 单片机 C 语言程序设计实验指导书 相连。 2、将 8051CPU 模块的 P10P14 分别与八段数码管的 LED1LED4 相连。 3、将 8253 的 8253CLK0 与 CLK1 相连,将 8253 的 GATE0 与 P17 相连,将 CS8253 与 CS0 相连。 4、按实验内容编写程序,实现四位数码管上显示 8253 定时/计数器 0 对输入脉冲 的计数值,即闩锁数值 5、仿真调试,观察数码管的显示情况。 六、实验报告要求 六、实验报告要求 1、写出实验目的、实验设备、实验内容,分析实验原理,总结实验步骤。 2、画出流程图,并写出实验仿真调试后正确的程序。 3、对实验思考题加以分析,按照要求做出回答,并作实验总结。 七、实验思考题 七、实验思考题 1、理论计算本实验计数器 0 的闩锁数值,与实验得到的显示结果进行比较。 2、假定 8253 的三个计数器对同一输入信号计数,在三个输出端分别作 2 分频、4 分频、8 分频,画出实现该功能的流程图,并写出对应的控制字。 3、实验总结(实验调试过程中的问题和调试体会) 。 预习任务: 预习任务: 1、预习 8253 的控制字的格式、8253 的工作方式以及 8253 的操作过程。 2、通过理论计算得到闩锁数值,然后与实验得到的显示结果进行比较。 17 单片机 C 语言程序设计实验指导书 实验五 8279 键盘显示扩展实验(综合性) 一、实验目的 一、实验目的 1、了解 8279 键盘/显示控制器的工作原理,掌握其编程方法。 2、了解键盘电路工作原理及编程方法。 3、熟悉 LED 显示接口电路及工作原理和编程方法。 二、实验设备 二、实验设备 EL-MUT-III 型单片机实验箱、8051CPU 模块、PC 机 三、实验内容 三、实验内容 本实验的原理图如下所示: 8279 与一个 16 个键的小键盘相连,16 键的编码为 0、1、2、3、4、5、6、7、8、9、 A、B、C、D 实验要求和内容如下: 1、如果按下的是数字键,则在显示器上将该数字依次显示。 2、如果按下的是“C”键,则显示器全灭。 本实验中各个按键还可以实现其它的功能,可以自行设计安排,并编程实现。 四、实验原理 四、实验原理 8279 是一种可编程键盘/显示器接口芯片,利用它的扫描传感器阵列方式,可实现 多路开关变位信号采集及处理,然后将处理结果送到 CPU,这样可节省 CPU 资源。其 18 单片机 C 语言程序设计实验指导书 功能有:接收来自键盘的输入数据,并作预处理;数据显示的管理和数据显示器的控制 等。8279 的引脚功能、控制字以及对应的工作方式可查阅 8279 芯片的资料。 本实验中已经将键盘控制芯片 8279 的地址固定为 0xCFE8、 0xCFE9, 即 8279 的数据 端口地址对应 0xCFE8,8279 的命令字和状态字的地址为 0xCFE9。可定义如下: #define com XBYTE0xCFE9 #define dataport XBYTE0xCFE8 实验中键盘接口与 8279 的回复线 RL0RL7、 扫描线 SL0SL2 相连, 组成键盘输入 电路, 六个数码管与 8279 的 OUTA0OUTA3、 OUTB0OUTB3 以及驱动电路组成显示回路。 8279 芯片在 C51 编程中是较为复杂的, 因为它有较多的控制命令字和状态字, 学会 使用这些命令字是很重要的.例如,8279 初始化时首先需要执行清除命令: com=0xd1;/总清除命令 doACC=com;/读取 8279 状态 while(ACC7=1)/等待清除结束 同时,需要设置键盘工作方式、显示方式、时钟分频等命令字,使 8279 工作在要 求的方式中: com=0x00;/8 个字符显示,左入口;编码扫描键盘,双键锁定 com=0x2a;/10 分频 键盘有无键按下的判断可以如下判断: k=com;/读取状态字 while(k/判断是否为 0:=0 等待;0 有键按下,往下执行 实现读取键盘值的命令可参照如下例程: com=0x40;/读 FIFO RAM 命令,地址 0x0000 i=dataport;/读取一个键盘数据 i=i/取低 6 位为键盘值 8279 的显示功能的实现可借鉴如下程序: for(i=0;i8;i+) com=i+80;/写显示 RAM 命令,显示区地址由 i 控制 dataport=tablei;/显示的字符编码输出到数据端口 19 单片机 C 语言程序设计实验指导书 本实验,是上面各种命令字的一种综合应用的实例,大家可以查阅 8279 芯片资料, 学会使用各种具体的命令,从而完成对应的任务。 五、实验步骤 五、实验步骤 1、将键盘 KA10KA12 接 8279 的 KA0KA2;RL10RL17 接 8279 的 RL0RL7。 2、按实验内容编写程序,实现按下数字键,则在显示器上将该数字依次显示,按 下“C”键,则显示器全灭。 3、仿真调试,按动键盘,观察显示的键值与给定键值是否相符。 六、实验报告要求 六、实验报告要求 1、写出实验目的、实验设备、实验内容,分析实验原理,总结实验步骤。 2、画出流程图,并写出实验仿真调试后正确的程序。 3、对实验思考题加以分析,按照要求做出回答,并作实验总结。 七、实验思考题 七、实验思考题 1、假定实现按下 “D”键,6 个 LED 显示 123456 的功能,请画出其流程图。 2、实验总结(实验调试过程中的问题和调试体会) 。 预习任务: 预习任务: 1、查阅并熟悉 8279 芯片资料。 2、自己查阅八段数码管 LED 显示器。 3、按照实验内容,编写相应的程序实现各个功能。 20 单片机 C 语言程序设计实验指导书 实验六 点对点异步串口通信实验 (设计性) 一、实验目的 一、实验目的 1、掌握串行口工作方式的程序设计,掌握单片机通讯程序的编制。 2、了解实现串行通讯的硬件环境,数据格式、数据交换的协议。 3、掌握串行通讯中波特率的设置。 4、在给定通讯波特率的情况下,会计算定时时间常数。 二、实验设备 二、实验设备 EL-MUT-III 型单片机实验箱、8051CPU 模块、PC 机 三、实验原理 三、实验原理 MCS-51 单片机串行通讯的波特率随串行口工作方式选择的不同而不同, 它除了与系 统的振荡频率 f,电源控制寄存器 PCON 的 SMOD 位有关外,还与定时器 T1 的设置有关。 1) 在工作方式 0 时,波特率固定不变,仅与系统振荡频率有关,其大小为 f/12。 2) 在工作方式 2 时,波特率也只固定为两种情况: 当 SMOD=1 时, 波特率=f/32 当 SMOD=0 时, 波特率=f/64 3) 在工作方式 1 和 3 时,波特率是可变的: 当 SMOD=1 时, 波特率=定时器 T1 的溢出率/16 当 SMOD=0 时, 波特率=定时器 T1 的溢出率/32 其中,定时器 T1 的溢出率=f/(12*(256-N),N 为 T1 的定时时间常数。 在实际应用中,往往是给定通讯波特率,而后去确定时间常数。例如:f=6.144MHZ, 波特率等于 1200,SMOD=0 时,则 1200=6144000/(12*32*(256-N),计算得 N=F2H。编 程时注意两点:一是初始化,设置波特率和数据格式,二是确定数据传送方式。数据传 送方式有两种:查询方式和中断方式。在双机通信实验时,为确保通讯成功,甲机和乙 机必须有一个一致的通讯协议,同学们可以自行设定,也可按照我们设计的通信协议来 做,我们提供的通信协议如下: 通讯双方均采用 2400 波特的速率传送,甲机发送数据,乙机接收数据。双机开始 通讯时,甲机发送一个呼叫信号“06” ,询问乙机是否可以接收数据;乙机收到呼叫信 号后,若同意接收数据则发回“00”作为应答,否则发“15”表示暂不能接收数据;甲 机只有收到乙机的应答信号“00”后才可把要发送的数据发送给乙机,否则继续向乙机 21 单片机 C 语言程序设计实验指导书 呼叫,直到乙机同意接收。其发送数据格式为: 字节数 n 数据 1 数据 2 数据 3 数据 n 累加校验和 字节数 n:甲机将向乙机发送的数据个数 数据 1数据 n:甲机将向乙机发送的 n 个数据 累加校验和:字节数 n,数据 1,数据 n 这(n+1)个字节内容的算术累加和。 乙机根据接收到的“校验和”判断已接收到的数据是否正确。若接收正确,向甲机 回发“0F”信号,否则回发“F0”信号给甲机。甲机只有接到信号“0F”才算完成发送 任务,否则继续呼叫,重发数据。 在串行通信的 C51 编程当中,将会涉及到一系列的特殊寄存器的使用,如:TMOD、 PCON、SCON、SBUF、TI、RI、TH1、TL1、TR1 等。它们的使用方法如下: PCON=0x00;/SMOD=0,串行波特率未加倍 SCON=0x50;/方式 1;接收允许 TMO

温馨提示

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

评论

0/150

提交评论