《匠人手记》推荐网上购书渠道:
互动出版网(china-pub)购书入口   >>>
当当网(dangdang)购书入口   >>>
卓越亚马逊网 购书入口   >>>
淘宝网(taobao)购书入口   >>>
更多购书渠道……   >>> 

设为首页加入收藏联系匠人管理入口21IC首页21IC博客21IC社区侃单片机回复的贴参与的贴

天气预报
百宝日历
载入中...

百宝专栏

载入中...
最新货色

载入中...

粉丝评论

载入中...

载入中...



百宝信息

载入中...

百宝流量

(2006-07-01开始)


匠人手记

 匠人观点: 好记性不如烂笔头  
 黑色幽默:三鹿门——后世畅想

使用单片机制作多路输入电压表
程序匠人 发表于 2006-7-28 19:56:00  阅读全文 | 回复(1) | 引用通告 | 编辑

使用单片机制作多路输入电压表---由频繁的单片机撰写

单片机在工业控制和智能化仪表中,常由单片机进行实时控制及实时数据处理。单片机所加工的信息都是数字量,而被控制或测量对象的有关参量往往是连续变化的模拟量,如温度、速度、压力等等,与此对应的电信号是模拟电信号。单片机要处理这种信号,首先必须将模拟量转换成数字量,这一转换过程就是模—数转换,实现模/数转换的设备称为A/D转换器或ADC。
    AD转换器是单片机应用中常见的接口,从事单片机开发的人员通常都会遇到使用AD的要求,本文通过一个典型的例子来学习一种常用AD转换器的用法。

一、模数转换简介
    A/D转换电路种类很多,在选择模/数转换器时,主要考虑以下的一些技术指标:转换时间和转换频率、量化误差与分辨率、转换精度、接口形式等。目前,较为流行的 AD转换器件有很多都采用了串行接口,这使得这类芯片与单片机的硬件连接非常简单,而软件编程相对要复杂一些,下面,我们以TI公司的TLC1543为例,制作一个多路输入的电压表,了解一下这类芯片的使用特点。

二、TLC1543特性简介
    TLC1543是由TI公司开发的开关电容式AD转换器,该芯片具有如下的一些特点:
    10位精度、11通道、三种内建的自测模式、提供EOC(转换完成)信号等。该芯片与单片机的接口采用串行接口方式,引线很少,与单片机连接简单。
    图1是TLC1543的引脚示意图,其中A0~A10是11路输入,Vcc和GND分别是电源引脚,REF+和REF-分别是参考电源的正负引脚,使用时一般将REF-接到系统的地,达到一点接地的要求,以减少干扰。其余的引脚是TLC1543与CPU的接口,其中CS为片选端,如不需选片,可直接接地。I/O Clock是芯片的时钟端,Adress是地址选择端,Data Out是数据输出端,这三根引脚分别接到CPU的三个I/O端即可。EOC用于指示一次AD转换已完成,CPU可以读取数据,该引脚是低电平有效,根据需要,该引脚可接入CPU的中断引脚,一旦数据转换完成,向CPU提出中断请求;此外,也可将该引脚接入一个普通的I/O引脚,CPU通过查询该引脚的状态来了解当前的状态,甚至该引脚也可以不接,在CPU向TLC1543发出转换命令后,过一段固定的时间去读取数据即可。

三、单片机与TLC1543芯片的接口
    图2使用TLC1543制作的多路输入电压表的电路图,从图中可以看出,这里使用了TLC1543作为基准电压源,将REF-直接接地,P1.0、P1.1、P1.2、P1.3和P1.4分别与EOC、时钟、地址、数据、片选端分别相连。制作时,请参考表1进制连线。注意电容E1和C1一定要用,E1可用10u/16V电解,C1可用0.1u CBB电容,安装时尽量接近20脚和第10脚。输入端可根所需要,接入相应的信号。
编程的要求是在六位数码管的后四位数码管上轮流显示TLC1543各通道的测量值,同时用十六进制表示的通道号显示在第1位数码管上。
 
图2 用单片机制作多路输入电压表

四、TLC1543驱动程序编写
    由于采用串行接口,在硬件电路简单的同时,带来了软件编制的复杂性,初学单片机的入门者很难掌握这类芯片的编程方法,这给此类芯片的应用带来一定的限制。为解决这一问题,我们在实际应用该芯片的基础上写出了该芯片的驱动程序,有了驱动程序,使用者不必再关心TLC1543数据手册中的时序图之类不易懂的部份,只要了解清楚驱动程序的用法,即可使用该芯片。
