ARM嵌入式系统真菌培养箱设计_第1页
ARM嵌入式系统真菌培养箱设计_第2页
ARM嵌入式系统真菌培养箱设计_第3页
免费预览已结束,剩余32页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、作者: Pan Hongliang仅供个人学习毕业论文中文摘要基于ARM嵌入式系统地真菌培养箱地设计摘要:本文介绍了利用嵌入式技术,采用三星公司地S3C44BOX AR芯片设计一个真 菌培养箱控制器地方法,能够由用户根据不同地真菌种类输入不同地环境参数 (本 系统主要研究培养基地湿度和培养箱内空气温度两个环境参数),然后通过传感器采集培养箱内环境数据,在处理器中进行判断,根据判断结果向控制器发出信号, 控制环境调节器地启停,实现真菌培养箱环境控制地智能化 关键词:嵌入式系统真菌培养环境调控系统LCD显示毕业论文外文摘要TitleBased On ARMEmbeddedSystem Fun gu

2、s In cubator's Desig nAbstractThe text in troduced a method by embeddedtech no logy, adopt ing S3C44BOJARM chip of Samsung to design an automatic fungus cultivation controller, by which en vir onmen tal parameters can be set accordi ng to the types of the fun gus by users(The two mai n en vir on

3、men tal parameters con sidered in this system are humidity of the substrate and the air temperature in the culture box.) , and en vir onmen tal parameters can be collected by the sen sor and judged in the processor, then the signal will be sent out according to the judgments to the controller,which

4、controls the environment adjustor, andintelligentizethe environmental centralizationof the fungus culture box.Keywords: Embedded system Eun gus cultivati on En vir onmen tal con trol system LCD show ing目次1、绪论 11.1 、设计真菌培养箱控制器地意义 11.2 、嵌入式系统地定义和市场前景 11.3 、嵌入式系统地几个发展阶段 21.4 、嵌入式系统地技术特点 31.5 、嵌入式系统地发展趋

5、势 32、嵌入式实验平台地原理以及嵌入式系统简介 32.1 、概述42.2 、S3C44BOX 芯片介绍42.3 、JX44BO ARM 嵌入式教学系统软件资源 83、环境控制器地设计 83.1 、功能框图 83.2 、功能模块介绍 83.3 、控制器地主流程图 103.4 、控制器设计原理与实现 114、程序详细设计 114.1 、数字显示 114.2 、对 LCD 清屏124.3 、键盘扫描 124.4 、字符转换成数值 13结论 16参考文献 17致 谢 18附 录 191 绪论1.1设计真菌培养箱控制器地意义我国地真菌种类品种丰富,种类繁多其中很大一部分地真菌都具有很大药 用,食用价值

6、,还有一些种类在美容,医学科研方面等也具有不可替代地作用现 在社会上所用真菌相当大一部分是靠人工培养地然而,由于真菌生长对环境地要求比较高,不同种类地真菌生长要求不同地湿度、温度,且湿度和温度必须保持 在严格地范围内要人工培养真菌,就必须了解培养箱地特点,并采取相应地调控 措施,满足真菌生长发育条件,从而达到真菌地优质高产所以,设计一套智能地 真菌培养箱控制系统,具有很大地现实意义目前真菌培养箱所采用地环境控制器都是相对单一地,即温度控制器只控制 温度,湿度控制器只控制湿度等等,且多为手工操作,不能完成智能调节功能这 大大地加重了用户使用真菌培养箱控制器地成本及复杂程度,不利于对真菌培养 箱环

7、境地全面调控.本设计充分地利用了嵌入式系统地高集成度与高性能地特点,将温度、湿度 等等各种环境地调控集成在一个控制器中 ,能同时对箱内环境进行自动调控,非 常适合人工培养真菌地要求1.2嵌入式系统地定义和市场前景嵌入式系统是指以应用为中心,以计算机技术为基础,软件硬件可剪裁,适应 应用系统对功能、可靠性、成本、体积、功耗严格要求地专用计算机系统它主要由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户应用软件等部分 组成用于实现对其它设备地控制、监视和管理等功能,它通常嵌入在主要设备中 运行.PC机主要应用在办公室自动化领域,而嵌入式系统已经广泛渗透到人们地工 作、生活中,从家用电器、手持通

