




已阅读5页,还剩28页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录第一章绪论11.1选题目的11.2设计要求11.2.1设计题目和设计指标11.2.2设计功能1第二章总体设计及工作原理22.1设计原理及方案22.2总体设计2第三章硬件设计及电路图33.1芯片资料介绍33.1.1 AT89C5133.1.2 AD083233.2单片机对 ADC0832 的控制原理43.3 LCD显示模块53.4时钟电路63.5电压调节部分63.6复位电路73.7系统原理图7第四章 系统程序设计84.1软件总体框架设计84.2系统子程序设计94.2.1初始化程序94.2.2A/D转换子程序9收获和体会12致谢13参考文献14附录115附录2完整程序代码16原件清单33第三章硬件设计及电路图3.1芯片资料介绍3.1.1 AT89C51 AT89C51是一种带4K字节FLASH存储器的低电压、高性能CMOS 8位微处理器,俗称单片机。AT89C51是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,外形及引脚排列如图所示 。图3-1 AT89C51外形及引脚排列3.1.2 AD0832 美国国家半导体公司生产的一种 8 位分辨率、双通道 A/D 转换 芯片。由于它体积小,兼容性强,性价比高而深受单片机爱好者及企业欢迎, 其目前已经有很高的普及率。学习并使用 ADC0832 可是使我们了解 A/D 转换器 的原理,有助于我们单片机技术水平的提高。ADC0832 具有以下特点: 8 位分辨率; 双通道 A/D 转换; 输入输出电平与 TTL/CMOS 相兼容; 5V 电源供电时输入电压在 05V 之间; 工作频率为 250KHZ,转换时间为 32S; 一般功耗仅为 15mW; 8P、14PDIP(双列直插)、PICC 多种封装; 商用级芯片温宽为0 to +70,工业级芯片温宽为40 to +85; ADC0832有DIP和SOIC;两种封装,DIP封装的ADC0832引脚排列如下图所示:图3-2 ADC0832的引脚封装图芯片接口说明: CS_ 片选使能,低电平芯片使能。 CH0 模拟输入通道 0,或作为 IN+/-使用。 CH1 模拟输入通道 1,或作为 IN+/-使用。 GND 芯片参考 0 电位(地)。 DI 数据信号输入,选择通道控制。 DO 数据信号输出,转换数据输出。 CLK 芯片时钟输入。 Vcc/REF 电源输入及参考电压输入(复用)。3.2单片机对 ADC0832 的控制原理 正常情况下 ADC0832 与单片机的接口应为 4 条数据线,分别是 CS、CLK、 DO、DI。但由于 DO 端与 DI 端在通信时并未同时有效并与单片机的接口是双 向的,所以电路设计时可以将 DO 和 DI 并联在一根数据线上使用。 当 ADC0832 未工作时其 CS 输入端应为高电平,此时芯片禁用,CLK 和 DO/DI 的电平可任意。当要进行 A/D 转换时,须先将 CS 使能端置于低电平并 且保持低电平直到转换完全结束。此时芯片开始转换工作,同时由处理器向芯 片时钟输入端 CLK 输入时钟脉冲,DO/DI 端则使用 DI 端输入通道功能选择的 数据信号。在第 1 个时钟脉冲的下沉之前 DI 端必须是高电平,表示启始信号。 在第 2、3 个脉冲下沉之前 DI 端应输入 2 位数据用于选择通道功能。3.3 LCD显示模块LCD显示器分为字段显示和字符显示两种。其中字段显示与LED显示相似,只要送对应的信号到相应的管脚就能显示。字符显示是根据需要显示基本字符。本设计采用的是字符型显示。系统中采用LCD1602作为显示器件输出信息。与传统的LCD数码管显示器件相比,液晶显示模块具有体积小、功耗低、显示内容丰富等优点,而且不需要外加驱动电路,现在液晶显示模块已经是单片机应用设计中最常用的显示器件了。LCD1602可以显示2行16个汉字。如图:图3-3 LCD1602引脚图3.4时钟电路时钟电路是外部时钟和内部时钟组成。内部是由单片机本身及外部12MHZ的晶振和两个电容构成工作主频时钟电路,这样外电源断开时钟也不会停止。如图:图3-4时钟电路3.5电压调节部分本部分采用两个滑动变阻器和两个电压表来调节输入同道CHO和CH1的电压,如图:图3-5电压调节部分电路3.6复位电路单片机的复位方式主要有上电自动复位和按钮手动复位。为了保证单片机系统有效复位,要求RST端脚维持高电平大于10MS以上。电阻和电容的值随时钟频率的不同而变化。本部分采用的是电动复位,如图:图3-6复位电路3.7系统原理图单片机AT89S51是本系统的核心部分,根据以上各功能模块得到应用电路总原理图。原理图如3-7所示:图3-7系统原理图第四章 系统程序设计4.1软件总体框架设计系统软件的总体框架,主程序采用死循环结构,在其中调用了三个子程序,为初始化程序,AD转换子程序,动态显示子程序,首先,单片机片选A/D转换器,然后发出信号启动A/D转换。若有,即启动信号采集,对A/D转换器的数据输出口送来的数值进行存储,数据处理完之后,将电压数值送显示器显示出来。程序总体流程图如图4-1所示:开始系统初始化选择ADC0832的转换通道启动A/D转换N转换是否结束Y采集A/D转换值液晶显示电压结束图4-1总体流程图4.2系统子程序设计4.2.1初始化程序所谓初始化,是对将要用到的MCS_51系列单片机内部部件或扩展芯片进行初始工作状态设定,初始化子程序的主要工作是设置定时器的工作模式,初值预置,开中断和打开定时器等。4.2.2A/D转换子程序A/D转换子程序用来控制对输入的模块电压信号的采集测量,并将对应的数值存入相应的内存单元,其转换流程图如图4.2所示。开始设置模拟输入口启动转换N转换是否结束Y采集A/D转换值图4-2A/D转换子程序图ADC0832.C模数转换源程序:#include #include #define uint unsigned int#define uchar unsigned charsbit CS = P13;sbit CLK = P10;sbit DI = P11;sbit DO = P11;/函数声明uchar Get_Value_ADC0832(uchar CH);/ 获取指定通道的A/D转换结果/ 获取指定通道的A/D转换结果uchar Get_Value_ADC0832(uchar CH) uchar i,dat1=0,dat2=0;/ 起始控制位CLK=0; _nop_(); _nop_();DI=1; _nop_(); _nop_();CS=0; _nop_(); _nop_();CLK=1; _nop_(); _nop_();/ 第一个下降沿之前,设置DI=1/0;/ 选择单端/差分(SGL/DIF)模式中的单端输入模式CLK=0; DI=1; _nop_(); _nop_();CLK=1; _nop_(); _nop_();/ 第二个下降沿之前,设置DI=0/1;选择CH0/CH1CLK=0; DI=CH; _nop_(); _nop_();CLK=1; DI=1;_nop_(); _nop_();/第三个下降沿之前,设置DI=1;CLK=0;DI=1;_nop_(); _nop_();/第4-11个脉冲期间读数据(MSB-LSB)for(i=0;i8;i+) CLK=1; _nop_(); _nop_(); CLK=0; _nop_(); _nop_();dat1=dat1MSB)for(i=0;i8;i+) dat2=dat2|(uchar)(DO)i);CLK=1; _nop_(); _nop_(); CLK=0; _nop_(); _nop_(); CS=1; return (dat1=dat2)?dat1:0;4.2.3 LCD显示子程序LCD显示程序的设计一般先要确定LCD的初始化、光标定位、确定显示字符后,显示流程如图4-3显示:Main;LCD初始化光标定位显示字符SJMP-$图4-3LCD显示子程序收获和体会在本次数字电压表的设计过程中,我们做得出来的数字电压表能够实现测电压并显示的功能,但是测量电压范围只有0-5V,测量电压范围太小,这是我们设计的电压表的缺陷。由于我们能力和时间精力有限,没能设计出更大范围的数字电压表。该数字电压表的扩展方向有:1、改用ADC0809芯片扩大量程、可调节量程或自动转换换量程。2、输出量可用平均值算法来改善,使测量准确度更高。3、若能将测量的电压值实时保存,使用时将更方便等。致谢在两周的课程设计过程中,不断的阅读资料,以及在老师的指导下与同学的讨论,拓宽了我的思路,并帮助我解决了许多难题,才让我取得本次课程设计的成功。在此谨向他们表示衷心的感谢!感谢学校对我们课程设计工作的关心与支持,为我们提供了良好的课程设计场所和完备的实验器材,使课程设计能够顺利进行。参考文献1 李朝青.单片机原理及接口技术(简明修订版).杭州:北京航空航天大学出版社,19982 李广弟.单片机基础.北京:北京航空航天大学出版社,19943 阎石.数字电子技术基础(第三版). 北京:高等教育出版社,19894 石东海等.单片机数据通信技术从入门到精通.西安:西安电子科技大学出版社, 2002.148150. 5 王忠飞,胥芳MCS一51单片机原理及嵌入式系统应用M.西安:西安电子科技大学出版社,2007P268-2736 蔡朝洋,单片机控制实习与专题制作M.北京:北京航空航天大学出版社,20067 张毅刚,彭喜源,谭晓昀等.MSC-51单片机应用设计M.哈尔滨:哈尔滨工业大学出版社,19998 周坚.单片机C语言轻松入门M.北京:北京航空航天大学出版社,20069 李全利,迟荣强.单片机原理及接口技术M.北京:高等教育出版社,200410梅丽凤,王艳秋.单片机原理及接口技术(修订本)M.北京:清华大学出版社;北京交通大学出版社,2006附录1附录2完整程序代码1.头文件#ifndef _LCD_160128_H_#define_LCD_160128_H_#include #include #include #include #include #include #include #define uint unsigned int#define uchar unsigned char#define STX 0x02 /#define ETX 0x03 /#define EOT 0x04/#define ENQ 0x05 /#define BS 0x08 /#define CR 0x0d /#define LF 0x0a /#define DLE 0x10 /#define ETB 0x17 /#define SPACE 0x20 /#define COMMA 0x2c /#define TRUE 1 /#define FALSE 0/#define HIGH 1 /#define LOW 0 / /T6963C端口定义#define LCMDW XBYTE0x8000 / 数据口#define LCMCW XBYTE0x8100/ 命令口#define DISRAM_SIZE 0x7fff / 设置显示区RAM的大小#define TXTSTART 0x0000/ 设置文本区的起始地址#define GRSTART 0x6800 / 设置图像区的起始地址#define CGRAMSTART 0x7800 /设置CGRAM的起始地址 /T6963C命令定义#define LC_CUR_POS 0x21 /光标位置设置#define LC_CGR_POS 0x22/ CGRAM偏置地址设置#define LC_ADD_POS 0x24/ 地址指针位置#define LC_TXT_STP 0x40/ 文本区首地址#define LC_TXT_WID 0x41/ 文本区宽度#define LC_GRH_STP 0x42/ 图像区首地址#define LC_GRH_WID 0x43/图像区宽度#define LC_MOD_OR 0x80/ 显示方式:逻辑或#define LC_MOD_XOR 0x81/显示方式:逻辑异或#define LC_MOD_AND 0x82/ 显示方式:逻辑与#define LC_MOD_TCH 0x83/显示方式:文本特征#define LC_DIS_SW 0x90/ 显示开关:D0=1/0:光标闪烁启用/禁用 /D1=1/0:光标显示启用/禁用 /D2=1/0:文本显示启用/禁用/D3=1/0:图形显示启用/禁用#define LC_CUR_SHP 0xa0/ 光标形状选择:0XA0-0XA7 表示光标占的行数#define LC_AUT_WR 0xb0/ 自动写设置#define LC_AUT_RD 0xb1/ 自动读设置#define LC_AUT_OVR 0xb2/ 自动读/写结束#define LC_INC_WR 0xc0/数据写,地址加1#define LC_INC_RD 0xc1/ 数据读,地址加1#define LC_DEC_WR 0xc2/ 数据写,地址减1#define LC_DEC_RD 0xc3/ 数据读,地址减1#define LC_NOC_WR 0xc4/ 数据写,地址不变#define LC_NOC_RD 0xc5/ 数据读,地址不变#define LC_SCN_RD 0xe0/ 屏读#define LC_INC_CP 0xe8/ 屏拷贝#define LC_BIT_OP 0xf0/ 位操作:D0-D2定义:D0-D7位:D3:1置位/0清除#endif2.LCD_160128.C显示控制程序/LCD显示控制程序 LCD_160128.C#include sbit RESET = P33;/ASCII字模宽度及高度定义#define ASC_CHR_WIDTH 8#define ASC_CHR_HEIGHT 12#define HZ_CHR_HEIGHT 16#define HZ_CHR_WIDTH 16uchar code LCD_WIDTH = 20;/宽160像素(160/8=20字节)uchar code LCD_HEIGHT= 128;/高128像素codeucharconstuPowArr=0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80;/ ASCII字模,显示为8*16charcodeMSK1=0x00,0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff;charcodeMSK2=0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff;char code ASC_MSK96*12=/ Terminal9; 此字体下对应的点阵为:宽x高=8x120x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff, / 0;i-) if(LCMCW & 0x03)=0x03)break;return i; /错误时返回0/状态位ST3判断(数据自动读写状态)uchar Status_BIT_3() uchar i;for(i=5;i0;i-) if(LCMCW & 0x08)=0x08)break;return i;/错误时返回0/ 写双参数的指令uchar LCD_Write_Command_P2(uchar cmd,uchar para1,uchar para2) if(Status_BIT_01()=0) return 1;LCMDW = para1; if(Status_BIT_01()=0) return 2;LCMDW = para2;if(Status_BIT_01()=0) return 3;LCMCW = cmd;return 0;/写单参数的指令uchar LCD_Write_Command_P1(uchar cmd,uchar para1) if(Status_BIT_01()=0) return 1;LCMDW = para1; if(Status_BIT_01()=0) return 2;LCMCW = cmd;return 0; /写无参数的指令uchar LCD_Write_Command(uchar cmd)if(Status_BIT_01()=0) return 1;LCMCW = cmd;return 0; /写数据uchar LCD_Write_Data(uchar dat) if(Status_BIT_3()=0) return 1;LCMDW = dat;return 0; / 读数据uchar LCD_Read_Data() if(Status_BIT_01()=0) return 1;return LCMDW;/ 设置当前位置void Set_LCD_POS(uchar row,uchar col) uint Pos;Pos = row*LCD_WIDTH+col;LCD_Write_Command_P2(LC_ADD_POS,Pos%256,Pos/256);gCurRow = row;gCurCol = col;/清屏void cls() uint i; LCD_Write_Command_P2(LC_ADD_POS,0x00,0x00);/置地址指针LCD_Write_Command(LC_AUT_WR);/自动写for(i=0;i 11); / LCD_Write_Command(LC_CUR_SHP | 0x01);/光标形状LCD_Write_Command(LC_MOD_OR); / 显示方式设置LCD_Write_Command(LC_DIS_SW | 0x08);/cls();grhome = GRSTART;txthome = TXTSTART;return 0;/ASCII及汉字显示uchar Display_Str_at_xy(uchar x,uchar y,uchar *fmt) char c1,c2,cData;uint k;uchar i=0,j,uLen;uLen = strlen(fmt);while(i=0) /ASCIIif(c10x20) switch(c1) case CR:case LF: /回车或换行i+;x=0;if(yASC_CHR_WIDTH)y-=ASC_CHR_WIDTH; cData = 0x00; break;for(j=0;j= 0x1f) cData= ASC_MSK(c1-0x1f)*ASC_CHR_HEIGHT+j;Set_LCD_POS(y+j,x/8);if(x%8)=0)LCD_Write_Command(LC_AUT_WR); / 写数据 LCD_Write_Data(cData); LCD_Write_Command(LC_AUT_OVR);elseOutToLCD(cData,x,y+j); Set_LCD_POS(y+j,x/8);if(c1 != BS) / 非退格 x+=ASC_CHR_WIDTH;else/中文for(j=0;jsizeof(GB_16)/sizeof
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年数据安全培训题集解析
- 2025年无人机操作员应急面试模拟题集
- 2025年安全员安全培训考试重点模拟题及答案解析
- 2025年食品管理员面试题及答案详解
- 2025年安全生产禁令知识题及答案解析
- 2025年中级工业互联网面试题及解析
- 2025年人力资源管理师继续教育考试试题及答案解析
- 2025年企业管理咨询师资格考试试题及答案解析
- 2025年旅游规划师国家职业资格考试试题及答案解析
- 2025年酒店客房管理师岗位素质考核试题及答案解析
- 2025年六安市裕安区石婆店镇公开招考村级后备干部8名笔试备考试题及答案解析
- 2025年事业单位考试题库及参考答案
- 公司领导财务知识培训课件
- 2025年全国中小学校党组织书记网络培训示范班在线考试题库及答案
- 子痫患者护理查房
- 2024仁爱科普版八年级英语上册 Unit 1 Healthy Mind and Body(知识梳理与考点训练)解析版
- 医疗护理员职业技能竞赛试题及答案
- 出货标签管理办法
- 中石化计划管理办法
- 我国军兵种介绍课件
- 小学劳动技术课课件
评论
0/150
提交评论