单片机课程设计-00-99手动计数器设计

2024-04-12

单片机课程设计-00-99手动计数器设计(精选5篇)

篇1:单片机课程设计-00-99手动计数器设计

单片机课程设计

--频率计数器

专业:自动化 指导老师:朱兆优 班级:1430201

学号:201430020118 姓名:张超梅

一、绪论

1.1设计任务和要求

二、电路设计方案

2.1电路工作原理 2.2系统性能

三、软件设计方案

3.1功能模块 3.2.编程算法思路 3.3程序流程图

四、系统调试

4.1 硬件调试 4.2 软件调试

五、心得体会

目录

一、绪论

频率计又称为频率计数器,是一种专门对被测信号频率进行测量的电子测量仪器。其最基本的工作原理为:当被测信号在特定时间段T内的周期个数为N时,则被测信号的频率f=N/T。频率计主要由四个部分构成:时基(T)电路、输入电路、计数显示电路以及控制电路。在一个测量周期过程中,被测周期信号在输入电路中经过放大、整形、微分操作之后形成特定周期的窄脉冲,送到主门的一个输入端。主门的另外一个输入端为时基电路产生电路产生的闸门脉冲。在闸门脉冲开启主门的期间,特定周期的窄脉冲才能通过主门,从而进入计数器进行计数,计数器的显示电路则用来显示被测信号的频率值,内部控制电路则用来完成各种测量功能之间的切换并实现测量设置。

1.1设计任务和要求

本次课程设计的内容是使用AT89C51单片机最小系统设计频率计系统,系统以单片机为主控单元,主要用于对方波频率的测量,使用 NE555 输出脉冲,用单片机计数器实现技术,再把计数值转换为频率,用静态或动态显示频率值,频率计数器要实现0~1MHz信号频率测量范围,要分段频率段测量,低频段用测周法,高频段用测频法。

二、电路设计方案

2.1电路工作原理

由NE555振荡电路产生脉冲,然后经过二分频电路,然后与定时器/计数器T1相连,P2.0接74Ls273锁存器的时钟信号端,P2.1口接74Ls273锁存器的时钟信号端,P0口接74LS273段选码和位选码,输出与七位共阳数码管显示,采用动态显示。由于P0口输出数据,T2截至,输出级属于开漏电路,要使高电平1信号正确输出,应该外接上拉电阻560k.分频电路

本次设计采用的是脉冲定时测频法,由于考虑到单片机的定时计数器得计数 能力有限,无法对过高频进行测量,所以我们对待测信号进行了分频,这样能提高测量频率的范围,还能相应的提高频率测量的精度。所以我们需要把待测信号进行分频。

显示电路

我们测量的频率最终要显示出来八段LED 数码管显示器由8 个发光二极管组成。基中7 个长条形的发光管排列成“日”字形,另一个圆点形的发光管在数码管显示器的右下角作为显示小数点用,它能显示各种数字及部份英文字母。LED 数码管显示器有两种形式:一种是8 个发光二极管的阳极都连在一起的,称之为共阳极LED 数码管显示器;另一种是8 个发光二极管的阴极都连在一起的,称之为共阴极LED 数码管显示器。如下图所示。共阴和共阳结构的LED 数码管显示器各笔划段名和安排位置是相同的。当二极管导通时,对应的笔划段发亮,由发亮的笔划段组合而显示的各种字符。8个笔划段 h g f e d c b a 对应于一个字节(8 位)的D7、D6、D5、。D4、D3、D2、D1、D0,于是用8 位二进制码就能表示欲显

符的字

码。

在单片机应用系统中,数码管显示器显示常用两种办法:静态显示和动态扫 描显示。所谓静态显示,就是每一个数码管显示器都要占用单独的具有锁存功能 的I/O 接口用于笔划段字形代码。这样单片机只要把要显示的字形代码发送到接口电路,就不用管它了,直到要显示新的数据时,再发送新的字形码,因此,使用这种办法单片机中CPU 的开销小,能供给单独锁存的I/O 接口电路很多。在单片机系统中动态扫描显示接口是单片机中应用最为广泛的一种显示方式之一。其接口电路是把所有显示器的8 个笔划段a-h 同名端连在一起,而每一个显示器的公共极COM 是各自独立地受I/O 线控制。CPU 向字段输出口送出字形码时,所有显示器接收到相同的字形码,但究竟是那个显示器亮,则取决于COM 端,而这一端是由I/O 控制的,所以我们就能自行决定何时显示哪一位了。而所谓动态扫描就是指我们采用分时的办法,轮流控制各个显示器的COM 端,使各个显示器轮流点亮。在轮流点亮扫描过程中,每位显示器的点亮时间是极为短暂的(约1ms),但由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位显示器并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感。

总电路图

三、软件设计方案

3.1功能模块

测周法

 定时器/计数器初始化,测出周期t  4字节除4字节  二进制转换为BCD码  提取BCD码  查表显示