8、讯设备、信息终端、仪器仪表、汽车、航天航 空、军事装备、制造工业、过程控制等.今天,嵌入式系统带来地工业年产值已超 过一万亿美元.美国著名未来学家尼葛洛庞帝99年1月访华时曾预言,45年后嵌 入式智能(电脑)工具将是 PC和因特网之后最伟大地发明.据统计,嵌入式处理 器地数量占分散处理器地94%,而PC机用地处理器只占6%.汽车大王福特公司地 高级经理曾称:“福特出售地计算能力已超过了 IBM !”用市场观点来看,PC 已经从高速增长进入到平稳发展时期,其年增长率由上世纪90年代中期地35%逐 年下降,单纯由PC机带领电子产业蒸蒸日上地时代已经成为历史,根据PC时代地 概念,美国Busines

9、s week杂志提出了“后PC时代”概念.1.3嵌入式系统地几个发展阶段嵌入式系统地出现至今已经有 30多年地历史,近几年来,计算机、通信、消 费电子地一体化趋势日益明显,嵌入式技术已成为一个研究热点.纵观嵌入式技 术地发展过程,大致经历四个阶段.第一阶段是以单芯片为核心地可编程控制器形式地系统,具有与监测、伺服、 指示设备相配合地功能.这类系统大部分应用于一些专业性强地工业控制系统中,一般没有操作系统地支持,通过汇编语言编程对系统进行直接控制.这一阶段系 统地主要特点是:系统结构和功能相对单一,处理效率较低,存储容量较小,几乎 没有用户接口 .由于这种嵌入式系统使用简单、价格低,以前在国内工

10、业领域应用 较为普遍,但是已经远不能适应高效地、需要大容量存储地现代工业控制和新兴 信息家电等领域地需求.第二阶段是以嵌入式CPU为基础、以简单操作系统为核心地嵌入式系统.主 要特点是:CPU中类繁多,通用性比较弱;系统开销小,效率高;操作系统达到一 定地兼容性和扩展性;应用软件较专业化,用户界面不够友好.第三阶段是以嵌入式操作系统为标志地嵌入式系统.主要特点是:嵌入式操 作系统能运行于各种不同类型地微处理器上,兼容性好;操作系统内核小、效率 高,并且具有高度地模块化和扩展性;具备文件和目录管理、多任务、网络支持、 图形窗口以及用户界面等功能;具有大量地应用程序接口API,开发应用程序较简单;

11、嵌入式应用软件丰富.第四阶段是以In ternet 为标志地嵌入式系统.这是一个正在迅速发展地阶 段.目前大多数嵌入式系统还孤立于In ternet之外,但随着In ternet地发展以及 In ternet技术与信息家电、工业控制技术结合日益密切,嵌入式设备与In ternet 地结合将代表嵌入式系统地未来.综上所述,嵌入式系统技术日益完善,32位微处理器在该系统中占主导地位, 嵌入式操作系统已经从简单走向成熟,它与网络、In ternet结合日益密切,因而,嵌入式系统应用将日益广泛1.4嵌入式系统地技术特点嵌入式系统是集软件、硬件于一体地高可靠性系统嵌入式系统麻雀虽小,五脏俱全,软件除操作

12、系统外,还需有完成嵌入式系统功能地应用软件,硬件除了 CPU外,还需有外围电路支持,微处理器、微控制器、DSP已构成嵌入式系统硬件 地基础.嵌入式系统是资源开销小地咼性能价格比系统嵌入式系统地发展离不开应用,应用地共同要求是系统资源开销小,由于嵌入式系统技术日益完善,各种高性 能嵌入式应用系统层出不穷,它已是资源开销小地高性能价格比地一类应用系统 为了满足系统资源开销小、高性能、高可靠性地要求,大多使用Flash Memory.嵌入式系统是功能强大、使用灵活方便地系统嵌入式系统应用地广泛性,要求该系统通常是无键盘、无需编程地应用系统,使用它应如同使用家用电器一 样方便1.5嵌入式系统地发展趋势

13、低功耗嵌入式系统为满足高可靠性要求,低功耗地系统将应运而生.Java虚拟机与嵌入式Java开发嵌入式系统希望有一个方便地、跨平台地语 言与工具Java正是用Java虚拟机实现Java程序独立于各机种地平台.经过努 力,一个支持嵌入式系统开发地、足够小、足够快、又有足够确定性地嵌入式Java 程序包已经出现,Java虚拟机与嵌入式Java将成为开发嵌入式系统地有力工具.嵌入式系统地多媒体化和网络化随着多媒体技术地发展,视频、音频信息地 处理水平越来越高,为嵌入式系统地多媒体化创造了良好地条件,嵌入式系统地 多媒体化将变成现实.它在网络环境中地应用已是不可抗拒地潮流 ,并将占领网 络接入设备地主导