TLC1543共有11条输入通道,这11条通道的编号从0~10,读取时,根据编号来获得想应通道的数据,此外,内部还有三条用于测试的通道,分别是接:
 、 和 其通道编号分别是11、12和13.
1.驱动程序
;以下定义各引脚
ADCLK  EQU  P1.1 ;时钟
ADaddr  EQU  P1.2 ;地址引脚
ADDout  EQU  P1.3 ;数据端
ADCS  EQU  P1.4 ;片选端
命令:ADConver
参数:r2 通道号,转换前存入 转换结后数据在r0r1中,高位在前
资源占用:r0,r1,r7,A 
ADConver:
CLR ADClk
CLR ADCS
MOV A,R2
RLC A
;送出地址信号
MOV R7,#4
C_L1:
RLC A
MOV ADAddr,C
SETB ADClk
NOP
NOP
NOP
NOP
CLR ADClk
DJNZ R7,C_L1
;补6个脉冲
MOV R7,#6
C_L2:
SETB ADClk
NOP
NOP
NOP
NOP
CLR ADClk
DJNZ R7,C_L2
;等待转换结束
SETB ADCS
NOP
NOP
NOP
NOP
CLR ADCS
;取高2位
NOP
NOP
NOP
NOP
SETB ADDout
SETB ADClk
MOV C,ADDout
MOV ACC.1,C
CLR ADClk
NOP
NOP
NOP
NOP
SETB ADDout
SETB ADClk
MOV C,ADDout
MOV ACC.0,C
CLR ADClk
ANL A,#00000011B ;清A的高6位
MOV R0,A ;保存数据

MOV R7,#8
C_L3:
NOP
NOP
NOP
NOP
SETB ADDout
SETB ADClk
MOV C,ADDout
MOV ACC.0,C
RLC A
CLR ADClk
DJNZ R7,C_L3
SETB ADCS
MOV R1,A
RET

2.驱动程序的使用
    该驱动程序中用到了四个标记符号:
ADClk   与TLC1543的Clk引脚相连的单片机引脚
ADaddr   与TLC1543的Address引脚相连的单片机引脚
ADDout   与TLC1543的AdDout引脚相连的单片机引脚
ADCS 与TLC1543的 引脚相连的单片机引脚
实际使用时,根据接线的情况定义好ADclk、ADaddr、ADDout、ADCS,将通道号送入R2,调用ADConver,即可从R0、R1中得到转换后的数据,使用非常简单。
;**************************************************
;   平凡单片机工作室
; http://www.mcustudio.com
;    Copyright 2003 pingfan's McuStudio
;    All rights Reserved
;作者:周坚
;文件名:ad.asm
;功能简介:每隔1s轮流将一个通道的值显示在数码管后4位,首位显示通道号
;**************************************************
gCoun DATA 22H ;通道计数器
CLK  bit   P1.1 ;时钟端
ADDR  bit   P1.0 ;地址端
Dout  bit   P1.4 ;数据输出端
CS  bit   P1.3 ;片选端
Hidden DATA 10H ;消隐码
Counter DATA 57H ;显示程序用计数器
DISPBUF DATA 58H ;显示缓冲区首地址

ORG 0000H
JMP START
ORG 000BH ;定时中断使用T0
JMP DISP ;定时中断程序
ORG 30H
START:
MOV SP,#5FH ;初始化
MOV P1,#0FFH
MOV P0,#0FFH
MOV P2,#0FFH ;关所有LED及数码管
MOV TMOD,#00000001B
MOV TH0,#HIGH(65536-3000)
MOV TL0,#LOW(65536-3000)
SETB TR0
SETB EA
SETB ET0
MOV Counter,#0 ;计数器清零
MOV DISPBUF+1,#Hidden ;第2位显示器消隐
MOV gCoun,#0 ;通道计数器清零,指向通道0
LOOP:
CALL Delay ;延时1s
MOV R2,gCoun ;送通道号
CALL ADConver
MOV A,R0
MOV R6,A
MOV A,R1
MOV R7,A
CALL HB2
;调用二-十进制转换程序
;入口:待转换的双字节十六进制数在R6和R7中
;出口:转换结束的结果在R3、R4和R5中,压缩BCD码方式存储
MOV A,R4
ANL A,#0F0H
SWAP A ;高低4位互换
MOV DispBuf+2,A ;最高位
MOV A,R4
ANL A,#0FH
MOV DispBuf+3,A
MOV A,R5
ANL A,#0F0H
SWAP A
MOV DispBuf+4,A
MOV A,R5
ANL A,#0FH
MOV DispBuf+5,A
;以上程序段将压缩BCD码转换成非压缩BCD码并送显示缓冲区
MOV DispBuf,gCoun ;将通道号送第1个显示器的显示缓冲区
INC gCoun ;通道号加1
MOV A,gCoun
CJNE A,#11,LOOP ;判断是否到11了
MOV gCoun,#0 ;到则回零
JMP LOOP
;主程序到此结束
    限于篇幅,文中用到的其他程序就不再提供了,可以在光盘中找到完整的源程序。