测频法

 定时器/计数器初始化,设置中断

 二进制转换为BCD码  提取BCD码  查表显示 3.2.编程算法思路

子程序主要包括:按键中断子程序、定时中断子程序、计数中断子程序、周期中断子程序、超量程判断子程序、除法子程序、二进制转BCD子程序、显示程子序。除法子程序

该子程序用于周期转换频率,因为周期为两到三字节,所以使用移位除法。

3.3程序流程图

四、系统调试

4.1硬件调试

硬件调试,由大到小,从整体到局部,进行调试。本设计电路简单,所以不一一调试,就最复杂的显示电路进行调试。

先由仿真器连接显示电路,循环发送四位(1-9)显示编码,如果四位都不能显示,检查信号传输电路,时钟电路,电源。

如果四位都能显示,但有的位显示不正确,检查LED与移位寄存器的连线顺序是否正确。如果还显示不正确,与正常的位调换LED数码管。调换后,正常的位显示不正常,则数码管坏了,换数码管。调换后,不正常的位显示不正常,则移位寄存器坏了,换移位寄存器。4.2软件调试 4.2.1软件调试的步骤

(1)源文件的建立:使用菜单 “File-New”或者点击工具栏的新建文件按钮,即可在项目窗口的右侧打开一个新的文本编辑窗口,在该窗口中输入汇编语言源程序(4.2小节所示)。保存该文件,加上扩展名(.asm),这里将文件保存为频率计数器程序.asm。

(2)建立工程文件:点击“Project-New Project”菜单,出现一个对话框,要求给工程起一个名字,输入频率计数器程序,不需要扩展名,点击保存按钮,出现第二个对话框。这个对话框要求选择目标CPU(即我们所使用的芯片型号80C51)点击ATMEL前面的“+”号,展开该层,点击其中的80C51,然后点击确定按钮。回到主界面,此时,在工程窗口的文件页中,出现了“Targ et1”,前面有 “+”号,点击“+”展开,可以看到下一层的“Source Group1”,这时的工程还是一个空工程,里面什么文件也没有,需要手动把刚才编写好的源程序加入,点击“Souce Group”使其反白显示,然后,点击鼠标右键,出现一个下拉菜单。选中其中的“Add file to Group”Souce Group1”,对话框,要求寻找源文件,注意该对话框下面的“文件类型“默认为C Souce file(*.c),也就是以C为扩展名的文件,而我们的文件是以asm 为扩展名的,所以在列表框中找不到频率计数器程序.asm,要将文件类型该掉,点击对话框中”文件类型‘后的下拉列表,找到并选中“Asm Souce File(*.asm,*.a51)”,这样,在列表框中就可以找到频率计数器程序.asm文文件了。双频率计数器程序.asm文件,将文件加入项目,注意,在文件加入项目后,该对话框并不消失,等待继续加入其他文件,但初学时常会认为操作没有成功而再次双击同一文件,这时会出现对话框,提示你所选的文件以在列表中,此时点击确定,返回前一对话框,然后,点击”Close”即可返回主界面,返回后,点击“Souce Goup 1”前的加号,会发现频率计数器程序.asm 文件以在其中。双击文件名,即打开源程序。

(3)工程的详细设置:首先点击左边Project窗口的Target 1,然后使用菜单“Proget-Option for target ‘target 1’”即出现对工程设置的对话框,对这个对话框可谓非常复杂,共有8个页面,要全部高清可不容易,好在绝大部分设置项取默认值就行了。设置完成以后安确认返回主界面,工程建立、设置完毕。(4)编译、连接:在设置好工程后,既可以进行编译、连接。选择菜单Project-Build target,对当前工程进行连接,如果当前文件已修改软件会先对该文件进行比,然后在连接以产生目标代码。编译过程中的信息将出现在输出窗口中的Build页中,如果源程序有语法错误,会有错误报告出现,双击该行,可以定到出错的位置,对源程序反复修改后,最终会得到如图5-1所示的结果,提示获得了名为频率计数器程序.hex的文件,该文件即可被编程器读入并写到芯片中,同时还产生了一些其他相关文件可被用于KEIL的仿真与调试4.2.2调试过程中遇到的问题及解决方法

在进入环境以后,遇到了很多问题,总结如下:(1)提示无asm文件 编译时候提示: F:...XX.asm.hex的文件,该文件即可被编程器读入并写到芯片中,同时还产生了一些其他相关文件可被用于KEIL的仿真与调试。

File has been changed outside the editor, reload ? 解决方法:重新生成项目,产生频率计数器程序.asm即可。(2)在进入Keil的调试环境以后,发现程序有错。解决方法:将光标定位于需要修改的程序上,用菜单,DebugInline Assambly„即可出现对话框,Enter New 后面的编辑框内直接输入需要修改的程序语句,输入完之后键入回车将自动指向下一条语句,可以继续修改,如果不在需要修改,可以点击右上角的关闭按钮关闭窗口。

(3)程序调试时,一些程序必须满足一定的条件才能被执行到

