基于单片机实训板的数字电压表设计.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于单片机实训板的数字电压表设计 基于单片机实训板的电压表设计简介 TLC549是德州仪器公司(TI)推出的CMOS 8位A/D转换器。该芯片有一个模拟输入端口,3态的数据串行输出接口可以方便的和微处理器或外围设备连接。TLC549仅仅使用输入/输出时钟(I/O CLOCK)和芯片选择(/CS)信号控制数据。最大的输入输出时钟(I/O CLOCK)为1.1MHz。 三.电路原理分析: 电容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 *****************************************/ #includereg52.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;i100;i++) display(dis_data,3); } } void delay(uint n) //延时子程序 { while(n) n--; } void display(uchar *p,uchar n) { uchar i; for(i=0;in;i++) { P2 =i0x07; 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,ad_data=0x00; AD_CLK=0; CLR_CS(); _nop_(); SET_CS(); _nop_(); for( i=8;i0;i--) { AD_CLK=1; //上升沿读数据 AD_IO=1; //读P1时置一 ad_data = 1; //左移一位,最高位先得到 if(AD_IO)

文档评论(0)

14576 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档