基于ADC0809的数字电压表.doc_第1页
基于ADC0809的数字电压表.doc_第2页
基于ADC0809的数字电压表.doc_第3页
基于ADC0809的数字电压表.doc_第4页
基于ADC0809的数字电压表.doc_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

南京信息工程大学南京信息工程大学单片机课程设计 题 目: 基于ADC0809的数字电压表 学生姓名: 乔冬春 学 号: 20091305064 所在学院: 电子与信息工程学院_ 专 业: 电子信息工程 指导老师: 邹应全 二0一一年十二月十九日目录摘要关键词 3前言 3硬件电路设计 3软件设计 8调试过程 8实物图 9结束语 10附 系统程序 11 基于ADC0809的数字电压表南京信息工程大学电子与信息工程学院 乔冬春 南京210044摘要:本文主要介绍了一个基于STC89C52单片机的数字电压表,描述了利用ADC089进行电压采集转换,同时通过1602液晶显示的过程。关键词:STC89C52;ADC089;1602;电压表;单片机一、 前言随着时代的进步和发展,单片机技术已经普及到我们生活、工作、科研、各个领域,已经成为一种比较成熟的技术,同时各种电子器件技术的发展,为我们的生产生活带来了许许多多的便利,从最初的数码管到如今的液晶,人们的视觉体验得到了极大的提高。同时AD转换技术发展,将人类从模拟时代带入了数字时代,极大地简化了人类的工作量,对生产力的发展起到了巨大的推动作用。二、 硬件电路设计单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能集成到一块硅片上构成的一个小而完善的计算机系统。系统方框图电压采集处理电源电路AD转换模块液晶显示模块串口模块STC89C52复位电路时钟电路2.电路各模块分析2.1 STC89C52特性分析STC89C52 是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。使用STC公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完 全兼容。片上Flash允许程序存储器在系统可编程,亦适于 常规编程器。STC89C52具有以下标准功能: 8k字节Flash,256字节RAM, 32 位I/O 口线,看门狗定时器,2个数据指针,2个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口, 片内晶振及时钟电路。另外,STC89C52 可降至0Hz 静态逻 辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工 作。掉电保护方式下,RAM内容被保存,振荡器被冻结, 单片机一切工作停止,直到下一个中断或硬件复位为止。2.2 时钟电路 2.3 复位电路2.4 串口模块2.5 AD转换模块ADC0809引脚分布1. IN0-IN7为模拟量输入端2. CLOCK为外部时钟输入端3. OUTPUT ENABLE为输出使能端4. ADD A/ADD B/ADD C为地址端5. ADC0-ADC7为数字量输出端6. EOC为转换结束信号段7. VREF+为正参考电压端(一般接VCC)8. VREF-为负参考电压输入端(一般接地)9. VCC电源输入端(接+5V)10. GND 为接地端2.6 液晶显示模块1602液晶各引脚1. VSS为接地端2. VDD 接+5V3. V0为液晶显示偏压信号4. RS为数据/命令选择端5. R/W为读/写信号选择端 一般接地6. E使能信号7. DB0-DB7为数据/命令输入端8. BLA为背光源正极9. BLK为背光源负极2.7电压采集处理模块为扩展量程,故在AD模拟量输入端,采用电阻串联分压,再用软件处理的方法将电压表5V量程扩展至15V。2.7元器件清单名称数量STC89C521ADC08091MAX23211602液晶111.0592晶振1按键1排针3排10uf电解电容130pf瓷片电容6510K电阻310K电阻1自锁开关1USB母口1串口母口110K电位器1各芯片底座3三、软件设计开始初始化主程序AD转换程序数据处理液晶显示四、 调试过程一开始现根据自身水平,选择题目,考虑到测温等题目选择的同学较多,同时,同时自己对ADC0809和1602液晶已经比较熟悉的现状,故决定选择这两个器件作为,题目的主要元器件。现根据自身想法,开始画电路图,在用altium designer画好图之后,便开始着手买元器件,进行焊接工作, 在焊接时,主要考虑到布线不相互干扰,同时尽量美观,所以在焊接上花了一些时间,不过在此过程中也犯了一些错误,在ADC0809和STC89C52的连接电路中,由于一开始未能正确理解数字量输出端高位和低位的,这给接下来的软件设计部分带来较大麻烦。在进行软件设计时,先设计整个执行流程图,由于过程并不复杂,所以在程序设计时,总体较顺利,出了上面提到的由于硬件焊接错误所造成的迟滞,还有一个就是对字符的定义上出了问题,在AD转换完之后,进行数据处理,一个变量被定义成unsigned char 型,最高只有65536,而在运算过程中,是超过这个值的,所以一开始显示的数值始终不正确,后来经过严密审查,终于发现问题所在。在整个设计过程中,很多同学的热心帮忙也为设计工作带来了许多方便,故因要多交流,很多困扰的问题便迎刃而解了。五、 实物图正面反面六、 结束语通过本次设计,让我对单片机以及液晶和AD有了更深刻的认识,同时明白一个道理,在做设计的时候一定要做到有条不紊,尽量将所有东西拆分成各个小模块进行处理,最后进行组合拼接,调试,这样不仅可以节约成本,而且方便扩展,同时要注意他人交流,闭门造车是没有出路的,在坚持独立自主的基础上,增强与他人交流,学习他人经验,以人之长补己之短,最终实现共赢。附件:系统程序#include#include#define uchar unsigned char#define uint unsigned int#define Data P0#define adcdat P1 /adc数据口,接单片机 P1,可根据硬件连接进行修改sbit rs=P21;sbit e=P20;sbit ale_start=P22; /ale srart 两个引脚因时序要求可接在一起,节约引脚sbit oe=P24;sbit eoc=P23;sbit clk=P25; /adc采样时钟信号,由定时器产生,大约500klong value;long tt;uchar code tip=CURRENT VOLTAGE:;uchar *ptr1=tip;uchar code disp_table=0123456789.V ;uchar disp_buf6; /可用来显示电压/* 微秒延时函数 */void delayus(uchar i) while(i-);/* 毫秒延时函数 */void delayms(uint z)uint i,j;for(i=z;i0;i-)for(j=110;j0;j-);/*/* 写入命令函数 */*/void WriteCommand(unsigned char c) delayms(5);/操作前短暂延时,保证信号稳定 e=0; rs=0; _nop_(); e=1; Data=c; e=0;/*/* 写入数据函数 */*/void WriteData(unsigned char c) delayms(5); /操作前短暂延时,保证信号稳定 e=0; rs=1; _nop_(); e=1; Data=c; e=0; rs=0;/*/* 写入字节函数 */*/void ShowChar(unsigned char pos,unsigned char c) unsigned char p; if (pos=0x10) p=pos+0xb0; /是第二行则命令代码高4位为0xc else p=pos+0x80; /是第二行则命令代码高4位为0x8 WriteCommand (p);/写命令 WriteData (c); /写数据/*/* 写入字符串函数 */*/void ShowString (unsigned char line,char *ptr,uchar num) unsigned char l,i; l=line4; for (i=0;inum;i+) ShowChar (l+,*(ptr+i);/循环显示16个字符/*/* 初始化函数 */*/void InitLcd() delayms(15); WriteCommand(0x38); /display mode WriteCommand(0x38); /display mode WriteCommand(0x38); /display mode WriteCommand(0x06); /显示光标移动位置 WriteCommand(0x0c); /显示开及光标设置 WriteCommand(0x01); /显示清屏/*/* AD转换 */*/void adc0809()oe=0;delayus(20);ale_start=0; delayus(20);ale_start=1;delayus(20);ale_start=0; /ale和start正脉冲,锁存地址,同时启动AD转换while(!eoc); /等待转换结束oe=1; /输出使能delayus(20);value=adcdat; /value 采集到的电压值的数字量范围0255delayms(50);oe=0;delayms(300);/* AD转换后进行数据处理比较*/void compare(void)adc0809();tt=value*1500/255;delayms(10);/*刷新当前显示*/void new_disp_buf(void)compare();disp_buf0=disp_tablett/1000;/1disp_buf1=disp_tablett%1000/100; /2disp_buf2=disp_table10;/.disp_buf3=disp_tablett%100/10; /dudisp_buf4=disp_tablett%10; /disp_buf5=disp_table11;/ V/*当前电压显示*/void displaycurrent(void)new_disp_buf(); /显示前先刷新缓冲区ShowString (0,ptr1,16); /在第一行显示ShowString (1,disp

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论