




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、黄河科技学院单片机设计(论文) 黄河科技学院课程设计任务书 工 学院 机械 系 机械设计制造及其自动化 专业 x 级x 班学号 xxxx 姓名 xxxx 指导教师 xxxx 题目: AT89C51数字频率计设计 课程: 单片机课程设计 课程设计时间 2013年 10月28 日 至2013年11 月 10 日 共 2 周课程设计工作内容与基本要求(设计要求、设计任务、工作计划、所需相关资料)(纸张不够可加页)基本要求:利用单片机AT89C51设计数字频率计,能将所测量的频率在LED显示器上显示。创新设计:可采用不同方法进行频率测量;具有键盘操作功能等。2. 设计任务与要求2.1系统硬件电路设计根
2、据该系统设计的功能要求选择所用元器件,设计硬件电路。要求用Proteus绘制整个系统电路原理图。2.2软件设计根据该系统要求的功能进行软件设计,绘制整个系统的软件流程图;根据流程图编写程序并汇编调试通过;列出软件清单,软件清单要求逐条加以注释。2.3 Proteus仿真用Proteus对系统软硬件进行仿真调试并通过。2.4 编写设计说明书内容包括任务书、设计方案分析、硬件部分设计、软件部分设计、调试结果整理分析、设计调试的心得体会等,字数不少于5000字;硬件部分设计要绘制整个系统电路原理图,对各部分电路设计原理做出说明;软件设计部分要(用visio2002画图软件)绘制整个系统及各部分的软件
3、流程图,列出程序清单,逐条加以注释,并注明各程序功能块的功能。3工作计划 序号设计内容所用时间1布置任务及调研天3制作与调试天4撰写设计报告书2天合 计14天4主要参考资料单片机课程设计指导书 皮大能 北京理工大学出版社2012.78051单片机实践与应用 吴金戎 清华大学出版社2003.8单片机技术基础教程与实践 夏路易 电子工业出版社2008.1单片机原理及应用张毅刚 高等教育出版社 2012.11基于Proteus的单片机系统设计与仿真实例 蒋辉平 机械工业出版社 2007.7 指导老师签字: 日 期: 目 录1 绪论.1 1.1 课题背景及目的11.2 国内外研究状况11.3 课题研究
4、方法12测量方案的论证与分析.22.1 测量方法的分析.22.1.1 直接测频法.22.1.2 间接测量法(测周期法).22.1.3 直接与间接相结合的方法.32.2 硬件电路设计方案分析.32.2.1 中小规模数字集成电路.32.2.2 单片机AT89C5143基于单片机的数字频率计的设计.53.1 系统硬件的构成.73.1.1 AT89C51单片机及其引脚说明83.1.2信号输入放大和整形电路93.1.3时基信号产生电路103.2 数字频率计软件设计.113.2.1 主程序设计.113.2.2 子程序设计.124系统调试174.1 硬件调试.174.2 软件调试.174. 2.1 软件调试
5、的步骤.174.2.2调试过程中遇到的问题及解决方法.20结论20致谢.20参考文献.21附录.21附录A21附录B301绪论频率计又称为频率计数器,是一种专门对被测信号频率进行测量的电子测量仪器。其最基本的工作原理为:当被测信号在特定时间段T内的周期个数为N时,则被测信号的频率f=N/T。频率计主要由四个部分构成:时基(T)电路、输入电路、计数显示电路以及控制电路。在一个测量周期过程中,被测周期信号在输入电路中经过放大、 整形、微分操作之后形成特定周期的窄脉冲,送到主门的一个输入端。主门的另外一个输入端为时基电路产生电路产生的闸门脉冲。在闸门脉冲开启主门的期间,特定周期的窄脉冲才能通过主门,
6、从而进入计数器进行计数,计数器的显示电路则用来显示被测信号的频率值,内部控制电路则用来完成各种测量功能之间的切换并实现测量设置。1.1 课题背景及目的本次课程设计的内容是使用AT89C51单片机最小系统设计频率计系统,系统以单片机为主控单元,主要用于对方波频率的测量,51系列单片机是国内目前应用最广泛的一种 8 位单片机之一,随着嵌入式系统、片上系统等概念的提出和普遍接受及应用。51 系列及其衍生单片机还会在继后很长一段时间 占据嵌入式系统产品的低端市场,因此,作为新世纪的大学生,在信息产业高速发展的今天,掌握单片机的基本结构、原理和使用是非常重要的。 本次课程设计的内容是使用AT89C51
7、单片机最小系统设计频率计系统,系统以单片机为主控单元,主要用于对方波频率的测量1.2国内外研究状况在传统的电子测量仪器中,示波器在进行频率测量时测量精度较低,误差较大。频谱仪可以准确的测量频率并显示被测信号的频谱,但测量速度较慢,无法实时快速的跟踪捕捉到被测信号频率的变化。正是由于频率计能够快速准 确的捕捉到被测信号频率的变化,因此,频率计拥有非常广泛的应用范围。在传统的生产制造企业中,频率计被广泛的应用在产线的生产测试中。频率计能够快速的捕捉到晶体振荡器输出频率的变化,用户通过使用频率计能够迅速的发现有故障的晶振产品,确保产品质量。在计量实验室中,频率计被用来对各种电子测量设备的本地振荡器进
8、行校准。在无线通讯测试中,频率计既可以被用来对无线通讯基站的主时钟进行校准,还可以被用来对无线电台的跳频信号和频率调制信号进行分析。1.3课题研究方法本论文主要阐述了以AT89C51单片机为核心,利用它内部的定时计数器完成待测信号频率的测量。单片机AT89C51内部具有2个16位定时计数器,定时计数器的工作可以由编程来实现定时、计数和产生计数溢出时中断要求的功能。其基本模块包括输入、切换逻辑、计数、单片机控制及显示模块,采用汇编语言。2测量方案的论证与分析2.1测量方法的分析测量方法通常有三种:直接测量法、间接测量法、直接与间接测量结合法。2.1.1直接测频法这种方法的测量原理是:由于频率是单
9、位时间内信号发生周期变化的次数,使得我们可以在给定的单位时间1S内(称为闸门)对被测信号的脉冲数计数,得到的脉冲个数就是被测信号的频率。1S基准闸门信号被测信号实际检出信号1S经分析,本测量法在低频段的相对测量误差较大,即在低频段不能满足本设计的要求2.1.2间接测量法(测周期法)虽然直接测频法可以测出单位时间内脉冲的个数即频率,但是对于较低频率的信号其检测误差会大大增大,例如1.8Hz的信号,在通过1秒的闸门时间内其0.8会被淹没,这是在设计中所不允许的。解决这种现象的办法就是改直接测频法为测周期法。其原理是用被测信号的周期作为闸门,在该闸门时间内允许已知标准的短周期间隔的较高频率的信号通过
10、,通过数字电路或微型计算机的运算,通过闸门的已知信号频率的个数越多,其被测频率就越低。被测闸门信号高频基准信号实际检出已知信号未知测周期法时序图经误差分析,可得结论:用该测量法测量时,被测信号的频率越高,测量误差越大。2.1.3直接与间接相结合的方法该方法的出发点是避开±1量化误差的影响较大的频段,寻找有利因素而产生的。对信号不采用直接测频法,而是改为测周期,并通过切换求得频率。该方法可以满足测量误差的要求。由此可见,为了获得较高的测量精度,在高频段,宜采用直接测频法;在低频段,宜采用测周期法。把测量工作分为两种方法:(1)当待测信号的频率100 Hz时,定时计数器构成为计数器,以机
11、器周期为基准,由软件产生计数闸门,计数闸门宽度1 s时,即可满足频率测量结果为4位有效数字;(2)当待测信号的频率100 Hz时,定时计数器构成为定时器,由频率计的予处理电路把待测信号变成方波,方波宽度等于待测信号的周期。2.2硬件电路设计方案分析2.2.1中小规模数字集成电路系统测频部分采用中小规模数字集成电路,用机械式功能转换开关换档,完成测频率、测周期及测脉宽等功能。该方案的特点是中小规模集成电路应用技术成熟,能可靠的完成频率计的基本功能,但由于系统功能要求较高,所以电路过于复杂,而且多量程换档开关使用不便。原理框图如2.1所示。2.1原理框图2.2.2单片机AT89C51系统采用51系
12、列单片机AT89C51作为控制核心,实现整个电路的测试信号控制、数据运算处理、键盘扫描和控制数码管的显示输出完成各种时序逻辑控制、计数功能。系统组成框图如图2.2所示,所有信号包括基准频率信号、被测信号AT89C51单片机的控制下进行计数或定时,单片机将每次测试结果经运算处理后,以十进制的形式送到4位数码管显示电路显示。按键接口电路,因为按键数量较少,所以采用独立式按键结构,实现测频、测周功能。图2.2 原理框图 显然,单片机AT89C51的电路简洁、新颖,数字集成电路从系统要实现的指标上看,要实现频率的测量范围10Hz10KHz,实现比较困难,还要进行周期换算频率,因此采用单片机AT89C5
13、1系统。3.基于单片机的数字频率计的硬件设计3.1系统硬件的构成本频率计的数据采集系统主要元器件是单片机AT89C51,由它完成对待测信号频率的计数和结果显示等功能,外部还要有以下几个模块:放大整形模块、时钟脉冲产生模块、按键模块、单片机系统、LED显示模块。各模块关系图如图2所示:显示电路(静态串行显示方式)按键电路(中断扫描方式)时钟电路复位电路总电路图3.1.1AT89C51单片机及其引脚说明89C51是一种高性能低功耗的采用CMOS工艺制造的8位微控制器,它提供下列标准特征:4K字节的程序存储器,128字节的RAM,32条I/O线,2个16位定时器/计数器, 一个5中断源两个优先级的中
14、断结构,一个双工的串行口, 片上震荡器和时钟电路。引脚说明:·VCC:电源电压·GND:地·P0口:P0口是一组8位漏极开路型双向I/O口,作为输出口用时,每个引脚能驱动8个TTL逻辑门电路。当对0端口写入1时,可以作为高阻抗输入端使用。当P0口访问外部程序存储器或数据存储器时,它还可设定成地址数据总线复用的形式。在这种模式下,P0口具有内部上拉电阻。在EPROM编程时,P0口接收指令字节,同时输出指令字节在程序校验时。程序校验时需要外接上拉电阻。·P1口:P1口是一带有内部上拉电阻的8位双向I/O口。P1口的输出缓冲能接受或输出4个TTL逻辑门电路。当
15、对P1口写1时,它们被内部的上拉电阻拉升为高电平,此时可以作为输入端使用。当作为输入端使用时,P1口因为内部存在上拉电阻,所以当外部被拉低时会输出一个低电流(IIL)。·P2口:P2是一带有内部上拉电阻的8位双向的I/O端口。P2口的输出缓冲能驱动4个TTL逻辑门电路。当向P2口写1时,通过内部上拉电阻把端口拉到高电平,此时可以用作输入口。作为输入口,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出电流(IIL)。P2口在访问外部程序存储器或16位地址的外部数据存储器(例如MOVX DPTR)时,P2口送出高8位地址数据。在这种情况下,P2口使用强大的内部上拉电阻功能当输出1时。
16、当利用8位地址线访问外部数据存储器时(例MOVX R1),P2口输出特殊功能寄存器的内容。当EPROM编程或校验时,P2口同时接收高8位地址和一些控制信号。·P3口:P3是一带有内部上拉电阻的8位双向的I/O端口。P3口的输出缓冲能驱动4个TTL逻辑门电路。当向P3口写1时,通过内部上拉电阻把端口拉到高电平,此时可以用作输入口。作为输入口,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出电流(IIL)。P3口同时具有AT89C51的多种特殊功能,具体如下表1所示:端口引脚第二功能P3.0RXD (串行输入口)P3.1TXD(串行输出口)P3.2 (外部中断0)P3.3(外部中断1
17、)P3.4T0(定时器0)P3.5T1(定时器1)P3.6(外部数据存储器写选通)P3.7(外部数据存储器都选通)表1 P3口的第二功能·RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期的高电平将使单片机复位。·ALE/:当访问外部存储器时,地址锁存允许是一输出脉冲,用以锁存地址的低8位字节。当在Flash编程时还可以作为编程脉冲输出()。一般情况下,ALE是以晶振频率的1/6输出,可以用作外部时钟或定时目的。但也要注意,每当访问外部数据存储器时将跳过一个ALE脉冲。·:程序存储允许时外部程序存储器的读选通信号。当AT89C52执行外部程序存储器的指令
18、时,每个机器周期两次有效,除了当访问外部数据存储器时,将跳过两个信号。·/VPP:外部访问允许。为了使单片机能够有效的传送外部数据存储器从0000H到FFFH单元的指令,必须同GND相连接。需要主要的是,如果加密位1被编程,复位时EA端会自动内部锁存。当执行内部编程指令时,应该接到VCC端。·XTAL1:振荡器反相放大器以及内部时钟电路的输入端。·XTAL2:振荡器反相放大器的输出端。3.1.2信号输入放大和整形电路放大整形系统包括衰减器、放大器、施密特触发器。它将正弦输入信号Vx整形成同频率方波Vo,幅值过大的被测信号经过分压器分压送入后级放大器,以避免波形失真
19、。由运算放大器构成的射级跟随器起阻抗变换作用,使输入阻抗提高。同相输入的运算放大器的放大倍数为(R1+R2)/R1,改变R1的大小可以改变放大倍数。系统的整形电路由施密特触发器组成,整形后的方波送到闸门以便计数。由于输入的信号幅度是不确定、可能很大也有可能很小,这样对于输入信号的测量就不方便了,过大可能会把器件烧毁,过小可能器件检测不到,所以在设计中采用了这个信号调理电路对输入的波形进行阻抗变换、放大限幅和整形,信号调理部分电路具体实现电路原理图和参数如下图4所示:3.1.3时基信号产生电路时钟是一切微处理器、微控制器内部电路工作的基础。单片机内部有一个自激振荡电路,它是定时控制部件中的一部分
20、,可以通过内部自激振荡或外部提供振荡源这两种方式,驱动内部时钟电路产生系统时钟信号。内部方式 :在XTAL1、XTAL2跨接定时元件和两个电容就构成了自激振荡器。C1、C2取5-30PF,起微调和稳定作用。晶振频率:f=1.212MHZ,常用频率为6、12、11.0592 MHz。外部方式:外部振荡脉冲信号直接由XTAL2端输入,此时,XTAL1应接地,而片内振荡电路不起作用,。常用于单片机同时工作,以便同步,要求信号低于12MHz。时钟周期:振荡器输出的时钟脉冲频率的倒数。为单片机中最小、最基本的时间单位。状态周期:振荡信号经2分频后获得的信号周期,称S,显然,S为时钟周期的2倍。机器周期:
21、12个时周钟期为一个机器周期,对应计算机执行一个基本操作所需的时间。指令周期:执行一条指令所需的时间,至少包含一个机器周期。指令字节:指令占用存储空间的字节数,有单字节、双字节、三字节三类。当时钟频率为12MHz和6MHz时,时钟周期分别为1/12s和1/6s ,机器周期分别为1s和2s。这里使用12MHz晶振和两个电容就构成的自激振荡器。3.2数字频率计软件设计3.2.1主程序设计程序要求:要能实现量程切换,超量程指示,准确定时。3.2.2子程序设计子程序主要包括:按键中断子程序、定时中断子程序、计数中断子程序、周期中断子程序、超量程判断子程序、除法子程序、二进制转BCD子程序、显示程子序。
22、3.2.2.1按键中断子程序按键中断子程序流程图3.2.2.2定时中断和计数中断子程序3.2.2.3周期中断子程序周期中断子程序流程图3.2.2.4超量程判断子程序判断大小,小于量程输出“0.”,大于量程输出“1.”。3.2.2.5除法子程序该子程序用于周期转换频率,因为周期为两到三字节,所以使用移位除法。移位除法模拟手算方法: 1)从被除数高位开始对齐除数,比较。 2)若前者大于或等于后者,商位为1,并把被除数减除数,形成部分余数。若前者小于后者,商位为0。 3)部分余数左移一位,商也左移一位。 4)整个余数若小于除数,则退出。 5)部分余数从高位开始与除数比较 。6)到第2)步。 若被除数
23、大于或等于除数,则溢出。3.2.2.6二进制转BCD子程序二进制转BCD分为小数部分和整数部分。二进制转BCD子程序流程图3.2.2.7显示程子序先进行查码,然后由串行口发送到移位寄存器中。程序:DISP:JB ALLOW,OUT;显示更新是否允许 MOV R2,#04H;位数 MOV R1,#40H;显示数据首地址 DL0:MOV A,R1 MOV DPTR,#TAB2 MOVC A,A+DPTR MOV SBUF,A;发送 JNB TI,$ CLR TI INC R1 DJNZ R2,DL0 RETTAB2:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6F
24、H4.系统调试4.1硬件调试硬件调试,由大到小,从整体到局部,进行调试。本设计电路简单,所以不一一调试,就最复杂的显示电路进行调试。先由仿真器连接显示电路,循环发送四位(1-9)显示编码,如果四位都不能显示,检查信号传输电路,时钟电路,电源。如果四位都能显示,但有的位显示不正确,检查LED与移位寄存器的连线顺序是否正确。如果还显示不正确,与正常的位调换LED数码管。调换后,正常的位显示不正常,则数码管坏了,换数码管。调换后,不正常的位显示不正常,则移位寄存器坏了,换移位寄存器。4.2软件调试4.2.1软件调试的步骤(1) 源文件的建立:使用菜单 “File-New”或者点击工具栏的新建文件按钮
25、,即可在项目窗口的右侧打开一个新的文本编辑窗口,在该窗口中输入汇编语言源程序(4.2小节所示)。保存该文件,加上扩展名(.asm或a51),这里将文件保存为examl.asm。(2)建立工程文件:点击“Project-New Project”菜单,出现以个对话框,要求给工程起一个名字,我们输入examl,不需要扩展名,点击保存按钮,出现第二个对话框。这个对话框要求选择目标CPU(即我们所使用的芯片型号80C51)点击ATMEL前面的“+”号,展开该层,点击其中的80C51,然后点击确定按钮。回到主界面,此时,在工程窗口的文件页中,出现了“Targ et1”,前面有 “+”号,点击“+”展开,可
26、以看到下一层的“Source Group1”,这时的工程还是一个空工程,里面什么文件也没有,需要手动把刚才编写好的源程序加入,点击“Souce Group”使其反白显示,然后,点击鼠标右键,出现一个下拉菜单。选中其中的“Add file to Group”Souce Group1”,对话框,要求寻找源文件,注意该对话框下面的“文件类型“默认为C Souce file (*.c),也就是以C为扩展名的文件,而我们的文件是以asm 为扩展名的,所以在列表框中找不到examl1.asm,要将文件类型该掉,点击对话框中”文件类型后的下拉列表,找到并选中“Asm Souce File(*.asm,*.a
27、51)”,这样,在列表框中就可以找到examl1.asm文文件了。双examl1.asm文件,将文件加入项目,注意,在文件加入项目后,该对话框并不消失,等待继续加入其他文件,但初学时常会认为操作没有成功而再次双击同一文件,这时会出现对话框,提示你所选的文件以在列表中,此时点击确定,返回前一对话框,然后,点击”Close”即可返回主界面,返回后,点击“Souce Goup 1”前的加号,会发现examl1.asm 文件以在其中。双击文件名,即打开源程序。(3)工程的详细设置:首先点击左边Project窗口的Target 1,然后使用菜单“Proget-Option for target targ
28、et 1”即出现对工程设置的对话框,对这个对话框可谓非常复杂,共有8个页面,要全部高清可不容易,好在绝大部分设置项取默认值就行了。设置完成以后安确认返回主界面,工程建立、设置完毕。(4)编译、连接:在设置好工程后,既可以进行编译、连接。选择菜单Project-Build target,对当前工程进行连接,如果当前文件已修改软件会先对该文件进行比阿尼,然后在连接以产生目标代码。编译过程中的信息将出现在输出窗口中的Build页中,如果源程序有语法错误,会有错误报告出现,双击该行,可以定到出错的位置,对源程序反复修改后,最终会得到如图5-1所示的结果,提示获得了名为examl.hex的文件,该文件即
29、可被编程器读入并写到芯片中,同时还产生了一些其他相关文件可被用于KEIL的仿真与调试。正确编译之后的结果4.2.2调试过程中遇到的问题及解决方法在进入环境以后,遇到了很多问题,总结如下:(1)提示无asm文件编译时候提示:F:.XX.asmFile has been changed outside the editor, reload ?解决方法:重新生成项目,产生examl.asm即可。(2)在进入Keil的调试环境以后,发现程序有错解决方法:将光标定位于需要修改的程序上,用菜单,DebugInline Assambly即可出现对话框,Enter New 后面的编辑框内直接输入需要修改的程序
30、语句,输入完之后键入回车将自动指向下一条语句,可以继续修改,如果不在需要修改,可以点击右上角的关闭按钮关闭窗口。(3)程序调试时,一些程序必须满足一定的条件才能被执行到解决方法:这些条件往往是异步发生或难以预先设定的,这类问题使用的单步实行方法是很难调试的,这时就要使用发哦程序调试中的另一种非常重要是方法-断点设置。断点设置的方法有多种,常用的是在某一程序行设置断点,设置好断点后可以全速运行程序,一旦执行到该程序行即停止,可在此观察有关变量值,以确定问题所在。在程序行设置/移除断点的方法是将光标定位于需要设置断点的程序行,使用菜单Debug/Insert/RemoveBreakPoint设置或
31、移除断点(也可以用鼠标在该行双击实现同样的功能);Debug/Enable/Disable BreakPoint是开启或暂停光标所在懂行的断点功能;Dubug/Disale All BreakPoint暂停所有断点;Debug/Kill All BreakPoint清除所有的断点设置。这些功能也可以用工具条上的快捷键进行设置。(4)输入程序时,有中文标点,用keil编译时出现错误解决方法:程序里有带中文标点,用英文重输入一遍(5)汇编出现数字、字母混淆解决方法:字母“O” 和 数字 “0”。主要错在这里。注意细节!结论 基于单片机设计的数字频率计具有原理简单、易于调试和测量方便等优点
32、,主要用来测量低频信号的频率。由于其测量范围会受单片机计数速率的限制,其测量量程较小,所以可以从原理上进行改进以提高其测频范围,比如通过增加分频电路,就可实现对高频信号的测量。致谢通过这三个月来的忙碌和学习,本次毕业论文设计已接近尾声,由于经验的匮乏,难免有许多考虑不周全的地方,在这里衷心感谢指导老师的督促指导,以及一起学习的同学们的支持,让我按时完成了这次毕论文设计。在论文设计过程中,我遇到了许许多多的困难。在此我要感谢我的指导老师郭晓君老师给我悉心的帮助和对我耐心而细致的指导,我的论文较为复杂烦琐,但是郭晓君老师仍然细心地纠正图中的错误。除了敬佩老师的专业水平以外,他的治学严谨和科学研究的
33、精神也是我永远学习的榜样,并将积极影响我今后的学习和工作,我才得以解决毕业设计中遇到的种种问题。同时感谢我院、系领导对我们的教导和关注;感谢大学三年传授我们专业知识的所有老师,谢谢你们呕心沥血的教导。还有谢谢我周围的同窗朋友,他们给了我无数的关心和鼓励,也让我的大学生活充满了温暖和欢乐。如果没有他们的帮助,此次论文的完成将变得困难。他们在我设计中给了我许多宝贵的意见和建议。同时也要感谢自己遇到困难的时候没有一蹶不振,取而代之的是找到了最好的方法来解决问题。参考文献1李全利,单片机原理及应用技术。北京:高等教育出版社,20042王曙霞,单片机实验与实训指导。西安:西安电子科技大学出版社,2007
34、3及力,Protel 2004原理图与PCB设计教程。北京:电子工业出版社,20074何利民,单片机高级教程。北京:航空航天大学出版社,20005李朝青,单片机原理与接口技术。北京:航空航天大学出版社,19996张毅刚,MCS-51单片机应用设计。哈尔滨:哈尔滨工业大学出版社,19977李华,MCS-51系列单片机实用接口技术。北京:航空航天出版社,20008陈光东,单片微型计算机原理接口技术。武汉:华中理工大学出版社,19999王福瑞,单片机测控系统大全,北京:航空航天大学出版社,1998附录附录A 程序ORG 0000HAJMP MAIN ;主程序ORG 0003HLJMP KAYBOAR
35、D;键盘中断入口ORG 000BHLJMP TIME ;定时中断入口ORG 0013HLJMP ZHOU ;周期测量入口ORG 002BHLJMP JSH ;计数中断入口LC EQU 50H;量程存放TO EQU 51H;定时溢出次数存放 NEW EQU 52H;量程切换状态存放CHAO EQU 53H;超量程状态存放ENTER BIT 00H;确定按键位ALLOW BIT 01H;显示更新允许位MAIN:MOV P1,#FFH;按键初始化 MOV IE,#83H;允许定时T0,按键INT0中断 SETB IT0 ;按键中断出发方式为下降沿触发 CLR P2.0 ;显示初始化 SETB P2.
36、0 MOV SCON,#00H;串口工作方式0 MOV 40H,#00H;显示缓存清零 MOV 41H,#00H MOV 42H,#00H MOV 43H,#00HHOME:MOV LC,#03H ;量程初始化 ACALL DISPLC;显示量程DOWN:JNB ENTER DOWN;确定量程? CLR ENTERCHOSE:CJNE LC,#01H,NEXT1 AJMP ZQ ;周期测量(量程1)NEXT1:CJNE LC,#02H,NEXT2 AJMP JS1;计数1(量程2)NEXT2:CJNE LC,#03H,HOME AJMP JS2;计数2(量程3)ZQ:CLR TR0 ;定时停止
37、 MOV TL0,#00H MOV TH0,#00HCLR ET1 ;不允许T1中断SETB IT1 ;INT1下降沿触发MOV TO,#00H ;定时溢出次数清零 MOV R6,#00H ;计时中断 数清零 MOV 30H,#00H ;计时存储清零MOV 31H,#00HMOV 32H,#00HSETB EX1 ;允许INT1中断A1:CJNE R6,#08H,A1 ;等待计时完成 CLR EX1 ;停止INT1中断ACALL PINGJUNDJNZ NEW,CHOSE;有量程切换返回MOV 33H,#10H ;0.01S0.1S计时最大最小值MOV 34H,#27HMOV 35H,#00H
38、MOV 36H,#0A0HMOV 37H,#86HMOV 38H,#01HACALL CHAOPANDJNZ CHAO,ZQACALL DAOSHU;1/T倒数DJNZ NEW,CHOSE;有量程切换返回ACALL BCD1 ;二进制转BCD码DJNZ NEW,CHOSE;有量程切换返回ACALL DISPAJMP ZQ;=PINGJUN:MOV R6,#01H;除以4 LOOP: MOV A.32H RRC AMOV 32H,AMOV A,31HRRC AMOV 31H,AMOV A,30HRRC AMOV 30H,ADJNZ R6,LOOPRET;=divdll data 39h ;定义被
39、除数单元divdlh data 3Ahdivdhl data 3Bhdiv0 data 30h ;定义除数单元divl data 31h divh data 32htempl data 26h ;定义余数单元temph data 27hDAOSHU:mov divdll,#40h ;1s mov divdlh,#42h mov divdhl,#0fh divd: push a push b mov a,divh ;判除数是否为零 orl a,divl orl a,div0 jnz divd0 setb ov ;除数为零,置溢出标志 pop b pop a retdivd0: mov templ
40、,#00h ;除数不为零,进行运算 mov temph,#00h mov b,#24h ;置循环次数divd1:clr c ;进位位、余数单元和 mov a,divdll ;被除数单元全体逐个 rlc a ;向左循环移位 mov divdll,a mov a,divdlh rlc a mov divdlh,a mov a,divdhl rlc a mov divdhl,amov a,templrlc amov templ,axch a,temphrlc axch a,temphmov 04H,c ;保存进位位clr csubb a,divl ;用余数减去除数mov r7,amov a,temp
41、hsubb a,divhanl c,/04H ;判断是否够减jc divd2 ;不够减,移下一位mov templ,r7 ;够减,刷新余数单元mov temph,ainc divdll ;商上1divd2: djnz b,divd1 clr ov pop b pop a ret;=BCD1:MOV A,3AH ;频率在10.0099.99Hz MOV B,#0AH DIV AB ;整数 MOV 43H,A MOV 42H,B;= MOV R6,#00H ;小数LP2: MOV R0,#39H CLR C RLC A MOV 03H,C;为0时该所有数不相加 MOV A,R6 MOV B,#02
42、H DIV AB MOV R1,A;小数的位数 MOV DPTR,#TAB1 MOV R5,#00H;列表相对位置LP1: MOV A,R5 MOVC A,A+DPTR JNB 03H,NOADDAD: ADDC A,R0 DA A MOV R0,ANOADD:INC R0 INC R5 DJNZ R1,LP1 CLR A JC AD INC R6 CJNE R6,#08H,LP2 MOV R0,#39H ;拆开保存到显示缓存 XCHD A,R0 MOV 40H,A MOV A,39H SWAP A MOV 41H,A RETTAB1:DB 50H,25H,50H,12H,25H,06H DB
43、 50H,12H,03H,25H,56H,01H DB 50H,12H,78H,00H,25H,06H,39H,00H;=JS1: SETB ET1 ;允许T1中断 CLR EX1 ;不允许INT1中断 MOV TCON,#05H ;停止TR1计数 ,TR0定时 MOV TL0,#0COH;定时初值,1000000=65535*15+16960 MOV TH0,#0BDH; 65535-16960=48576=BDC0HMOV TL1,#00H ;计数期清零 MOV TH1,#00H MOV 30H,#00H ;计数存储区清零 MOV 31H,#00HMOV 32H,#00HMOV TO,#0
44、FH ;定时溢出次数存MOV TCON,#55H ;启动TR1计数 ,TR0定时 A2:CJNE TO,#00H,A2 DJNZ NEW,CHOSE;是否有量程切换 MOV 33H,#63H;量程2 MOV 34H,#00HMOV 35H,#00HMOV 36H,#0E7HMOV 37H,#03HMOV 38H,#00H ACALL CHAOPANDJNZ CHAO,JS1 MOV TL0,#0COH;定时初值 MOV TH0,#0BDHMOV TL1,#00H ;计数期清零 MOV TH1,#00H MOV TO,#0FH ;定时溢出次数存MOV TCON,#55H ;启动TR1计数 ,TR
45、0定时 DJNZ NEW,CHOSE;是否有量程切换 ACALL BCD2DJNZ NEW,CHOSE;是否有量程切换 ACALL DISPAJMP A2;=JS2: SETB ET1 ;允许T1中断 CLR EX1 ;不允许INT1中断 MOV TCON,#05H ;停止TR1计数 ,TR0定时 MOV TL0,#0COH;定时初值,1000000=65535*15+16960 MOV TH0,#0BDH; 65535-16960=48576=BDC0HMOV TL1,#00H ;计数期清零 MOV TH1,#00H MOV 30H,#00H ;计数存储区清零 MOV 31H,#00HMOV
46、 32H,#00HMOV TO,#0FH ;定时溢出次数存MOV TCON,#55H ;启动TR1计数 ,TR0定时 A3:CJNE TO,#00H,A3 DJNZ NEW,CHOSE;是否有量程切换 MOV 33H,#0E7H;量程3 MOV 34H,#03HMOV 35H,#00HMOV 36H,#0FHMOV 37H,#27HMOV 38H,#00H ACALL CHAOPANDJNZ CHAO,JS2 MOV TL0,#0COH;定时初值 MOV TH0,#0BDHMOV TL1,#00H ;计数期清零 MOV TH1,#00H MOV TO,#0FH ;定时溢出次数存MOV TCON,#55H ;启动TR1计数 ,TR0定时 DJNZ NEW,CHOSE;是否有量程切换 ACALL BCD2DJNZ NEW,CHOSE;是否有量程切换 ACALL DISPAJMP A3;=BCD2:MOV 33H,#0E8H;千位低 MOV 34H,#64H;百位低 MOV 36H,#03H;千位高 MOV 37H,#00H;百位高 MOV R0,#33H MOV R1,#36H QW:MOV A,3
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030年中国铁氧体软磁市场竞争状况分析及投资战略研究报告
- 2025-2030年中国重晶石市场运行状况及前景趋势分析报告
- 2025-2030年中国连接器制造市场发展趋势与十三五规划研究报告
- 2025-2030年中国超级活性炭行业市场运行动态及前景规模分析报告
- 2025-2030年中国脐橙行业运行状况及发展趋势预测报告
- 2025-2030年中国羊藿苷提取物行业发展状况规划研究报告
- 2025上海市建筑安全员《A证》考试题库及答案
- 2025-2030年中国电网企业信息化市场运营现状及发展规划分析报告
- 恩施职业技术学院《行政案例研习》2023-2024学年第二学期期末试卷
- 长沙文创艺术职业学院《地球物理学导论》2023-2024学年第二学期期末试卷
- 三年级数学-数独练习题打印版10组
- DB3502T 051-2019 家政服务规范 通 用要求
- 症状护理意识障碍
- 公司组织架构图模板完整版可编辑 10
- 《护理法律法规》课件
- AI在知识库领域的应用
- 易制毒化学品经营管理制度
- 2024年中国成人心肌炎临床诊断与治疗指南解读课件
- 全国川教版信息技术八年级下册第一单元第2节《制作创意挂件》信息技术教学设计
- GB/T 22919.8-2024水产配合饲料第8部分:巴沙鱼配合饲料
- 网络营销推广与策划教学大纲
评论
0/150
提交评论