解决方法:这些条件往往是异步发生或难以预先设定的,这类问题使用的单步实行方法是很难调试的,这时就要使用发现程序调试中的另一种非常重要是方法---断点设置。断点设置的方法有多种,常用的是在某一程序行设置断点,设置好断点后可以全速运行程序,一旦执行到该程序行即停止,可在此观察有关变量值,以确定问题所在。在程序行设置/移除断点的方法是将光标定位于需要设置断点的程序行,使用菜单Debug/Insert/RemoveBreakPoint设置或移除断点(也可以用鼠标在该行双击实现同样的功能);Debug/Enable/Disable BreakPoint是开启或暂停光标所在懂行的断点功能;Dubug/Disale All BreakPoint暂停所有断点;Debug/Kill All BreakPoint清除所有的断点设置。这些功能也可以用工具条上的快捷键进行设置。(4)输入程序时,有中文标点,用keil编译时出现错误 解决方法:程序里有带中文标点,用英文重输入一遍(5)汇编出现数字、字母混淆 解决方法:字母“O” 和 数字 “0”。主要错在这里。注意细节。

五、心得体会

通过这一个月来的忙碌和学习,本次课程设计已接近尾声,由于经验的匮乏,难免有许多考虑不周全的地方,在这里衷心感谢指导老师的督促指导,以及一起学习的同学们的支持,让我按时完成了这次课程设计。在论文设计过程中,我遇到了许许多多的困难。在此我要感谢我的指导老师给我悉心的帮助和对我耐心而细致的指导,我的论文较为复杂烦琐,但是老师仍然细心地纠正图中的错误。除了敬佩老师的专业水平以外,他的治学严谨和科学研究的精神也是我永远学习的榜样,并将积极影响我今后的学习和工作,我才得以解决课程设计中遇到的种种问题。感谢大学三年传授我们专业知识的所有老师,谢谢你们呕心沥血的教导。还有谢谢我周围的同窗朋友,他们给了我无数的关心和鼓励,也让我的大学生活充满了温暖和欢乐。如果没有他们的帮助,此次论文的完成将变得困难。他们在我设计中给了我许多宝贵的意见和建议。同时也要感谢自己遇到困难的时候没有一蹶不振,取而代之的是找到了最好的方法来解决问题。

篇2:单片机课程设计-00-99手动计数器设计

简易频率计数器

1.实验目的

1.要求学生具有制作调试单片机最小系统及外设的能力,能够掌握单片机内部资源的使用。

2.熟练掌握焊接技术的基础上,能熟练使用单片机软件开发环境Keil C51编程调试,并使用STC ISP调试工具采用串口下载方式联调制作的单片机最小系统。

二、实验要求

自制一个单片机最小系统,包括串口下载、复位电路,采用外部计数器T0或T1作为外部频率输入,外部频率由信号源提供,计算出来的频率显示在四位一体的数码管上。

三、实验器材

89C54RD芯片(与89c51芯片管脚和指令共用,只是内部存储单元有差异)一个,晶振一个,电容3个,电阻3个,12个10千欧姆电阻,4位一体共阴数码显示管一个,按钮1个,导线若干。

四、实验原理 1.芯片介绍

AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

1.主要特性: ·与MCS-51 兼容 ·4K字节可编程闪烁存储器 寿命:1000写/擦循环 数据保留时间:10年 ·全静态工作:0Hz-24Hz ·三级程序存储器锁定 ·128*8位内部RAM ·32可编程I/O线 ·两个16位定时器/计数器 ·5个中断源 ·可编程串行通道 ·低功耗的闲置和掉电模式 ·片内振荡器和时钟电路 2.管脚说明:

VCC:供电电压。GND:接地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。

P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

P3口也可作为AT89C51的一些特殊功能口,如下表所示: 口管脚 备选功能 P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 /INT0(外部中断0)P3.3 /INT1(外部中断1)P3.4 T0(记时器0外部输入)P3.5 T1(记时器1外部输入)P3.6 /WR(外部数据存储器写选通)P3.7 /RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。

RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。

/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。3.振荡器特性:

XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。

4.芯片擦除:

整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms 来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。

此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。

2、最小系统电路的组成

由电源、复位及振荡电路、四位一体数码管显示电路、按钮及LED电路。

复位及振荡电路

复位电路由按键复位和上电复位两部分组成。电阻给电容充电,电容的电压缓慢上升直到vcc,到vcc时芯片复位脚近似低电平,于是芯片复位,接近vcc时芯片复位脚近高电平,于是芯片停止复位,复位完成。

AT89C51系列单片机为高电平复位,通常在复位引脚RST上连接一个电容到VCC,再连接一个电阻到GND,由此形成一个RC充放电回路保证单片机在上电时RST脚上有足够时间的高电平进行复位,随后回归到低电平进入正常工作状态,这个电阻和电容的典型值为10K和10uF。

