基于ARM嵌入式系统的真菌培养箱的设计
基于ARM嵌入式系统的真菌培养箱的设计
毕业论文中文摘要
基于ARM嵌入式系统的真菌培养箱的设计
毕业论文外文摘要
基于ARM嵌入式系统的真菌培养箱的设计
目 次
1、绪论..............................................................1 1.1、设计真菌培养箱控制器的意义...................................1 1.2、嵌入式系统的定义和市场前景...................................1 1.3、嵌入式系统的几个发展阶段.....................................2 1.4、嵌入式系统的技术特点.........................................3 1.5、嵌入式系统的发展趋势.........................................3 2、嵌入式实验平台的原理以及嵌入式系统简介............................3 2.1、概述.........................................................4 2.2、S3C44BOX芯片介绍............................................4 2.3、JX44BO ARM嵌入式教学系统软件资源............................8 3、环境控制器的设计..................................................8 3.1、功能框图.....................................................8 3.2、功能模块介绍.................................................8 3.3、控制器的主流程图...........................................10 3.4、控制器设计原理与实现.......................................11 4、程序详细设计.....................................................11 4.1、数字显示....................................................11 4.2、对LCD清屏..................................................12 4.3、键盘扫描....................................................12 4.4、字符转换成数值..............................................13 结论...............................................................16 参考文献...........................................................17 致 谢...........................................................18 附 录...........................................................19
基于ARM嵌入式系统的真菌培养箱的设计
1 绪论
1.1设计真菌培养箱控制器的意义
我国的真菌种类品种丰富,种类繁多。其中很大一部分的真菌都具有很大药用,食用价值,还有一些种类在美容,医学科研方面等也具有不可替代的作用。现在社会上所用真菌相当大一部分是靠人工培养的。然而,由于真菌生长对环境的要求比较高,不同种类的真菌生长要求不同的湿度、温度,且湿度和温度必须保持在严格的范围内。要人工培养真菌,就必须了解培养箱的特点,并采取相应的调控措施,满足真菌生长发育条件,从而达到真菌的优质高产。所以,设计一套智能的真菌培养箱控制系统,具有很大的现实意义。
目前真菌培养箱所采用的环境控制器都是相对单一的,即温度控制器只控制温度,湿度控制器只控制湿度等等,且多为手工操作,不能完成智能调节功能。这大大的加重了用户使用真菌培养箱控制器的成本及复杂程度,不利于对真菌培养箱环境的全面调控。
本设计充分的利用了嵌入式系统的高集成度与高性能的特点,将温度、湿度等等各种环境的调控集成在一个控制器中,能同时对箱内环境进行自动调控,非常适合人工培养真菌的要求。
1.2嵌入式系统的定义和市场前景
嵌入式系统是指以应用为中心,以计算机技术为基础,软件硬件可剪裁,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。它主要由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户应用软件等部分组成。用于实现对其它设备的控制、监视和管理等功能,它通常嵌入在主要设备中运行。
PC机主要应用在办公室自动化领域,而嵌入式系统已经广泛渗透到人们的工作、生活中,从家用电器、手持通讯设备、信息终端、仪器仪表、汽车、航天航空、军事装备、制造工业、过程控制等。今天,嵌入式系统带来的工业年产值已超过一万亿美元。美国著名未来学家尼葛洛庞帝99年1月访华时曾预言,4~5年后嵌入式智能(电
基于ARM嵌入式系统的真菌培养箱的设计
脑)工具将是PC和因特网之后最伟大的发明。据统计,嵌入式处理器的数量占分散处理器的94%,而PC机用的处理器只占6%。汽车大王福特公司的高级经理曾称:“福特出售的‘计算能力’已超过了IBM!”用市场观点来看,PC已经从高速增长进入到平稳发展时期,其年增长率由上世纪90年代中期的35%逐年下降,单纯由PC机带领电子产业蒸蒸日上的时代已经成为历史,根据PC时代的概念,美国Business week 杂志提出了“后PC时代”概念。
1.3嵌入式系统的几个发展阶段
嵌入式系统的出现至今已经有30多年的历史,近几年来,计算机、通信、消费电子的一体化趋势日益明显,嵌入式技术已成为一个研究热点。纵观嵌入式技术的发展过程,大致经历四个阶段。
第一阶段是以单芯片为核心的可编程控制器形式的系统,具有与监测、伺服、指示设备相配合的功能。这类系统大部分应用于一些专业性强的工业控制系统中,一般没有操作系统的支持,通过汇编语言编程对系统进行直接控制。这一阶段系统的主要特点是:系统结构和功能相对单一,处理效率较低,存储容量较小,几乎没有用户接口。由于这种嵌入式系统使用简单、价格低,以前在国内工业领域应用较为普遍,但是已经远不能适应高效的、需要大容量存储的现代工业控制和新兴信息家电等领域的需求。
第二阶段是以嵌入式CPU为基础、以简单操作系统为核心的嵌入式系统。主要特点是:CPU种类繁多,通用性比较弱;系统开销小,效率高;操作系统达到一定的兼容性和扩展性;应用软件较专业化,用户界面不够友好。
第三阶段是以嵌入式操作系统为标志的嵌入式系统。主要特点是:嵌入式操作系统能运行于各种不同类型的微处理器上,兼容性好;操作系统内核小、效率高,并且具有高度的模块化和扩展性;具备文件和目录管理、多任务、网络支持、图形窗口以及用户界面等功能;具有大量的应用程序接口API,开发应用程序较简单;嵌入式应用软件丰富。
第四阶段是以Internet为标志的嵌入式系统。这是一个正在迅速发展的阶段。目前大多数嵌入式系统还孤立于Internet之外,但随着Internet的发展以及Internet技术与信息家电、工业控制技术结合日益密切,嵌入式设备与Internet的结合将代表嵌入式系统的未来。
基于ARM嵌入式系统的真菌培养箱的设计
综上所述,嵌入式系统技术日益完善,32位微处理器在该系统中占主导地位,嵌入式操作系统已经从简单走向成熟,它与网络、Internet结合日益密切,因而,嵌入式系统应用将日益广泛。
1.4嵌入式系统的技术特点
嵌入式系统是集软件、硬件于一体的高可靠性系统 嵌入式系统麻雀虽小,五脏俱全,软件除操作系统外,还需有完成嵌入式系统功能的应用软件,硬件除了CPU外,还需有外围电路支持,微处理器、微控制器、DSP已构成嵌入式系统硬件的基础。
嵌入式系统是资源开销小的高性能价格比系统 嵌入式系统的发展离不开应用,应用的共同要求是系统资源开销小,由于嵌入式系统技术日益完善,各种高性能嵌入式应用系统层出不穷,它已是资源开销小的高性能价格比的一类应用系统。为了满足系统资源开销小、高性能、高可靠性的要求,大多使用Flash Memory。
嵌入式系统是功能强大、使用灵活方便的系统 嵌入式系统应用的广泛性,要求该系统通常是无键盘、无需编程的应用系统,使用它应如同使用家用电器一样方便。
1.5嵌入式系统的发展趋势
低功耗嵌入式系统 为满足高可靠性要求,低功耗的系统将应运而生。 Java虚拟机与嵌入式Java 开发嵌入式系统希望有一个方便的、跨平台的语言与工具,Java正是用Java虚拟机实现Java程序独立于各机种的平台。经过努力,一个支持嵌入式系统开发的、足够小、足够快、又有足够确定性的嵌入式Java程序包已经出现,Java虚拟机与嵌入式Java将成为开发嵌入式系统的有力工具。
嵌入式系统的多媒体化和网络化 随着多媒体技术的发展,视频、音频信息的处理水平越来越高,为嵌入式系统的多媒体化创造了良好的条件,嵌入式系统的多媒体化将变成现实。它在网络环境中的应用已是不可抗拒的潮流,并将占领网络接入设备的主导地位。
嵌入式系统的智能化 嵌入式系统与人工智能、模式识别技术的结合,将开发出各种更具人性化、智能化的嵌入式系统。
2 嵌入式实验平台的原理以及嵌入式系统简介
基于ARM嵌入式系统的真菌培养箱的设计
2.1概述
这款嵌入式实验平台使用的是S3C44BOX即为一款不带MMU的ARM微处理器,可在其上运行uCLinux和uC/OS-II操作系统。其特点如下:
1)系统的工作频率:系统的工作频率在很大程度上决定ARM 微处理器的处理能力。ARM7 系列微处理器的典型处理速度为0.9MIPS/MHZ。常见ARM7的系统主时钟为20MHZ-133MHZ。
2)芯片内存储器的容量:大多数ARM微处理器片内存储器的容量都不大,需要用户在设计系统时外扩存储器。但也有部分芯片具有相对较大的片内存储空间,如ATMEL的AT91F40162就具有高达2MB的片内程序存储空间。用户在设计时可考虑选用这种类型,以简单化系统的设计。
3)片内外围电路的选择:除ARM 微处理器核以外,几乎所有的ARM芯片均根据各自不同的应用领域,扩展了相关功能模块,并继承在芯片之中,我们称之为片内外围电力。如USB接口、IIS接口、LCD控制器、键盘接口、RTC、ADC和DAC、DSP协处理器等。设计者应分析系统的需求,尽可能采用片内外围电路完成所需的功能,这样可以简化系统的设计,同时提高系统的可靠性。
2.2 S3C44BOX芯片介绍
2.2.1 S3C44BOX功能框图
如图2-1所示,S3C44BOX微处理器是一款由Samsung Electronics Co.,Ltd为手持设备设计的低功耗、高速度集成的基于ARM7TDMI核的微处理器。为了降低系统总成本和减少外围器件,这款芯片中还集成了下列部件:1个IIS总线控制器,以及5通道PWM定时器,71个通用I/O口,8个外部中断源,实时时钟,8通道10位ADC等。现在它广泛应用于PDA,移动通讯、路由器、工业控制等。
基于ARM嵌入式系统的真菌培养箱的设计
2.2.2 各功能简介
1)S3C44B0X处理器体系结构
16/32位RISC结构和ARM精简指令集;
Thumb协处理器在保证性能的前提下使代码密度最大; 片上ICE支持JTAG调试方式; 32*8位硬件乘法器。 2)S3C44B0X处理器系统管理
支持大端(Big Endian)/小端(Little Endian)模式;
地址空间:每个Bank 32MB(一共256MB),每个Bank支持8/16/32位数据
总线编程;
8个内存Bank,6个用于ROM、SRAM,2个用于ROM/SRAM/DRAM; 1个起始地址和大小可编程的Bank(7); 7个起始地址固定,但大小可变的Bank(0~6); 所有内存Bank可编程寻址周期; 支持自动刷新模式;(DRAM/SDRAM)
基于ARM嵌入式系统的真菌培养箱的设计
支持DRAM的非对称/对称寻址。
3)S3C44B0X处理器存储器其存储器映射如图2-2所示。
图2-2 S3C44B0X存储区
4)S3C44B0X处理器通用输入/输出端口及接口
通用输入/输出端口 a) 8个外部中断端口;
b) 71个多路输入/输出口。UART:2个带DMA和中断的UART:2支持5位、6位、7位、8位串行数据传送/接收; c) 当传送/接收时支持双向握手; d) 可编程波特率;
e) 支持IrDA1.0(115.2Kps); f) 支持回环测试模式;
g) 每个通道有2个内部32位FIFO。 DMA控制器
a) 2路通用不需要CPU干涉的DMA控制器; b) 2路桥式DMA控制器;
c) 采用6种DMA请求:软件,4个内部功能块(UART/SIO/定时器/IIS)
,外部
基于ARM嵌入式系统的真菌培养箱的设计
管脚;
d) 支持I/O到存储器、存储器到I/O、I/O到I/O; e) DMA之间可编程优先级次序;
f) 突发传送模式提高了FPDRAM、EDODRAM和SDRAM的传送率。 A/D转换
a) 8路10位ADC; b) 转换速率最大100K。 LCD控制器
a) 支持256色/单色/16级灰度LCD; b) 支持单扫描和双扫描显示; c) 支持虚拟显示功能; d) 系统内存作为显示内存;
e) 专用DMA用于从系统内存中提取图像数据; f) 可编程屏幕尺寸。 I2C总线接口
a) 1个带中断的多主机I2C总线;
b) 串行,8位,双向数据传送器能够以100Kbps的标准模式和400Kbps的快速模式传送。 IIS总线接口
a) 1个带DMA的音频IIS总线接口; b) 支持MSB数据格式。 SIO(同步串行I/O) a) 1个带DMA中断的SIO; b) 可编程波特率;
c) 支持8位串行数据传送/接收操作。
2.3 JX44BO ARM嵌入式教学系统软件资源
ADT(ARM Development Tools)嵌入式系统开发环境是由武汉创维特信息技术有限公司开发的具有自主知识产权的应用于嵌入式软件开发的集成软、硬件开发平台。它为基于ARM 核的嵌入式应用提供了一整套完备的开发方案,包括程序编辑、工程管
基于ARM嵌入式系统的真菌培养箱的设计
理和设置、程序编译、程序调试等。ADT 嵌入式开发环境由ADT Emulator for ARM 和ADT IDE for ARM组成。
ADT IDE for ARM 为用户提供高效明晰的图形化嵌入式应用软件开发环境,包括一整套完备的面向嵌入式系统的开发和调试工具:源码编辑器、工程
管理器、工程编译器(编译器、汇编器和连接器)、集成调试环境、ADTEmulator for ARM 调试接口等。其界面同Microsoft Visual Studio 环境相似,用户可以在ADT IDE for ARM 集成开发环境中创建工程、打开工程,建立、打开和编辑文件,编译、连接、设置、运行、调试嵌入式应用程序。
3 环境控制器的设计
3.1功能框图
功能框图如图3-1所示。
图3-1 功能框图
3.2功能模块介绍
3.2.1键盘功能模块
该模块的主要功能是键盘输入方式下各功能的切换和各参数的输入。JX44B0教学系统的键盘电路是由一块74HC273锁定器和74LVCH244缓冲器完成键盘识别。检测时通过将c0l0~c0l3中的某一列输入低电平,没按键时行值为高电平,否则为低电平。 3.2.2传感器模块
基于ARM嵌入式系统的真菌培养箱的设计
传感器是控制器中数据采集的主要手段。根据真菌培养箱对环境的要求,需要有温度传感器、湿度传感器等。 3.2.3 LCD功能模块
该模块的主要功能是显示和触摸屏方式输入,其功能框图如图3-2所示。下面简要介绍各信号的作用。
VFRAME:LCD控制器和LCD驱动器之间的帧同步信号。它通知LCD 屏新的一帧的显示,LCD 控制器在一个完整帧的显示后发出VFRAME 信号。
VLINE:LCD控制器和LCD驱动器间的同步脉冲信号,LCD驱动器通过它来将水平移位寄存器中的内容显示到LCD屏上。LCD控制器在一整行数据全部传输到LCD驱动器后发出VLINE信号。
VCLK:此信号为LCD控制器和LCD驱动器之间的象素时钟信号,LCD控制器在VCLK的上升沿发送数据,LCD驱动器在VCLK的下降沿采样数据。
VM: LCD驱动器所使用的交流信号。LCD驱动器使用VM信号改变用于打开或关闭象素的行和列电压的极性。VM信号在每一帧触发,也在编程决定数量的VLINE信号触发。
VD[3:0]以及VD[7:4]: LCD象素数据输出端口。
本设计采用的LCD分辨率为320*240,工作在256色彩色显示模式,在该模式下,显示缓冲区中的一个字节数据代表LCD上的一个点的颜色信息,因此,所需要的显示缓冲区大学为320*240*1字节。其中每个字的彩色数据格式如图3-3所示:
图3-3 字节的彩色数据格式
基于ARM嵌入式系统的真菌培养箱的设计
3.2.4 数据处理功能模块
该模块是本次设计的重点,其功能主要是将从用户输入的值和感应器中检测到的值进行处理和对比,将相应的结果输送到控制器中,同时在LCD显示屏上显示从感应器中检测到的即时环境参数。 3.2.5 控制功能模块
控制器是主要功能是对外部环境调节设备进行控制的,当从处理器有需要对某个调节设备启动的信号传送过来的时候,就会对与相应的调节器的借口发出启动控制信号。
3.3 控制器的主流程图
控制器的主流程图如图3-4所示。
图3-4 程序流程图
程序开始后,先由用户设定参数,通过传感器得到外部环境实时数据,将两组数据送入处理器中判断并显示。
3.4 控制器设计原理与实现
本控制器以键盘输入、LCD显示为基础,通过对外部设备接口编程,及对控制信
基于ARM嵌入式系统的真菌培养箱的设计
号的判断实现调节功能。
通过键盘功能模块,可以实现用户对环境需求的输入设定,利用LCD显示即时的环境数据,控制器根据数据处理器的处理结果对外部调节设备进行启动或是关闭其功能。
4 程序详细设计
4.1 数字显示
在数字显示的过程中,利用了一个开关函数,在开关函数中引用了字符显示函数: void mathlcde(char s) {
switch(s) {
case0: Glib_disp_ascii16x8(x,y,"0",BLUE); x+=8;break; case 1: Glib_disp_ascii16x8(x,y,"1",BLUE);x+=8;break; case 2: Glib_disp_ascii16x8(x,y,"2",BLUE);x+=8;break; case 3: Glib_disp_ascii16x8(x,y,"3",BLUE);x+=8;break; case 4: Glib_disp_ascii16x8(x,y,"4",BLUE);x+=8;break; case 5: Glib_disp_ascii16x8(x,y,"5",BLUE);x+=8;break; case 6: Glib_disp_ascii16x8(x,y,"6",BLUE);x+=8;break; case 7: Glib_disp_ascii16x8(x,y,"7",BLUE);x+=8;break; case 8: Glib_disp_ascii16x8(x,y,"8",BLUE);x+=8;break; case 9: Glib_disp_ascii16x8(x,y,"9",BLUE);x+=8;break; default : break; } }
数字与字符显示函数一一对应,并在每次显示出来以后,在x抽坐标上加8以便显示下一个字符。
4.2 对LCD清屏
基于ARM嵌入式系统的真菌培养箱的设计
在对A/D中的数值显示过程中,还需要对上一次显示的数值进行清屏,采用以下函数:
void clear(int x,int y) {
delay(10000); int i,j; for(i=0;i<16;i++) for(j=0;j<8;j++)
lcd_put_pixel(x+j,y+i,WHITE); }
在函数中,需要对清屏范围中的x、y值进行设定,在设定后,利用lcd_put_pixel函数对设定范围LCD屏幕进行填充白色。
4.3 键盘扫描
在本控制器中,用户对环境的自定义设定是通过键盘输入来完成的,所以需要对键盘进行扫描程序:
char akey(void) {
int row=0;
unsigned char ascii_key, input_key;
for( row = 0; row < 4; row++) {
*/
delay(10000);
/*延时 */
*keyboard_port_scan = ~(0x00000001<<row);/*将row列置低电平
input_key = (*keyboard_port_value) & key_mask; /*并获取第一
次扫描值*/
if(input_key == key_mask)
continue;
/* 没有按键*/
/* 延时,再次获取扫描值,如果两次的值不等,则认为是一个干扰*/