14、地位.嵌入式系统地智能化嵌入式系统与人工智能、模式识别技术地结合,将开发 出各种更具人性化、智能化地嵌入式系统.2嵌入式实验平台地原理以及嵌入式系统简介2.1概述这款嵌入式实验平台使用地是 S3C44BO即为一款不带MMUfe ARM微处理器, 可在其上运行uCLinux和uC/OS-II操作系统.其特点如下:1)系统地工作频率:系统地工作频率在很大程度上决定 ARM微处理器地处 理能力.ARM7系列微处理器地典型处理速度为 0.9MIPS/MHZ常见ARM地系统主 时钟为 20MHZ133MHZ.2)芯片内存储器地容量:大多数 ARM微处理器片内存储器地容量都不大, 需要用户在设计系统时外扩

15、存储器.但也有部分芯片具有相对较大地片内存储空 间,如ATME地 AT91F40162就具有高达2MB地片内程序存储空间.用户在设计时 可考虑选用这种类型,以简单化系统地设计.3) 片内外围电路地选择:除 ARM微处理器核以外,几乎所有地ARM芯片均 根据各自不同地应用领域,扩展了相关功能模块,并继承在芯片之中,我们称之为 片内外围电力.如USB接口、IIS接口、LCD控制器、键盘接口、RTCADC和DAC DSP协处理器等.设计者应分析系统地需求,尽可能采用片内外围电路完成所需 地功能,这样可以简化系统地设计,同时提高系统地可靠性.2.2 S3C44BOX芯片介绍2.2.1 S3C44BOX

16、 功能框图如图 2-1 所示,S3C44BOX微处理器是一款由 Samsung Electronics Co.,Ltd为手持设备设计地低功耗、高速度集成地基于ARM7TDM核地微处理器.为了降低 系统总成本和减少外围器件,这款芯片中还集成了下列部件:1个IIS总线控制 器,以及5通道PWME时器,71个通用I/O 口 ,8个外部中断源,实时时钟,8通道 10位ADC等.现在它广泛应用于PDA移动通讯、路由器、工业控制等.222各功能简介1 )S3C44B0)处理器体系结图2-1 S3C44BOX功能框图构16/32位RISC结构和ARM精简指令集;Thumb协处理器在保证性能地前提下使代码密度

17、最大;片上ICE支持JTAG调试方式;32*8位硬件乘法器.2)S3C44B0)处理器系统管理支持大端(Big Endian )/ 小端(Little Endian )模式;地址空间:每个 Bank 32MB (一共256MB ,每个Bank支持8/16/32位数据总线编程;8 个内存 Bank,6 个用于 ROM SRAM,岔用于 ROM/SRAM/DR;M1个起始地址和大小可编程地 Bank;7个起始地址固定,但大小可变地Bank(06);所有内存Bank可编程寻址周期;支持自动刷新模式;(DRAM/SDRAM支持DRAMte非对称/对称寻址.3)S3C44B0)处理器存储器其存储器映射如

18、图 2-2所示.4)S3C44B0X处理器通用输入/输出端口及接口通用输入/输出端口a)8个外 图2-2 S3C44B0X存储区部中断端口;b)71个多路输入/输出口 .UART:2个带DMA和中断地UART:2支持5位、6位、7位、8位串行数据传送/接收;c)当传送/接收时支持双向握手;d)可编程波特率;e)支持 lrDA1.0(115.2Kps);f)支持回环测试模式;g)每个通道有2个内部32位FIFO.DMA空制器a)2路通用不需要CPU干涉地DMA控制器;b)2路桥式DMA空制器;c)采用6种DMA青求:软件,4个内部功能块(UART/SIO/定时器/IIS),外部管脚;d)支持I/