看《匠人手记》,与匠人同行!北航出版,正在热卖!

Re:使用单片机制作多路输入电压表
太阳(游客)发表评论于2007-3-19 11:05:00  个人主页 | 引用 | 返回 | 删除 | 回复

太阳(游客)请问一下谁能帮忙分析一下使用单片机制作多路输入电压表图

看《匠人手记》,与匠人同行!北航出版,正在热卖!

发表评论:
载入中...

芯片专题

器件专题

软件专题

硬件专题

综合专题

项目专题

原创专题

器件检测
LCD LED
按键 触摸键
E2PROM
电池 电机
电阻 电容 电感

指令系统
软件算法
编程规范
滤波算法
串行通讯

PCB设计
I2C PWM
红外遥控
充电技术
中断 ADC 

匠人手记
匠人夜话
网络心路
一周热点串烧
从零开始玩PIC
DIY旋转时钟

广告5号位 [投放]


学习板、开发板、编程器、下载器、仿真器(查看详情……)

广告3号位 [投放]

站内搜索


站外搜索


百度  google
mp3  歌词 
图片  FLASH 
知道  文档
新闻  词典 
地图  mp3 
软件  天网 
雅虎  爱问 
搜狗  讯雷 
网讯  华军 
天空 

21IC器件搜索
百宝箱分站
  • 《匠人的百宝箱》21IC站
  • 《匠人的百宝箱》21IC笔记团队
  • 《匠人手记》21IC书友会
  • 《匠人的百宝箱》MCUBLOG站
  • 《匠人的百宝箱》MCUBLOG笔记团队
  • 《匠人的百宝箱》EDN站
  • 《匠人手记》EDN书友会
  • 《匠人的百宝箱》与非网站
  • 《匠人的百宝箱》新浪站
  • 《匠人的百宝箱》百度站
  • 《匠人的百宝箱》网易126站
  • 《匠人的百宝箱》网易163站
  • 《匠人的百宝箱》互动出版网站
  • 广告4号位 [投放]

     
     

    匠人原创

    往日酷贴

     
     
     

    大千八卦

    友情连接

    新浪新闻:
    新浪财经:
    AK58新闻:
    新浪股票:
    新浪股票:
    证券之星:

     [更多酷站连接]

     

     

    [欢迎交换连接]

    [百宝箱之与非门分舵]

    [电脑圈圈的家当]

    [IC921的博客]

    [柔月阁]

    [八楼的呼吸]

    [hotpower 的水潭]

    [xwj的文君阁]

    [所长的BLOG]

    [阿摆手记]

    [电子伙伴]

    [unaided的笔记]

    [小飞的笔记]

    [单片机开发联盟]

    [网址之家]

    [好东西网址大全]

    [美萍中文精选]

    [数字电视之家]

    [SMARTCODE电子书斋]

    [软件开发之窗]

    [Armoric]

    [我爱研发网]

    [infernal的笔记]

    [雄鹰的空中加油站]

    [SunK]

    [逍遥电子]

    [ningpanda的博客]

    [C-Design]

    [一网见天下]

    [海边淘沙]

    [嵌入式365]

    [水牛的仓库]

    [股剩是怎样炼成的]

    [PIC论坛]

    [ICC AVR开发网]

    [中国高校自动化网]

     

     

     

    MCU博客-中国电子工程师博客网 

    大学生电子网 

     

     

     

     

     

    !!! 《匠人的百宝箱》 !!!