硬件电路设计技术报告.doc

上传人:wux****ua 文档编号:9097517 上传时间:2020-04-03 格式:DOC 页数:18 大小:980.50KB
返回 下载 相关 举报
硬件电路设计技术报告.doc_第1页
第1页 / 共18页
硬件电路设计技术报告.doc_第2页
第2页 / 共18页
硬件电路设计技术报告.doc_第3页
第3页 / 共18页
点击查看更多>>
资源描述
一、基本功能(1)测量范围0-99(2)测量精度0.1(3)显示测量结果(4)能将结果上传PC(5)设置温度测试范围*(6)控制一个电阻附近的温度二、方案设计1系统框图AT89S51cpuLCD1602MAX232PCDS18B203*4键盘2各部分硬件功能描述(1)DS18B20用来收集温度信息(2)LCD1602用来显示温度读数(3)键盘用来输入预设温度(4)AT89S51用来作为CPU控制(5)MAX232作为接口实现与PC的交互3. 分析硬件AT89S51是一个低功耗,高性能4位单片机,片内含4k的可反复擦写1000次的Flash只读程序存储器,满足实验要求。89S51相对于89C51 新增加很多功能,性能有了较大提升,价格只比89C51稍高一些最高工作频率为33MHz,大家都知道89C51的极限工作频率是24M,就是说S51具有更高工作频率,从而具有了更快的计算速度。LCD1602微功耗、体积小、显示内容丰富、超薄轻巧,常用在袖珍式仪表和低功耗应用系统中。可以显示多种数字、字母以及其它符号,所以而满足实验要求。DS18B20温范围55+125,在-10+85时精度为0.5。可编程 的分辨率为912位,对应的可分辨温度分别为0.5、0.25、0.125和0.0625,可实现高精度测温。在9位分辨率时最多在 93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快, 所以而满足实验要求。三、硬件电路设计1硬件选择 温度传感器DS18B20 单片机AT89S51 3*4规格键盘 LCD1602 MAX2322. 显示部分1602字符型LCD液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,目前常用16*1,16*2,20*2和40*2行等的模块。下面以长沙太阳人电子有限公司的1602字符型液晶显示器为例,介绍其用法。一般1602字符型液晶显示器实物如图字符型液晶显示器实物图1602LCD分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别,两者尺寸差别如下图所示:1602LCD尺寸图1602LCD主要技术参数:显示容量:162个字符芯片工作电压:4.55.5V工作电流:2.0mA(5.0V)模块最佳工作电压:5.0V字符尺寸:2.954.35(WH)mm1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表10-13所示:编号符号引脚说明编号符号引脚说明1VSS电源地9D2数据2VDD电源正极10D3数据3VL液晶显示偏压11D4数据4RS数据/命令选择12D5数据5R/W读/写选择13D6数据6E使能信号14D7数据7D0数据15BLA背光源正极8D1数据16BLK背光源负极引脚接口说明表1602液晶模块内部的控制器共有11条控制指令,如表所示:序号指令RSR/WD7D6D5D4D3D2D1D01清显示00000000012光标返回000000001*3置输入模式00000001I/DS4显示开/关控制0000001DCB5光标或字符移位000001S/CR/L*6置功能00001DLNF*7置字符发生存贮器地址0001字符发生存贮器地址8置数据存贮器地址001显示数据存贮器地址9读忙标志或地址01BF计数器地址10写数到CGRAM或DDRAM)10要写的数据内容11从CGRAM或DDRAM读数11读出的数据内容控制命令表1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高电平、0为低电平)与HD44780相兼容的芯片时序表如下:读状态输入RS=L,R/W=H,E=H输出D0D7=状态字写指令输入RS=L,R/W=L,D0D7=指令码,E=高脉冲输出无读数据输入RS=H,R/W=H,E=H输出D0D7=数据写数据输入RS=H,R/W=L,D0D7=数据,E=高脉冲输出无基本操作时序表读 液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,图是1602的内部显示地址。3. 测温部分DSl8B20引脚结构DS18B20采用3脚TO-92封装或8脚的SOIC封装,如图所示。各引脚的功能:GND为电压地;DQ为单数据总线;VDD 为电源电压;NC 为空引脚。2.3 DSl8B20工作原理及应用DS18B20 的温度检测与数字数据输出全集成于一个芯片之上,从而抗干扰力更强。其一个工作周期可分为两个部分,即温度检测和数据处理。在讲解其工作流程之前我们有必要了解18B20 的内部存储器资源。18B20 共有三种形态的存储器资源,它们分别是:(1)ROM 只读存储器,用于存放DS18B20ID编码,其前8 位是单线系列编码(DS18B20 的编码是19H),后面48 位是芯片唯一的序列号,最后8 位是以上56 位的CRC 码(冗余校验)。数据在出厂时设置不由用户更改。DS18B20 共64 位ROM。(2)RAM 数据暂存器,用于内部计算和数据存取,数据在掉电后丢失,DS18B20 共9 个字节R每个字节为8 位。如图所示。第1、2 个字节是温度转换后的数据值信息,第3 和第4 字节是高温触发器TH 和低温触发器TL 的易失性拷贝,第5 个字节为配置寄存器,它的内容用于确定温度值的数字转换分辨率,DS18B20 工作时寄存器中的分辨率转换为相应精度的温度数值。以上字节内容每次上电复位时被刷新。配置寄存器字节各位的定义如图所示。低5位一直为1,TM是工作模式位,用于设置DS18B20在工作模式还是在测试模式,DS18B20 出厂时该位被设置为0,用户不要去改动;R1和R0用来设置分数。 4. 键盘触点式开关按键(机械式开关),按键按照接口原理为非编码键盘,非编码键盘主要是由软件来实现键盘的识别。非编码键盘按连接方式可分为独立式和矩阵式两种,其它工作都主要由软件完成。这次实验使用的是矩阵式键盘。按键的输入原理:在单片机应用系统中,通常使用机械触点式按键开关,其主要功能是把机械上的通断转换成为电气上的逻辑关系。也就是说,它能提供标准的TTL 逻辑电平,以便与通用数字系统的逻辑电平相容。此外,除了复位按键有专门的复位电路及专一的复位功能外,其它按键都是以开关状态来设置控制功能或输入数据。当所设置的功能键或数字键按下时,计算机应用系统应完成该按键所设定的功能。因此,键信息输入是与软件结构密切相关的过程。 对于一组键或一个键盘,通过接口电路与单片机相连。单片机可以采用查询或中断方式了解有无按键输入并检查是哪一个按键按下,若有键按下则跳至相应的键盘处理程序处去执行,若无键按下则继续执行其他程序。按键的特点与去抖:机械式按键再按下或释放时,由于机械弹性作用的影响,通常伴随有一定时间的触点机械抖动,然后其触点才稳定下来。其抖动过程如图所示,抖动时间的长短与开关的机械特性有关,一般为5 10 ms。从图中可以看出,在触点抖动期间检测按键的通与断状态,可能导致判断出错。即按键一次按下或释放被错误地认为是多次操作,这种情况是不允许出现的。为了克服按键触点机械抖动所致的检测误判,必须采取去抖动措施,可从硬件、软件两方面予以考虑。一般来说,在键数较少时,可采用硬件去抖,而当键数较多时,采用软件去抖。( 本学习板采用软件去抖方式)。软件去抖的流程图如图所示。图1从按键的去抖流程图我们可以知道,检测到有键按下时,应延时等待一段时间(可调用一个5ms10ms的延迟子程序),然后再次判断按键是否被按下,若此时判断按键仍被按下,则认为按键有效,若此时判断按键没有被按下,说明为按键抖动或干扰,应返回重新判断。键盘真正被按下才可进行相应的处理程序,此时基本就算实现了按键输入,进一步的话可以判断按键是否释放。3*4键盘的工作原理:3*4 的矩阵式键盘由4 根行线和3 根列线交叉构成,按键位于行列的交叉点上,这样就构成了12 个按键。其中交叉点的行列线是不连接的,当按键按下的时候,此交叉点处的行线和列线导通。行线通过上拉电阻接到VCC 上。当无键按下时,行线处于高电平状态;当有键按下时,行、列线在交点导通,此时,行线电平将由与此行线相连的列线电平决定。这是识别按键是否按下的关键。然而,矩阵键盘中的每条行线与4 条列线相交,交点的按键按下与否均影响该键所在行线和列线的电平,各按键间将相互影响,键分析时必须将行线、列线信号配合起来作适当处理,才能确定闭合键的位置。5. 控制部分AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元。AT89S51具有完整的输入输出、控制端口、以及内部程序存储空间。与我们通常意义上的微机原理类似,可以通过外接A/D,D/A转换电路及运放芯片实现对传感器传送信息的采集,且能够提供以点阵或LCD液晶及外接按键实现人机交互,能对内部众多I/O端口连接步进电机对外围设备进行精确操控,具有强大的工控能力。 主要性能特点1、4k Bytes Flash片内程序存储器;2、128 bytes的随机存取数据存储器(RAM);3、32个外部双向输入/输出(I/O)口;4、2个中断优先级、2层中断嵌套中断;5、6个中断源;6、2个16位可编程定时器/计数器;7、2个全双工串行通信口;8、看门狗(WDT)电路;9、片内振荡器和时钟电路;10、与MCS-51兼容;11、全静态工作:0Hz-33MHz;12、三级程序存储器保密锁定;13、可编程串行通道;14、低功耗的闲置和掉电模式。管脚说明VCC:电源电压输入端。GND:电源地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。 PDIP封装的AT89S51管脚图P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口除了作为普通I/O口,还有第二功能:P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 /INT0(外部中断0)P3.3 /INT1(外部中断1)P3.4 T0(T0定时器的外部计数输入)P3.5 T1(T1定时器的外部计数输入)P3.6 /WR(外部数据存储器的写选通)P3.7 /RD(外部数据存储器的读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。I/O口作为输入口时有两种工作方式,即所谓的读端口与读引脚。读端口时实际上并不从外部读入数据,而是把端口锁存器的内容读入到内部总线,经过某种运算或变换后再写回到端口锁存器。只有读端口时才真正地把外部的数据读入到内部总线。89C51的P0、P1、P2、P3口作为输入时都是准双向口。除了P1口外P0、P2、P3口都还有其他的功能。 RST:复位输入端,高电平有效。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:地址锁存允许/编程脉冲信号端。当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。PSEN:外部程序存储器的选通信号,低电平有效。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。EA/VPP:外部程序存储器访问允许。当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:片内振荡器反相放大器和时钟发生器的输入端。XTAL2:片内振荡器反相放大器的输出端。6. 串口MAX232芯片是美信(MAXIM)公司专为RS232标准串口设计的单电源电平转换芯片,使用+5v单电源供电。引脚部分:第一部分是电荷泵电路。由1、2、3、4、5、6脚和4只电容构成。功能是产生+12v和-12v两个电源,提供给RS-232串口电平的需要。 第二部分是数据转换通道。由7、8、9、10、11、12、13、14脚构成两个数据通道。 其中13脚(R1IN)、12脚(R1OUT)、11脚(T1IN)、14脚(T1OUT)为第一数据通道。 8脚(R2IN)、9脚(R2OUT)、10脚(T2IN)、7脚(T2OUT)为第二数据通道。 TTL/CMOS数据从T1IN、T2IN输入转换成RS-232数据从T1OUT、T2OUT送到电脑DB9插头;DB9插头的RS-232数据从R1IN、R2IN输入转换成TTL/CMOS数据后从R1OUT、R2OUT输出。 第三部分是供电。15脚GND、16脚VCC(+5v)。MAX232特点:1、符合所有的RS232技术标准 2、只需要单一 +5V电源供电 3、片载电荷泵具有升压、电压极性反转能力,能够产生+10V和-10V电压V+、V- 4、功耗低,典型供电电流5mA 5、内部集成2个RS-232C驱动器 6、高集成度,片外最低只需4个电容即可工作。实验总电路图:PCB板图:四、软件设计1设计思路软件共四个模块:DS18B20模块,LCD1602显示模块,键盘扫描模块,89C51主程序模块。开始后,先调用DS18B20模块每5s测一次温度值,接着更新显示缓存,刷新显示,每20s扫描键盘一次,循环操作。 2. 总流程图测量程序流程图:初始化DS18B20写转换命令给DS18B20读温度值十六进制十进制十进制断码填充显示缓存写跨过ROM命令写启动转换命令写读命令读取温度DS18B20模块流程图:3. 各部分程序设计#include#include#define uchar unsigned char#define uint unsigned intsbit DQ =P33; /定义通信端口uchar code num=0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71;Void main()EA=1;EX0=1;EX1=1;IT1=1;IT0=1;Init_display9);While(1)Read_temperture();Comp();Ds18b20 display();void Init_DS18B20(void) unsigned char x=0; DQ = 1; /DQ复位 delay(8); /稍做延时 DQ = 0; /单片机将DQ拉低 delay(80); /精确延时 大于 480us DQ = 1; /拉高总线 delay(14); x=DQ; /稍做延时后 如果x=0则初始化成功 x=1则初始化失败 delay(20);Void DS18B20 wr(wdat) /读一个字节 uchar i=0;for (i=8;i0;i-) DQ = 0; DQ=wdat+&0x01; / 给脉冲信号 Delay10us(5);DQ=1; wdat=1;Void DS18b20 rd() /写一个字节 uchar i=0;uchar dat=0; for (i=8; i0; i-) DQ = 0; Dat=1;DQ=1;If(DQ)Dat=dat|0x80;Delay10us(5); ReadTemperature() /读取温度Uchar a,b;Ds18b20 rst();Ds18b20 wr(oxcc);Ds18b20 wr(0x44);Delay(750);Ds18b20 rst();Ds18b20 wr(oxcc);Ds18b20 wr(0xBE);a=ds18b20();b=ds18b20 rd();tvalue=b;tvalue=8;tvalue=tvalue/a;tvalue=tvalue*0.0625*10;return(tvalue);void ds18b20 disp()Disdat0=tvalue/1000+0x30;Disdat1=tvalue%1000/100+0x30; Disdat2=tvalue%100/10+0x30; Disdat3=tvalue%10+0x30; void alarm() if(f_max=0) if(f_min=0) if(f=0) if(temp+temp_d*0.0625)=max_int) w=1;TR1=1; if(temp+temp_d*0.0625)min_int) w=0; if(f=1)w=1;TR1=1; if(f_min=1) if(f=0) if(temp+temp_d*0.0625)=max_int) w=1;TR1=1; if(temp+temp_d*0.0625)=min_int) w=1;TR1=1; if(temp+temp_d*0.0625)min_int ) w=0; if(f_max=1) if(f_min=1) if(f=1) if(temp+temp_d*0.0625)=min_int) w=1;TR1=1; if(temp+temp_d*0.0625)max_int) w=0; if(f=0)w=1;TR1=1; void delay(uint c) /延时子程序 uint a,b; for(a=0;ac;a+) for(b=0;b120;b+);void main () /初始化子程序int();delay(50);EA=1;EX0=1;EX1=1;IT0=1;IT1=1;while(1);int LCD;Wr_Com(0xc0)Wr_dat(disdat0);Wr_com(0xc1);Wr_dat(disdat1);Wr_com(0xc2);Wr_dat(disdat2);Wr_com(0xc3);Wr_dat(0x2e);Wr_com(0xc4);Wr_dat(disdat3);Void int_LCD( )Wr_com(0x38);delay(5);Wr_com(0x08);delay(5);Wr_com(0x01);delay(5);Wr_com(0x06);delay(5);Wr_com(0x0c);delay(5);Void wr_com(com)RS=0;R/W=0,EN=0;P0=COM; delay(1);EN=1;delay(1)EN=0;Void wr_dat(uchar dat)RS=1;R/W=0;EN=0;P0=dat;Display(1);EN=1;Display(1);EN=0;void delayl()uint n= 50000;while(n-);void delays()unit n= 10000;while(n-);main ()P2=0xf0;EA=1;EX0=1;IT0=1;void int_0() interrup 0unchar temp,key;P2=0xf0;temp=P2;P2=0x0f;key=temp|p2;for(i=0,i16,i+)if(key=key_table(i)num=i;break;P0=LED_tablenum;五、实验总结总结本次课程设计, 这是我们第一个完成的单片机综合实验, 我们一组三人, 共同完成了它, 在本次综合实验过程中,我们发现很多的问题,让我们长进了很多。我们一起探 讨问题, 然后不懂的就问, 力所能及做到应该做的, 不仅使我们增强了团队意识, 而且我们良好的分配工作方式促进了实验的进程, 又通过编写实验报告让我们掌 握了很多课余的小技能,多动手多动脑,才会有收获!本设计利用89S51芯片控制温度传感器DS18B52,再辅之以部分外围电路实现对环境温度的控制,性能稳定,精度较高,而且扩展性很强。由于DS18B20支持单总线协议,我们可以将多个DS18B52并联到3根或2根线上,CPU只需一根端口线就能与诸多DS18B52通信,占用较少的微处理器的端口就可以实现多点测温监控系统。 从这次的温度传感器的设计中,我真真正正的意识到,在以后的学习中,要理论联系实际,把我们学习的理论知识用到实际中,学习单片机更是如此。
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 管理文书 > 工作总结


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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