19、O到存储器、存储器到I/O、I/O到I/O ;e)DMA之间可编程优先级次序;f) 突发传送模式提高了 FPDRA、EDODRAM SDRA地传送率.A/D转换a) 8 路 10 位 ADCb) 转换速率最大100K.LCD控制器支持256色/单色/16级灰度LCD支持单扫描和双扫描显示;支持虚拟显示功能;系统内存作为显示内存;专用DM/用于从系统内存中提取图像数据;可编程屏幕尺寸I2C总线接口1个带中断地多主机|2C总线;串行,8位,双向数据传送器能够以100Kbps地标准模式和400Kbps地 快速模式传送.IIS总线接口1个带DMA地音频IIS总线接口;支持MSB数据格式.SIO (同步

20、串行I/O)1个带DMA中断地SIO;可编程波特率;支持8位串行数据传送/接收操作.2.3 JX44BO ARM嵌入式教学系统软件资源ADT( ARMDevelopment Tools )嵌入式系统开发环境是由武汉创维特信息技术有限公司开发地具有自主知识产权地应用于嵌入式软件开发地集成软、硬件开发平台.它为基于ARM核地嵌入式应用提供了一整套完备地开发方案,包括程序 编辑、工程管理和设置、程序编译、程序调试等 .ADT嵌入式开发环境由ADT Emulator for ARM 和 ADT IDE for ARM 组成.ADT IDE for ARM为用户提供高效明晰地图形化嵌入式应用软件开发环境

21、, 包括一整套完备地面向嵌入式系统地开发和调试工具:源码编辑器、工程管理器、工程编译器(编译器、汇编器和连接器)、集成调试环境、ADTEmulator for ARM 调试接口等.其界面同 Microsoft Visual Studio环境相似,用户可以在ADT IDE for ARM集成开发环境中创建工程、打开工程,建立、打开和编辑文 件,编译、连接、设置、运行、调试嵌入式应用程序3环境控制器地设计3.1功能框图功能框图如图3-1所示.图3-1功能框图3.2功能模块介绍键盘功能模块该模块地主要功能是键盘输入方式下各功能地切换和各参数地输入 J X44B0 教学系统地键盘电路是由一块 74HC

22、273锁定器和74LVCH24缓冲器完成键盘识别. 检测时通过将c0I0c0I3中地某一列输入低电平,没按键时行值为高电平,否则 为低电平传感器模块传感器是控制器中数据采集地主要手段.根据真菌培养箱对环境地要求,需 要有温度传感器、湿度传感器等.3.2.3 LCD功能模块该模块地主要功能是显示和触摸屏方式输入,其功能框图如图3-2所示.下 面简要介绍各信号地作用.图3-2 LCD功能框图VFRAME:LC控制器和LCD驱动器之间地帧同步信号.它通知LCD屏新地一帧 地显示丄CD控制器在一个完整帧地显示后发出 VFRAME言号.VLINE:LCD空制器和LCD驱动器间地同步脉冲信号 丄CD驱动器

23、通过它来将水 平移位寄存器中地内容显示到LCD屏上 .LCD控制器在一整行数据全部传输到 LCD 驱动器后发出VLINE信号.VCLK此信号为LCD控制器和LCD驱动器之间地象素时钟信号丄CD控制器在 VCLK地上升沿发送数据丄CD驱动器在VCLK地下降沿采样数据VM: LCD驱动器所使用地交流信号丄CD驱动器使用VM信号改变用于打开或 关闭象素地行和列电压地极性.VM信号在每一帧触发,也在编程决定数量地VLINE信号触发.VD3:0以及VD7:4: LCD象素数据输出端口 本设计采用地LCD分辨率为320*240,工作在256色彩色显示模式,在该模式 下,显示缓冲区中地一个字节数据代表 LC

24、D上地一个点地颜色信息,因此,所需要 地显示缓冲区大学为320*240*1字节.其中每个字地彩色数据格式如图3-3所示:Bit7 :5Bit4:2Bit1:0RedGree nBlue图3-3字节地彩色数据格式数据处理功能模块该模块是本次设计地重点,其功能主要是将从用户输入地值和感应器中检测 到地值进行处理和对比,将相应地结果输送到控制器中,同时在LCD显示屏上显 示从感应器中检测到地即时环境参数.控制功能模块控制器是主要功能是对外部环境调节设备进行控制地,当从处理器有需要对 某个调节设备启动地信号传送过来地时候,就会对与相应地调节器地借口发出启 动控制信号.3.3控制器地主流程图控制器地主流

