DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1219|回复: 0
打印 上一主题 下一主题

[工仪] 基于AT89C52单片机的实用八路物位测量仪设计

[复制链接]
跳转到指定楼层
楼主
发表于 2012-1-27 19:49:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

  
         
    A practical eight-way Level Measurement Instrumentation based on the 89C52 microcontroller
摘要:基于89C52单片机的实用八路物位测量仪表(以下简称测量仪),由ATMEL公司的89C52作为核心芯片,利用P1的八个I/O口作为输入口完成脉冲量信号采样,用P3口作为八路输出控制;用Maxim公司的Max7219构成串行显示来驱动LED,这种结构最大限度地利用了单片机硬件资源。同时,串行显示方式省去了单片机直接定时对LED的服务时间,节约了CPU时间,在实时性很强的工业控制系统中,显得尤为重要。
关键词:89C52  I/O口  串行显示  脉冲量
Abstract:  The practical eight-way Level Meter is based on the 89C52 microcontroller (hereinafter referred meter). its core chip is structed by ATMEL's 89C52, the sampling of pulse input signal is completed by P1 interface eight I / O , and the P3 interface is used as eight-way output control, The Maxim's Max7219 is used as a serial display drive to the LED.
The system is such a optimizing structure that the hardware resources of the microcontroller is fully used. At the same time, this method of serial displays does not occupy the CPU time. It is particularly important in real-time by strong industrial control systems.
Keywords: 89C52   I / O interface   serial display   pulse
1 总体构成
本测量仪的信号采样通过P0口的八根输入线可接受八路经过整形后的标准TTL电平,因此可测量不同传感器传来的脉冲型物位采样信号,只要在原始信号基础上加以整形处理即可,每来一个脉冲均被P0口捕捉到并可以通过软件编制使脉冲计数增一,定时读取计数和便可以换算成相应的物位情况。通过P3.3"P3.5三条线与串行显示驱动器Max7219的连接加以软件编程可完成八位数码管显示驱动,利用P1.3"P1.6四条口线接入四个按键,完成按键操作,利用P2口作为八路输出控制,可驱动八路固态继电器。具体组成见图1。


500)this.style.width=500;" border=0>
2 硬件线路设计
2.1  资源分配
AT89C52 芯片是基于MCS-51结构的高集成度8位微控制器,其主要特性是具有一个用于多处理器通讯的增强型串口和一个增/减定时器计数器,专门适用于控制应用。选用89C52的另外一个重要原因就是在芯片上实现了256字节的RAM,高端128字节的地址和特殊功能寄存器(SFR)的地址相同,但可以通过不同寻址方式区分,因此解决了测量仪的软件编程所用的RAM空间,不必再另外扩展随机存储器,节约了硬件资源。
2.2 串行显示设计
多位LED显示时,常将所有位的段选线并联在一起,由一个8位I/O口控制,也可采用并行扩展口构成显示电路,通常,需要扩展器件管脚的较多,价格较高。在本测量仪中,为了节约I/O口资源,采用了由Max7219芯片构成的串行显示方式。Max7219是串行输入,输出共阴极显示驱动电路,可直接与单片机的3条I/O线接口,特别适用于I/O口线少的系统,并且可以程序控制数码管的亮度。在本设计中,采用P3.3"P3.4三条线经74LS273锁存后与Max7219相连接,P3.3、P3.4锁存后分别作为7219串行数据输入信号DIN和时钟信号CLK,P3.5输出口锁存作为LOAD信号。具体硬件线路图见图2。



500)this.style.width=500;" border=0>
2.3  软件计数器的设计
在物位测量仪表中,当传感器书送来的信号为脉冲量时,通常需要通过专门计数器芯片如8254等来完成脉冲的计数,CPU将此变化的计数信号处理后使传感器送来的脉冲的个数与物位信号相对应。而在本设计中,巧妙利用了89C52的P0口资源,将脉冲量整形后直接送至P0口的8条数据线,此时P0口作为数据输入口使用。通过软件设计,每路开辟存贮单元(利用片内RAM),当P0口有电平跳变时,相应的计数单元计数加1,通过软件设置定时器,当定时时间到时,读取存储单元数值并清零,这样就完成了软件计数器的功能,节约了硬件资源,降低了硬件成本。
3 软件设计
128字节内存分配
本测量仪设计的另一大特点就是充分利用了128字节的片内RAM,无外部扩展存储芯片。CPU内部地址从15H开始算起,直到0C5H全部被开辟作标志或存储单元。具体分配为:15H"1CH为各路采样时间, 09H"0FH 为各种标志位, 42H"5BH为与各路计数有关的计数存储处理单元,5CH"63H为物位报警域值对应的计数存储单元,64H"6FH和 3cH"3FH位报警类别等存储单元。通过合理分配,尽管只有128字节RAM,可以满足8路物位测量的数据处理要求。
3.2  串行显示子程序
   Max7219驱动的显示部分程序放在DISP显示子程序中,在程序开始完成Max7219的初始化工作,将每次待显示的数据放置于从20H"27H开始的显示缓冲区地址中,每路需要送显时,直接调用显示子程序即可。
其中显示部分程序如下:
DISP:  MOV R0,#20H       ;R0指向显示缓冲区首地址
       MOV R1,#01H      
       MOV R3,#08H
LOOP3: MOV a,@R0        
       MOV R4,A         ;显示缓冲区数据送R4
       MOV A,R1
       lCALL WRITE        ;数据锁存到273
       INC R1
       INC R0
       DJNZ R3,LOOP3
3.3 采样处理子程序
调试过的部分源代码如下:
LOOP: MOV A,#0FH        ;主程序循环开始
MOV P0,A          ;先查询P0口,读取射线计数
MOV A,P0
XCH A,PQ
XRL A,PQ
MOV B,A
JB B.0,JIA1           ;第1路有计数,跳至加1程序
JIA10:JB B.1,JIA2    ;第2路有计数,跳至加1程序
JIA20:JB B.2,JIA3     ;…..
JIA30:JB B.3,JIA4
JIA40:JB B.4,JIA5
JIA50:JB B.5,JIA6
JIA60:JB B.6,JIA7
JIA70:JB B.7,JIA8     ;第8路有计数,跳至加1程序
LJMP LOOP01      ;接着处理键盘的查询
3.4主程序部分流程图
主程序流程图见图3



500)this.style.width=500;" border=0>
4 结束语
本设计的创新点在于充分利用了AT89C52的硬件资源,实现了软件计数器,能够对脉冲量信号所反映的物位信号通过数码管来显示,显示部分的处理采用Max7219显示驱动器,与软件编程相结合,大大节约了硬件资源,减少了通用的单片机扩展芯片,降低了成本。
参考文献:
1 吴玉平译  MCS51微控制器系列用户指南   电子工业出版社  1995
2 王建萍  Max7219串行LED显示驱动器及应用,电子技术应用,1996,6
3 刘志壮 洪添胜等  一种智能液位检测仪的设计  微计算机信息 2007年第2-1期 P156-157
4 史源平 于京生等  基于工控机的多路核子秤  微计算机信息  2008年第2-1期
作者简介: 于京生(1959-),汉 , 山东青岛人 ,石家庄学院电气信息工程系,副教授  主要从事自动控制方面的研究工作。
通讯地址:石家庄市高新技术产业开发区长江大道6号  050035
电子邮件: yujingsheng3828@126.com            

[1]
         
          [/td]
        [/tr]
      
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-5-4 21:30 , 耗时 0.082866 秒, 18 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表