欢迎来到天天文库
浏览记录
ID:5576746
大小:110.00 KB
页数:8页
时间:2017-12-19
《基于单片机的数字电压表制作——adc0832模数转换应用程序》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、基于单片机的数字电压表制作——ADC0832模数转换应用程序(C语言)2011-02-2614:32 主要部件:AT89S51ADC0832八段数码管关键字:ADC0832程序C语言数字电压表本文所描述的数字电压表是利用ADC0832模数转换芯片完成的。该芯片能将0~5V的模拟电压量转换为0~255级的数字量,所以本文描述的数字电压表的量程为0~5V。说实在话,量程只有5V的电压表没有什么实际的意义,而且也没有人无聊到自己会去做一个没有意义的电压表。但是通过这个简易电压表的制作你可以对模数转换芯片有一定的了解,对以后做真正有用的电路打
2、下基础。而且,对于那些做毕业设计的同学也是一种参考。这也就是本文的意义所在。ADC0832的资料百度一下可以找到一大堆,我就不在这里赘述了。这里只给出连接图。以下是程序部分:该程序是本人自编的,经测试可用,但不保证程序的可靠性及稳定性。若有转载请标明出处。如果有同学将本程序烧写到单片机里却不能正常工作的,请注意以下三点:1、是否将端口重新定义。每个单片机开发板的引脚连接都是不一样的,若不加修改直接把程序烧写到单片机里,那是绝对不能正常工作的。2、是否正确选择通道值。ADC0832有两个模拟输入端口(也就是我说的通道),你要先弄清楚你用
3、的是那个通道,并在main函数中设置相应的通道值(以CH命名的那个变量)。本程序默认使用0通道,如果0通道不行就改成1通道,反正不是0通道就是1通道。3、如果你做的电压表在保证电路连接正确且没有以上两点问题的情况下,还是不能正常工作,请将程序中的“if(adval==test)”这一行删掉。其实这一点我个人也不清楚到底有没有问题。我有两个单片机开发板,其中一个必须要把那一行删掉才能工作。这说明ADC0832读出的前8位与后8位数值不一样(确切的说应该是后8位反转的数值),这有悖于ADC0832的原理。我不知道到底是硬件还是软件出了问题
4、,特此把这种现象标明。若有哪位同学知道其原因的还请多多指教。/***********************************************************************************//*简易数字电压表制作——ADC0832模数转换应用程序(C语言版)*//*目标器件:AT89S51 *//*晶振:12.000MHZ
5、 *//*编译环境:KeiluVision2V2.12 *//***********************************************************************************//*********************************包含头文件**************
6、******************/#include#include/*********************************端口定义**********************************/sbitCS =P3^5;sbitClk=P3^4;sbitDATI=P3^3;sbitDATO=P3^3;/*******************************定义全局变量********************************/unsignedchardat=
7、0x00; //AD值unsignedcharcount=0x00; //定时器计数unsignedcharCH; //通道变量unsignedchardis[]={0x00,0x00,0x00}; //显示数值/*******************************共阳LED段码表*******************************/unsignedcharcodetab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
8、/****************************************************************************函数功能:AD转换子程序入口参数:CH出口参数:dat******
此文档下载收益归作者所有