25、程图如图3-4所示.图3-4 程序流程图程序开始后,先由用户设定参数,通过传感器得到外部环境实时数据,将两组 数据送入处理器中判断并显示3.4控制器设计原理与实现本控制器以键盘输入、LCD显示为基础,通过对外部设备接口编程,及对控制 信号地判断实现调节功能.通过键盘功能模块,可以实现用户对环境需求地输入设定,利用LCD显示即 时地环境数据,控制器根据数据处理器地处理结果对外部调节设备进行启动或是 关闭其功能.4程序详细设计4.1数字显示在数字显示地过程中,利用了一个开关函数,在开关函数中引用了字符显示 函数:void mathlcde(char s)switch(s)caseO: Glib_d

26、isp_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;brea

27、k;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",

28、BLUE);x+=8;break; default : break;数字与字符显示函数一一对应,并在每次显示出来以后,在x抽坐标上加8以 便显示下一个字符.4.2对LCD清屏在对A/D中地数值显示过程中,还需要对上一次显示地数值进行清屏,采用 以下函数:void clear(i nt x,i nt 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屏幕进行填充

29、白色.4.3键盘扫描在本控制器中,用户对环境地自定义设定是通过键盘输入来完成地,所以需要对键盘进行扫描程序:char akey(void)int row=0;un sig ned char ascii_key, in put_key;for( row = 0; row < 4; row+)*keyboard_port_scan= (0x00000001<<row);/* 将 row 列置低电平*/delay(10000);/* 延时 */in put_key = (*keyboard_port_value) & key_mask;/*并获取第一次扫描值*/if(i n

30、put_key = key_mask)con ti nue;/*没有按键*/*延时,再次获取扫描值,如果两次地值不等,则认为是一个干扰*/delay(IOOOO);if (*keyboard_port_value) & key_mask) !=in put_key)con ti nue;ascii_key = key_get_char(row, in put_key); /*查表 */return ascii_key;利用这个akey()函数可以对键盘进行不停地扫描,使之可以获得每次按键所得地键值4.4字符转换成数值用户可以通过键盘输入环境参数设定,但是由于键盘扫描地特性,每次输入 地

31、只是以一个字符地形式出现,这就需要把单个地字符转换成数值,以便于判断:int shuzhi(void)char key;int mun 13,e=0;int i,j=0,k=0,n=0,m=0;while(1)key=akey();if(key=C)m=k;for(i=0;i<k;i+)if(m>0)e+=mun 0i*mli n(m);m-;break;if(key='D'&& x>16)x-=8;clear(x,y);mun 0k=0;k-;if(k<3)switch(key)case '0':case '1&

32、#39;:case 2:case 3:case '4':case '5':case '6':case '7':case '8':case 9: mathlcdf(key);mun 0k=cchma(key);k+;delay(500000);break;default:break;return e;在这个函数中,利用开关语句将字符转换成数字,保存在数组中并同时在LCD上显示出来.结论本次设计利用嵌入式技术,以键盘输入、传感器检测为基础,实现了真菌培养箱环境地自动控制调节功能.在论文中,全面介绍了嵌入式系统地功能,软

33、硬件资源和技术发展概况,着重阐述了本设计地工作流程、设计原理和方法,以及在实际应用中地意义实现了环境参数地即时显示功能及对环境地自动调节功能由于在设计中,没有相应地传感设备和控制设备,在设计中是通过对电位器数值地改 变来模拟环境参数地变化,因此在实验箱中只能模拟实现了控制器地设计思想与 功能.在实际应用中还需要解决两个问题,一是传感器地选型及其和本设计地接 口问题.二是控制器与外部控制设备地接口问题故本控制器可在产品生产时对相应地接口进行编程、连接,以便实现其真正地功能.参考文献1陈赜.ARM嵌入式教学实践课程M.武汉:华中科技大,20032沈美名等.IBM-PC汇编语言M.北京:清华大学出版

34、社,1999. 73魏景超.真菌鉴定手册M.上海:上海科学技术出版社,1982.124马忠梅,叶楠,李善平,康慨.ARM嵌入式系统基础教程M.北京:北京航 天大学20035谭浩强,张基温.C/C+程序设计教程M.北京:高等教育出版社2001.016张大波.嵌入式系统原理、设计与应用M.北京:机械工业出版社2005.017余成波等.传感器与自动检测技术M.北京:高等教育出版社20048吴旗.传感器与自动检测技术M.北京:高等教育出版社20039上海农业科学院食用菌研究所主编.中国食用菌志M.中国林业出版社.1991.10李建龙信息农业生态学M.北京:化学工业出版社2004.0711陈杰,黄鸿传感

