用单片机制作电压表

用单片机制作电压表

ID:11168487

大小:125.00 KB

页数:5页

时间:2018-07-10

用单片机制作电压表_第1页
用单片机制作电压表_第2页
用单片机制作电压表_第3页
用单片机制作电压表_第4页
用单片机制作电压表_第5页
资源描述:

《用单片机制作电压表》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、用单片机制作电压表作品概述电压表是电子测量是不可缺少的一种工具,这是一款用单片机制作的电压表,测量精确,达到小数后两位,外围元器件很少,制作简单,用STC12C5A62单片机,本次制作放弃了I/O准双向接口模式,采用的是推挽输出模式,强上拉输出,可达2mA,所以不需要用三极管来放大电流,大大简化了电路。电压测量范围是0~5V,既有一定的实用性,还可以加深对单片机的理解。元器件清单品名型号数量备注单片机STC12C5A60S21大约11元/片芯片座管孔式40PIN-DIP1可以用普通40PIN的芯片座替代电容30Pf2大约8元/包,瓷片电容晶体振荡器12MHz1

2、大约1元/个,普通的直插式晶体即可数码管SR430563K14位共阳,数码管中间带冒号显示5V稳压电源1为单片机提供工作电压电阻10K1/4W1电阻100欧1/4W3万能实验板2.54mm间距1尺寸可按喜好选择原理:主要运用到了A/D转换原理,将连续变化的模拟信号转化为数字信号,STC12C5A60S2自带A/D转换,省去了A/D转换芯片,A/D转换接口在P1口(P1.7-P1.0),有8位10路A/D转换器,速度可达250KHz,上电复位后P1口为弱上拉I/O口,可设置8路中任何一路为A/D转换,不需要作为A/D使用的可继续作为I//O使用。本制作选用P1.

3、1作为测量电压的输入口,因为输入的是模拟的信号,而单片机只有0和1两种状态,所以要在软件中将P1.1口设置为高阻输入模式.但高阻模式有个缺点,就是很不稳定,稍有一点电流就会跳变,加一个10K的下拉阻就可以变得很稳定了。由于电压测量不需要太高的精度,所以我取了8位结果,数模转换结果计算公式如下:ADC_RES[7:0]=256*Vi/Vcc.Vi为模拟输入通道输入电压,Vcc为单片机实际工作电压,用单片机工作电压作为模拟参考电压。电路原理图显示部分:电压值是用数码管显示出来的,非常直观,本制作采用的是四位数码管。采用动态显示,相比静态显示。动态显示方式不论是多少

4、位的数码管,在同一时刻内只有其中一位被点亮,所以比较省电,要加上100欧的限流电阻来保护数码管。注意事项:1.在使用ADC功能时,应将其输入端的I/O接口设置为高阻输入工作方式。2.更改ADC通道时须同时将对应的IO接口修改为高阻输入。3.不要测量超过5V的电压,否则可能损失单片机。实际效果单片机软件实现:编程方式与通用51单片机完全兼容。程序中用到了浮点运算,必须在Keil中安装C51FPS.LIB库文件,不然就会出现错误.#include#include//51基本运算(包括_nop_空函数)float

5、dianya;//电压intdianya1;//电压1charshuzu[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//0-9八个数字/*------------------延时函数---------------------------*/voidDELAY_MS(unsignedinta){unsignedinti;while(--a!=0){for(i=0;i<600;i++);}}/*------------------AD初始化程序---------------------------*

6、/voidADC_init(unsignedcharCHA){unsignedcharAD_FIN=0;//存储A/D转换标志CHA&=0x07;//选择ADC的8个接口中的一个(00000111清0高5位)ADC_CONTR

7、=0x40;//ADC转换的速度(0XX00000其中XX控制速度)_nop_();ADC_CONTR&=CHA;//选择A/D当前通道ADC_CONTR

8、=0x80;//启动A/D电源DELAY_MS(1);//使输入电压达到稳定(1ms即可)}/*--------------------AD转化函数-----------------

9、----------*/unsignedintADC_Read(void){unsignedcharAD_FIN;//存储A/D转换标志ADC_CONTR

10、=0x80;//启动A/D转换(00001000令ADCS=1)_nop_();_nop_();_nop_();_nop_();while(AD_FIN==0)AD_FIN=ADC_CONTR&0x10;//00010000测试A/D转换结束否ADC_CONTR&=0xe7;//11110111清ADC_FLAG位,关闭A/D转换,return(ADC_RES);//返回A/D转换结果(ADC数据8位在AD

11、C_RES中)}/*---------

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。