- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于单片机实训板的数字电压表设计
PAGE
PAGE 1
长沙科瑞特电子有限公司 http://www.create.cc
基于单片机实训板的数字电压表设计
基于单片机实训板的电压表设计简介
TLC549是德州仪器公司(TI)推出的CMOS 8位A/D转换器。该芯片有一个模拟输入端口,3态的数据串行输出接口可以方便的和微处理器或外围设备连接。TLC549仅仅使用输入/输出时钟(I/O CLOCK)和芯片选择(/CS)信号控制数据。最大的输入输出时钟(I/O CLOCK)为1.1MHz。
功能框图如下:
由TLC549采集模拟量,由单片机控制,并将AD转换后的结果经单片机处理转换为电压值通过数码管显示出来。
测量电压范围为0~5V,分辨率为5/256=0.0195V。
二.电路原理图:
三.电路原理分析:
电容C7、C8、C9、C10和L1组成电源滤波电路;R34和C13组成模拟电压调节电路;P3为被测模拟信号输入接口,当被测模拟信号为外部电压时,电压值由P3的2脚输入,当被测模拟电压为内部电压时可将P3 的2脚 和3脚短接,则所测量的电压为板上R34输出的电压。
TLC549时序图
四、源程序
/****************************************
实验名称: 数字电压表
功能介绍:电压采样范围0-5V,精度位±20mV,
AD最高转换速率可达到17us.
硬件资源介绍:
数码管段码对应P00-P07(a-dp),低电平有效
数码管位码经74hc138译码对应P20-P22。
AD_CS->P1.0
AD_CLK->P1.1
AD_IO->P1.2
详细情况请参照原理图.
单位: 长沙科瑞特电子有限公司研发部
编写时间:2007-05-31
*****************************************/
#include<reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define SET_CS() AD_CS=0//CS 低电平有效;
#define CLR_CS() AD_CS=1
#define Vref 512
sbit AD_CLK = P1^0;
sbit AD_IO = P1^1;
sbit AD_CS = P1^2;
uchar code led_code[18]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80, //段码
0x90,0x88,0x83,0xc6,0xa1,0x86,0x81,0x7f,0xff};
uchar data dis_data[4]={4,4,0,0}; //显示缓冲区
uchar idata dis_bit[4]={0x7f,0xbf,0xdf,0xef};//位码单元
void delay(uint n); //延时子程序
void display(uchar *p,uchar n);//显示子程序
uchar adc_start(void); //AD转换程序
void data_switch(uchar ddata); //数值转换子程序
void main(void)
{
uchar temp;
uchar i;
while(1)
{
// temp= adc_start();
// data_switch(temp); //输出获得的数据
for(i=0;i<100;i++)
display(dis_data,3);
}
}
void delay(uint n) //延时子程序
{
while(n)
n--;
}
void display(uchar *p,uchar n)
{
uchar i;
for(i=0;i<n;i++)
{
P2 =i&0x07;
if(i==0x02)
P0 = led_code[p[i]]&0x7f;
else
P0 = led_code[p[i]];
delay(30);
P0=0xff;
}
}
uchar adc_start(void) //AD转换程序
{
char i,
文档评论(0)