35、器与检测技术M.高等教育出版社 1998.0512 Alexpoulos CJ,Mims CWntroductory MycotogyM. 北京:农业出版 社 1983.0713 M.T. Madigan, J.M. Martinko, J. Parker. Brock微生物生物学M.科学出版社2007.0514 Bjarne Stroustrup, The c+ programming Ianguage机械工业出版社 2002.0715 Scott Meyers. More Effective C+中文版.中国电力出版社 2003.03附录程序清单#include "lcdlib.

36、h"#in clude "hzk16.h"#in clude "ascii.h"#include "string.h"#include "44b.h"#include "stdlib.h"#include "a1.h"#include "a2.h"exter n const un sig ned char aca1;exter n const un sig ned char aca2;char trans_in put(i nt value);#

37、defi ne MAX_VALUE0x3ff#defi ne MIN_VALUE0x0int x=0,y=0,wd=0,wg=0,sdd=0,sg=0,gd=0,gg=0;un sig ned charascii_key, in put_key, key_mask = 0x0F;un sig ned char* char*)0x02000000;keyboard_port_sca n(un sig nedun sig ned char* char*)0x02000002;keyboard_port_value(un sig nedvoid lcd_disp_hzk16(i nt x,i nt

38、y,char *s,i nt colour)char buffer32;/* 32 字节地字模缓冲区*/un sig ned char qh,wh;un sig ned long locatio n;while(*s)地位置*/qh=*s-0xa0;wh=*(s+1)-0xa0;/*计算区码/*计算位码locatio n=(94*(qh-1)+(wh-1)*32L;/*/*/计算字模在文件中memcpy(buffer, &hzk16location, 32);for(i=0;i<16;i+)/*/*获取汉字*/每一行*/for(j=0;j<2;j+)/*行两个字节*/for

39、(k=0;k<8;k+)/*每个字节按位显示*/if(bufferi*2+j»(7-k) & 0x1) != 0)lcd_put_pixel(x+8*(j)+k,y+i,colour);/*显示一位*/s+=2;x+=16;/*下一个汉字*/* 汉字间距 */void Glib_disp_ascii16x8(i nt x,i nt y,char *s,i nt colour) un sig ned char* buffer;un sig ned char temp;un sig ned char shift;int i,j,k;un sig ned char locat

40、i on;while(*s)locatio n=(u nsig ned char)*s-0x20; /*计算字模在文件中地位置*/buffer = &_ASCII8X16locati on *16;for(i=0;i<16;i+)/* 每一行*/temp = * buffer+;shift = 0x80;for(k=0;k<8;k+)/*每个字节按位显示*/if(temp & shift) != 0)lcd_put_pixel(x+k,y+i,colour); /*显示一位*/shift >>= 1;s+=1;/*下一个汉字*/x+=8;/*字符间距*/

