欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    51单片机开发版设计.doc

    • 资源ID:52215350       资源大小:728KB        全文页数:24页
    • 资源格式: DOC        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    51单片机开发版设计.doc

    毕业设计论文 51单片机开发板的设计 系 专业 姓名 班级 学号_指导教师 职称 设计时间 目 录第一章 引 言4第二章 硬件设计52.1设计原则52.2 AT89S51单片机主控制模块62.3 键盘模块62.4 ADC模块72.5 DAC模块82.6温度采集模块82.7显示模块92.8其他模块10第三章 软件设计113.1 键盘模块程序设计123.2 ADC模块程序设计133.3 DAC模块程序设计133.4温度采集模块程序设计143.5数码管显示模块程序设计15致 谢17参考文献18附 录19附录1 键盘模块部分程序19附录2 AD模块部分程序20附录3 DA模块部分程序22附录4 测温模块部分程序23摘要:设计一种基于AT89S51单片机的开发板,该开发板具有成本低、体积小、可靠性高、功能齐全、低功耗设计、操作方便等特点。本论文详细介绍了该开发板的开发过程及相关硬件结构和软件设计。开发板以ATMEL公司的AT89S51单片机为核心控制器。开发板可以作为主控制模块安装于控制系统中执行控制任务,也可以用作实验板,完成单片机各类通用实验,操作简单,控制结果可见,性价比高,可以应用于高校、科研院所的实验室等场合,具有一定的实用价值和现实意义。关键词:AT89S51;液晶显示;键盘第一章 引 言单片机具有成本低、体积小、可靠性高、具有高附加值、通过更改软件就可以改变控制对象等优点,单片机越来越成为电子工程师设计产品时的首选器件之一。因此拥有一块单片机开发板对单片机学习具有着极其重要的意义。但是单片机学习效果的优劣直接取决于单片机的选择,C51系列单片机内部具有128字节RAM、5个中断源、32条I/O口线、2个16位定时器、4KB的程序存储器、一个全双工异步串行口。本开发板选择具有ISP在线编程功能的AT89S51单片机,该单片机不需要烧写器,可在开发板上ISP在线编程,具有广泛的应用前景。S51单片机除兼容C51单片机外,还具有工作频率0至33MHz的高工作频率;可以满足绝大多数的实际应用开发需求,在开发板上使用十分方便。本课题设计的AT89S51单片机开发板,具有一般开发板通用结构,并基于硬件进行相关软件设计。利用程序开发语言开发程序并实现ISP在线下载到单片机,无需配置单独的下载器。单片机使用ISP在线下载程序,加快了程序设计者调试的进度,使设计者所设计的程序尽快得到验证。通过对开发板上的模块进行实验,可以提高针对不同硬件进行编程的能力,同时通过实验现象对所用的硬件也有了更深一步的认识,因此该开发板具有一定的实用价值和现实意义。第二章 硬件设计2.1设计原则开发板系统的扩展和配置应遵循以下设计原则: (1)尽可能选择典型电路,并符合单片机常规用法。为硬件系统的标准化、模块化打下良好的基础;(2)系统扩展与外围设备的配置水平应充分满足应用系统的功能要求,并留有适当余地,以便进行二次开发; (3)硬件结构应结合应用软件方案一并考虑。硬件结构与软件方案会产生相互影响,考虑的原则是:软件能实现的功能尽可能由软件实现,以简化硬件结构。但必须注意,由软件实现的硬件功能,一般响应时间比硬件实现长,且占用CPU时间;(4)系统中的相关器件要尽可能做到性能匹配。如选用CMOS芯片单片机构成低功耗系统时,系统中所有芯片都应尽可能选择低功耗产品; (5)可靠性及抗干扰设计是硬件设计必不可少的一部分,它包括芯片、器件选择、去耦滤波、印刷电路板布线、通道隔离等;(6)单片机外围电路较多时,必须考虑其驱动能力。驱动能力不足时,系统工作不可靠,可通过增设线驱动器增强驱动能力或减少芯片功耗来降低总线负载; (7)尽量朝“单片”方向设计硬件系统。系统器件越多,器件之间相互干扰也越强,功耗也增大,也不可避免地降低了系统的稳定性。2.2 AT89S51单片机主控制模块AT89S51单片机最小系统包括:MCU、复位电路、晶振电路。 图2.1 AT89S51单片机主控制模块原理图采用按键复位方式,选取晶振为12MHZ,系统机器周期为1us。2.3 键盘模块在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式,图2.2 键盘模块原理图JP7用来连接P2口与矩阵键盘模块,在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口(如P2口)就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键),在需要的按键数较多时,采用矩阵法来做键盘是合理的。2.4 ADC模块A/D转换在单片机接口中应用广泛,串行A/D转换器具有功耗低、性价比较高、芯片引脚少等特点。ADC0832是NS(National Semiconductor)公司生产的具有Microwire/Plus串行接口的8位A/D转换器,通过三线接口与单片机连接,适宜在袖珍式智能仪器中使用。主要性能指标有:功耗低,只有15mW;8位分辨率,逐次逼近型,基准电压为5V;输入模拟信号电压范围为05V;输入和输出电平与TTL和CMOS兼容;在250kHz时钟频率时,转换时间为32us;具有两个可供选择的模拟输入通道。ADC0832有DIP和SOIC两种封装,DIP封装的,ADC0832引脚排列如图2.3所示。图2.3 ADC0832引脚图各引脚说明如下:CS片选端,低电平有效;CH0,CH1两路模拟信号输入端;D I两路模拟输入选择输入端;DO模数转换结果串行输出端;CLK串行时钟输入端;VCC /REF正电源端和基准电压输入端;GND电源地。ADC0832工作时,模拟通道的选择及单端输入和差分输入的选择,都取决于输入时序的配置位。当差分输入时,要分配输入通道的极性,两个输入通道的任何一个通道都可作为正极或负极。 图2.4 ADC模块原理图2.5 DAC模块 图2.5 DAC模块原理图2.6温度采集模块图2.6是DS18B20采用寄生电源供电方式下与单片机接口电路,为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个MOSFET管来完成对总线的上拉。当DS18B20处于写存储器操作和温度A/D转换操作时,总线上必须有强的上拉,上拉开启时间最大为10us。采用寄生电源供电方式时VDD端接地。由于单线制只有一根线,因此发送接口必须是三态的。图2.6 温度采集模块原理图 2.7显示模块(1) 数码管驱动采用8位数据缓冲器74HC573,其功能表如下表2.1所示:表2.1 74HC573功能表OPERATINGMODESINPUTINTERNALLATCHESOUTPUTSOELEDNQ0 to Q7enable and read registerLHLLLLHHHHLatch and read registerLLILLLLhHHLatch register and disable outputsHLILZHLhHZ选用74HC573增强驱动能力,提高数码管显示亮度。A-DP对应八段数码管的各段,当A-DP中有低电平输出时,被低电平片选中的数码管的相应段点亮。(2) 硬件实现:数码管模块的原理如图3.7所示:图2.7 数码管模块原理图单片机与74HC573通过P0.0、P0.1、P0.2、P0.3、P0.4、P0.5、P0.6、P0.7相连,作为段码信号线;与74HC138通过P1.0、P1.1、P1.2相连,作为片选信号线。2.8其他模块 流水灯模块、蜂鸣器模块的原理图如图2.8、图2.9所示: 图2.8 流水灯模块原理图 图2.9蜂鸣器模块原理图如图2.8所示流水灯模块包含8个LED灯,单片机的P0口接10K上拉电阻,八个LED的负极依次连接单片机P0口的8个引脚,八个LED的正极依次与510欧姆的排阻的八个端子相连,排阻的公共端连接短路插针的一端,短路插针的另一端与电源相连,因此,若将短路插针用短路帽短路,则八个LED的正极上拉到高电平, LED低电平点亮。如图2.9所示,单片机的P3.4与Q1的基极通过1K欧姆电阻连接,当P3.4为高电平时,Q1导通,Q1的发射极与集电极导通,将发射极下拉为低电平,蜂鸣器两端出现电位差,蜂鸣器发声;当P3.4为低电平时,Q1不导通,蜂鸣器两端没有电流流过,蜂鸣器不发声。总结:对硬件的设计采用模块化设计方法,采用的电路为典型应用电路,资源配置合理,通过使用短路帽连接相应的功能模块,降低了功耗,减弱了器件之间的相互干扰,提高了系统稳定性,硬件工作稳定可靠。第三章 软件设计3.1 键盘模块程序设计矩阵式键盘的按键识别方法为:判断键盘中有无键按下:将全部行线KEY0-KEY3置低电平,然后检测列线的状态。只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。若所有列线均为高电平,则键盘中无键按下。 判断闭合键所在的位置:在确认有键按下后,即可进入确定具体闭合键的过程。其方法是:依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。 矩阵式键盘的按键编码处理:将行线和列线依次进行数值编码,然后进行一定规则的运算,就是对键值的编码。 矩阵式键盘程序流程图如图3.1所示:图3.1矩阵式键盘程序流程图键盘采用的是行扫描法确定键值,在程序中具体是这样扫描键盘的:将键盘扫描码送入P2口,先是使行线依次为低电平,顺序为KEY1、KEY2、KEY3、KEY4,在某一行线为低电平的状态下,读取P2口的状态,将状态值依次右移四位,这样便将KEY5-KEY8的状态值移到了低四位,再将高四位状态值置一,将处理后的状态值与当前的扫描码比较,如果此时的状态值与四个扫描码中的一个相同,证明有键按下,此时保存扫描码的数组下标和与状态值相等的扫描码数组下标,并将两个值按照键盘编码值进行某一规则的四则运算后返回给主函数中的某一变量;如果在全部行线依次为低电平情况下的状态值与四个扫描码中没有一个相同,证明没有键按下,返回-1到主函数。在主函数中调用键盘扫描函数对键盘进行扫描,判断返回键值,若返回值不为-1,证明右键按下,在某一个数码管上显示键值,若返回值为-1,证明没有键按下,显示先前按下的按键键值。3.2 ADC模块程序设计 开始启动AD转换输入方式选择输入通道选择读取数据数据处理与显示 图3.2 ADC模块程序流程图3.3 DAC模块程序设计 开始TLC5615片选使能时钟上升沿读取数据12位数据读取完毕TLC5615片选禁能YN图3.3 ADC模块程序流程图3.4温度采集模块程序设计发送跳过ROM指令初始化DS18B20发送匹配ROM指令发送复位指令发送温度转换指令延时等待温度转换完毕结束发送读取ROM指令发送指定64位序列号图3.4温度采集模块程序流程图3.5数码管显示模块程序设计数码管的显示方式可以分为动态和静态的。动态的也叫扫描方式,是利用发光二极管的余辉效应和人眼的视觉暂留效应来实现的,只要在在一定时间内数码管的笔段亮的频率够快,人眼就看不出闪烁,一般外围硬件较少,但是对单片机资源耗用巨大。静态的也叫锁存方式,单片机送出数据后控制外围锁存器件锁存数据,这样数码管笔段里的电流不变,数码管稳定显示,这样单片机可以干别的活不用管数码管了。这种方案的优点是对单片机的P口资源和时间耗用很少,但是数码管的外围辅助电路复杂。在本程序中使用动态扫描法控制数码管显示,数码管程序流程图如图3.5所示:开始“4”段码送P0口位码送P1口选中第四位数码管“3”段码送P0口位码送P1口选中第三位数码管“2”段码送P0口位码送P1口选中第二位数码管“1”段码送P0口位码送P1口选中第一位数码管图3.5 数码管模块程序流程图P0口提供数码管显示所需的段码,4、3、2、1四位数字对应的共阴数码管的段码分别赋给变量dis0、dis1、dis2、dis3,在主函数中,依次将dis0、dis1、dis2、dis3送至P0口,由于八个数码管的每个段所对应的连线连在一起,只有被片选的数码管才会点亮。因此在将段码送至P0口的同时,还要用P1口送出位码片选中要显示的数码管,这样片选中的数码管就会显示特定的数字。程序中由低位到高位循环点亮数码管显示4、3、2、1。由于间隔时间的总和小于0.1秒,根据人眼的视觉暂留效应,四个数码管看起来同时点亮。致 谢在整个毕业设计过程中我学到了很多理论知识,得到了很多珍贵的实践经验。收获良多,也经历了不少困难,在指导老师的帮助下我慢慢克服了这些困难,一步步完成了毕业设计。 我要向我的指导老师表示衷心的感谢,本论文的选题和具体工作是在老师的悉心指导下完成的。最后,向所有评阅论文的老师们表示最诚挚的谢意!参考文献1 张毅刚.单片机原理及应用M.北京:高等教育出版社, 2003.2 郭天祥.新概念51单片机C语言教程入门、提高、开发拓展全攻略M.北京:电子工业出版社, 2009. 3 刘海成.单片机及应用系统设计原理与实践M.北京:北京航空航天大学出版社, 2009.4 于勇,戴佳,长江.51单片机C语言常用模块与综合系统设计M. 北京:电子工业出版社, 2007.5 翟玉文等.电子设计与实践M.北京:北京中国电力出版社,2005.6 余锡存,曹国华.单片机原理及接口技术西安:西安电子科技大学出版社,2004. 7 陈杰,黄鸿.传感器与检测技术M.北京:高等教育出版社,2008.8 肖忠祥.数据采集原理M.西安:西北工业出版社,2002.9 谭浩强.C程序设计(第三版)M.北京:清华大学出版社,2005.10 谢自美,电子线路设计、实验、测试 武汉:华中理工大学出版社,2000 11 白驹衍, 单片计算机及应用北京:电子工业出版社, 199912 杨欣等电子设计从零开始M 清华大学出版社200513 黄正谨综合电子设计与实践M 东南大学出版社200214 孙涵芳MCS-51系列单片机原理及应用M 北京航空航天大学出版社1996附 录附录1 键盘模块部分程序/*键盘扫描函数*/char scan_key(void)uchar i,j,in,ini,inj; bit find=0;for(i=0;i<4;i+) /确定列线P2=acti;Delay5ms();in=P2;in=in>>4;in=in|0xf0;for(j=0;j<4;j+) /确定行线 if(actj=in) find=1; inj=j;ini=i; if(find=0)return -1;return (ini*4+inj); /根据行、列值计算键盘扫描码 附录2 AD模块部分程序#define channel_0 0x02 /单通道0输入选择#define channel_1 0x03 /单通道1输入选择sbit ADC_CS = P27; /片选端sbit ADC_CLK= P25; /时钟端sbit ADC_DI = P26; /数据输入输出复用sbit ADC_DO = P26; /DI和DO端都接在P1.1sbit ACC0=ACC0; /通道与输入方式控制字sbit ACC1=ACC1; /通道与输入方式控制字/*启动ADC转换*/ void ADC_start() ADC_CS=1; /一个转换周期开始 _nop_(); ADC_CLK=0; _nop_(); ADC_CS=0; /CS置0,片选有效 _nop_(); ADC_DI=1; /DI置1,起始位 _nop_(); ADC_CLK=1; /第一个脉冲 _nop_(); ADC_DI=0; /在负跳变之前加一个DI反转操作 _nop_(); ADC_CLK=0; _nop_(); /*/AD转换函数 选择输入通道,输入信号的模式单端输入,或差分输入 模数转换 /*/int ADC_read(uchar mode) uchar i; ADC_start(); /启动转换开始 ACC=mode; ADC_DI=ACC1; /输出控制位1,DI=1,单通道输入,DI=0,差分/输入。 ADC_CLK=1; /第二个脉冲 _nop_(); ADC_DI=0; ADC_CLK=0; _nop_(); ADC_DI=ACC0; /输出控制位0,DI=0,通道0输入,DI=1,通道/1输入。 ADC_CLK=1; /第三个脉冲 _nop_(); ADC_DI=1; ADC_CLK=0; /输入模式和通道号已经选择完。 ADC_CLK=1; /第四个脉冲 ACC=0; for(i=8;i>0;i-) /读取8位数据 ADC_CLK=0; /脉冲下降沿 ACC=ACC<<1; ACC0=ADC_DO; /读取DO端数据 _nop_(); _nop_(); ADC_CLK=1; ADC_CS=1; /CS=1,片选无效。 return(ACC); 附录3 DA模块部分程序sbit DIN=P22; sbit SCLK=P21; sbit CS=P20;/*DAC转换*/ void DA_TLC5615(unsigned int DATA) unsigned char i; unsigned int l=0x800; CS=0; for(i=0;i<12;i+) _nop_(); SCLK=0; DIN=(bit)(DATA&l); l=l>>1; SCLK=1; SCLK=0; CS=1;附录4 测温模块部分程序sbit DQ = P37; /温度传送数据IO口uchar temp_value; /温度值uchar TempBuffer5; /*ds18b20子程序*/ void delay_18B20(unsigned int i)while(i-);/*ds18b20初始化函数*/void Init_DS18B20(void) unsigned char x=0; DQ = 1; /DQ复位 delay_18B20(8); /稍做延时 DQ = 0; /单片机将DQ拉低 delay_18B20(80); /精确延时 大于 480us DQ = 1; /拉高总线 delay_18B20(14); x=DQ; /稍做延时后 如果x=0则初始化成功 x=1则初始化失败 delay_18B20(20);/*ds18b20读一个字节*/ unsigned char ReadOneChar(void)uchar i=0;uchar dat = 0;for (i=8;i>0;i-) DQ = 0; / 给脉冲信号 dat>>=1; /数据右移一位 DQ = 1; / 给脉冲信号 if(DQ) dat|=0x80; /按位或,取最高位 delay_18B20(4); return(dat);/*ds18b20写一个字节*/ void WriteOneChar(uchar dat) unsigned char i=0; for (i=8; i>0; i-) DQ = 0; DQ = dat&0x01; /取最低位 delay_18B20(5); DQ = 1; /上升沿将数据送入 dat>>=1; /*读取ds18b20当前温度*/void ReadTemp(void)unsigned char a=0;unsigned char b=0;unsigned char t=0;Init_DS18B20(); /初始化ds18b20WriteOneChar(0xCC); / 跳过读序号列号的操作WriteOneChar(0x44); / 启动温度转换delay_18B20(100); / this message is wery importantInit_DS18B20();WriteOneChar(0xCC); /跳过读序号列号的操作WriteOneChar(0xBE); /读取温度寄存器等(共可读9个寄存器)前两个/就是温度delay_18B20(100);a=ReadOneChar(); /读取温度值低位b=ReadOneChar(); /读取温度值高位temp_value=b<<4; /左移四位,扩大16倍,变为一个字节的高四位temp_value+=(a&0xf0)>>4; /取温度值的地位的高四位,右移四位后与温度的/高四位相加得到温度值 ;

    注意事项

    本文(51单片机开发版设计.doc)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开