欢迎来到天天文库
浏览记录
ID:61034841
大小:536.00 KB
页数:11页
时间:2021-01-20
《基于51单片机的数字电压表实训报告.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、单片机课程设计数字电压表实训报告姓名:专业:班级:学号:指导老师:时间:2012年6月数字电压表实训报告一、实训目的1、设计电路图,根据电路图焊接电路。2、通过把设计好的程序利用软件将编译得到HEX格式文件加载到单片机芯片中,实现仿真电路,得到仿真电路结果。二、实训要求1、选择课题,独立完成电路的焊接和程序的编写与调试工作。2、数码管准确显示电压表上电压值,误差允许在+0.053、结合理论知识分析在焊接电路和调试程序过程中出现的问题,并及时解决相应问题。4、可以到图书馆查阅参考资料。5、认真完成实验课题。三、实训仪器电脑,Keil软件,Proteus软件四、实训器材晶振
2、、电容、电阻、按键、单片机、数码管、电烙铁、烙铁架、焊锡、电路板、实验配套工具五、系统概述(1)本设计基于AT89C51单片机,主要ADC0832芯片来进行电压从模拟量到数字量的转换。ADC0832为A/D转换,AT89C51单片机为控制核心,以LED数码管为显示器件。(2)利用AT89C51单片机及其外围接口电路,程序控制ADC0832对输入电压进行模数转换,在单片机进行数据处理和转换后,传输指令和转换后的电压代码至LED数码管显示模块。ADC0832能将0~5V的模拟电压量转换为0~255级的数字量,本次制作的数字电压表的量程为0~5V。本系统主要包括5个模块:电源
3、,串口通信,A/D转换模块,主控模块,显示模块六、.A/D转换模块(ADC0832管脚功能)·CS_片选使能,低电平芯片使能。·CH0模拟输入通道0,或作为IN+/-使用。·CH1模拟输入通道1,或作为IN+/-使用。·GND芯片参考零电位(地)。·DI数据信号输入,选择通道控制。·DO数据信号输出,转换数据输出。·CLK芯片时钟输入。·Vcc/REF电源输入及参考电压输入(复用)七、ADC数据读取程序流程:八、ADC0832的工作原理:正常情况下ADC0832与单片机的接口应为4条数据线,分别是CS、CLK、DO、DI。但由于DO端与DI端在通信时并未同时使用并与单片
4、机的接口是双向的,所以在I/O口资源紧张时可以将DO和DI并联在一根数据线上使用。当ADC0832未工作时其CS输入端应为高电平,此时芯片禁用,CLK和DO/DI的电平可任意。当要进行A/D转换时,须先将CS使能端置于低电平并且保持低电平直到转换完全结束。此时芯片开始转换工作,同时由处理器向芯片时钟(CLK)输入端输入时钟脉冲,DO/DI端则使用DI端输入通道功能选择的数据信号。在第一个时钟脉冲的下沉之前DI端必须是高电平,表示启始信号。在第二、三个脉冲下沉之前DI端应输入两位数据用于选择通道功能。九、.ADC0832管脚连接图:十、程序#include5、>#include#defineucharunsignedchar#defineuintunsignedintsbitADCS=P3^3;sbitADCLK=P3^4;sbitADDI=P3^5;sbitADDO=P3^5;sbitwei=P2^7;sbitduan=P2^6;ucharcodeTab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};voiddelay(uintz){uintx,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}voidDispla6、y(uintdat)//显示的数值为毫伏{ucharshi,bai,qian;qian=dat/1000%10;bai=dat/100%10;shi=dat/10%10;//ge=dat%10;wei=1;P0=0x01;wei=0;duan=1;P0=Tab[qian]&0x7f;//最高位加小数点duan=0;delay(3);wei=1;P0=0x02;wei=0;duan=1;P0=Tab[bai];duan=0;delay(3);wei=1;P0=0x04;wei=0;duan=1;P0=Tab[shi];duan=0;delay(3);/*wei=1;P0=7、0xf7;wei=0;duan=1;P0=Tab[ge];duan=0;delay(10);*/}ucharADC0832(bitmode,bitchannel)//AD转换,返回结果{uchari,dat,ndat;ADCS=0;//拉低CS端_nop_();_nop_();ADDI=1;//第1个下降沿为高电平ADCLK=1;//拉高CLK端_nop_();_nop_();ADCLK=0;//拉低CLK端,形成下降沿1_nop_();_nop_();ADDI=mode;//低电平为差分模式,高电平为单通道模式。ADCLK=1;//拉高
5、>#include#defineucharunsignedchar#defineuintunsignedintsbitADCS=P3^3;sbitADCLK=P3^4;sbitADDI=P3^5;sbitADDO=P3^5;sbitwei=P2^7;sbitduan=P2^6;ucharcodeTab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};voiddelay(uintz){uintx,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}voidDispla
6、y(uintdat)//显示的数值为毫伏{ucharshi,bai,qian;qian=dat/1000%10;bai=dat/100%10;shi=dat/10%10;//ge=dat%10;wei=1;P0=0x01;wei=0;duan=1;P0=Tab[qian]&0x7f;//最高位加小数点duan=0;delay(3);wei=1;P0=0x02;wei=0;duan=1;P0=Tab[bai];duan=0;delay(3);wei=1;P0=0x04;wei=0;duan=1;P0=Tab[shi];duan=0;delay(3);/*wei=1;P0=
7、0xf7;wei=0;duan=1;P0=Tab[ge];duan=0;delay(10);*/}ucharADC0832(bitmode,bitchannel)//AD转换,返回结果{uchari,dat,ndat;ADCS=0;//拉低CS端_nop_();_nop_();ADDI=1;//第1个下降沿为高电平ADCLK=1;//拉高CLK端_nop_();_nop_();ADCLK=0;//拉低CLK端,形成下降沿1_nop_();_nop_();ADDI=mode;//低电平为差分模式,高电平为单通道模式。ADCLK=1;//拉高
此文档下载收益归作者所有