还剩30页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
《单片机原理及应用》102G05A实验指导书
2016.02目录TOC\o1-3\h\z\u实验1C语言编程3实验2Keil__环境与编程5实验3数据排序18实验4数据搬运19实验5汇编程序实验20实验6流水灯实验21实验7C8051F020单片机基本配置方法23实验8外部中断实验25实验9按键接口与数码管输出26实验10定时器27实验11数字频率计设计28实验12串口通信实验30实验13数据采集系统设计31实验14函数__发生器设计32实验1C语言编程
一、实验目的
1.复习C语言编程
二、实验内容
1.熟悉C语言编程软件调试一下题目1两数相加2两数比大小31+2+3+……+104其他简单数学计算………
三、实验步骤(简单操作可参见实验2中项目创建步骤)
1.Keil软件,使用“Project”菜单中的“NewμVisionProject”选项来创建项目,放置到你指定的文件夹
2.选择单片机型号AT89C
513.编写源程序,并保存(扩展名用C),例程见图1-
14.将文件添加到工程中
5.调试编写源程序注意
1.AT89C51为通用8051系列单片机
2.头文件reg
51.h用于51单片机特殊功能寄存器标识,stdio.h用于一些标准输入输出函数的调用如printf
3.因单片机没有PC机那样的显示器标准输出,printf函数的输出通过单片机串口输出实现,所以要完成两件事1printf函数之前要执行“TI=1;”用于打开串口发送,只有执行“TI=0;”2软件仿真调试时,信息在“串口输出”窗口中输出可在debug模式下使用菜单View--SerialWindows--UART#1打开“串口输出”
4.使用单片机端口P
0、P
1、P2等输出,可在debug模式下使用菜单Peripherals—I/O-Ports—指定哪个端口
5.调试界面如图1-2图1-1C语言例程图1-2C语言程序调试界面实验2Keil__环境与编程
一、实验目的
1.熟悉基于KEIL下的实验环境
2.掌握程序调试的单步、断点、连续运行方法
3.熟悉在KEIL环境下观察内部RAM特殊功能寄器的方法
二、实验内容编写并调试一个双字节无符号十进制数加法程序其功能为将被加数写入30H、31H单元,加数写入40H、41H单元,运行程序结果写入50H、51H、52H单元中,加法程序功能为30H31H+40H41H=50H51H52H(都是高位在前、低位在后)
三、实验设备
1.PC机一台
四、实验步骤
1.启动PC机打开桌面上的KeilμVision4软件,进入μVision4界面,如图2-1图2-1μVision4界面
2.创建和打开项目(项目管理)项目是用来保存文件、链接工具、目标代码生成和窗口配置信息的可以使用“Project”菜单中的“NewμVisionProject”选项来创建项目一旦项目被保存,将保存如下信息●当前所有打开的文件●集成链接工具的设置●目标生成配置●主IDE窗口及已经打开的调试窗口的位置和大小●编辑器的设置如字体和文字颜色等
2.1创建新项目
2.
1.1选择【Project】/【NewμVisionProject】选项,并打开如图2-
22.
1.2在弹出的“CreateNewProject”对话框中选择要保存项目文件的路径,如图2-3在“E盘”以自己的学号建立一文件夹,以后自己的实验程序都存在此文件夹中例如新文件夹为“12345678”然后单击“保存”按钮图2-2Project菜单图2-3“CreateNewProject”对话框
2.
1.3在弹出的“CreateNewProject”对话框中的“文件名”文本框中输入项目名,例如shiyan1该文件名不要用数字开头,然后单击“保存”按钮如图2-4建立项目完成图2-4建立项目
2.
1.4在弹出的对话框中要求选择单片机的型号在输入项目名称后单击确定后,会弹出器件选择窗口;在此窗口中选择合适的CPU窗口中的器件按公司名称排列在此选择“AT89C51”的型号,__“确定”完成选择图2-5选择AT89C51型号
2.
1.5弹出的对话框__“确定”按钮后,会弹出的如图2-6的对话框,询问是否要将启动代码“StartupCode”加入到项目中__“否”图2-6“StartupCode”
3.源程序编辑IDE包括一个全功能的编辑器可用文件菜单中的“NewFile”命令来新建文件,或用文件工具栏中的“New”按钮然后开始键入源程序只有当文件的扩展名为.a__或.c时,才具有源程序关键字符彩色显示功能可用文件保存按钮,或用文件菜单中的“S__e”或“S__eAs”命令保存文件然后再将编辑好的源代码添加到项目中
3.1建立一个新的实验源程序文件选择【File】/【New】选项,或者单击工具栏按钮如果已经有源程序文件,可以忽略这一步
3.2在弹出的程序文本框中输入一个简单的程序,如图2-7所示图2-7输入新的实验源程序
3.3程序输入完成后,要保存程序文件选择【File】/【S__e】选项,或者单击工具栏按钮,保存文件在弹出的对话框中选择要保存的路径,在“文件名”文本框中输入文件名注意一定要输入文件扩展名,如果是C程序文件,文件名为*.c;如果是汇编文件,文件名为*.a__例如shiyan
1.c,单击“保存”按钮注意一定要有扩展名.C#include“STC15F2K61S
2.H”#includestdio.h#includeintrins.hunsignedchara
[5]_at_0x50;unsignedcharww0_at_0x30;unsignedcharww1_at_0x31;unsignedcharww2_at_0x32;unsignedcharww3_at_0x33;unsignedcharww4_at_0x34;unsignedcharee0_at_0x40;unsignedcharee1_at_0x41;unsignedcharee2_at_0x42;unsignedcharbdataBZW_at_0x20;//标志位__itBB0=BZW^0;//标志位0__itBB1=BZW^1;//标志位1__itBB2=BZW^2;//标志位2unsignedcharxx;yy;zz;intikyzx;void__in{ww0=0x95;//存储器窗口察看30hww1=0xa6;//察看31hww2=0xb7;//察看32hww3=0x88;//察看33hww4=0x08;//察看34hk=ww0+ww1+ww2+ww3+ww4;//观察和堆栈窗口察看k=0x282ww4=k/4;//察看34h=0xa0ee0=ww4/100;//察看40h=0x01xx=ww4%100;//察看xx观察和堆栈窗口察看xx=0x3cee1=xx/10;//察看41h=0x06ee2=xx%10;//察看42h=0x00ifee02BB0=1;//察看20h位0ifee1=5BB1=1;//察看20h位1ifee29BB2=1;//察看20h位2fori=0k=0x55;i5;i++k++{a[i]=k;//察看存储器窗口50h---54h)}ACC=0xa0;//专用寄存器窗口察看AB=0xbb;//专用寄存器窗口察看BswitchACC+1{case0xa1:TL0=0x77;TH0=0x88;//存储器窗口察看8ah8chbreak;case0xa2:TL0=0x33;TH0=0x44;//存储器窗口察看8ah8chbreak;default:TL0=0x11;TH0=0x22;//存储器窗口察看8ah8chbreak;}while1;}
3.4将编辑好的源代码文件添加到项目中单击Target1前面的+号,展开里面的内容Sour__Group1,如图2-8所示
3.5用右键单击Sour__Group1,在弹出的快捷菜单中选择AddFiletoGroup`Sour__Group1`选项,如图2-9所示
3.6如果是C文件,则选择“CSour__file”;如果是汇编文件,则选择“A__Sour__file”选择刚才源程序文件“shiyan1”,单击“Add”按钮,如果要添加多个文件,可以不断添加添加完毕后单击“Close”按钮,关闭该窗口,如图2-10图2-8Target展开图图2-9AddFilestoGroup‘Sour__Group1’菜单图2-10AddFilestoGroup‘Sour__Group1’对话框
3.7接下来要对目标进行一些设置用鼠标右键(注意用右键)单击Target1,在弹出的会计菜单中选择OptionsforTarget“Target1”选项,如图2-11所示图2-11OptionsforTarget“Target1”选项
3.11选择设置Debug选项卡,这里有两类仿真形式可选UseSimulator和Use KeilMonitor-51Driver,前一种是纯软件仿真,后一种是带有Monitor-51目标仿真器的仿真如图2-12所示纯软件仿真仿真选择“UseSimulator”即可图2-12设置Debug选项
4.源程序的编译和链接编译程序,选择【Project】/【Rebuildalltargetfiles】选项.或者单击工具栏中的按钮,开始编译程序如果编译成功,__环境下面会显示编译成功的信息,图2-13;如果不成功,图2-14,需修改程序语法等,选中图中程序错误的行,双击左键,则在程序编辑窗口中,在错误源代码所在的行处显示一标记,对程序错误进行修改,全部修改后,重新编译,直至编译成功图2-13编译成功图2-14编译不成功
5.调试,运行程序菜单
5.1编译完毕之后,选择【Debug】/【Start/StopDebugSession】选项,或者单击工具栏中的铵钮,即就进入调试环境,如图1-16,或图1-17,单击工具栏铵钮,可在汇编程序与反汇编程序之间来回切换开始调试程序程序调试前应先要熟悉调试菜单Debug、调试命令,视图菜单View、项目菜单Project和项目命令Project见表
1、表
2、表
35.2单步执行程序A.单击工具栏铵钮显示存储器窗口,在MEMORY#1中的/ddress窗口处输入D:30H然后按回车键,在程序执行过程中,注意观察RAM30H31H40H41H50H51H52HD1数据变化,注意观察特殊功能寄存器的存数据变化情况(ABSPDPTRPCPSWR0—R7)B.单击工具栏或快捷键F11,单步执行程序,观察RAM,特殊功能寄器“A”变化情况C.当单步执行程序到“while1;”时,停止向下执行,原地踏步D.单击工具栏复位E.重新单步执行程图2-15汇编程序图2-16反汇编程序
5.
2.2程序的修改A.如果程序需要修改,单击工具栏退出调试状态B.对程序进行修改,并保存C.编译程序D.重新开始调试程序断点执行程序A.断点的设置单击要设置断点的程序行后,__鼠标到工具栏,单击,此时要设置断点的程序行前,显示一红色标记,断点设置完成可设置多个断点B.单击工具栏或快捷键F5,直到遇到一个中断后停止,C.再次单击工具栏或快捷键F5,程序从断点处开始向下执行程序D.断点的取消单击要取消设置断点的程序行后,__鼠标到工具栏,单击,此时设置断点的红色标记消除,断点被取消E.单击工具栏复位连续执行程序单击工具栏或快捷键F5,连续执行程序,单击工具栏或快捷键Esc,停止程序运行
6.修改数据ww0=0x55;//存储器窗口察看30hww1=0x77;//察看31hww2=0xaa;//察看32hww3=0x44;//察看33hww4=0xdf;//察看34hACC=0xa3;//专用寄存器窗口察看AB=0xbb;//专用寄存器窗口察看B
7.重新调试表2-1视图菜单View菜单工具栏描述StatusBar显示/隐藏状态条FileToolbar显示/隐藏文件菜单条BuildToobar显示/隐藏编译菜单条DebugToobar显示/隐藏调试菜单条ProjectWindow显示/隐藏项目窗口OutputWindow显示/隐藏输出窗口Sour__Browser打开资源浏览器DisassemblyWindow显示/隐藏反汇编WatchCallStackWindow显示/隐藏观察和堆栈窗口MemoryWindow显示/隐藏存储器窗口CodeCoverageWindow显示/隐藏代码报告窗口Perfor__n______yzerWindow显示/隐藏性能分析窗口SymbolWindow显示/隐藏字符变量窗口SerialWindow#1显示/隐藏串口1的观察窗口SerialWindow#2显示/隐藏串口2的观察窗口Toolbox显示/隐藏自定义工具栏窗口PeriodicWindowUpdate程序运行时刷新观察窗口WorkbookMode显示/隐藏窗口框架模式Options...设置颜色,字体,快捷键和编辑器的选项表2项目菜单Project和项目命令Project菜单工具栏快捷键描述NewProject⋯创建新项目ImportμVision1Project⋯转化μVision1的项目OpenProject⋯打开一个已经存在的项目CloseProject⋯关闭当前的项目TargetEnviro__ent定义工具、包含文件和库的路径TargetsGroupsFiles维护一个项目的对象、文件组和文件SelectDevi__forTarget选择对象的CPURemove⋯从项目中移走一个组或文件Options⋯Alt+F7设置对象、组或文件的工具选项FileExtensions选择不同文件类型的扩展名BuildTargetF7编译修改过的文件并生成应用RebuildTarget重新编译所有的文件并生成应用Translate⋯Ctrl+F7编译当前文件StopBuild停止生成应用的过程1~7打开最近打开过的项目表3调试菜单和调试命令Debug菜单工具栏快捷键描述Start/StopDebuggingCtrl+F5开始/停止调试模式GoF5运行程序,直到遇到一个中断StepF11单步执行程序,遇到子程序则进入StepoverF10单步执行程序,跳过子程序StepoutofCtrl+F11执行到当前函数的结束CurrentfunctionstopRuningEsc停止程序运行Breakpoints⋯打开断点对话框Insert/RemoveBreakpoint设置/取消当前行的断点Enable/DisableBreakpoint使能/禁止当前行的断点DisableAllBreakpoints禁止所有的断点KillAllBreakpoints取消所有的断点ShowNextStatement显示下一条指令Enable/DisableTra__Recording使能/禁止程序运行轨迹的标识ViewTra__Records显示程序运行过的指令Memory__p⋯打开存储器空间设置对话框Perfor__n______yzer⋯打开设置性能分析的窗口InlineAssembly⋯对某一行重新汇编,可以修改汇编代码FunctionEditor⋯编辑调试函数和调试设置文件ResetCPU复位CPU实验3数据排序
一、实验目的
1.熟悉51单片机体系结构,掌握程序设计方法
2.掌握排序程序的设计方法
二、实验内容
1.本例程采用交换排序法将内部RAM中的30~39H单元中的10个单字节无符号二进制数按从小到大的次序排列;
2.将排序后的数据中的最大的一个数和最小一个数去掉求其他八个数的和和放40H41H中求这八个数的平均值放在50H中
3.数据排序可采用冒泡法、插入法等C语言8大经典排序算法
三、实验步骤
1.用C语言编写程序
2.编译、生成项目、下载程序,调试运行程序
3.用单步、断点、连续执行程序的方法调试程序
4.打开RAM数据窗口,分别观察看30H—39H、40H41H02H0C0H和50H58H的单元
四、程序设计指导
1.变量名是内存中存储空间的地址别名,指定将变量创建到内存的存储空间地址的方法如下1dataunsignedchara
[10]_at_0x30;//片__址0x30上定义数组a2#definexDBYTE[0x40];//片__址0x40上定义字节变量x
2.求和时,注意数据溢出问题比如将字节类型的两个变量ab相加,此时a和b的最大值为28-1,两者相加后肯定大于28所以应该如下处理变量存储长度加大unsignedcharab;intx;……x=a+b;实验4数据搬运
一、实验目的
1.熟悉51单片机存储结构,掌握程序设计方法
2.掌握单片机内的数据搬运
二、实验内容
1.将程序存储器的数据搬运到数据存储区
2.数据存储区内的数据搬运
三、实验步骤
1.用C语言编写程序
2.编译、生成项目、下载程序,调试运行程序
3.用单步、断点、连续执行程序的方法调试程序
4.打开CODE和RAM数据窗口,对照观察源地址与目标地址的数据是否一致
四、程序设计指导
1.源数据或目标数据可采用数组或指针
2.采用循环结构实现实验5汇编程序实验
一、实验目的
1.了解51单片机指令系统
2.了解51汇编程序设计
二、实验内容
1.了解汇编语言编程查阅相关资料,尝试汇编程序调试一下题目1两数相加2两数比大小31+2+3+……+104其他简单数学计算………
2.调试,并记录实验结果
三、实验步骤(简单操作可参见实验2中项目创建步骤)
1.Keil软件,使用“Project”菜单中的“NewμVisionProject”选项来创建项目,放置到你指定的文件夹
2.选择单片机型号AT89C
513.编写源程序,并保存(扩展名用a__)
4.将文件添加到工程中
5.调试实验6C8051F020单片机基本配置方法
一、实验目的
1.熟悉C8051F优先权交叉开关译码器,掌握I/O__叉开关设置和引脚配置
2.了解C8051F单片机内部和外部振荡器结构和配置方法
二、实验内容
1.C8051F020单片机系统时钟配置为外部晶体振荡器
2.I/O__叉开关配置SPI、T
0、T
1、/INT0和/INT1分配端口引脚将P
1.
5、P
1.6和P
1.7配置为模拟输入
3.在P
2.1输出一个矩形波,用示波器观察波形,并记录__频率幅度;改变系统时钟为外部晶体振荡器的二分频,再次记录__频率和幅度要求
1.程序调试过程中,要充分利用__环境提供的调试工具
(1)用单步调试的方式,观察单片机的运行过程;用__环境提供的资源观察窗口,查看P
2.1引脚的逻辑状态
(2)用全速运行查看程序运行的效果
三、实验说明通过本实验,进一步初步熟悉KeiluVision4__环境的使用;了解C8051F020单片机的I/O__叉开关和振荡器及配置使用;了解C语言程序设计和调试方法
四、实验仪器和设备PC机,KeiluVision4软件,C8051F020__板,EC5在线仿真器
五、实验原理及参考程序流程图
1.C8051F系列MCU振荡器每个C8051F系列MCU都有一个内部振荡器和一个外部振荡器驱动电路,每个驱动电路都能产生系统时钟,MCU在复位后从内部振荡器启动系统时钟可在内部振荡器和外部振荡器之间进行切换也可以在选择内部振荡器时让外部振荡器保持在允许状态,这样可以避免在系统时钟被切换到外部振荡器时的启动延迟外部振荡器具有很高的可配置性,为系统设置者提供了多种选择时基__可以从外部CMOS电平时钟源、晶体或陶瓷谐振器、RC组合电路或外部电容获得内部和外部振荡器的工作受两个SFR寄存器控制,即OSCICN内部振荡器控制寄存器和OSCXCN外部振荡器控制寄存器
2.C8051F020交叉开关配置C8051F020单片机内部的数字和模拟资源可以通过P0~P3,32个I/O引脚使用每个端口引脚都可以被定义为通用I/O(GPIO),又可以分配给一个数字外设或功能(例如UART0或/INT1),如图所示其中P1口的引脚可以用做ADC1的模拟输入设计者完全控制数字功能的引脚分配,只受I/O引脚数的限制这种资源分配的灵活性是通过使用优先权交叉开关译码器实现的图7-1交叉开关原理框图端口I/O初始化包括以下步骤1用端口输入方式寄存器(P__DIN)选择所有端口引脚的输入方式(模拟或数字)2用端口输出方式寄存器(P__DOUT)选择所有端口引脚的输出方式(漏极开路或推挽)3将引脚分配给要使用的外设4使能交叉开关(XBARE=‘1’)实验7流水灯实验
一、实验目的
1.掌握单片机通用I/O使用
二、实验内容与要求掌握通用I/O使用__板上发光二极管与单片机I/O口的基本接口电路如图7-1所示由单片机的P5口驱动LED当端口为低电平时,点亮LED,当端口为高电平时LED熄灭依次实现以下显示模式
(1)全亮并闪烁4次
(2)点亮一个发光管,右循环
(3)点亮一个发光管,左循环
(4)单数LED与双数LED交替点亮4次LED0LED1LED2LED3LED4LED5LED6LED7P
5.0P
5.1P
5.2P
5.3P
5.4P
5.5P
5.6P
5.7图7-1LED电路原理图及引脚对应关系要求1.每一种显示模式用一个函数实现,主程序通过调用相应函数实现LED显示模式2.程序调试过程中,要充分利用__环境提供的调试工具
(1)用单步调试的方式,观察单片机的运行过程,用变量观察窗口查看单片机程序运行过程中变量的变化情况;用__环境提供的资源观察窗口,查看P5口相应引脚的逻辑状态
(2)用断点设置的方法并结合单步运行,观察模式3的运行结果
(3)用全速运行查看程序运行的效果3.掌握单片机通用I/O口驱动LED接口电路
三、实验说明通过本实验,了解单片机通用I/O的操作掌握单片机编程、硬件调试方法
四、实验仪器和设备PC机,KeiluVision4软件,C8051F020__板,EC5在线仿真器
五、实验原理及参考程序流程图��单片机初始化�开始显示模式1显示模式2显示模式3显示模式4�点亮所有LED开始延时熄灭所有LED延时循环次数==4?�结束NY图7-2主流程图图7-3显示模式1流程图实验8外部中断实验
一、实验目的
1.掌握外部中断技术的基本使用方法2.掌握中断处理程序的编写方法
二、实验内容与要求
1.正确配置交叉编译开关,使其中一个I/O引脚成为/INT0或/INT
12.按前一个实验调试几种流水灯的流水显示方式
3.外部中断引脚,触碰一次GND,使上面的流水显示方式改变一次
三、实验说明通过本实验,进一步熟悉C8051F020单片机的I/O__叉开关和振荡器及配置使用;熟悉C语言的模块化程序设计方法掌握中断处理程序的编写方法必须用模块化方法进行C语言程序设计
四、实验仪器和设备PC机、KeiluVision4软件,C8051F020单片机,EC5在线仿真器
五、实验原理实验9按键接口与数码管输出
一、实验目的
1.掌握ZLG72__专用按键显示芯片电路设计
2.掌握SPI通信程序设计方法
3.掌握基于ZLG72__按键显示驱动程序设计
二、实验内容与要求
1.ZLG72__专用按键显示芯片接口电路设计、制作与调试
2.ZLG72__按键显示驱动程序设计设计一个定时器要求能够输入定时时长,定时最长时间为99分59秒;按启动键后开始计时,数码管显示当前计时时长,显示格式为XX.XX.X;每100ms刷新一次数码管显示的数值;定时时间到达后,用数码管闪烁指示定时器的工作状态用功能按键控制,设功能按键为启动键、暂停键、清零键当单片机复位后进入等待输入定时时间状态,用户可以输入定时时间,输入的时间同时在数码管上显示;当输入定时时间后,按启动键,定时器开始计时,数码管显示当前计时时间再次按暂停键,定时器暂停计时,数码管显示当前计时时间;再次按暂停键,定时器继续计时按清零键,定时器停止计时,并清零计时值,数码管显示为零,定时器进入等待输入状态
三、实验说明通过本实验,掌握ZLG72__专用按键显示芯片接口电路设计、制作与调试;掌握SPI串行通信接口驱动程序设计;掌握基于专用芯片的人机交互程序设计方法逐步掌握C语言的模块化程序设计方法必须用模块化方法进行C语言程序设计
四、实验仪器和设备PC机、KeiluVision2软件,C8051F020单片机,EC3在线仿真器
五、实验原理参考ZLG72__使用说明实验10定时器
一、实验目的1.学习8051内部定时器的使用和编程方法2.进一步掌握定时中断处理程序的编写方法
二、实验内容本实验要求用定时器T0以中断的方式设计一计时时钟,显示时、分、秒,定时器中断时间为20毫秒,50次中断为一秒钟(12MHz),通过前一个实验的显示方式,将时钟实时显示出来
三、实验步骤
1.用C语言或汇编语言编写程序2.编译、生成项目、下载程序,调试运行程序
四、实验程序参考框图图10-1主程序流程图定时器中断程序完成“小时”“分钟”“秒钟”的记录实验11数字频率计设计
一、实验目的
1.掌握单片机片__时器的使用方法
2.掌握基于单片机片__时器的数字频率计设计方法
二、实验内容与要求基于单片机片__时器的数字频率计设计要求
(1)测频率范围10Hz~10KHz为保证测量精度分为三个频段10Hz~100Hz100Hz~1KHz1KHz~10KHz当__频率超过规定的频段上限时,设有超量程指示三个频段之间用手动切换
(2)输入波形低频函数__发生器输出的矩形波,幅度为3V
(3)测量误差σ≤±1%
(4)显示和响应时间测量结果用三位半导体数码管显示,要求显示数码稳定清晰三个频段的最大显示数分别为
99.9Hz,
999.Hz,
9.99KHz,为此需要控制小数点位置,并用两个发光二极管分别显示频率单位Hz或KHz,详见表1频率范围小数点位置单位响应时间10Hz≤f100Hz××.×Hz≤12秒100Hz≤f1KHz×××.Hz≤2秒1KHz≤f10KHz×.××KHz≤2秒
三、实验说明通过本实验,掌握单片机片__时器的使用方法,了解数字频率计的测量原理及测量电路设计方法掌握基于单片机的数字频率计工作原理与设计方法必须用模块化方法进行C语言程序设计
四、实验仪器和设备PC机、KeiluVision4软件,C8051F020__板,EC5在线仿真器
五、实验原理频率测量的方法常用的有测频法和测周法两种
(1)测频法测频法的基本思想是让计数器在闸门__的控制下计数1秒时间,计数结果是1秒内被测__的周期数,即被测__的频率若被测__不是矩形脉冲,则应先变换成同频率的矩形脉冲测频法的原理框图如图6所示图中,秒脉冲作为闸门__,当其为高电平时,计数器计数;低电平时,计数器停止计数显然,在同样的闸门__作用下,被测__的频率越高,测量误差越小当被测频率一定时,闸门__高电平的时间越长,测量误差越小但是闸门__周期越长,测量的响应时间也越长例如,闸门__高电平时间为1秒,被测__频率的真值为2Hz,如图2-2-2所示由图可知,无论被测__的频率是多少,测量时可能产生的最大绝对误差均为±1Hz,即f测-f真=±1Hz所以,最大相对误差为σ__x=(f测-f真)/f真=±1/f真由上式可知,在闸门__相同时,测频法的相对误差与被测__的频率成反比因此测频法适合于测量频率较高的__
(2)测周法当被测__频率较低时,为保证测量精度,常采用测周法即先测出被测__的周期,再换算成频率测周法的实质是把被测__作为闸门__,在它的高电平的时间内,用一个标准频率的__源作为计数器的时钟脉冲若计数结果为N,标准__频率为f1,则被测__的周期为T=T1·N被测__的频率为f=1/T1·N=f1/N利用测周法所产生的最大绝对误差,显然也等于±1个标准__周期如果被测__周期的真值为T真=T1·N,则T测=T1·(N±1)σ__x=(f测-f真)/f真=T真/T测–1=±1/(N±1)由上式可知,对于一定的被测__,标准__的频率越高,则N的值越大,因而相对误差越小
(3)低频段的测量鉴于上述困难,对于低频__,为了达到规定的精度,要采取一些比较特殊的方法例如,可考虑将被测__倍频后再用测频法测量或将闸门__展宽由于倍频电路比较复杂,所以一般采用后一种方法,实际上闸门__展宽与被测__倍频在效果上是相同的闸门__展宽比较容易做到,例如采用分频电路就可以实现若闸门__高电平时间从1秒展宽到10秒,则相对误差可以按比例下降,但响应时间也增大相同的比例实验12串口通信实验
一、实验目的学习8051UART内部串行口的使用和编程方法
二、实验内容本实验要求用8051单片机内部串行口UART实现双机通信或单机自发自收正确配置交叉编译开关,设置UART工作模式,完成
1.单机自发自收改造实验9,完成按键值通过UART发送,UART接收后在数码管中显示;
2.双机通信将按键值通过UART发送给另一个单片机模块,并显示键值
三、实验步骤
2.用C语言或汇编语言编写程序2.编译、生成项目、下载程序,调试运行程序
四、实验程序参考框图图12-1发送程序流程图实验13数据采集系统设计
一、实验目的
1.掌握单片机片内ADC及温度传感器的使用及应用程序设计
二、实验内容应用单片机片内ADC实现数据的采集要求
1.应用二极管PN结的温度特性以及单片机ADC的差分输入方式,实现温度的测量;设计二极管测温电路,并用数码管显示实测温度值,显示精度为
0.1oC
2.应用C8051F020单片机内ADC实现数据的采集,要求对外部输入0-2V的直流电压进行数据采集,测量精度为5mV,显示精度为
0.001V
3.两种采集功能可以用按键进行切换
三、实验说明通过本实验,掌握单片机片内ADC使用方法,掌握基于单片机的数据采集系统的工作原理与设计方法必须用模块化方法进行C语言程序设计
四、实验仪器和设备PC机、KeiluVision4软件,C8051F020__板,EC5在线仿真器
五、实验原理C8051F020单片机内ADC的工作原理及使用参考C8051F020数据手册实验14函数__发生器设计
一、实验目的
1.掌握单片机片内DAC的使用及应用程序设计
二、实验内容应用C8051F020单片机内DAC设计制作一个简单的函数__发生器,该__发生器能产生正弦波和三角波要求
1.输出波形的频率范围为100Hz~10kHz;频率可调,频率步进间隔100Hz
2.输出波形幅度范围0~2V(峰-峰值)
3.可以用按键进行输出波形的选择
4.具有显示输出波形的类型、频率的功能
三、实验说明通过本实验,掌握单片机片内DAC使用方法,掌握基于单片机函数__发生器的工作原理与设计方法必须用模块化方法进行C语言程序设计
四、实验仪器和设备PC机、KeiluVision2软件,C8051F020单片机,EC3在线仿真器
五、实验原理C8051F020单片机内DAC的工作原理及使用参考C8051F020数据手册头文件从端口输出标准输出打开串口串口输出分别为“复位”、“运行”、“暂停”__后进入调试模式输出端口新建文件夹按钮观察和堆栈窗口专用寄存器窗口铵钮专用寄存器存储器窗口观察和堆栈窗口铵钮汇编程序与反汇编程序切换铵钮存储器窗口铵钮汇编程序汇编程序与反汇编程序切换铵钮定时器初始化小时-高位数据小时-低位数据分钟-高位数据分钟-低位数据秒钟-高位数据秒钟-低位数据显示上面6数字串口初始化波特率开中断等扫描按键串口发送按键值显示串口接收值。