MCS51单片机系统学习平台V1.1实验讲义.doc_第1页
MCS51单片机系统学习平台V1.1实验讲义.doc_第2页
MCS51单片机系统学习平台V1.1实验讲义.doc_第3页
MCS51单片机系统学习平台V1.1实验讲义.doc_第4页
MCS51单片机系统学习平台V1.1实验讲义.doc_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

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

文档简介

电子系统综合设计课程教材电子设计竞赛培训讲义MCS51单片机系统设计教程基于“MCS51单片机系统学习板V1.1”的实验教学周立青等 汇编(内部汇编资料,内容正在修正完善,请勿在网上传播)武汉大学电子信息学院实验中心武汉大学电工电子实验教学基地目录目录2第一章 MCS51单片机系统学习板V1.1资源介绍41.1 “MCS51单片机系统学习板V1.1”基本配置及功能介绍41.2 “MCS51单片机系统学习板V1.1”最小系统电路61.3 “MCS51单片机系统学习板V1.1”套件配置7第二章 SST单片机系统仿真调试和下载92.1 SST单片机功能简介92.2 ICE 仿真与ISP 编程烧写功能102.3 通过BOOT LOADER 将SST Boot-Strap Loader替换为SoftICE112.4 用Keil新建工程并在SoftICE监控程序下仿真142.5 SoftICE监控程序替换回SST Boot-Strap Loader 监控程序202.6 通过SUPERRO编辑器将SoftICE监控程序下载入SST单片机212.7 通过SST EasyIAP下载程序252.8 STC单片机的烧写;27第三章 单片机系统学习平台V1.1实验设计313.1实验一、独立I/O实验313.2实验二、按键中断实验333.3实验三、RAM实验343.4实验四、段式LED实验363.5实验五、矩阵键盘实验38第四章 综合实验要求424.1 实验一、数字钟系统424.2 实验二、数字温度计424.3 数字电压表设计424.4 数字化语音存储与回放系统424.5 数字频率计设计434.6 A题波形发生器44第五章 单片机C51讲义455.1 C语言概述455.2 C51语言465.3 C51中的存储系统505.4 C51中的数据结构525.5 C51中的硬件接口系统585.6 C51中的中断系统615.7 C51中程序架构设计方法625.8 关于优化635.9 仿真机的使用645.10 程序的调试与测试655.11 其它65第一章 MCS51单片机系统学习板V1.1资源介绍“MCS51单片机系统学习板V1.1”PCB尺寸图“MCS51单片机系统学习板V1.1”是武汉大学电子创新平台中的单片机学习和开发平台,目前主要应用于电子设计竞赛培训和大学生创新设计。它兼容DIP40封装的51系列单片机,板上配备SST公司的sst89E516RD高性能单片机,可利用串口进行在线下载、硬件仿真和断点调试,从而使学生在不需要仿真器的情况下可进行独立的软硬件调试。系统采用基于总线结构的设计,板上既具有普通的IO实验,更多的采用总线方式扩展板上资源,使学生对基于处理器的系统设计概念有着更深入的理解,是大学生进行单片机学习、创新设计和电子设计竞赛的基础工具。1.1 “MCS51单片机系统学习板V1.1”基本配置及功能介绍“MCS51单片机系统学习板V1.1”功能框图1、 USB及适配器电源接口,可使用USB延长线供电;2、 DC7.5-9V独立供电接口,最大电流1A;3、 自锁开关及电源指示灯,操作更加方便;4、 独立IO口控制的8路发光二极管LED流水灯,可实现发光二极管各种实验(跑马灯、指示灯等);5、 总线扩展8位高亮数码管(数字和字母显示,可以和液晶同时使用);6、 LCD1602(可显示两行字符)/中文LCD12864(可显示任意汉字及图形)液晶显示模块接口,可接各种兼容液晶模块;7、 主芯片紧锁座设计,方便芯片取放;8、 1路串口RS-232通信,实现和PC或其他设备232通信(可兼容交叉和串行数据线的跳线选择);9、 1路蜂鸣器,实现报警和演奏音乐;10、 4路独立按键,独立按键调试;11、 4X4矩阵键盘,总线接口,用于学习矩阵键盘原理和使用方法;12、 板载32KRAM62256,用于外部数据存储;13、 非易失存储器EEPROM AT24C02,掉电不丢失数据(IIC总线数据存储元件原理实验);14、 温度传感器模块18B20接口,可测量外界温度(精密温度检测,配有测试当前温度程序);15、 一体化红外接收芯片HS0038,可以做红外线解码实验,红外线遥控器等;16、 1路按键复位;17、 3组扩展接口,接口功能划分合理,1、2号扩展口包含了数据总线和译码后的片选信号线,3号总线包含全地址空间,方便用户进行自由扩展,可以外接AD、DA等资源。18、 扩展接口元器件采用军品直插封装,方便测试和维修。19、 光盘中含本实验板所有原理图、使用教程、程序下载教程、各种实用软件、实用工具及实验例程。1.2 “MCS51单片机系统学习板V1.1”最小系统电路“MCS51单片机系统学习板V1.1”实物图1.2.1 电源供电“MCS51单片机系统学习板V1.1”主芯片工作电压为5V,在5V电源的输入端自带防反接电路,防止错误接反电源损坏系统板。整个系统可采用两种供电模式:l USB供电。计算机的USB接口可提供5V,1A的直流电流,系统可采用板载的USB接口直接提供5V电源,。电源接口电路原理图l 7.5V稳压电源供电。系统也可以采用单独供电模式,单独供电采用7.5-9V电源输入,经LM1117位系统提供稳定的5V电压注意:系统工作是同时只能连接一种电源输入。1.3 “MCS51单片机系统学习板V1.1”套件配置标准配置清单序号配置数量1MCS51单片机学习开发板12可单步仿真单片机sst89E516RD13温度传感器18B2014红外集成接收头1838151602液晶显示器/128*64液晶屏16USB双扁头线17RS232串口通信线187.5V1A直流电源19产品配套资料光盘1第二章 SST单片机系统仿真调试和下载2.1 SST单片机功能简介SST的MCU除了具备和一般单片机一样,可以通过专用编程器将程序代码烧写到片内ROM中,然后装入系统运行程序以外,还具备另外两种特殊的下载和仿真功能。1) 程序下载功能。SST单片机可以不需要编程器,直接通过串行通信口,将程序下载到单片机ROM中,且下载的程序在单片机断电后仍会保存,不会丢失。程序下载后,直接复位或者重新上电单片机就可以工作。2) 在线仿真功能。SST单片机还具有在线仿真功能,同样通过单片机的串口,通过在keil软件中设置可以实现在线仿真,具有单步执行、全速执行、设置端点等调试功能。SST单片机的以上两种功能的实现方法是通过其内部的监控程序实现的,SST厂家提供了两种监控程序BOOT LOADER和SoftICE,其中单片机的监控程序如果是BOOT LOADER,则对应以上两种功能中的第一项,即程序下载功能。此时,只可以通过串口下载程序,不能进行在线仿真。如果单片机的监控程序如果是SoftICE,则对应以上两种功能中的第二项,即在线仿真功能。此时,只可以通过串口在线仿真,不能进行下载程序。即一种监控程序对应一种功能,实现方法是将对应功能的监控程序下载到单片机中即可,具体下载监控程序以及在两种监控程序之间切换的操作请参考“2.3通过BOOT LOADER 将SST Boot-Strap Loader替换为SoftICE”、“2.5SoftICE监控程序替换回SST Boot-Strap Loader 监控程序”、“2.6通过SUPERRO编辑器将SoftICE监控程序下载入SST单片机”等章节出厂时厂家已将BOOT LOADER监控程序写入芯片中,因此无需编程器就可通过SST BOOT-STRAP LOADER软件工具将用户程序下载到SST的MCU中。对于两种监控程序,SST公司提供了相应的方法,用户可以自己将其中的监控程序进行替换,从而在两种不同的功能上进行转换。更加详细芯片资料请参考datasheet:SST89E516RD.pdf或者89E516RD中文.pdf2.2 ICE 仿真与ISP 编程烧写功能SoftICE的英文是Software In Circuit Emulator的简称,其翻译成中文就是在线的软件仿真器的意思,它是SST公司为方便SST用户在使用SST单片机(包括SST89C5xSST89x564RD/554RC/516RD2/5XRD2 )调试程序所开发的开发工具,这个SST的仿真器功能可以代替大部分的专用仿真器的功能,使单片机工程师在开发单片机时省却了价格昂贵的仿真器和编程器,使得51单片机的开发更加容易和普及并且SST的单片机价格便宜,出厂时就包含了在线下载和在线仿真的功能。最新的SST软件和文件请访问SST网页。最新的KEIL软件和文件请访问KEIL网页。SoftICE 的特点:SST的MCU SoftICE通过PC的一个COM口与KEIL uVision2 Debugger 通讯,它可以实时地调试目标程序,因此提供使用SST单片机的工程师简单有效和容易使用在板上调试程序,尽管小而紧凑,SoftICE却提供高级仿真器的大部分功能与KEIL uVision2Debugger 一起使用。SoftICE提供以下特性: 源代码调试支持汇编语言和C51 高级语言 单步执行STEP 和STEP OVER 断点调试做多到10 个固定和1 个临时断点 全速运行 显示修改变量 读/写数据存储器 读/写代码存储器 读/写SFR 特殊功能寄存器 读/写P0-P3 端口 下载INTEL HEX 文件 对 8051 程序存储区的反汇编 在线汇编 SST MCU 产品特有的IAP 功能In Application ProgrammingSST51 开发系统除了支持ICE 仿真功能外,还支持Atmel ISP 编程烧写的功能。2.3 通过BOOT LOADER 将SST Boot-Strap Loader替换为SoftICE执行SSTEasyIAP11F.exe(单片机在线仿真工具sst51单片机在线仿真SoftICE_564SSTEasyIAP11F.exe),软件运行SST Boot-Strap Loader 在内部模式下检测到对应器件的型号后,SoftICE固件通过按SoftICE菜单下Download SoftICE选项下载,便将SoftICE固件下载到MCU。在BLOCK1的SST Boot-Strap Loader 会被SoftICE固件代替(下载SoftICE成功后,不能重复再次下载SoftICE,必须下载BOOT LOADER监控程序后,才能重新下载SoftICE)。详细操作步骤如下:1. 打开SSTEasyIAP11F.exe程序,选择串口;2. 选择芯片型号和内部程序存储器;3. 选择PC串口,MCU晶振和波特率;COM1为当前连接单片机的串口。晶振频率指当前系统板上接的晶振频率。确定后点击“Detect MCU”检测单片机。4. 先选择确定在复位MCU;5. 通讯成功后窗口右上角显示芯片信息和版本信息;6. 点击Download SoftICE选项,将MCU中的BOOT LOADER监控程序替换为Soft ICE监控程序;7. 选择确认更换;8. 程序替换成功;2.4 用Keil新建工程并在SoftICE监控程序下仿真1. 打开Keil C51程序,新建一个工程;一般建议新建工程的名称与文件夹名称相同,部分版本在编译时可能会提示“Target not created”。2. 保存在自己新建的文件夹中;3. 点击保存出现CPU选择对话框,选择SST系列的89X516RD2;4. 出现是否添加标准51初始代码对话框,选“否”;5. 工程建立之后新建源程序文件,点击”File”菜单下“New”选项;6. 保存在工程文件夹内,C程序文件后缀为”.C”,汇编程序文件后缀为“。ASM”;7. 在文本编辑区编写源程序并保存;在Source Group上右击选择“Add Files To Group”选项添加源文件至工程;8. 选择编写好的源程序文件,点击Add添加所选文件;9. 点击编译按钮,编译工程;10. 进入目标板调试选项设置,点击“Project”菜单下“Options for Target”选项;11. 选择为硬件仿真功能;12. 点击Setting进入通讯参数设定菜单,去掉所有Cache选项。至此设置完毕,进入仿真调试阶段;13. 点击DEBUG下的“Start/Stop Debug Session”选项进入DEBUG界面;14. 进入后可以看到信息栏中由显示连接成功信息。在此仿真界面可以进行单步、全速、断点等调试方式。进入DEBUG界面后用户可以在线进行单步、连续、执行到、断点等功能的调试;2.5 SoftICE监控程序替换回SST Boot-Strap Loader 监控程序1. 由SoftICE监控程序转换回SST Boot-Strap Loader监控程序:在keil 输入以下命令。图中“Convert_to_BSLx564.txt”文件保存在“SoftICE_564”路径下。执行完上图命令后,若出现如下界面表示转换成功,BSL监控程序下载入了单片机:2.6 通过SUPERRO编辑器将SoftICE监控程序下载入SST单片机下面介绍通过编程器将SoftICE监控程序下载到SST的MCU芯片中的方法:SST89E516ED单片机有两块程序存储区Block0(64Kb)和Block1(8Kb),监控存储在8Kb的Block1中,单片机上电从Block1开始执行,当没有接收到相应的串口命令时,再从主程序区Block0开始执行指令;具体操作步骤如下:1. 打开编辑器SUPERPRO程序,图标为;2. 进入SUPERPRO程序界面,单击“选择器件选项”;3. 进入器件选择对话框,在器件类型处选择”MCU/MPU”在查找处输入要器件名称,找到之后选择“确定”;4. 单击“装入文件”选项;5. 进入下载文件选择对话框,选择要下载的SoftICE监控程序,文件格式一般为“.hex”或“.bin”格式;6. 因为SST单片机的监控程序存储在Block1中,Block1的地址为10000h,故数据缓冲区起始地址改为“10000”,下载一般执行程序则直接默认;7. 左边是下载文件的操作选项,具体步骤为:Erase=Program=Verify;执行完上述三个步骤后,SoftICE监控程序已被下载入SST的MCU中了,可以使用Keil软件进行在线硬件仿真调试了。2.7 通过SST EasyIAP下载程序SST单片机中最初始的是BSL监控程序,可以通过SST BOOT-STRAP LOADER软件工具将用户程序下载入单片机中,具体操作步骤如下:1. 打开SST BOOT-STRAP LOADER软件工具,并按之前的步骤与单片机通讯连接成功。在界面的右下方IAP Function菜单中有下载选项,选择“Download”选项下载程序。2. 进入了下载文件选择界面;3. 在文件查找对话框中找到要下载的用户程序,一般为.Hex或.bin格式文件;4. 选择好用户程序后,单击步骤二中的OK选项开始下载,界面最下面的状态栏显示下载进度,当显示为Done时表示程序下载已经完成,单片机上电执行用户程序了。2.8 STC单片机的烧写;下面介绍另一款STC单片机的烧写方法:1. 打开STC单片机的编辑器STC-ISP,进入STC-ISP的工作界面。2. 2.在ISP的界面左上方已经有按照步骤排列的子单元,3. 按照界面上的步骤一步步执行下载操作,步骤1的单元如下图,在MCU Type下拉框中选择目标单片机型号,AP Memory为程序存储地址;4. 进入步骤2选择下载文件,点击右下方的OpenFile选项查找要下载的用户程序;5. 找到要下载的用户程序,多为.hex或.bin格式文件;6. 步骤3为串口设置,选择通过哪个COM口下载,Max Buad为波特率设置;7. 步骤4为下载设置,一般默认即可;8. 步骤5为下载操作,先点击”Download/下载”选项,再MCU重新上电复位,则开始执行下载操作;9. 步骤5单元下面为状态栏,可以观察MCU的下载过程,下图为下载成功信息显示;此时用户程序已下载入STC的MCU中了,拔掉串口线,上电复位用户程序即可执行。第三章 单片机系统学习平台V1.1实验设计基于“单片机系统学习平台V1.1”可开展单片机系统及相关扩展系统的实验。主要包括以下部分:基础实验实验一、IO口实验实验二、按键中断实验实验三、RAM实验实验四、段式LED实验实验五、矩阵按键实验综合实验实验一、语音采集与回放实验二、数字万用表设计实验三、水温控制系统设计实验四、简易数据传输系统3.1实验一、独立I/O实验3.1.1 LED跑马灯实验一、实验目的1. 熟悉单片机的基本结构和单片机系统学习平台的资源配置2. 熟悉使用在线仿真技术进行单片机系统开发的一般方法3. 学会用示波器观测现象,初步体会用仪器进行调试的思想4. 掌握基本输入输出口的设计方法,LED灯的特性和使用方法二、实验内容1. 用汇编语言实现以下功能:(1) 编程点亮8个LED,测试接口电路无问题(2) 编程将8个LED按从LED1-LED8 的顺序依次点亮,点亮一个LED后延时一段时间,延时时间考虑人眼能够分辨出,把它熄灭后,再继续点亮下一个了LED,形成LED跑马灯。要求当LED跑到边缘之后返回,而不是再从第一个LED开始。2. 当实现LED跑马灯的功能后,用示波器探头依次探测8个独立I/O口的现象。这时在每一个I/O口上应当能检测到一定频率的方波信号。 四、实验原理 1. LED原理:两个半导体P型和N型半导体加中间由一个有源层组成,当两端加上正负电压时电子开始移动和空穴(带正电的离子)结合产生辐射光。一般LED在正常发光的情况下,消耗电流在mA级别,为保证其正常发光,同时也不会过流,一般在LED回路中串联一个300欧-1K欧的电阻。2. LED硬件连接图,如下3.1.2 蜂鸣器实验1、 实验目的1. 了解蜂鸣器原理和类型2. 掌握单片机指令周期的计算方法2、 实验内容利用单片机让蜂鸣器发出一个固定频率(300 3400Hz)的响声3、 实验原理1、 蜂鸣器:蜂鸣器是一种一体化结构的电子讯响器,采用直流电压(有源蜂鸣器)或交流电压(无源蜂鸣器)供电,有源蜂鸣器内部已经带有振荡源,因此只要提供直流电压就可以发音,发音的频率由内部振荡源决定,频率固定,不能更改,无源蜂鸣器内部没有振荡源,因此必须提供交流电压使其发音,发音的频率与交流电压的频率一直,按照音乐节奏调整发音的频率可以实现简单的音乐播放。广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。2、 听觉范围:人耳一般对3003400Hz范围内的声音比较敏感,调整单片机管脚波形输出,使得产生频率在该范围内才可以听到声音。如果频率过高或过低都很难听到声音。3、 硬件连接:4、 实验步骤编程:控制单片机管脚,产生一个电平之后延时一段时间1/2T0,对该管脚电平取反,如此反复,就能够产生一个频率的方波,方波周期为T0,频率f0=1/T0,当f0在3003400Hz之间时,可以听到蜂鸣器的发音。3.2实验二、按键中断实验一、实验目的1、了解中断的基本概念2、了解按键软件消抖的方法3、了解定时器的基本概念二、实验设备单片机实验板v1_1三、实验内容1、通过按键中断实现对LED的控制:每按键一次LED灯右移一位2、通过定时器中断产生一个标准8KHz的方波 四、实验原理1、按键中断:实验板独立式键盘每个按键都有一个信号线与单片机电路相连。当其中中断按键按下的时候,会产生一个中断信号,该信号使得CPU跳转到中断点执行中断服务程序。执行完中断程序之后,CPU回到主程序原先断点,继续往下执行。2、按键消抖:查询单片机管脚,发现有信号线出现低电平表示可能出现键按下的情况。按键按下过程中存在前后延抖动,延时20ms之后查询发现管脚状态和之前读取一致,判定按键按下,根据读取数值判断按键编号并进行对应操作。3、定时器中断:定时器开启之后,计数器开始计数。当计数器达到程序员设定值后,进入中断。在中断服务程序中,程序员可自由发挥。五、实验步骤1、硬件连接 2、实现功能 壹:S17或者S18按下,LED0-LED3亮,再次按下LED0-LED3灭。 贰:利用定时器实现LED的闪烁频率定为1HZ。 叁:S17 或者 S18按下,LED4亮,定时器计数,1秒后,LED4灭 3、软件流程图4、 记录实验结果3.3实验三、RAM实验一、 实验目的1、 了解RAM读写原理2、 了解地址信号的产生原理3、 了解51单片机的控制总线信号ALE和nOE、nWE的产生原理二、 实验设备单片机实验板v1_1三、 实验内容1、读写RAM数据并将读写错误数显示在段式液晶上面四、 实验原理1、 地址信号的产生:51单片机的P0口是数据和地址复用线,可以利用一片74LS373进行地址锁存控制,将P0口产生出一组地址信号和数据信号在时间上分开(见实验板框图)。2、 读写过程:51单片机的P3口是多功能复用口,其中P36复用为nWR,P37复用为nRD,外部RAM的接口时序和这两个新号的生成时序相符合,可以直接进行RAM数据的读写。3、 片外RAM传送指令:MOVX A,Ri;MOVX A,DPTR;MOVX Ri,A;MOVX DPTR,A;这四条指令(单字节双周期指令)执行时,尤其要注意他们伴随着51单片机读写控制信号线nOE或nWE的“额外”置低。其中,第一条和第三条指令只能寻址256bit,而第二条和第四条指令可以寻址64Kb(此次实验中使用)。其读写时序和执行过程如下:将RAM的地址(存放在寄存器Ri或DPTR中)由地址总线P0(此时身份是地址线低8位)与P2(地址线高8位A8A15)口输出,即时序图中的S5P1到S6P2阶段。并在S4P2到S5P2阶段,发ALE信号将低8位地址锁存。第二个机器周期S1P2到S2P2内取消ALE与程序选通信号PSEN(即取消取指操作),P0身份转变为数据总线。与此同时发读或写信号,通过P0口将RAM的数据传送到累加器A中或将累加器A数据传送到RAM中。即:时序图的S6P2到S4P1阶段。由于锁存的地址为外部数据存储单元的地址,所以在第二个机器周期S4取消取指令的操作,不再发程序选通信号PSEN。五、 实验步骤1、 硬件连接:2、 62256地址分配:62256的地址总线有15位(A0A14),因此它的地址空间大小是215(32Kb)。62256的片选信号由51单片机地址线的最高位A15给出,且低电平有效,因此它的最低地址是0000H,最高地址是7FFFH。3、 软件设计:在RAM地址的1000H10ffH空间中写入0255数据,读出RAM的1000H10ffH空间数据,记录错误数据个数,将数据错误个数显示在段式液晶上面。4、 记录和观察实验现象。3.4实验四、段式LED实验一、 实验目的1. 段式LED工作原理2. 动态扫描显示原理二、 实验设备单片机实验板v1_1三、 实验内容1、在LED上面动态显示循环的数字8,到达边缘之后重新回到远点,依次循环四、 实验原理1. 段式LED原理:一个段式液晶是由八段LED组成,如上图所示,根据组成的led种类不同,常用的段式液晶有共阴极和共阳极两种类型,实验板上配置的为共阴极段式液晶。根据abcdefgh的电平状况,点亮或者熄灭对应的LED,就可以看到对应的数字或者字符,譬如abcdef设为高,将gh设为低就可以形成数字0了。2. 动态扫描原理:利用人眼的视觉残留现象,依次点亮每个八段码单元,只要扫描速度超过人眼可以识别的频率,就可以看到稳定的信息输出。3. 电路连接:CS3与nWE同时置低时选中片选信号CS_LED_SEL;CS2与nWE同时置低时选中段选信号CS_LED_SEG;片选信号CS_LED_SEL选通锁存器U13,通过P0口把某个SEL选中,即选中某个数码管。段选信号CS_LED_SEG选通锁存器U12,通过P0口的值对选中的数码管的A到DP赋值,以实现显示功能。五、 实验步骤1、硬件连接:2、软件设计:依次点亮八段码,设置较快的扫描频率,在段式液晶上面形成稳定的输出。将扫描频率设置较低,使人眼可以分辨各个八段码点亮和熄灭的状态,形成数字8从左向右循环的现象。3、观察并记录实验现象。3.5实验五、矩阵键盘实验一、 实验目的1. 掌握矩阵式键盘的原理2. 掌握74HC245,74HC573的使用3. 理解单片机总线读写和片选信号的产生4. 掌握矩阵键盘的编程方法二、 实验设备单片机实验板v1_1三、 实验内容1. 采用行扫描法编程获取矩阵式键盘的键值,并予以显示2. 学习矩阵键盘的构建方式四、 实验原理1. 电路原理图1. 4*4键盘:KEY_H为4根行线,KEY_V为4根列线,均接了10k欧姆上拉电阻2. 行线和列线行线:使用74HC573锁存P0口数据,为单向输出口列线:使用74HC245锁存P0口数据或键盘数据,数据读写方向由DIR确定3. 片选信号1. 当A15为高,A8-A10为低时CS0为低电平,CS0地址可设为0xf8ff,选中CS0时,单片机读信号使nOE为低,74HC245DIR为低电平,从74HC245读数据。2. 选中CS0时,单片机写信号使nWE为低,CS_KEY为高电平,74HC573锁存P0口上的数据,即单片机向74HC573写数据。2. 原理图分析单片机通过写数据到行线,从列线读数据来判断是否有按键和键值。1. 判断是否有按键按下:将行线作为输出,列线作为输入。CPU首先向行接口输出一个为“全0”数据,再从列接口读入数据,并判其是否为“全1”。若是“全1”就表示键盘中没有键被按下,否则表示有键被按下,且列码中“0”的位置就是所按按键的列号。2. 获得用户按下的按键所对应的键值:为了获得用户按下的按键所对应的键值,可先向行接口输出一个第0行为“0” ,其它行均为“1”的行码,然后读入列码并判其是否为“全1” ,若不是“全1”就表示在第0行中有键被按下,且读入的列码中出现“0”的位置代表该按键所处的列编号,输出行码中“0”的位置代表该按键所处的行编号,据键值公式可获取相应的键值;若读入的列码为“全1” ,就再对下一行进行类似的处理,如此逐行分析处理,直至所有行处理完毕。3. 消抖动:“抖动”是指两个机械电气触点在闭合或断开的瞬间时所产生的颤动,由于抖动的时间不超过20毫秒,所以通常都是使用“延时”的方法来去抖动,即一旦检测到按键有“状态改变”,就延时20毫秒,而后再去检测该现象是否仍然存在,若存在就表示确实有键按下或松开,否则表示检测的是一种干扰信号。五、 矩阵键盘编程方法1. 程序流程:2. 软件设计:编写按键处理程序,并将得到的按键按照015的数字进行编码;编写对应的案件处理程序,将按键值显示在段式液晶上面。3. 示例代码:见例程C51Pro,Lab5第四章 综合实验要求 实验一、数字钟系统 实验二、数字温度计设计 实验三、数字电压表设计 实验四、语音采集与回放 实验五、数字频率计 实验六、DDS信号源 4.1 实验一、数字钟系统一、基础要求 1. 设计一个精确的1秒定时器; 2. 根据1秒定时器,设计一个带小时、分钟、秒的时钟,并将小时、分钟、秒显示在LED上; 3. 设计小时、分钟、秒的修改按键,可分别调整小时、分钟、秒(按键设计参考电子表); 二、扩展要求 1. 增加小时、分钟、秒的键盘直接修改功能; 2. 设计闹钟功能,最多支持5个闹钟,可分别查看和修改闹钟时间,可分别设置闹钟开关。 3. 增加万年历功能。 4.2 实验二、数字温度计一、基础要求 1. 设计实现数字温度计18B20的接口时序;2. 读取18B20数据,并将数据转化为BCD码显示在LED上,显示精度为两位小数;3. 实现对温度的修正;4.3 数字电压表设计一、基础要求 1. 设计实现AD0809接口电路,实现模拟电压量0-5V转化为数字量;2. 编程实现AD0809的数据读取;3. 设定固定的刷新速率,将读取数据显示在LED上,显示精度两位小数;4. 实现电压采集值的分段函数修正。二、扩展要求 1. 扩展电压表的测量范围,实现0-1V,0-10的测量; 4.4 数字化语音存储与回放系统设计并制作一个数字化语音存储与回放系统,其示意图如下:1基本要求(1)放大器1的增益为46dB,放大器2的增益为40dB,增益均可调;(2)带通滤波器:通带为300Hz3.4kHz ;(3)ADC:采样频率fs= 8kHz,字长= 8位;(4)语音存储时间10秒;(5)DAC:变换频率fc= 8kHz,字长= 8位;(6)回放语音质量良好。2发挥部分在保证语音质量的前提下:(1)减少系统噪声电平,增加自动音量控制功能;(2)语音存储时间增加至20秒以上;(3)提高存储器的利用率(在原有存储容量不变的前提下,提高语音存储时间);(4)其它(例如:校正等)。4.5 数字频率计设计一、任务设计并制作一台数字显示的简易频率计。二、要求1基本要求(1)频率测量a测量范围 信号:方波、正弦波;幅度:0.5V5V;频率:1Hz1MHzb测量误差0.1%(2)周期测量a测量范围 信号:方波、正弦波;幅度:0.5V5V;频率:1Hz1MHzb测量误差0.1%(3)脉冲宽度测量 a测量范围 信号:脉冲波;幅度:0.5V5V;脉冲宽度100sb测量误差1%(4)显示器 十进制数字显示,显示刷新时间110秒连续可调,对上述三种测量功能分别用不同颜色的发光二极管指示。(5)具有自校功能,时标信号频率为1MHz。(6)自行设计并制作满足本设计任务要求的稳压电源。2发挥部分(1)扩展频率测量范围为0.1Hz10MHz(信号幅度0.5V5V),测量误差降低为0.01%(最大闸门时间10s)。(2)测量并显示周期脉冲信号(幅度0.5V5V、频率1Hz1kHz)的占空比,占空比变化范围为10%90%,测量误差1% 。(3)在1Hz1MHz范围内及测量误差1%的条件下,进行小信号的频率测量,提出并实现抗干扰的措施。4.6 A题波形发生器 设计制作一个波形发生器,该波形发生器能产生正弦波、方波、三角波和由用户编辑的特定形状波形。示意图如下:1基本要求(1)具有产生正弦波、方波、三角波三种周期性波形的功能。(2)用键盘输入编辑生成上述三种波形(同周期)的线性组合波形,以及由基波及其谐波(5次以下)线性组合的波形。(3)具有波形存储功能。(4)输出波形的频率范围为100Hz20kHz(非正弦波频率按10次谐波计算);重复频率可调,频率步进间隔100Hz。(5)输出波形幅度范围05V(峰-峰值),可按步进0.1V(峰-峰值)调整。(6)具有显示输出波形的类型、重复频率(周期)和幅度的功能。2发挥部分(1)输出波形频率范围扩展至100Hz200kHz。(2)用键盘或其他输入装置产生任意波形。(3)增加稳幅输出功能,当负载变化时,输出电压幅度变化不大于3%(负载电阻变化范围:100)。(4)具有掉电存储功能,可存储掉电前用户编辑的波形和设置。(5)可产生单次或多次(1000次以下)特定波形(如产生1个半周期三角波输出)。 (6)其它(如增加频谱分析、失真度分析、频率扩展200kHz、扫频输出等功能)。第五章 单片机C51讲义(注:本文由张清恒编辑,本文中相应的代码片断运行及测试结果以Keil 51的V6版编译器为准)5.1 C语言概述1单片机及程序设计语言 (1) 单片机在系统设计中的位置声、光、电、机械部件等传感器及模数转换电路(AD)各类传感器及信号调理电路单片机、DSP、可编程逻辑器件等传感器及模数转换电路(AD)各类传感器及信号调理电路模拟电路部分数字电路部分总线接口图一 单片机在系统设计中的位置(2) 程序设计语言A机器指令集 面对具体的处理器:单片机、ARM处理器(精简指令RISC体系)、通用处理器(复杂指令CISC体系)。B汇编语言 使用助记符代替机器指令,需要转换成机器指令后才能被识别运行。C面向结构的高级语言C、PASCAL、Fortran、COBOL、BASIC2C高级语言的编译过程C语言作为高级语言,其使用更高级的行为描述方法来定义操作。一般编译型的高级语言,其先经预编译,然后再编译转换成汇编语言,然后加入相应的库函数实体并经过链接形成最终机器代码。预编译所做的工作 为做宏替换、有效代码的选择等工作。其示意图如图二所示。C语言程序1 (源代码)汇编语言代码1 (中间代码)机器语言代码(最终代码)编译链接C语言程序2 (源代码)汇编语言代码2 (中间代码)编译C语言程序n (源代码)汇编语言代码n (中间代码)编译Math等函数库 (最终代码)图二 C语言源程序到达最终代码的过程注意,一、由于不同硬件的机器指令集不一样,故编译与链接的针对不同目标机器的最终代码不一样;二、编译的过程更多的时候不是在目标机器上进行的,故编译器本身有一个运行环境(一般为DOS、Windows环境)。故需要使用适合于目标机器平台的能够在指定的某一平台上运行的编译器与链接器进行相应的编译与链接工作。5.2 C51语言1 C51语言与C语言的关系C51语言由C发展而来,其基本上继承了C语言的特性。其区别在于:A C语言程序建立在操作系统的基础上,有操作系统为程序操作许多基本的操作,如字符显示、键盘读取、文件操作,用户程序并不直接操作控制硬件;而C51语言直接面向硬件,必须自己实现对硬件的控制。B C语言程序一般在存储在外部存储介质上,在运行时由操作系统装载入内存中进行重定位后,再运行;而C51程序是直接在存储的ROM或FLASH介质上运行。其区别示意图如图三所示。键盘、显示器、磁盘存储器等外围硬件BIOS基本输入输出系统操作系统(DOS、Windows、Linux、Solaris、FreeBSD)用户C程序最终代码程序图三 通用计算机上的用户C语言程序的运行环境示意图键盘、显示器、磁盘存储器等外围硬件操作系统(UC-OS)用户C51程序最终代码图四 单片机上的用户C51语言程序的运行环境示意图2 C51中继承C中可使用的资源现成的函数等资源包括两个部分,一个是函数头的声明文件(即.h文件),另一个是函数编译后的目标代码库(即.lib文件)。只要把用到的文件放到当前目录或系统编译器目录,在链接时系统会自动寻找并使用。(1) Intrinsic.h C51内部固定函数extern void _nop_ (void);extern bit _testbit_ (bit);extern unsigned char _cror_ (unsigned char, unsigned char);extern unsigned int _iror_ (unsigned int, unsigned char);extern unsigned long _lror_ (unsigned long, unsigned char);extern unsigned char _crol_ (unsigned char, unsigned char);extern unsigned int _irol_ (unsigned int, unsigned char);extern unsigned long _lrol_ (unsigned long, unsigned char);extern unsigned char _chkfloat_(float);(2) Absacc.h 数据类型相关资源#define CBYTE (unsigned char volatile code *) 0)#define DBYTE (unsigned char volatile data *) 0)#define PBYTE (unsigned char volatile pdata *) 0)#define XBYTE (unsigned char volatile xdata *) 0)#define CWORD (unsigned int volatile code *) 0)#define DWORD (unsigned int volatile data *) 0)#define PWORD (unsigned int volatile pdata *) 0)#define XWORD (unsigned int volatile xdata *) 0)(3) Float.h 运算常数相关库#define FLT_RADIX 2#define FLT_ROUNDS 0#define FLT_DIG 6#define FLT_EPSILON 5.96046e-8#define FLT_MANT_DIG 24#define FLT_MAX 3.40282e38#define FLT_MAX_EXP 0x7F#define FLT_MAX_10_EXP 38#define FLT_MIN 1.17549e-38#define FLT_MIN_EXP -125#define FLT_MIN_10_EXP -37#define DBL_RADIX FLT_RADIX #define DBL_ROUNDSFLT_ROUNDS#define DBL_DIGFLT_DIG#define DBL_EPSILONFLT_EPSILON#define DBL_MANT_DIGFLT_MANT_DIG#define DBL_MAXFLT_MAX#define DBL_MAX_EXPFLT_MAX_EXP#define DBL_MAX_10_EXPFLT_MAX_10_EXP#define DBL_MINFLT_MIN#define DBL_MIN_EXPFLT_MIN_EXP#define DBL_MIN_10_EXPFLT_MIN_10_EXP#define LDBL_RADIX FLT_RADIX #define LDBL_ROUNDSFLT_ROUNDS#define LDBL_DIGFLT_DIG#define LDBL_EPSILONFLT_EPSILON#define LDBL_MANT_DIGFLT_MANT_DIG#define LDBL_MAXFLT_MAX#define LDBL_MAX_EXPFLT_

温馨提示

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

评论

0/150

提交评论