欢迎来到天天文库
浏览记录
ID:14739258
大小:252.50 KB
页数:11页
时间:2018-07-30
《基于8051单片机的简易数字电压表设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、基于8051单片机的简易数字电压表设计姓名:吴建亮班级:电信1202学号:201203090224摘要电压表应用十分广泛,但大部分是模拟电压表,而由于其特性,反应速度慢,读数麻烦并且误差较大,所以为适应不断快速发展的高速信号领域,已经广泛使用数字电压表。本实验设计是基于51单片机开发板ESDM-3A实现的一种数字电压表系统。该设计采用8051单片机作为控制核心,以ADC0为模数转换数据采样,实现被测电压的数据采样,外部采用LCD12864液晶显示电压表的电压值。1.设计任务和要求1.1设计任务设计制作一个简易直流电压表,该直流电压表能测量直流电压。各硬件模块如图1.1所示。图1.1硬件框图
2、1.2设计要求(1)ADC0的工作方式设置如下:采用单端输入,模拟输入电压从P2.0输入;选择作为参考电压源;转换时钟频率设置为2MHz;采用写“AD0BUSY”启动A/D转换。(2)采用定时器中断每隔0.5s启动一次A/D转换;通过ADC0中断服务程序读取转换值。2.设计方案2.1硬件电路硬件模块如上图1.1所示。输入电压由开发板上J8接口的第2脚0~5.0V接跳线至单片机扩展接口J7的第4脚P2.0,调节电位器RP3实现不同电压的输入。AD转换器、单片机、液晶屏在开发板已经连接好。下面简单介绍所用的器件。C8051F360单片机主要模拟和数字资源包括:(1)高速8051微控制器内核。(
3、2)10位逐次逼近型A/D转换器。(1)10位电流输出D/A转换器。(2)两个模拟电压比较器CP1和CP0。(3)片内锁相环PLL。(4)扩充中断处理系统。(5)存储器,256字节内部RAM;1024字节XRAML;32字节闪存存储器。(6)数字资源,多达39个I/O引脚,全部为三态双向口,允许与5V系统接口。(7)时钟源,2个内部振荡器;80kHz低频低功耗振荡器。(8)片内调试电路。液晶屏HG1286412B功能和接口。1:VSS接地端2:VDD电源正,接+5V3:VO对比度调整,接电位器4:D/I(CS*)片选,也叫使能,接+5V5:R/W(SID*)数据输入端6:E(SCLK*)时
4、钟输入端7~14:DB0~DB7并行数据总线15:PSB串并模式选择,串行模式下接地,并行模式下接+5V16:NC空引脚,不需要连接17:RSTB复位端,低电平有效,一般接+5V18:VEE对比度调整,接电位器19:BLA背光正极,接+5V20:BLK背光负极,接地表2.1液晶屏引脚接法12864液晶屏引脚按表2.1所示与单片机连接,在开发板上已经连接好,只需要配置好相应的寄存器即可。HG1286412B内部有三种不同RAM,DDRAM,CGRAM和GDRAM,其自带汉字字库,提供8192个中文字形,这些字可以字符串的形式直接显示。2.2程序设计程序的编写使用C语言,利用KeilμVisi
5、on4进行程序的编写和烧录。程序执行时所对应的流程如下图2.1所示。图2.1程序执行流程图下面简单介绍各模块的设计思路。(1)时钟和定时器:选用内部24MHz振荡器,频率除2作为SYSCLK;定时器选择定时器1工作方式1,TMOD=0X10,采用循环的方法,定时器定时50ms,循环10次得0.5s,装入初值TH1=(65536-50000)/256,TL1=(65536-50000)%256。(2)ADC0:通过置“AD0BUSY”启动AD转换,采用10位采集通道,电压的最大值为3.3V,通过转换器的到的数值为AD_data=ADC0H×256+ADC0L,得到的实际电压为volt=AD_
6、data×3.3/1023,通过AD0INT位,判断A/D转换是否结束。(3)液晶屏LCD12864:液晶屏操作分指令操作和数据操作,每次写指令或数据前先确认内部动作是否完成,通过读取忙碌状态进行确认。读、写指令或数据通过读或写4个内部寄存器WCOMADDR,WDATADDR,RCOMADDR和RDATADDR来完成。详细代码请见附录。3.测试结果分析组数电压表显示(V)单片机显示(V)误差10.4490.4450.89%21.0801.0740.56%31.6531.6510.12%42.5702.5670.12%53.1003.0960.13%表3.1测试结果根据表3.1的分析看,本次
7、设计的数字电压表的符合要求,误差控制在1%内。4.总结本次的设计和实验采用了KeilμVision4进行C语言的编写和烧录,熟悉了Keil的操作,对8051单片机的定时器、A/D转换器、LCD12864液晶屏等模块有了一定的了解和认识。在程序的编写的过程和实际电路操作时遇到了种种问题,通过查阅大量的资料解决了问题,为以后的学习和实际应用奠定了基础。附录:本次设计实验的C语言代码:#include
此文档下载收益归作者所有