- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
贺秧秧简易数字电压表设计.doc
简易数字电压表设计
姓 名 贺秧秧
指导教师 贾立新
课 程 电子系统设计与实践
专业班级 电气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。测试时,A/D转换器的模拟输入信号可通过一个电位器产生。实验示意框图如图3-1所示。
图3-1 简易数字电压表实验示意框图
设计方案
简易数字电压表设计程序流程图如图3-2所示。
简易数字电压表实验板连接图如图3-3所示。此外,还需用一根杜邦实验线将J8 的0~3.3V 输出插针与J7 口的P2.0 插针相连。
图3-2 简易数字电压表设计程序中A/D转换和计时流程图
图3-3 简易数字电压表设计实验板接线图
三、详细设计
(1)简易数字电压表设计相应C8051F360和LCD初始化程序详见附录一。
(2)实验中AD转换选用逐次逼近型 3.039 2.640 2.286 1.975 实际电压(v) 3.2667 3.0465 2.6584 2.2976 1.9848 相对误差(%) 1.264 0.246 0.692 0.466 0.494 显示电压(V) 1.629 1.377 1.012 0.643 0.355 实际电压(v) 1.6360 1.3830 1.0170 0.6510 0.3641 相对误差(%) 0.427 0.433 0.492 1.22 0.270 表4-1 简易数字电压表设计实验数据
(注:其中显示电压指LCD显示值,实际电压指高精度电压表测量值)
五、心得体会
(1)LCD显示模块的CPLD部分由FPGA充当,芯片本身自带程序,因而这个部分不需要再通过QUARTUS 软件进行编程。
(2)单片机的相关初始化程序以及LCD初始化程序可以在书本和课件中找到参考,关于汉字显示程序部分,参考书本P177,在定义hanzi等变量时做相应修改,比如想要显示简易数字电压表就定义hanzi如下:uchar code hanzi[] = 简易数字电压表;另外在参考电压选择过程中发现,单片机实际最大电压并不是2.4v而是3.3v,则在转换中将3.3V替换2.4V即可。
(3)实验一开始发现调节电阻之后,实际电压值改变但是LCD显示电压值并没有发生改变,原因有:①EC6仿真器没有开启②每次KEIL重新开启后,要重新输入相应解码。
附录一:
/*简易数字电压表*/
#include C8051F360.H
#define uchar unsigned char
#define uint unsigned int
#define WCOMADDR 0xC008 //写命令寄存器的地址
#define WDATADDR 0xC009 //写数据寄存器的地址
#define RCOMADDR 0xC00A //读命令寄存器的地址
#define RDATADDR 0xC00B //读数据寄存器的地址
#define KEYCS 0xC00C
uchar code hanzi[] = 简易数字电压表;
uchar code keynum[]=键值;
uchar code keyc[]=次数;
uint time=0;
float volt;
uint v[4];
uint AT,voltage;
uchar keyn,keycode;
void OscInit(); //内部振荡器初始化
void PortIoInit(); //I/O端口初始化
void XramInit(); //外部数据存储器接口初始化
void PcaInit(); //PCA初始化(设置看门狗定时器的工作状态)
void InitDevice(); //内部资源初始化
void CheckLcd();
文档评论(0)