按键复位就是在复位电容上并联一个开关,当开关按下时电容被放电、RST也被拉到高电平,而且由于电容的充电,会保持一段时间的高电平来使单片机复位。使用6MHz的晶体振荡器作为振荡源,由于单片机内部带有振荡电路,所以外部只要连接一个晶振和两个电容即可,电容容量一般在15pF至50pF之间。如下图所示

数码管显示电路

利用单片机的T0,T1计数定时器功能,来完成对输入信号进行率计数,计数结果通过4位动态数码管显示出来,能对0到9999HZ的方波信号频率进行准确计数。如下图所示

3、软件设计

根据设计项目所需功能,我们先进行初始化,在待机状态下,采集频率。然后检测是否有按钮按下,若按钮按下,则数码管显示所采集的频率,再按下键0时则不显示。系统实现所有功能,其程序框图如图所示。

4、设计源程序 #include bit int_flag;//定时器0,1S到标志位

unsigned char volatile T0Count;//定时器0的中断次数 unsigned char volatile T1Count;unsigned char code table[] //定时器1的中断次数

={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//显示段码值为123456789 unsigned char code temp[] = {0xfe,0xfd,0xfb,0xf7};//数码管选通 unsigned long sum;//1S内脉冲总个数 unsigned char Led[4];//Led显示缓存

void delay(unsigned int num){ //软件延时

while(--num);//定时器0初始化 } void init(void){ TMOD=0x51;//T1定时器0工作于方式1,定时器1计数 TH0=(65536-50000)/256;//定时50ms TL0=(65536-50000)%256;TH1=0x00;TL1=0x00;} void disp(void){ //数码显示

unsigned char i;for(i=0;i<4;i++){

P2=temp[i];//片选

P0=table[Led[i]];//取数据显示

delay(100);//延时1毫秒

} } void main(void){ EA=1;//开总中断

init();//初始化定时器

TR0=1;//定时器开始工作

TR1=1;ET1=1;//开T0中断

ET0=1;while(1){

if(int_flag==1){

int_flag=0;

sum=TL1+TH1*256+T1Count*65536;//计算个数

//将数据格式化,转化成可显示的BCD码

Led[3]=sum%10000/1000;//显示千位

Led[2]=sum%1000/100;//显示百位

Led[1]=sum%100/10;//显示十位

Led[0]=sum%10;//显示个位

T0Count=0x00;

T1Count=0;

TH1=0x00;

TL1=0x00;

TR1=1;

}

内脉冲1S

disp();} } void int_t0(void)interrupt 1{ TH0=(65535-50000)/256;TL0=(65536-50000)%256;T0Count++;if(T0Count==20){

TR1=0;

int_flag=1;

T0Count=0x00;} } void int_T1(void)interrupt 3{ T1Count++;

5、设计仿真图 输入正弦波频率为1324HZ的仿真情况; 输入方波频率为4216HZ的仿真情况;

6、实物图(未上电)

六、实验结果分析

在实验电路板验收的时候,对于给定的输入信号,数码管显示的频率示数与实际信号源给定的频率有大约20HZ的偏差,产生偏差的原因可能有:1.电路电容的选取不恰当;2.焊接电路板的时候,因为操作不恰当,某些焊点的焊接不到位;3.实际器件与仿真所用到的的元件有差别。

七、心得体会

篇3:单片机课程设计-00-99手动计数器设计

本系统以单片机、8254计数器及CPLD进行电路设计,利用上位机进行预置通道、频率和计数值等参数,达到了所需模拟源的技术要求,并具有较高的可靠性和灵活性。

1 系统设计

1.1 系统结构

系统设计采用Intel公司的80C196KB单片机为控制核心;以Intel公司的可编程计数器/定时器8254为主要实现芯片,其工作模式见参考文献[4];采用CPLD作为逻辑控制单元逐级控制实现多通道、不同频率与个数,且可以同时发出单个脉冲或组脉冲模拟源。

在设计中,双端口存储器IDT7130是单片机与计算机并口之间通讯的纽带,单片机的地址和数据由IDT7130的A口进行读写操作;PC机的地址和数据则由B口进行读写操作;二者可以实现异步读写操作,适用于单片机与PC机之间的大量数据高速双向传送。控制信号及参数设置由上位机通过EPP模式并口发送给IDT7130的A口,而单片机则通过B口获取这些指令及参数进而控制8254与CPLD的运行。单片机的数据总线、地址总线和控制总线是单片机与外部存储器、I/O接口芯片进行信息交换的惟一通道。三线处理的正确与否,直接关系到整个系统的运行质量。系统接口连接框图如图1所示。

1.2 8254计数器级联原理与实现

为满足不同测试环境对脉冲的需求,模拟源的设计必须有大幅度的可变性与可调性,其脉宽、频率以及脉冲个数的范围应该可以预置的。把其设计原理以一具体例子来描述如下:若模拟源的脉冲信号个数可预置范围是0~224,可选通道为6个,则至少需要24位计数器,但1片8254中每个计数器/定时器都是16位的,每片8254集成有3个这样独立的计数器/定时器。在设计的过程中可以采用3片8254级联实现此功能。3片8254共计9个计数器/定时器,使用其中的8个,在功能分配上,2个用于控制奇数和偶数通道的频率,3个级联用于产生奇数通道的脉冲个数,3个级联用于控制产生偶数通道脉冲个数。将8254作为任意分频器和计数器使用,通过对8254计数器频率和初始值的设置实现了模拟源脉冲任务功能。

现以实现3FFFF4H个脉冲为例介绍3个奇数通道工作过程,如图2所示。由于8254的计数器是16位的,要实现24位的脉冲信号,可将其脉冲数分为高、中、低位分别实现。3FFFF4H=40H*FFFFH+34H,即高位为40H,低位为34H。让U1的计数器0工作于模式2的分频状态,其时钟信号就是设定的晶振频率的脉冲信号,计数器1用来控制脉冲个数的低位,计数器2用来控制脉冲个数的中位,U2的计数器0用来控制计数器的高位。

要得到需要的脉冲个数,应将U1计数器0的输出脉冲P2的作为U1的计数器1和计数器2的时钟输入信号。计数器1工作在模式1条件下,门控由U2的计数器0输出端控制,计数完毕后输出高电平。其初始值为34H,当计数器计满34H时,其输出端P5由低变为高电平,停止计数。U1计数器2和U2计数器是用于产生中位和高位脉冲,计数器2设置为方波发生器的模式3状态下,其初始值为FFFFH,并将其输出端作为U2计数器0的时钟信号。此时计数器0工作在模式1计数状态下,并预置初始值为40H,也就是当U1计数器2每计满一个FFFFH时,其输出端的上升沿跳变就会触发U2的计数器0,使其计数1次,当此计数器计满40H时,其输出端P4呈现高电平,再触发U1的计数器1,当计数器1计满后,这样就共计40*FFFFH+34H个脉冲。为了保证计数时计完高位再计低位,将U2计数器0的计数输出信号作为U1计数器的门控信号,这样在U1计数器2和U2计数器0计完高位后,用U2计数器0的输出端的高电平跳变来启动U1计数器1开始工作,从而保证了计数器在低位和高位的时间上无重叠。

1.3 脉宽调制

在通常的测试仪器中,两个设备通过隔离光耦进行信息通信。光耦的灵敏度各不相同,一般光耦对只有几纳秒的脉宽是感应不到的,所以,为了使信号模拟源更有通用性,可以使信号先通过单端稳态触发器74HC123进行脉宽调制,其输出脉宽可由公式tw(out)=KCxRx计算得出,其中Cx,Rx即为图2中的R1和C3的值。把分频后的脉冲信号P2经脉宽调制后可以输出任意脉宽,从而适应了各种测试需求,使脉冲模拟源具有更大的灵活性。调试前后的脉冲波形如图3,图4所示。

1.4 通道控制

为实现多通道的脉冲输出,可以使用CPLD作为通道控制逻辑单元,CPLD逻辑控制如图5所示。为使经过脉宽调制后的F1在输出端P4和P5都为高时停止输出,则使P4和P5和单片机高速输出端HS03共同通过一与门变为一路信号,再和F1共同通过一或门,这样就可使时钟在脉冲数输出完毕后停止F1的输出,此时由或非门输出的脉冲个数正是所设置的个数。在该逻辑单元中,P4和P5与高速输出端HSO3作为计数停止控制信号,SET1-3作为通道选择控制信号,具体电路如图5所示。

对计数的每个计数器,必须有初始值,且初始值不能为0,即低位、中位与进位必须有初始不为0的数。这样才能保证计数的顺利进行。当脉冲个数设置为1时,中位与进位必须为0,这时需要修改计数器的工作模式(在单片机程序中实现),只需把低位计数器的改为模式5(硬件触发的选通信号发生器),初始值设为10即可。此时发出的脉冲是单脉冲,其脉冲宽度为一个时钟周期。

2 软件设计

在本系统中,软件部分分为单片机控制软件和上位机软件,单片机控制软件是整个设计的核心,肩负着双机通信及控制整个系统的任务,他从上位机获取执行命令和执行相应的操作。 在单片机软件设计中,因为单片机与上位机要保持实时通信关系,所以首先完成的是双机通信问题。这里采用异步通信方式,使用双端口存储器作为双机之间数据传输的纽带,采用计算机并口EPP通信方式。在工作过程中,计算机先将协议规定的命令发送给双端口存储器,然后单片机从双端口存储器获取指令数据对系统进行控制[5]。双方使用握手信号作为双方的通信协议,握手信号在单片机主程序中循环产生。

3 结 语

脉冲模拟源的准确性以及精度一直是测试系统中比较关注的问题,他是检测系统性能的重要指标之一,其性能的好坏直接关系到测试的准确性。实验表明,该设计方案可靠性极高:预设置频率与实现频率的误差在±0.02%以内,脉冲个数准确率达100%。另外,该系统还与某型号变换器进行的联试,通过上位机接收所发出的脉冲个数,试验表明接收的脉冲个数与频率和所设置的参数完全吻合。

参考文献

[1]王永山,杨宏五.微型计算机原理与应用[M].2版.西安:西安电子科技大学出版社,1999.

[2]周治良,张斌珍.一种基于单片机及CPLD测试台的设计与实现[J].仪器仪表学报,2006(6):2 389-2 391.

[3]周祥萍,韩忠良,李铁军.可编程定时/计数器8254的方式控制字及应用[J].煤炭技术,2005,27(5):27-29.

[4]任勇峰.飞航导弹遥测匹配装置自动监测系统研究[D].太原:华北工学院,2000.

篇4:单片机课程设计-00-99手动计数器设计

【关键词】单片机;计数器;敏感性能;采集系统;二级控制系统;

【中图分类号】TP339【文献标识码】A【文章编号】1672-5158(2013)02-0356-02

1.单片机的介绍

单片机是靠程序的,并且可以修改。通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能,这是别的器件需要费很大力气才能做到的,有些则是花大力气也很难做到的。一个不是很复杂的功能要是用美国50年代开发的74系列,或者60年代的CD4000系列这些纯硬件来搞定的话,电路一定是一块大PCB板!但是如果要是用美国70年代成功投放市场的系列单片机,结果就会有天壤之别!只因为单片机的通过你编写的程序可以实现高智能,高效率。

由于单片机对成本是敏感的,所以目前占统治地位的软件还是最低级汇编语言,它是除了二进制机器码以上最低级的语言了,既然这么低级为什么还要用呢?很多高级的语言已经达到了可视化编程的水平为什么不用呢?原因很简单,就是单片机没有家用计算机那样的CPU,也没有像硬盘那样的海量存储设备。一个可视化高级语言编写的小程序里面即使只有一个按钮,也会达到几十K的尺寸!对于家用PC的硬盘来讲没什么,可是对于单片机来讲是不能接受的。 单片机在硬件资源方面的利用率必须很高才行,所以汇编虽然原始却还是在大量使用。一样的道理,如果把巨型计算机上的操作系统和应用软件拿到家用PC上来运行,家用PC的也是承受不了的。

目前最常用的单片机为MCS-51,是由美国INTEL公司(生产CPU的英特尔)生产的,89C51是这几年在我国非常流行的单片机,它是由美国ATMEL公司开发生产的,其内核兼容MCS-51单片机。

单片机的应用领域:单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分如下几个范畴:.在智能仪器仪表上的应用,单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛应用于仪器仪表中,结合不同类型的传感器,可实现诸如电压、功率、频率、湿度、温度、流量、速度、厚度、角度、长度、硬度、元素、压力等物理量的测量。采用单片机控制使得仪器仪表数字化、智能化、微型化,且功能比起采用电子或数字电路更加强大。例如精密的测量设备。

在家用电器中的应用,可以这样说,现在的家用电器基本上都采用了单片机控制,从电饭褒、洗衣机、电冰箱、空调机、彩电、其他音响视频器材、再到电子秤量设备,五花八门,无所不在。在计算机网络和通信领域中的应用,现代的单片机普遍具备通信接口,可以很方便地与计算机进行数据通信,为在计算机网络和通信设备间的应用提供了极好的物质条件,现在的通信设备基本上都实现了单片机智能控制,从手机,电话机、小型程控交换机、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见的移动电话,集群移动通信,无线电对讲机等。

2.计数器总体思路与结构框图

系统上电复位,计数器自动复位清零。当无物体遮挡时计数器不被触发计数,使之保持原态,计数器显示数值不会变化。当有物体遮挡时使计数器可靠触发,计数器被触发翻转计数。当物体下次到来时,计数器将自动加一,直到加至计数值为999。继续加一,使计数器进入下次从099的循环计数。通过以上分析,数字式光电计数器电路主要由直流稳压电源、光电变换电路(信号采样电路)、信号触发电路和两位数电子计数器电路及译码显示电路等组成。

电路分析。电路中对于第一比较器IC2B,当红外传感器输出的脉冲信号电压小于参考电压时,输出端输出高电平;当输入电压大于参考电压时,输出低电平。对于IC2A,当IC2B输出高电平时,它输出低电平。这时,光耦合器中的发光二极管、光敏三极管导通,使VT导通输出低电平,这是红外传感器在无物体遮挡时脉冲输出端的输出状态。当IC2B输出低电平时,IC2A输出高电平,光耦合器中的发光二极管截止,光电管及VT截止,输出高电平,这是红外传感器被遮挡后脉冲输出端的输出状态。这样,每当传感器被遮挡一次,脉冲形成电路便输出一个计数脉冲。从而触发译码器在数码管上显示计数值。一只计数器上加上两个译码器和两个数码管组成一个两位的电子计数器。它的计数范围为0~999,采用同样的计数器和译码器进行级联便可组成多位计数器。电路中,C4与R12组成开机复位电路,接通电源后由RC电路产生一个复位脉冲加至计数器的复位端R,计数器自动清零。本电路采用脉冲下降沿触发方式,计数脉冲由EN端输入,这时应将CP端接地。

电路的优缺点及改进方法:一是电路的优点,易于实现自动化控制、计数精确、直观性比较好、具有一定的抗干扰能力且比较容易实现级联,以达到扩大计数范围的作用,同时电路具有很强的实用性。二是电路的不足,由红外发射管IRED和接收管VTP组成的信号采样电路灵敏度稍差,以及电路焊接工艺和线路排布个人觉得并不十分完美。三是电路改进措施,在调试之前我把发光管与接收管正对,同时为避免自然光线干扰引起误计数,我在接收管上套一段黑色圆管作遮光筒,将两管之间调整好距离,以有效实现物体运动。在电路板焊接工艺这一块,有待于在今后的技能实习中进一步加强和训练。四是电路调试过程中两种出现的情况 ①电压比较器LM393的第一级比较器的参考电压端(五号端)的上电电压很高,接近于电源电压,使输入端(六号端)与之比较时没有反应,LM393不能正常工作,从而不能产生脉冲信号。②某些时候数码显示器计数不准确,产生这种现象的原因是由于脉冲发生电路所产生的脉冲信号频率不正常。

解决方法:一是电压比较器LM393集成块的四号端和八号端对调,使四脚接地,八脚接正极,这样就将参考电压端(五号端)的电压拉低,使之为VDD/2,即4.5V,使电路正常工作。二是既然脉冲信号频率不正常,那么我就查脉冲发生电路,由发射接收管到电压比较器再到光耦合器再到三极管最后到充放电电容。最终确定充放电电容不匹配,由容量为10的4次方皮法改为了10的2次方皮法,电路能准确计数,正常工作。

电源电路。220V交流市电经变压器T降压,桥式整流器D1整流,电解电容C7滤波,三端稳压器78L05稳压,最后得到整机要求的+5V稳定直流电源。单片机系统。U1为AT89S52单片机。C1,R0,R1和复位按钮RESET组成手动电平复位和上电自动复位电路;C2,C3以及晶振JT1组成时钟电路;C4,C5为+5V电源滤波电容。U2为CMOS6反相器CC4069,起驱动作用。VD1~VD6为红外发射管,其负极端接与P1口,P1口设置为输出状态,当P1口为“0”时,VD1~VD6发红外光。VD7~VD12为红外接收管,当接收到红外光时导通,+5V电源通过VD7~VD12加到反相器CC4069的输入端,经反相为低电平,这时P3.0~P3.5为低电平。

参考文献

[1] 张志虎;张少贤;贾红光;王晓卫;陈伟;;AT89S8253单片机在导弹武器系统检测设备中的应用[A];2010系统仿真技术及其应用学术会议论文集[C];2010年

[2] 何家明;方宪法;王光辉;王德成;;基于单片机的青贮打捆机自动控制系统设计[A];2010国际农业工程大会现代畜牧业装备创新与产业化分会场论文集[C];2010年

[3] 项四平;;HY280B超若干单片机软件新技术新方法[A];中国仪器仪表学会医疗仪器分会2010两岸四地生物医学工程学术年会论文集[C];2010年

[4] 张红兵;基于ARM的双丝脉冲MIG高速焊分布式控制系统的研究[D];华南理工大学;2010年

[5] 刘占来;基于ARM的故障监测诊断系统设计(前端采集和通信系统)[D];北京交通大学;2011年

篇5:单片机课程设计-00-99手动计数器设计

关键词:8254-2,单片机,PLC,串口通信

可编程逻辑控制器 (PLC) 用于工业控制可靠性高, 抗干扰能力强, 通信能力强, 扩展模块丰富等特点。西门子S7-200 CPU224XP PLC具有2路200KHz的高速计数器输入[1]。然而, 在对具有随机性的核脉冲信号进行计数时, PLC的计数频率过低会产生大量信号堆积而不能满足系统要求。目前, 西门子PLC计数频率达到105数量级的情况下, 关于针对提高其计数频率的问题的研究暂未展开。

本文提出了基于8254-2、单片机与PLC的核脉冲计数系统, 在某种程度上提高了PLC计数频率。

1 8254-2、单片机与PLC计数系统

采用8254-2计数器记录一次仪表处理后的核脉冲, 把记录的核脉冲数送给单片机的同时, 单片机控制8254-2计数器的工作方式等;单片机把记录下的数据通过串口通信的方式发送给PLC进行数据处理。

1.1 8254-2与单片机的连接电路

8254-2是3通道16位可编程减法计数器, 最高计数频率10MHz, 所有引脚都和TTL兼容, 具有CS、RD和WR控制线, D0-D7的双向三态数据线、A0和A1地址线。其它CLK0-CLK2为每个计数器的时钟输入引脚, GATE0-GATE2为每个计数器的门控输入引脚, OUT0-OUT2为每个计数器的输出引脚, 当达到设定计数值时不同工作方式会产生不同的输出波形。本文采用了其工作方式2:脉冲发生器, 对输入信号作N (计数器初值) 次分频, OUT输出连续的、宽度为1个输入脉冲周期的负脉冲[2]。

8254-2与单片机的电路连接如图1所示。74LS373锁存低8位地址;74LS154将高位地址译码产生片选信号;单片机的ALE引脚用来锁存P0口送出的低8位地址;单片机的P1.3引脚控制GATE0信号功能。

1.2 单片机与PLC的串口连接电路

本文采用AT89C51单片机, 其串行口输出的是TTL电平, 而PLC只带有RS-485接口。因此, 要与PLC进行串口通信, 必须完成TTL到RS485电平的转换。本文选择了MAX485芯片。

MAX485接口芯片是Maxim公司的一种RS-485芯片。采用单一电源+5V工作, 额定电流为300μA, 采用半双工通讯方式, 它完成将TTL电平与RS-485电平转换的功能。RO和DI端分别为接收器的输出和驱动器的输入端。当undefined为逻辑0时, 器件处于接收状态;当DE为逻辑1时, 器件处于发送状态;A端和B端分别为接收和发送的差分信号端, 当A引脚的电平高于B时, 代表发送的数据为1;当A的电平低于B端时, 代表发送的数据为0[3]。

与单片机连接时只需要一个信号控制MAX485的接收和发送即可, 同时将A和B端之间加匹配电阻R。A和B的另一端分别连PLC自由端口PORT0的8号和3号端。如图2所示。

2 单片机与PLC的串口通信

由于系统中AT89C51单片机只是发送数据, PLC单纯接收数据, 所以采用单工串行通信。

2.1 AT89C51单片机通信功能介绍

AT89C51是一个低功耗, 高性能CMOS8位单片机, 它内含1个全双工的串行通信口。本系统单纯采用了AT89C51单片机单工串口通信, 利用串口中断来完成发送数据功能。

2.2 PLC自由方式通信介绍

S7-224XP PLC是串口通信方式最丰富的小型PLC之一, 支持多种通信协议, 本系统采用其自由通信协议。自由通信协议又叫用户定义协议, 利用自由端口模式, 可以实现用户定义的通信协议, 连接单片机。

在自由端口模式下, PLC的串行通信接口由用户来控制, 通过语句表程序以及单片机的汇编语言进行配合, 来使用完成中断、字符接收中断、发送完成中断等, 通信协议由用户完全控制。这时单片机处于主机状态, 由单片机主动发送信息, PLC接到信息完成数据处理即可。

2.3 PLC与单片机的通信协议设计

PLC采用自由端口模式协议, 协议由语句表编程实现;单片机使用异步发送模式, 协议用汇编语言编程实现。

由于单片机与PLC通信要求使用相同的波特率, 且传输的数位相同, 所以在单片机串口的初始化设置中将波特率的定时器1、串口的控制和中断控制按如下步骤进行[4]: (1) 确定定时器1的工作方式:TMOD=20H; (2) 确定定时器1的初始值装载:TH1=0FDH;TL1=0FDH; (3) 启动定时器1:TR1=1; (4) 确定串口的控制:SCON=52H; (5) 计算波特率:选择的晶振为11.0592MHz;波特率=2SMOD/32×定时器1的溢出率 (式中SMOD为PCON寄存器的最高位) , 溢出率=11.0592/12, PCON=00H;得出串口波特率为9.6K。

字符信息格式为:1位起始位, 8位数据位, 无校验位, 1位停止位[5]。

异步通信的字符信息格式如图3所示。

数据位的发送顺序为低位在前, 高位在后。

3 程序流程

3.1 单片机程序流程

单片机系统的软件设计包括了单片机对8254-2计数器的计数方式控制和与PLC的异步串行通信发送程序。主程序流程图如图4所示。

3.2 PLC程序流程

PLC系统软件的设计包括了串口通信接收程序和数据处理程序。流程图如图5~图7。

4 总结

由8254-2计数器、AT89C51单片机以及S7-224XP PLC为核心的核脉冲计数系统, 不仅体现了PLC稳定性高、抗干扰能力强的特点;也发挥了单片机灵活性高的、易扩展的特性;更是综合了8254-2可编程计数芯片的高频率计数的优势, 使三者优势互补。实验证明, 该系统具有灵活性高, 实用性强, 开发成本低等特点, 且在某种程度上提高了PLC计数频率, 使PLC得到更广泛的应用。

参考文献

[1]西门子 (中国) 有限公司深入浅出西门子S7-200PLC[M].北京航空航天大学出版社, 2003.

[2]郑学坚, 周斌.微型计算机原理及应用 (第三版) [M].清华大学出版社, 2007.

[3]徐建军.MCS-51系列单片机应用及接口技术[M].人民邮电出版社, 2003.

[4]邴春秋等.基于PLC和单片机实现的数据采集控制系统设计[J].西华大学学报, 2007, 26 (6) :8-9.

上一篇:高三语文上学期备课组总结下一篇:环卫工安全协议