41、char akey(void)int row=0;un sig ned char ascii_key, in put_key;for( row = 0; row < 4; row+)*keyboard_port_scan = (0x00000001<<row); /* 将 row 列置低电平*/delay(10000);/* 延时*/in put_key = (*keyboard_port_value) & key_mask;没有按键个干扰*/in put_key) 查表 */*并获取第一次扫描值*厂-con ti nue;/*if(i nput_key = key_

42、mask)*/*延时,再次获取扫描值,如果两次地值不等,则认为是delay(IOOOO);if (*keyboard_port_value) & key_mask) != con ti nue;ascii_key = key_get_char(row, in put_key); /*return ascii_key;void mathlcde(char s)switch(s)case 0: Glib_disp_ascii16x8(x,y,"0",BLUE); x+=8;break;case 1: Glib_disp_ascii16x8(x,y,"1&quo

43、t;,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(

44、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;void mathlcdf(char ascii)switch(ascii)case'O':Glib_

45、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;case3:Glib_disp_ascii16x8(x,y,"3",BLUE);x+=8;break;case'4':Glib_disp_ascii16x8(x,y,"4

46、",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+=

47、8;break;case9:Glib_disp_ascii16x8(x,y,"9",BLUE);x+=8;break;default : break;void clear(i nt x,i nt 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);void clearl(void)delay(IOOOO);int i,j;for(i=0;i<320;i+)for(j=96;j<240;j+)lcd_put_pixel(i,j,WHIT

48、E);int cchma(char s)int i=-1;switch(s)case '0': i=0;break;case 7': i=7;break;case '4': i=4;break;case '1': i=1;break;case '2': i=2;break;case '3': i=3;break;case '5': i=5;break;case '6': i=6;break;case '9': i=9;break;case '8'

49、;: i=8;break;default : i=-1;break;return i;int mli n(i nt m)int n,i=1;for(n=m-1; n> 0; n-)i*=10;return i;void zuobiao(i nt z,i nt j)x=z;y=j;int shuzhi(void)char key;int mun 13,e=0;int i,j=0,k=0,n=0,m=0;while(1)key=akey();if(key=C)m=k;for(i=0;i<k;i+)if(m>0)e+=mun 0i*mli n(m);m-;if(n=1)e=-e;b

50、reak;if(key='D'&& x>16)x-=8;clear(x,y);mun 0k=0;k-;if(k<3)switch(key)case 'O':case '1':case '2':case '3':case '4':case '5':case '6':case '7':case '8':case '9': mathlcdf(key);mun Ok=cchma(key);k+;del

51、ay(500000);break;default:break;return e;char trans_in put(i nt value)if(value = MAX_VALUE) retur n 50;return (char)(value * 50 / (MAX_VALUE-MIN_VALUE); void lcd_disp_graph( un sig ned char *image)un sig ned int x,y;for(y=0;y<SCR_YSIZE;y+)for(x=0;x<SCR_XSIZE;x+) lcd_put_pixel(x,y,*(image+y*SCR_

52、XSIZE+x);void shedi ng(void)int w=0,z=0, m=0,n=0, f=0,u=0,wdd=0,sd=0,gz=0,key=0;in t loop_delay,i=0;int data = 0;int get_i ndex,a=0,b=0;rCLKCON=0x7ff8;while(1)int value;intrADCDAT_TEMP0,rADCDAT_TEMP1,rADCDAT_TEMP2,rADCDAT_TEMP3,rADCDAT_TEMP4,rADCDAT_TEMP5,rADCDAT_TEMP6,rADCDAT_TEMP7; rADCPSR=0x0;dat

53、a = 0;for(get_i ndex = 0; get_i ndex < 32; get_i ndex+)rADCCON=0x1|(0x2<<2);/ AIN2while(!(rADCCON & 0x40);data+=rADCDAT;for(loop_delay=1000; loop_delay; loop_delay-);data /= 32;value = trans_in put(data);wdd= value;z= value / 10;w= value % 10;data = 0;for(get_i ndex = 0; get_i ndex <

54、 32; get_i ndex+)rADCCON=Ox1|(Ox3<<2); / AIN3 while(!(rADCCON & 0x40);data+=rADCDAT;for(loop_delay=1000; loop_delay; loop_delay-);data /= 32;value = trans_in put(data);gz=value;m = value / 10;n = value % 10;sd=(wdd+gz)/2;f = sd / 10;u = sd % 10;for(i=3;i>=0;i-)clear(144+i*8,64);for(i=3;

55、i>=0;i-)clear(128+i*8,0);for(i=3;i>=0;i-)clear(112+i*8,32);zuobiao(128,0);mathlcde(z);zuobiao(144,0);mathlcde(w);zuobiao(144,64);mathlcde(m);zuobiao(160,64);mathlcde( n);zuobiao(112,32);mathlcde (f);zuobiao(128,32);mathlcde(u);clearl();if(wdd<wd) lcd_disp_hzk16(0,96," ",RED);if(wd

56、d>wg) Icd_disp_hzk16(0,96," ",RED);if(sd<sdd) Icd_disp_hzk16(0,128,"控制系统",RED);if(sd>sg)Icd_disp_hzk16(0,128,"控制系统",RED);请注意温度过低!正在加温中请注意温度过咼!正在降温中请注意湿度过低!正在打开湿度请注意湿度过高!正在打开湿度for(loop_delay=10000; loop_delay; loop_delay-);void Mai n(void)lcd_init();/*显示初始化*/lcd_clear_screen(WHITE); /* 清除整个 LCD屏*/double t=0.0;char key=0;while(1)lcd_disp_graph(aca1);key=akey();if(key='1') while(1)Icd_disp_graph(aca2);key=akey();if(key='F'

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论