欢迎来到天天文库
浏览记录
ID:18621133
大小:561.00 KB
页数:9页
时间:2018-09-19
《贺秧秧201003080206简易数字电压表设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、简易数字电压表设计姓名贺秧秧指导教师贾立新课程电子系统设计与实践专业班级电气1002班学院信息工程学院提交时间2012年12月23日一、设计题目采用C8051F360单片机内部的A/D转换器将模拟电压转换成数字量,并用十进制的形式在LCD上显示。A/D转换的输入模拟信号由实验板PR3电位器产生的0~3.3V的直流电压信号,用一根杜邦实验线将J8的0~3.3V输出插针与J7口的P2.0插针相连。注意A/D转换器模拟输入电压的范围取决于其所选择的参考电压,如果A/D转换器选择内部参考电压源,其模拟电压的范围为0~2.4V,如果选择外部电源作为参考电压,则其模拟输入电压范围为0~3.3V。测试时
2、,A/D转换器的模拟输入信号可通过一个电位器产生。实验示意框图如图3-1所示。图3-1简易数字电压表实验示意框图二、设计方案(1)简易数字电压表设计程序流程图如图3-2所示。(2)简易数字电压表实验板连接图如图3-3所示。此外,还需用一根杜邦实验线将J8的0~3.3V输出插针与J7口的P2.0插针相连。图3-2简易数字电压表设计程序中A/D转换和计时流程图图3-3简易数字电压表设计实验板接线图三、详细设计(1)简易数字电压表设计相应C8051F360和LCD初始化程序详见附录一。(2)实验中AD转换方式选用逐次逼近型,A/D转换完成后得到10位数据分为高低字节存放在寄存器ADCOH和ADC
3、0L中,此处选择右对齐,转换时针为2MHZ。(3)选择内部参考电压2.4伏为基准(在实际单片机调试中改为3.311伏),正端接P2.0,负端接地。四、测试结果在0V~3.3V中取十组测试数据,每组间隔约为0.3V左右,实验数据如表4-1所示显示电压(V)3.3083.0392.6402.2861.975实际电压(v)3.26673.04652.65842.29761.9848相对误差(%)1.2640.2460.6920.4660.494显示电压(V)1.6291.3771.0120.6430.355实际电压(v)1.63601.38301.01700.65100.3641相对误差(%)0
4、.4270.4330.4921.220.270表4-1简易数字电压表设计实验数据(注:其中显示电压指LCD显示值,实际电压指高精度电压表测量值)五、心得体会(1)LCD显示模块的CPLD部分由FPGA充当,芯片本身自带程序,因而这个部分不需要再通过QUARTUS软件进行编程。(2)单片机的相关初始化程序以及LCD初始化程序可以在书本和课件中找到参考,关于汉字显示程序部分,参考书本P177,在定义hanzi等变量时做相应修改,比如想要显示简易数字电压表就定义hanzi如下:ucharcodehanzi[]="简易数字电压表";另外在参考电压选择过程中发现,单片机实际最大电压并不是2.4v而是
5、3.3v,则在转换中将3.3V替换2.4V即可。(3)实验一开始发现调节电阻之后,实际电压值改变但是LCD显示电压值并没有发生改变,原因有:①EC6仿真器没有开启②每次KEIL重新开启后,要重新输入相应解码。附录一:/*简易数字电压表*/#include#defineucharunsignedchar#defineuintunsignedint#defineWCOMADDR0xC008//写命令寄存器的地址#defineWDATADDR0xC009//写数据寄存器的地址#defineRCOMADDR0xC00A//读命令寄存器的地址#defineRDATADDR0
6、xC00B//读数据寄存器的地址#defineKEYCS0xC00Cucharcodehanzi[]="简易数字电压表";ucharcodekeynum[]="键值";ucharcodekeyc[]="次数";uinttime=0;floatvolt;uintv[4];uintAT,voltage;ucharkeyn,keycode;voidOscInit();//内部振荡器初始化voidPortIoInit();//I/O端口初始化voidXramInit();//外部数据存储器接口初始化voidPcaInit();//PCA初始化(设置看门狗定时器的工作状态)voidInitDevic
7、e();//内部资源初始化voidCheckLcd();//检查LCD是否空闲子程序voidWriteCom(ucharn);//Lcd写指令子程序voidWriteData(ucharm);//Lcd写数据子程序voidInsitiLcd();//Lcd初始化子程序voidDispHan(ucharcode*a,ucharm,uchark);//显示汉字子程序voidTimerInit();//定时器初始化voidIn
此文档下载收益归作者所有