51单片机课程设计报告设计课题:基于TLC1543的A/D转换及数显学院:物理与信息工程学院专业:电子信息工程姓名:唐晓旭余丛珍刘文杰2013年1月1目录一、实验目的…………………………………………………………………2二、实验步骤…………………………………………………………………2三、TLC1543的相关介绍及其特性………………………………21、A/D转换相关知识…………………………………………………22、TLC1543特性简介………………………………………………3四、硬件及软件设计……………………………………………………41、单片机最小系统的硬件结构框图…………………………42、硬件结构……………………………………………………………43、软件设计……………………………………………………………4五、软件调试………………………………………………………………5六、心得体会………………………………………………………………9七、硬件实物图…………………………………………………………102基于TLC1543的A/D转换及数显电路设计报告一、实验目的1、了解与掌握51单片机的用法2、了解与掌握常用串行接口AD转换器的用法3、学习C51程序的编写4、了解与应用Proteus电路仿真软件5、在数码管上显示可变电阻的电压值二、实验步骤1、了解A/D转换相关知识2、分析基于单片机的多路输入电压表实现方案3、硬件结构4、软件设计5、设计总结三、TLC1543的相关介绍及其特性1、A/D转换相关知识在工业控制和智能化仪表中,常用单片机进行实时控制及实时数据处理。单片机所加工的信息都是数字量,而被控制或测量对象的有关参量往往是连续变化的模拟量,如温度、压力、流量等,通过传感器将这些信号转换成模拟电信号。单片机要处理这种信号,首先必须将模拟量转换成数字量,这一转换过程就是模—数转换,实现模/数转换的设备称为A/D转换器或ADC。A/D转换电路种类很多,在选择模/数转换器时,主要考虑以下的一些技术指标:转换时间和转换频率、量化误差与分辨率、转换精度、接口形式等。目前,较为流行的AD转换器件有很多都采用了串行接3口,这使得这类芯片与单片机的硬件连接非常简单,而软件编程相对要复杂一些。A/D转换器的基本原理2、TLC1543特性简介TLC1543是由TI公司开发的开关电容式AD转换器,该芯片具有如下的一些特点:10位精度、11通道、三种内建的自测模式、提供EOC(转换完成)信号等。该芯片与单片机的接口采用串行接口方式,引线很少,与单片机连接简单。图1是TLC1543的引脚示意图,其中A0~A10是11路输入,Vcc和GND分别是电源引脚,REF+和REF-分别是参考电源的正负引脚,使用时一般将REF-接到系统的地,达到一点接地的要求,以减少干扰。其余的引脚是TLC1543与CPU的接口,其中CS为片选端,如不需选片,可直接接地。I/OClock是芯片的时钟端,Address是地址选择端,DataOut是数据输出端,这三根引脚分别接到CPU的三个I/O端即可。EOC用于指示一次AD转换已完成,CPU可以读取数据,该引脚是低电平有效,根据需要,该引脚可接入CPU的中断引脚,一旦数据转换完成,向CPU提出中断请求;此外,也可将该引脚接入一个普通的I/O引脚,CPU通过查询该引脚的状态来了解当前的状态,甚至该引脚也可以不接,在CPU向TLC1543发出转换命令后,过一段固定的时间去读取数据即可。数字输出A/D转换器模拟输入基准电压4图1TLC1543的引脚示意图四、硬件及软件设计1、单片机最小系统的硬件结构框图2、硬件结构本设计的硬件电路将采用TLC1543,AT89C52两块芯片来完成。单片机与TLC1543芯片的接口如图,从图中可以看出,这里使用了TLC1543作为基准电压源,将REF-直接接地,P1.0、P1.1、P1.2、P1.3和P1.4分别与EOC、时钟、地址、数据、片选端分别相连。在四位数码管上轮流显示TLC1543各通道的测量值。3、软件设计TLC1543共有10路模拟输入通道,通过单片机的外部中断实现。TLC1543和AT89C52的应用软件包括一个主程序和两个子程序,它们分别是A/D转换子程序及数码管显示子程序。AT89C52单片机驱动电路A/D转换器输入电压数码管显示5根据程序设计原理用Keil来编写应用程序,用Protel来设计电路,然后用Keil和Protel联调,来达到最终目的。以下是我在基于TLC1543的A/D转换及数显电路设计中的成果:五、软件调试软件部分是先参考书上的例子,然后自己根据硬件电路写程序,6在编写程序的过程中,数码管上出现各种各样的乱码,通过再次认真仔细分析多次修改程序后,程序能够正常运行。以下是A/D转换的程序:#includereg52.h#includeintrins.h#defineucharunsignedchar#defineuintunsignedintuintnum;floatnum1;ucharport,m;ucharge,shi,bai,qian;sbitAD_eoc=P1^0;sbitAD_clk=P1^1;sbitAD_add=P1^2;sbitAD_dat=P1^3;sbitAD_cs=P1^4;//定义管脚sbitP2_0OUT=P2^0;sbitP2_1OUT=P2^1;sbitP2_2OUT=P2^2;sbitP2_3OUT=P2^3;ucharcodeled7[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};ucharcodeledd7[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};voiddelay(uintz){uintk;for(z;z0;z--)7for(k=110;k0;k--);}voiddisplay(num){num1=num;num1=num1*5/1024*1000;num=num1;qian=num/1000%10;bai=num/100%10;shi=num/10%10;ge=num%10;P0=ledd7[qian];P2_0OUT=0;delay(5);P2_0OUT=1;P0=0x00;P0=led7[bai];P2_1OUT=0;delay(5);P2_1OUT=1;P0=0x00;P0=led7[shi];P2_2OUT=0;delay(5);P2_2OUT=1;P0=0x00;P0=led7[ge];P2_3OUT=0;delay(5);8P2_3OUT=1;P0=0x00;}uintADC(ucharchn1){uchari;ucharaddr8;uintADresult;AD_eoc=1;AD_cs=0;_nop_();addr8=chn1;addr8=4;for(i=0;i4;i++)//访问周期{AD_add=(bit)(addr8&0x80);AD_clk=1;AD_clk=0;addr8=1;}for(i=0;i6;i++)//采样周期{AD_clk=1;AD_clk=0;}AD_cs=1;while(!AD_eoc);//查询到转换结束_nop_();ADresult=0;AD_cs=0;//开始传数据for(i=0;i10;i++){9AD_clk=1;ADresult=1;m=AD_dat;ADresult+=m;AD_clk=0;}AD_cs=1;return(ADresult);}voidmain(){while(1){port=0x0a;num=ADC(port);display(num);}}六、心得体会本此实验的内容是设计基于TLC1543的A/D转换及数显电路,可以在数码管上看到亮度均匀的可变电阻两端电压值,显示的图形和文字较稳定、清晰。本系统具有硬件少,结构简单,容易实现,性能稳定可靠,成本低等特点。随着现代电子技术的应用和发展,越来越多的电子应用由模拟系统向数字系统转变,而A/D转换器为模拟系统和数字系统的界面,承担着模拟信号转变为数字信号的任务,在一些多路信号采集系统和实时数字信号处理系统中,A/D转换的多路扩展,高精度,低成本,实时性显得越来越重要。在现代先进的电子系统的前端和后端都将应用到A/D转换器,以改善数字处理技术的性能。在此次设计中,我有很多心得体会:1、通过这次A/D转换设计,我初步了解了Keil及Proteus的使用。102、通过这次A/D转换设计,我对TLC1543有了一个初步认识,也了解了AT89C52、数码管等电路原件的基本用途。3、通过这次A/D转换设计,我对A/D转换也产生了一定的兴趣,想要进一步学习A/D转换及数显,甚至想像学长们那样把A/D转换研究的更透彻。4、在本文的A/D转换及数显的设计中,我也遇到了一些困难,比如刚开始使用keil的时候对编写程序不太熟练,对电路原件的使用方法也不熟悉,后来听了同学们的讲解后明白了很多,对此产生了兴趣,也相信通过自己的努力能学好它。希望老师给我多提供一些这样的机会。七、硬件实物图11