ImageVerifierCode 换一换
格式:DOCX , 页数:10 ,大小:55.91KB ,
资源ID:2899443      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/2899443.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(完整版基于8051单片机的简易数字电压表毕业设计论文.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

完整版基于8051单片机的简易数字电压表毕业设计论文.docx

1、完整版基于8051单片机的简易数字电压表毕业设计论文 基于8051单片机的简易数字电压表设计姓名:吴建亮 班级:电信1202 学号: 摘要电压表应用十分广泛,但大部分是模拟电压表,而由于其特性,反应速度慢,读数麻烦并且误差较大,所以为适应不断快速发展的高速信号领域,已经广泛使用数字电压表。本实验设计是基于51单片机开发板ESDM-3A实现的一种数字电压表系统。该设计采用8051单片机作为控制核心,以ADC0为模数转换数据采样,实现被测电压的数据采样,外部采用LCD12864液晶显示电压表的电压值。1.设计任务和要求1.1 设计任务设计制作一个简易直流电压表,该直流电压表能测量直流电压。各硬件模

2、块如图1.1所示。图1.1硬件框图1.2 设计要求(1)ADC0的工作方式设置如下:采用单端输入,模拟输入电压从P2.0输入;选择作为参考电压源;转换时钟频率设置为2MHz;采用写“AD0BUSY”启动AD转换。(2)采用定时器中断每隔0.5s启动一次AD转换;通过ADC0中断服务程序读取转换值。2.设计方案2.1 硬件电路 硬件模块如上图1.1所示。输入电压由开发板上J8接口的第2脚05.0V接跳线至单片机扩展接口J7的第4脚P2.0,调节电位器RP3实现不同电压的输入。AD转换器、单片机、液晶屏在开发板已经连接好。下面简单介绍所用的器件。C8051F360单片机主要模拟和数字资源包括:(1

3、)高速8051微控制器内核。(2)10位逐次逼近型AD转换器。(3)10位电流输出DA转换器。(4)两个模拟电压比较器CP1和CP0。(5)片内锁相环PLL。(6)扩充中断处理系统。(7)存储器,256字节内部RAM;1024字节XRAML;32字节闪存存储器。(8)数字资源,多达39个IO引脚,全部为三态双向口,允许与5V系统接口。(9)时钟源,2个内部振荡器;80kHz低频低功耗振荡器。(10)片内调试电路。液晶屏HGB功能和接口。1:VSS接地端2:VDD电源正,接+5V3:VO对比度调整,接电位器4:DI(CS*)片选,也叫使能,接+5V5:RW(SID*)数据输入端6:E(SCLK*

4、)时钟输入端714:DB0 DB7并行数据总线15:PSB串并模式选择,串行模式下接地,并行模式下接+5V16:NC空引脚,不需要连接17:RSTB复位端,低电平有效,一般接+5V18:VEE对比度调整,接电位器19:BLA背光正极,接+5V20:BLK背光负极,接地表2.1 液晶屏引脚接法12864液晶屏引脚按表2.1所示与单片机连接,在开发板上已经连接好,只需要配置好相应的寄存器即可。HGB内部有三种不同RAM,DDRAM,CGRAM和GDRAM,其自带汉字字库,提供8192个中文字形,这些字可以字符串的形式直接显示。2.2程序设计程序的编写使用C语言,利用Keil Vision4进行程序

5、的编写和烧录。程序执行时所对应的流程如下图2.1所示。图2.1 程序执行流程图下面简单介绍各模块的设计思路。(1)时钟和定时器:选用内部24MHz振荡器,频率除2作为SYSCLK;定时器选择定时器1工作方式1,TMOD=0X10,采用循环的方法,定时器定时50ms,循环10次得0.5s,装入初值TH1=()256,TL1=()%256。 (2)ADC0:通过置“AD0BUSY”启动AD转换,采用10位采集通道,电压的最大值为3.3V,通过转换器的到的数值为AD_data=ADC0H256+ADC0L,得到的实际电压为volt=AD_data3.31023,通过AD0INT位,判断AD转换是否结

6、束。(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的分析看,本次设计的数字电压表的符合要求,误差控制在1%内。4.总结本次的设计和实验采

7、用了Keil Vision4进行C语言的编写和烧录,熟悉了Keil的操作,对8051单片机的定时器、AD转换器、LCD12864液晶屏等模块有了一定的了解和认识。在程序的编写的过程和实际电路操作时遇到了种种问题,通过查阅大量的资料解决了问题,为以后的学习和实际应用奠定了基础。附录:本次设计实验的C语言代码:#include #define uchar unsigned char#define uint unsigned int#define LEDENCS 0xC004 LCD模块背光控制片选信号#define WCOMADDR 0xC008 写命令寄存器的地址#define WDATADDR

8、 0xC009 写数据寄存器的地址#define RCOMADDR 0xC00A 读命令寄存器的地址#define RDATADDR 0xC00B 读数据寄存器的地址uint num=0; uchar LEDCON=0x00; *LCD模块背光控制字,最低位为0时关LED背光,最低位为1时开启LED背光,*sbit START=P30;sbit SW0=P31;sbit SW1=P33;uchar code ); Lcd写指令子程序void WriteData(uchar m); Lcd写数据子程序void InsitiLcd(); Lcd初始化子程序void DispHan( uchar c

9、ode *a,uchar m,uchar k);显示汉字子程序void DispShu( uint a,uchar m); 数字显示程序* 主函数*void main() uchar xdata *addr; InitDevice(); InsitiLcd(); addr=LEDENCS; LEDCON=LEDCON; *addr=LEDCON; DispHan(; void XramInit(void) 外部数据储存器初始化 SFRPAGE=0x0f; EMI0CF=0x07; 引脚复用方式 SFRPAGE=0x00; return; void SmbInit(void) I2C总线初始化

10、SMB0CF=0xc1; 定时器T1溢出作为时钟 return; void UartInit(void) 异步串口通信接口初始化 SCON0=0x00; 10位UART return; void DacInit(void) DA转化器初始化 IDA0CN=0xf2; IDA0使能,写IDA0H触发DAC输出更新,2mA满度输出 return; void AdcInit(void) AD初始化 ADC0CN=0X80; adc0一直跟踪 ,AD0BUSY写“1”启动 ADC0CF=0x28; 转换率2Mhz,右对齐 REF0CN=0X08; 选择Vdd做基准电压 AMX0P=0X08; 单端输入

11、 P2.0 AMX0N=0X1F; EIE1=0x08; 允许ADC中断 return; void Int0Init(void) 外部中断初始化 IT01CF=0x05; 选择P0.5为INT0 IT0=1; INT0下降沿触发 return; void PcaInit(void) PCA初始化 PCA0CN=0x40; 允许PCA计数器定时器 PCA0MD=0x00; 禁止看门狗定时器 return; void InterruptsInit(void) 中断系统初始化 IE0=0; 清INT0中断标志 EX0=1; PX0=0; ET0=1; ET1=1; EA=1; return; voi

12、d InitDevice(void) OscInit(); PortIoInit(); XramInit(); SmbInit(); UartInit(); DacInit(); AdcInit(); Int0Init(); PcaInit(); InterruptsInit(); TimeInit(); return; * 检查LCD是否空闲子程序*void CheckLcd() uchar temp = 0x00; uchar xdata *addr; while (1) addr=RCOMADDR; temp=*addr; temp &= 0x80; if(temp = 0x00) break; * Lcd写指令子程序*void WriteCom(uchar n) uchar xdata *addr; CheckLcd(); addr=WCOMADDR; *addr=n; * Lcd写数据子程序*void WriteData(uchar m) uchar xdata *addr; CheckLcd(); addr=WDATADDR; *addr = m; * Lcd初始化子程序*void InsitiLcd() WriteCom(0x

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1