嵌入式实训设计报有代码复习进程.doc

上传人:1595****071 文档编号:86473869 上传时间:2023-04-14 格式:DOC 页数:26 大小:296.50KB
返回 下载 相关 举报
嵌入式实训设计报有代码复习进程.doc_第1页
第1页 / 共26页
嵌入式实训设计报有代码复习进程.doc_第2页
第2页 / 共26页
点击查看更多>>
资源描述

《嵌入式实训设计报有代码复习进程.doc》由会员分享,可在线阅读,更多相关《嵌入式实训设计报有代码复习进程.doc(26页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、Good is good, but better carries it.精益求精,善益求善。嵌入式实训设计报有代码-日照职业技术学院嵌入式实训设计报告2012-2013学年第一学期题目:基于嵌入式ARM的数字温度测量仪学院:信息科学与工程学院专业:移动通信技术(3G软件开发)班级:2011级移动通信技术一班小组:姓名/学号:仇念忍(201115060104)董传荣(201115060105)张士伟(201115060145)指导教师:陈祥艳日期:100-目录目录第一章绪论1.1引言11.2系统方案设计11.3方案设计2第二章系统主要器件2.1EasyARM2131开发板22.2温度传感器DS1

2、8B2022.3MS12864R液晶屏简介4第三章硬件设计3.1ARM7开发板硬件设计73.2LCD液晶屏显示设计7系统的软件设计4.1系统主流程图94.2温度传感器功能模块104.3液晶显示功能模块10总结11附录A12前期准备:董传荣:编写程序并制定实训报告张士伟:负责修改实训报告仇念忍:负责运行程序并调试程序数字温度测量仪1绪论1.1引言近年来随着科技的飞速发展,嵌入式的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的嵌入式应用系统中,嵌入式往往作为一个核心部件来使用,仅嵌入式方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。温度是一种最基本的环境参数

3、,人们生活与环境温度息息相关,在工业生产过程中需要实时测量温度,在工业生产中也离不开温度的测量,因此研究温度的测量方法和控制具有重要的意义。DS18B20是美国DALLAS半导体公司继DS1820之后最新推出的一种改进型智能温度传感器,通过此次项目设计,可以在原有的理论基础上,更加深入的了解传感器的工作原理特别是DS18B20温度传感器的工作原理,同时提高我们的实践动手能力以及逻辑思维能力,特别是拓宽了对ARM控制器的使用视野。数字温度计的控制方式很多。本系统采用LPC2000系列ARM芯片和可编程串行I/O接口芯片DS18B20为中心器件来设计数字温度计,实现了设计一个数字温度采集系统,利用

4、LCD液晶屏显示当前温度并具有温度超限报警功能。1.2系统方案设计利用控制芯片、温度传感器、LCD液晶屏、LED等分别实现:(1)实时显示当前室内温度(5(度)T80(度));(2)温度超限报警;设计方案总体框图如下:报警模块温度传感器ARM7LPC2131显示系统初始化后,LCD上显示当前室内温度,如果温度超过预先设定的温度值,八个LED灯会闪烁提示温度超限。1.3方案设计:(1)显示模块使用LCD液晶屏12864作为温度显示,LCD液晶显示器的构造是在两片平行的玻璃当中放置液态的晶体,两片玻璃中间有许多垂直和水平的细小电线,透过通电与否来控制杆状水晶分子改变方向,将光线折射出来产生画面。显

5、示清晰,实现功能全。(2)温度传感器DS18B20数字温度传感器,该产品采用美国DALLAS公司生产的DS18B20可组网数字温度传感器芯片封装而成,具有耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域。(3)报警电路报警电路采用8只LED,控制方便、准确。2系统主要器件2.1EasyARM2131开发板EasyARM2131开发板是广州周立功公司设计的EasyARM系列开发套件之一,采用了PHILIPS公司基于ARM7TDMI-S核、单电源供电、LQFP64封装的LPC2131,具有JTAG仿真调试、ISP编程等功能。开发板上提供了一些键盘、LED、蜂鸣器等

6、常用功能部件,还具有RS232接口电路、I2C存储器电路。另外,用户也可以更换兼容的CPU进行仿真调试,如LPC2132、LPC2138、LPC2142等。灵活的跳线组合(开发板内使用的所有I/O均可断开连接),还有用户I/O接口,极大地方便了用户进行32位ARM嵌入式系统的开发实验。2.2温度传感器DS18B20DS18B20数字温度计是DALLAS公司生产的1Wire,即单总线器件,具有线路简单,体积小的特点。因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。DS18B20产品的特点(1)、只要求一个端口即可实现通信。(2)、在DS18B20中的

7、每个器件上都有独一无二的序列号。(3)、实际应用中不需要外部任何元器件即可实现测温。(4)、测量温度范围在55。C到125。C之间。(5)、数字温度计的分辨率用户可以从9位到12位选择。(6)、内部有温度上、下限告警设置。DS18B20的引脚介绍TO92封装的DS18B20的引脚排列见下图1,其引脚功能描述见下表1。DS18B20的使用方法由于DS18B20采用的是1Wire总线协议方式,即在一根数据线实现数据的双向传输,而对AT89S51单片机来说,硬件上并不支持单总线协议,因此,我们必须采用软件的方法来模拟单总线的协议时序来完成对DS18B20芯片的访问。由于DS18B20是在一根I/O线

8、上读写数据,因此,对读写的数据位有着严格的时序要求。DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。该协议定义了几种信号的时序:初始化时序、读时序、写时序。所有时序都是将主机作为主设备,单总线器件作为从设备。而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。数据和命令的传输都是低位在先。DS18B20的复位时序DS18B20的读时序对于DS18B20的读时序分为读0时序和读1时序两个过程。对于DS18B20的读时序是从主机把单总线拉低之后,在15秒之内就得释放单总线,以让DS18B20把数据传输到单

9、总线上。DS18B20在完成一个读时序过程,至少需要60us才能完成。DS18B20的写时序对于DS18B20的写时序仍然分为写0时序和写1时序两个过程。对于DS18B20写0时序和写1时序的要求不同,当要写0时序时,单总线要被拉低至少60us,保证DS18B20能够在15us到45us之间能够正确地采样IO总线上的“0”电平,当要写1时序时,单总线被拉低之后,在15us之内就得释放单总线。2.3MS12864R液晶屏简介MS12864R汉字图形点阵液晶显示模块,可显示汉字及图形,内置8192个中文汉字(16X16点阵)、128个字符(8X16点阵)及64X256点阵显示RAM(GDRAM)。

10、主要技术参数和显示特性:电源:VDD3.3V+5V(内置升压电路,无需负压);显示内容:128列64行显示颜色:黄绿显示角度:6:00钟直视LCD类型:STN与MCU接口:8位或4位并行/3位串行配置LED背光多种软件功能:光标显示、画面移位、自定义字符、睡眠模式等模块引脚说明MS128X64R引脚说明引脚号引脚名称方向功能说明1VSS-模块的电源地2VDD-模块的电源正端3V0-LCD驱动电压输入端4RS(CS)H/L并行的指令/数据选择信号;串行的片选信号5R/W(SID)H/L并行的读写选择信号;串行的数据口6E(CLK)H/L并行的使能信号;串行的同步时钟7DB0H/L数据08DB1H

11、/L数据19DB2H/L数据210DB3H/L数据311DB4H/L数据412DB5H/L数据513DB6H/L数据614DB7H/L数据715PSBH/L并/串行接口选择:H-并行;L-串行16NC空脚17/RETH/L复位低电平有效18VOUT19LED_K-背光源负极(LED-OV)20LED_A-背光源正极(LED+5V)逻辑工作电压(VDD):4.55.5V电源地(GND):0V工作温度(Ta):060(常温)/-2075(宽温)接口时序模块有并行和串行两种连接方法(时序如下):8位并行连接时序图MPU写资料到模块MPU从模块读出资料串行连接时序图串行数据传送共分三个字节完成:第一字

12、节:串口控制格式11111ABCA为数据传送方向控制:H表示数据从LCD到MCU,L表示数据从MCU到LCDB为数据类型选择:H表示数据是显示数据,L表示数据是控制指令C固定为0第二字节:(并行)8位数据的高4位格式DDDD0000第三字节:(并行)8位数据的低4位格式0000DDDD串行接口时序参数:(测试条件:T=25VDD=4.5V)3硬件设计3.1ARM7开发板硬件设计ARM7LPC213系统实现如下功能:(1)控制温度传感器DS18B20读取当前温度值;(2)控制LCD液晶屏显示当前温度。(3)控制LED温度超限报警。3.2LCD液晶屏显示设计:LCD液晶屏显示电路如下图所示。该液晶

13、可实现显示当前的温度值,具体控制和实现方法如下:(1)ARM7的P0.0-P0.7口连接液晶屏的DBO-DB7,控制对液晶屏并行数据读和写;(2)ARM7的P0.8口连接液晶屏的RS口,控制并行的指令/数据选择信号;(3)ARM7的P0.9口连接液晶屏的R/W口,控制并行的读写选择信号;(4)ARM7的P0.10口连接液晶屏的EN口,控制并行的使能信号;(5)ARM7的P0.11口连接液晶屏的PSB口,控制并/串行接口选择:H-并行;L-串行;(6)ARM7的P0.12口连接液晶屏的RET口,实现对液晶屏的复位,低电平有效;LCD液晶屏电路图DS18B20温度传感器的设计电路如下图所示,该温度

14、传感器电路可实现对温度传感器DS18B20数据的读写,具体控制方法如下:(1) ARM7的P0.30口连接DS18B20的DQ口,控制串行数据的读和写;(2) DS18B20的VDD连接到ARM7开发板的VDD上;DS18B20的GND连接到ARM7开发板的GND上;温度传感器电路4系统的软件设计4.1系统主流程图图为系统主流程图,主流程图具体介绍如下:(1)系统初始化包括对DS18B20进行初始化、设定GPIO、RTC初始化、液晶屏初始化;(2)初始化之后显示当前室内温度;开始(3)判断室内温度是否超过预先设定值,如果超过驱动LED闪烁报警。系统初始化显示温度YLED闪烁报警温度超过限?N系

15、统主流程图4.2温度传感器功能模块开始初始化温度传感器向温度传感器写指令读取温度传感器数据数据转化为温度显示结束温度传感器功能模块流程图4.3液晶显示功能模块开始LCD初始化写命令到LCD写数据到LCD结束液晶显示功能模块流程图5总结本系统利用控制芯片、温度传感器、LCD液晶屏、LED等分别实现:(1)实时显示当前室内温度;(2)能够通过键盘输入日期和时间的初值;(3)温度超限报警;一周的综合电子工艺课程设计结束了,可能在别人看来,这或许只是一个小的设计,可是它给于我的却不仅仅是这样,认真的做课程设计,运用ARM做一个系统的东西,我从心里给予了足够的重视。刚开始做总是出问题,多次重新分析,从细

16、节着手寻找问题,最后找到了。发现自己想象的太多、太复杂,实际上只需要很简单的一种方法就可以的,问题解决了,也给我很多收获。我觉得自己的方法不可行,关键的原因在于自己对ARM的工作原理没有透彻的理解,所以就不能很好的理解老师的设计要求,结果就造成了很多的弯路,找不到一种合理的途径去解决问题。希望以后有机会可以多做一些这样的设计,增强自己的设计意识,加深所学的知识。附录A描述:(1)此程序所有延时采用定时器做(2)开发板上的P0.30口连接温度传感器DQ口线(3)开发板上P0.0-P0.7口连接液晶屏的DBO-DB7,其他液晶口线连接详见程序中宏定义(4)如需液晶显示的更清楚,需在液晶屏上加10K

17、电位器,调节液晶屏输入参考电压#include#defineeq130#defineuint8unsignedchar#defineFpclk11059200#definekey1116#definekey2117#definekey3118#definekey4119#definekey5120#definekey6121intnn=0,yy=0,rr=0,zz=0,ss=0,ff=0,mm=0;/*定义与LCD相关的宏*/#defineLCD_DATA0xFF#defineLCD_DI18/与p0.8对应#defineLCD_RW19/与p0.9对应#defineLCD_EN110/与p0

18、.10对应.#defineLCD_PSB111/与p0.11对应/电路直接拉高#defineLCD_RST112/与p0.12对应/上电自动复位,一般也可以不接*#defineclear_screen0x01#definereset_address0x02#defineset_point0x06/0000_0110#definedisplay_set0x0c/显示设定#definecursor_shift_control0x1c/0001_1100#definefunction_set0x30/功能设定基本指令集#definefunction_set_ext0x36/功能设定扩充指令集绘图开/

19、#defineset_CGRAM_ADD#defineset_DDRAM_ADD0x80/#definewrite_data_intenalRAMunsignedchardigit10=0123456789;/定义字符数组显示数字voiddelay1u(unsignedlongt)T1PR=0x00000000;/LoadprescalerT1TCR=0x00000003;/ResetcounterandprescalerT1MCR=0x00000003;/OnmatchresetthecounterandgenerateaninterruptT1MR0=t*0x0f;/Setthecycle

20、timeT1TCR=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()/状态检查,LCD是否忙?delay1u(200);/while(read_instruct();*函数名称:GPIO_Init()*函数功能:初始化IO端口,包含

21、一个uart0,三个按键输入,以及几个普通的输入输出端口.*入口参数:无*出口参数:无/*voidGPIO_init()PINSEL0=0;IO0DIR=0xFF0;i-)IO0DIR|=eq;/改回输出IO0SET|=eq;delay1u(2);IO0CLR=eq;if(date&0x01)IO0SET|=eq;/释放总线delay1u(80);elseIO0CLR=eq;delay1u(80);delay1u(30);IO0SET|=eq;delay1u(3);date=1;delay1u(6);unsignedcharread()unsignedchari=0;unsignedchard

22、ate=0;for(i=8;i0;i-)date=1;IO0DIR|=eq;/改回输出IO0SET|=eq;delay1u(2);IO0CLR=eq;/给脉冲信号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;/将DQ拉低delay1u(600);/精确延时大于480us480

23、IO0SET=eq;delay1u(30);IO0DIR&=0xBFFFFFFF;/拉高总线输入delay1u(30);if(IO0PIN&eq)=0)num=0;elsenum=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分别储存温度的百位、十位和个位unsi

24、gnedchark9=温度是:;unsignedcharl16=(数字温度计姚-连);W_instruct(0x88);for(i=0;i9;i+)W_data(ki);W_instruct(0x98);for(i=0;i16)&0xfff;/获取年a=bak/1000;bak=bak%1000;b=bak/100;bak=bak%100;c=bak/10;d=bak%10;W_instruct(0x81);W_data(digita);/将千位数字的字符常量写入LCDW_data(digitb);/将百位数字的字符常量写入LCDW_data(digitc);/将十位数字的字符常量写入LCDW

25、_data(digitd);/将个位数字的字符常量写入LCDW_instruct(0x83);W_data(t0);W_data(t1);bak=(datas8)&0x0f;/获取月a=bak/10;b=bak%10;W_instruct(0x84);W_data(digita);W_data(digitb);W_instruct(0x85);W_data(s0);W_data(s1);bak=datas&0x1f;/获取日c=bak/10;d=bak%10;W_instruct(0x86);W_data(digitc);W_data(digitd);W_instruct(0x87);W_da

26、ta(r0);W_data(r1);bak=(times24)&0x07;/获取星期a=bak;W_instruct(0x90);W_data(m0);W_data(m1);W_instruct(0x91);W_data(digita);bak=(times16)&0x1f;/获取小时a=bak/10;b=bak%10;W_instruct(0x92);W_data(digita);W_data(digitb);W_instruct(0x93);W_data(n0);W_data(n1);bak=(times8)&0x3f;/获取分钟a=bak/10;b=bak%10;W_instruct(0

27、x94);W_data(digita);W_data(digitb);W_instruct(0x95);W_data(p0);W_data(p1);bak=times&0x3f;/获取秒钟a=bak/10;b=bak%10;W_instruct(0x96);W_data(digita);W_data(digitb);W_instruct(0x97);W_data(q0);W_data(q1);intmain()unsignedchara,b,TN,TD;PINSEL0=0;PINSEL1=0;IO0DIR=0x0000FFFF;IO1DIR=0xFFFFFFFF;RTCInit();/GPIO

28、_init();init_lcd();while(1)zhun();b=read();a=read();TN=a*16+b/16;/实际温度值=(TH*256+TL)/16,即:TH*16+TL/16/这样得出的是温度的整数部分,小数部分被丢弃了TD=(b%16)*10/16;display_temp1(TN);display_temp2(TD);if(TN=33)IO1PIN=IO1PIN0xFFFFFFFF;elseIO1SET=0XFFFFFFFF;if(key1&IO0PIN)=0)nn=nn+1;RTCInit();elseif(key2&IO0PIN)=0)yy=yy+1;RTCInit();elseif(key3&IO0PIN)=0)rr=rr+1;RTCInit();elseif(key4&IO0PIN)=0)zz=zz+1;RTCInit();elseif(key5&IO0PIN)=0)ss=ss+1;RTCInit();elseif(key6&IO0PIN)=0)ff=ff+1;RTCInit();while(0=(ILR&0x01);/等待RTC增量中断ILR=0x01;/清除中断标志SendTimeRtc();

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

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

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