版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
日照职业技术学院嵌入式实训设计报告2012-2013学年第一学期题目:基于嵌入式ARM勺数字温度测量仪学院:信息科学与工程学院专业:移动通信期0(3G软件开发)班级:2011级移动通信技术一班小组:姓名/学号:仇念忍(201115060104董传荣(201115060105张士伟(201115060145指导教师:陈祥艳日期:第一章绪论弓।百,-5i'I*…T'I*"…**'1系统方案设计1方案设计*2第二章系统主要器件EasyARM2131开发板**2温度传感器DS18B202MS12864R液晶屏简介*14第三章硬件设计ARM7开发板硬件设计***7LCD液晶屏显示设计7第四章系统的软件设计系统主流程图,——….9温度传感器功能模块*****10液晶显小功能模块10第五章总结*一.…11附录A12""前期准备:董传荣:编写程序并制定实训报告张士伟:负责修改实训报告仇念忍:负责运行程序并调试程序数字温度测量仪绪论引言近年来随着科技的飞速发展,嵌入式的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的嵌入式应用系统中,嵌入式往往作为一个核心部件来使用,仅嵌入式方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。温度是一种最基本的环境参数,人们生活与环境温度息息相关,在工业生产过程中需要实时测量温度,在工业生产中也离不开温度的测量,因此研究温度的测量方法和控制具有重要的意义。DS18B201美国DALLA芥导体公司继DS1820之后最新推出的一种改进型智能温度传感器,通过此次项目设计,可以在原有的理论基础上,更加深入的了解传感器的工作原理特别是DS18B20®度传感器的工作原理,同时提高我们的实践动手能力以及逻辑思维能力,特别是拓宽了对ARM空制器的使用视野。数字温度计的控制方式很多。本系统采用LPC2000系列ARM芯片和可编程串行I/O接口芯片DS18B2吻中心器件来设计数字温度计,实现了设计一个数字温度采集系统,利用LCD液晶屏显示当前温度并具有温度超限报警功能。系统方案设计利用控制芯片、温度传感器、LCD夜晶屏、LED等分别实现:(1)实时显示当前室内温度(5(度)<T<80(度));(2)温度超限报警;设计方案总体框图如下:系统初始化后,LCD上显示当前室内温度,如果温度超过预先设定的温度值,八个LEW会闪烁提示温度超限。方案设计:(1)显示模块使用LCD液晶屏12864作为温度显示,LCD液晶显示器的构造是在两片平行的玻璃当中放置液态的晶体,两片玻璃中间有许多垂直和水平的细小电线,透过通电与否来控制杆状水晶分子改变方向,将光线折射出来产生画面。显示清晰,实现功能全。(2)温度传感器DS18B20数字温度传感器,该产品采用美国DALLA然司生产的DS18B20可组网数字温度传感器芯片封装而成,具有耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域。(3)报警电路报警电路采用8只LED,控制方便、准确。2系统主要器件2.1EasyARM2131开发板EasyARM2131FF发板是广州周立功公司设计的EasyARM(列开发套件之一,采用了PHILIPS公司基于ARM7TDMI-S核、单电源供电、LQFP6准寸装的LPC2131,具有JTAG仿真调试、ISP编程等功能。开发板上提供了一些键盘、LED蜂鸣器等常用功能部件,还具有RS232接口电路、I2c存储器电路。另外,用户也可以更换兼容的CPU!行仿真调试,如LPC2132LPC2138LPC2142等。灵活的跳线组合(开发板内使用的所有I/O均可断开连接),还有用户I/O接口,极大地方便了用户进行32位ARMK入式系统的开发实验。2.2温度传感器DS18B20DS18B2O字温度计是DALLA宓司生产的1—Wire,即单总线器件,具有线路简单,体积小的特点。因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。DS18B2产品的特点(1)、只要求一个端口即可实现通信。(2)、在DS18B20^的每个器件上都有独一无二的序列号。(3)、实际应用中不需要外部任何元器件即可实现测温。(4)、测量温度范围在一55。C到+125。C之间。(5)、数字温度计的分辨率用户可以从9位到12位选择(6)、内部有温度上、下限告警设置。DS18B20勺弓|脚介绍TO92封装的DS18B20勺弓|脚排歹1」见下图1,其引脚功能描述见下表1f底视期)图1依口不专维引国功能提述亨居3彝引咽1跄物江腑助值号1W料鹫琢i耳出引忏斯单克武强口引职.当花用膏在蓄叟电薄不,也可以冉朋停用串电卜前力可就鼻即m引鼻t当工作于有生mtf假引imua增.DS18B20勺使用方法由于DS18B2乐用的是1—Wire总线协议方式,即在一根数据线实现数据的双向传输,而对AT89S51单片机来说,硬件上并不支持单总线协议,因此,我们必须采用软件的方法来模拟单总线的协议时序来完成对DS18B205片的访问。由于DS18B2Q1在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求。DS18B20t严格的通信协议来保证各位数据传输的正确性和完整性。该协议定义了几种信号的时序:初始化时序、读时序、写时序。所有时序都是将主机作为主设备,单总线器件作为从设备。而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。数据和命令的传输都是低位在先。DS18B20勺复位时序
VDCGMD“二机工一匕也上豚门♦-二暝技也三泯色-回最小(3,VDCGMD“二机工一匕也上豚门♦-二暝技也三泯色-回最小(3,48Qjq后大,直才96(Xib15sp4-D318B2。发出——►BOuc■RIt«B■«4>«iV4t*Ht鹿里丝_■■BDS12B2口出琦位时艇小DS18B20勺读时序对于DS18B20I勺读时序分为读0时序和读1时序两个过程。对于DS18B205勺读时序是从主机把单总线拉低之后,在15秒之内就得释放单总线,以让DS18B20G数据传输至IJ单总线上。DS18B20ft完成一个读时序过程,至少需要60us才能完成。DS18B20勺写时序对于DS18B20I勺写时序仍然分为写0时序和写1时序两个过程。对于DS18B20W0时序和写1时序的要求不同,当要写0时序时,单总线要被拉低至少60us,保证DS18B2触够在15us到45us之间能够正确地采样IO总线上的“0”电平,当要写1时序时,单总线被拉低之后,在15us之内就得释放单总线。主刊耳一值 主刊耳一值 -・ ♦-'litf 支E禺3T密2.3MS12864R夜晶屏简介MS12864RS字图形点阵液晶显示模块,可显示汉字及图形,内置8192个中文汉字(16X16点阵)、128个字符(8X16点阵)及64X256点阵显示RAM(GDRAM主要技术参数和显示特性:电源:VDD3.3V~+5V的置升压电路,无需负压);显示内容:128歹UX64行显示颜色:黄绿显示角度:6:00钟直视LCDgfeS:STN与MClft口:8位或4位并行/3位用行配置LED背光多种软件功能:光标显示、画面移位、自定义字符、睡眠模式等模块引脚说明MS128X64引脚说明引脚号引脚名称方向功能说明1VSS-模块的电源地2VDD-模块的电源止端3V0-LCDB动电压输入端4RS(CS)H/L并行的指令/数据选择信号;串行的片选信号5R/W(SID)H/L并行的读写选择信号;串行的数据口6E(CLK)H/L并行的使能信号;串行的同步时钟7DB0H/L数据08DB1H/L数据19DB2H/L数据210DB3H/L数据311DB4H/L数据412DB5H/L数据513DB6H/L数据614DB7H/L数据715PSBH/L并/串行接口选择:H-并行;L-申行16NC空脚17/RETH/L复位低电平有效18VOUT19LED_K-背光源负极(LED-OV20LED_A-背光源正极(LED+5V逻辑工作电压(VDD):4.5〜5.5V电源地(GND):0V工作温度(Ta):0〜60c(常温)/-20〜75c(宽温)接口时序模块有并行和串行两种连接方法(时序如下):8位并行连接时序图MPU1资料到模块MPUA模块读出资料申行连接时序图csJV1234561691011121314151617IS1920212223241 11.1 1 01 11.1 1 0 0口。。口口。口「SID申行数据传送共分三个字节完成:第一字节:串口控制一格式11111ABCA为数据传送方向控制:H表示数据从LCD到MCUL表示数据从MCLSJLCDB为数据类型选择:H表示数据是显示数据,L表示数据是控制指令C固定为0第二字节:(并行)8位数据的高4位一格式DDDD0000第三字节:(并行)8位数据的低4位一格式0000DDDD串行接口时序参数:(测试条件:T=25CVDD=4.5V)3硬件设计ARM7开发板硬件设计ARM7LPC21系统实现如下功能:(1)控制温度传感器DS18B2顺取当前温度值;(2)控制LCD1晶屏显示当前温度。(3)控制LED温度超限报警。LCD液晶屏显示设计:LCD夜晶屏显示电路如下图所示。该液晶可实现显示当前的温度值,具体控制和实现方法如下:ARM7勺P0.0-P0.7口连接液晶屏的DBO-DB7控制对液晶屏并行数据读和写;ARM7勺P0.8口连接液晶屏的RS口,控制并行的指令/数据选择信号;ARM7勺P0.9口连接液晶屏的R/W口,控制并行的读写选择信号;ARM7勺P0.10口连接液晶屏的ENH,控制并行的使能信号;;ARM7勺P0.11口连接液晶屏的PSB口,控制并/串行接口选择:H-并行;L-申行;LCD夜晶屏电路图DS18B20温度传感器的设计电路如下图所示,该温度传感器电路可实现对温度传感器DS18B2O据的读写,具体控制方法如下:ARM7勺P0.30口连接DS18B20勺DQ口,控制串行数据的读和写;
DS18B20的VDD1接至UARM折发板的VDD±;DS18B20的GND1接到ARM折发板的GNDh;温度传感器电路4系统的软件设计系统主流程图图为系统主流程图,主流程图具体介绍如下:(1)系统初始化包括对DS18B20S行初始化、设定GPIORTCa始化、液晶屏初始化;(2)初始化之后显示当前室内温度;(3)判断室内温度是否超过预先设定值,如果超过驱动LED闪烁报警。系统主流程图4.2温度传感器功能模块开始结束温度传感器功能模块流程图4.3液晶显7K功能模块开始LCD初始化写命令到LCD液晶显示功能模块流程图5总结本系统利用控制芯片、温度传感器、LCD1晶屏、LED等分别实现:(1)实时显示当前室内温度;(2)能够通过键盘输入日期和时间的初值;(3)温度超限报警;一周的综合电子工艺课程设计结束了,可能在别人看来,这或许只是一个小的设计,可是它给于我的却不仅仅是这样,认真的做课程设计,运用ARMK一个系统的东西,我从心里给予了足够的重视。刚开始做总是出问题,多次重新分析,从细节着手寻找问题,最后找到了。发现自己想象的太多、太复杂,实际上只需要很简单的一种方法就可以的,问题解决了,也给我很多收获。我觉得自己的方法不可行,关键的原因在于自己对ARM勺工作原理没有透彻的理解,所以就不能很好的理解老师的设计要求,结果就造成了很多的弯路,找不到一种合理的途径去解决问题。希望以后有机会可以多做一些这样的设计,增强自己的设计意识,加深所学的知识。附录A描述:(1)此程序所有延时采用定时器做(2)开发板上的P0.30口连接温度传感器DQ口线开发板上P0.0-P0.7口连接液晶屏的DBO-DB,7其他液晶口线连接详见程序中宏定义(4)如需液晶显示的更清楚,需在液晶屏上加10K电位器,调节液晶屏输入参考电压#include<LPC213X.H>#defineeq1<<30#defineuint8unsignedchar#defineFpclk11059200#definekey11<<16#definekey21<<17#definekey31<<18#definekey41<<19#definekey51<<20#definekey61<<21intnn=0,yy=0,rr=0,zz=0,ss=0,ff=0,mm=0;/*******************定义与LCDffi关的宏*******************#defineLCD_DATA0xFF#defineLCD_DI1<<8//与p0.8对应#defineLCD_RW1<<9//与p0.9对应#defineLCD_EN1<<10//与p0.10对应.#defineLCD_PSB1<<11//与p0.11对应//电路直接拉高#defineLCD_RST1<<12//与p0.12对应//上电自动复位,一般也可以不接*#defineclear_screen0x01#definereset_address0x02#defineset_point0x06//0000_0110#definedisplay_set0x0c//显示设定#definecursor_shift_control0x1c//0001_1100#definefunction_set0x30//功能设定基本指令集#definefunction_set_ext0x36//功能设定扩充指令集绘图开//#defineset_CGRAM_ADD#defineset_DDRAM_ADD0x80//#definewrite_data_intenalRAMunsignedchardigit[10]={"0123456789"};//定义字符数组显示数字voiddelay1u(unsignedlongt)T1PR=0x00000000;//Loadprescaler
andT1TCR=0x00000003;//ResetcounterandprescalerandT1MCR=0x00000003;//OnmatchresetthecountergenerateaninterruptT1MR0=t*0x0f;//SetthecycletimeT1TCR=0x00000001;//enabletimerwhile((T1IR&0x01)==0);T1IR=0x01;T1TCR=0x00000000;}voidLCD_DATA_input(){IO0DIR=IO0DIR&(~LCD_DATA);//把p1.16-p1.23设定为输入}voidLCD_DATA_output(){IO0DIR=IO0DIR|LCD_DATA;//设定p0.0-p0.7为输出}voidCheckState()〃状态检查,LC渥否忙?{delay1u(200);//while(read_instruct());**函数名称:GPIO_Init()**函数功能:初始化IO端口,包含一个uart0,三个按键输入,以及几个普通的输入输出端口.**入口参数:无**出口参数:无/*voidGPIO_init(){PINSEL0=0;IO0DIR=0xFF<<8;}**函数名称:w_data(unsignedchardata_Lcm)**函数功能:给LCD发送数据或者命令.**入口参数:data_Lcm**出口参数:无voidW_data(uint8data_Lcm){CheckState();LCD_DATA_output();IO0SET=LCD_DI;IO0CLR=LCD_RW;IO0CLR=0xFF;IO0SET=data_Lcm;IO0SET=LCD_EN;IO0CLR=LCD_EN;}**函数名称:**函数功能:**入口参数:**出口参数:voidW_instruct(uint8data_Lcm){CheckState();LCD_DATA_output();IO0CLR=LCD_DI;IO0CLR=LCD_RW;IO0CLR=0xFF;IO0SET=data_Lcm;IO0SET=LCD_EN;IO0CLR=LCD_EN;**函数名称LCD_Init()**函数功能:初始化led显示屏**入口参数:无**出口参数:无voidinit_lcd(void){IO0SET=LCD_RST;IO0CLR=LCD_RST;IO0SET=LCD_RST;IO0SET=LCD_PSB;IO0SET=LCD_PSB;W_instruct(function_set);W_instruct(display_set);W_instruct(clear_screen);W_instruct(reset_address);W_instruct(set_DDRAM_ADD);}**函数名称:***函数功能:写汉字到LCDx_add显示RAM的地址dat1/dat2显示汉字编码指定的位置***入口参数:***出口参数:/*voiddisplay(uint8x_add,uint8dat1,uint8dat2){W_instruct(x_add);//1xxx,xxxx到地址计数器ACW_data(dat1);W_data(dat2);}voidwrite(unsignedchardate){unsignedchari=0;for(i=8;i>0;i--){IO0DIR|=eq;//改回输出IO0SET|=eq;delay1u(2);IO0CLR=eq;if(date&0x01){IO0SET|=eq;//释放总线delay1u(80);}elseIO0CLRIO0CLR=eq;// 给脉冲信号IO0CLR=eq;delay1u(80);}delay1u(30);IO0SET|=eq;delay1u(3);date>>=1;}delay1u(6);}unsignedcharread(){unsignedchari=0;unsignedchardate=0;for(i=8;i>0;i--){date>>=1;改回输出IO0DIR|=eq;//改回输出IO0SET|=eq;delay1u(2);delay1u(2);IO0SET|=eq;delay1u(13);IO0DIR=IO0DIR&0xBFFFFFFF;//拉高总线输入delay1u(12);if(IO0PIN&eq)date|=0x80;delay1u(3);}returndate;}unsignedcharinnit(){unsignedcharnum;IO0DIR|=eq;//稍做延时IO0CLR=eq;//delay1u(600);//IO0SET=eq;delay1u(30);IO0DIR&=0xBFFFFFFF;//delay1u(30);将DQi低精确延时大于480us480拉高总线输入if((IO0PIN&eq)==0){num=0;}else{num=1;}IO0SET=num;delay1u(200);//300returnnum;}voidzhun(){innit();write(0xCC);write(0x44);delay1u(900000);innit();write(0xCC);write(0xBE);
voiddisplay_temp1(unsignedcharx)inti;分别储存温度的百位、十位和个位unsignedchara,b,c;//j,k,l分别储存温度的百位、十位和个位unsignedchark[9]={"温度是:"};unsignedcharl[16]=("数字温度计姚unsignedcharl[16]=("数字温度计姚 --连");W_instruct(0x88);for(i=0;i<9;i++)W_data(k[i]);W_instruct(0x98);for(i=0;i<16;i++)W_data(l[i]);a=x/100;//取百位b=(x%100)/10;//取十位c=x%10;//取个位W_instruct(0x8C);//写显示地址,将在第2行第7列开始显示W_data(digit[a]);W_data(digit[a]);//W_data(digit[b]);//W_data(digit[c]);//delay1u(100); //TOC\o"1-5"\h\z将百位数字的字符常量写入LCD将十位数字的字符常量写入LCD将个位数字的字符常量写入LCD延时1ms给硬件一点反应时间voiddisplay_temp2(unsignedcharx)unsignedchart[]unsignedchart[]={"};//写显示地址,将在第2行第11列开始显示W_data('.');W_data(digit[x]);//LCDW_instruct(0x8F);W_data(t[0]);W_data(t[1]);W_data(t[2]);delay1u(100);//}**函数名称:RTCInit()将小数部分的第一位数字字符常量写入延时1ms给硬件一点反应时间*函数功能:初始化实时时钟*入口参数:无*出口参数:无voidRTCInit(void){PREINT=Fpclk/32768-1;//设置基准时钟分频器PREFRAC=Fpclk-(Fpclk/32768)*32768;CCR=0x00;//禁止时间计数器YEAR=2008+nn;MONTH=04+yy;DOM=01+rr;DOW=4+zz;HOUR=8+ss;MIN=30+ff;SEC=59+mm;CIIR=0x01;//设置秒值的增量产生1次中断CCR=0x01;//启动RTC}*函数名称:SendTimeRtc()*函数功能:读取RTC的时间值,并将读出的时分秒值通过串口送到上位机显示。*入口参数:无*出口参数:无voidSendTimeRtc(void){unsignedchara,b,c,d;intdatas;inttimes;intbak;unsignedchart[]={"年"};unsignedchars[]={"月unsignedchars[]={"unsignedcharr[]={""};unsignedcharm[]={1!周"};unsignedcharn[]={"时"};unsignedcharp[]={"分"};unsignedcharq[]={"秒"};times=CTIME0;//读取完整的时钟寄存器datas=CTIME1;W_instruct(0x80);W_data(0x02);//显示笑脸W_data(0x02);//显示笑脸bak=(datas>>16)&0xfff;//获取年a=bak/1000;bak=bak%1000;b=bak/100;bak=bak%100;c=bak/10;d=bak%10;W_instruct(0x81);W_data(digit[a]);//将千位数字的字符常量写入LCDW_data(digit[b]);//将百位数字的字符常量写入LCDW_data(digit[c]);//将十位数字的字符常量写入LCDW_data(digit[d]);//将个位数字的字符常量写入LCD//获取//获取月//获取日W_instruct(0x83);W_data(t[0]);W_data(t[1]);bak=(datas>>8)&0x0f;a=bak/10;b=bak%10;W_instruct(0x84);W_data(digit[a]);W_data(digit[b]);W_instruct(0x85);W_data(s[0]);W_data(s[1]);bak=datas&0x1f;c=bak/10;d=bak%10;W_instruct(0x86);W_data(digit[c]);W_data(digit[d]);W_instruct(0x87);W_data(r[0]);W_data(r[1]);
//获取星期bak=(times>>//获取星期a=bak;W_instruct(0x90);W_data(m[0]);W_
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 47510-2026分布式新能源短路电流计算
- 2025河南省中考英语真题 (解析版)
- 2026年液化石油气(LPG)站泄漏与火灾应急培训
- 2026年节假日消防安全部署会议
- 2026年企业如何借助数字化规范财务管理
- AI在业财数据应用与管理中的应用
- 2026年医疗行业知识产权海外布局与风险预警
- 2026年加油站交接班流程与账表填写规范
- 2026年游戏原画设计行业发展趋势与个人发展
- 2026年星巴克体验营销与顾客忠诚度案例分析
- DGTJ 08-115-2016 燃气分布式供能系统工程技术规程
- 热风炉本体安装施工方案
- 淤泥处理合同范例
- DB3502T 078-2022 代建工作规程
- 消防船项目可行性实施报告
- 公路工程标准施工招标文件(2018年版)
- 2024年全省农业行业职业(动物疫病防治员)技能竞赛理论考试题库(含答案)
- 档案管理项目 投标方案(技术方案)
- DL∕T 5776-2018 水平定向钻敷设电力管线技术规定
- 成本最小化(范里安微观经济)
- 全屋定制研发规划方案
评论
0/150
提交评论