单片机串口显示流程图温湿度检测

下载费用:8 积分 &
—基于单片机的温湿度检测与控制系统研究.doc 摘要:单片机在检测和控制系统中得到广泛的应用,温、湿度则是系统常需要测量、控制和保持的量。文 中介绍了一种基于 ATA9C51 的单片机的温度和湿度检测与控制的方案,针对被测对象的温度与湿度在不同 变化范围需要不同的 PID 参数的特点,根据检测温度和湿度自动选择合适的一组 PID 参数进行控制的方 案,整个设计简明、清晰。 关键词:单片机 AT89C51; DS18B20 温度传感器; 检测与控制; PID; 看门狗 引言 温、湿度是工业生产中常见的被控参数,温度和湿度己不再是相互独立的量,而应在系统集成中综合考虑。 利用单片机对温、湿度控制,具有控温、湿精度高、功能强、体积小、价格低,简单灵活等优点,很好的 满足了工艺要求。本文介绍了利用 AT89C51 单片机进行温度和湿度的检测及其控制的智能化方法。 1 系统的硬件结构及工作原理 工业中很多装置温度和湿度需要保持在一个既定的温度和湿度值上,本文针对实际需要,设计了一套温度、 湿度闭环检测与控制系统,系统整个硬件结构如图 1: 图 1 系统硬件结构图 系统的工作中,经过温度、湿度检测及变换电路把被测对象的温度、湿度转换成电压信号,该电压信号经 A/D 变换器转换为数字信号后送入单片机中,与给定的对应所要控制的多组温度、湿度值进行比较,找出 现温度、湿度值所在范围,根据单片机 AT89C51 中设置的 PID 参数,输出相应温度、湿度初值对应的受 控对象电机的转速初值,经 D/A 转换器转换为模拟电压,通过信号转化为变频器的频率,控制变频调速 装置,带动被控对象,并且把被控对象的转速经变换电路和 A/D 转换器反馈到单片机中,与输出的转速 初值进行比较,其偏差被 PID 程序计算出后重新输出,在规定的时间内循环,从而实现对温度、湿度的控 制[1] ,直到达到在误差允许的范围内输出的转速值与转速初值相等。对于欠温度,控制加热功率;对于过 温度,控制吹风冷却装置,对于湿度则控制一个加湿、去湿装置 [2] 。 2 硬件系统的组成 2.1 温度传感器的选择 [3] 本系统采用美国 DALLAS 公司生产的单总线数字式温度传感器 DS18B20,由于具有结构简单不需要外接 电路,可用一根 I/0 数据线既供电又传输数据,并且具有体积小,分辨率高,转换快等优点,被广泛用于 测量和控制温度的地方。2.2 湿度传感器的选择 本系统采用的是电容式湿敏传感器 HS1101,电容式湿度传感器的感湿机理是当基于电极间的感湿材料吸 附环境中的水分时,其介电常数也随之变化,其电容量与环境中水蒸汽相对压(PV/P}关系可由下式表示: 电容式湿度传感器实用化程度高,工艺成熟,性能稳定,普遍用于各种情况下湿度测量。 2.3 主控模块单片机的选择 [4] 本系统单片机选用 ATMEL 公司的闪速存储器(flash ROM) 型单片机芯片 AT89C51。AT89C51 是 ATMEL 公司的新一代 8 位的一片机产品,带有 4KROM、128BRAM,最大工作频率 24MHZ,同时,具有 32 条输 入输出线,16 位定时/计数器,5 个中断源,一个串行口;它具有集成度高、系统结构简单,体积小可靠 性高,处理功能强,速度快等特点。 2.4A/D 芯片的选择 本系统采用 Ti 公司的串行 A/D 芯片 TLC2543,A/D 转换电路作为 TLC2543 与单片机的接口电路,它是一 种利用 12 位开关电容逐次逼近模拟信号的模数转换器,片内有 14 位通道。具有 12 位分辨率 A/D 转换口, 在标定转换温度范围内转换时间为 10us,输出数据长度可编程,TLC2543 自带采样、保持电路。所以输 出引脚可以直接与单片机的并行 I/0 口连接。 2.5D/A 芯片的选择 本系统采用带有缓冲基准输入的 10 位电压输出数据的模拟转换器 TLC5615,D/A 转换电路作为 TLC5615 与单片机的接口电路,它具有基准电压两倍的输出电压范围。通过 3 线串行总线和工业标准的微处理器和 微控制器接口,接收 16 位数据字以产生模拟输出。 2.6 报警电路简介 本设计的报警电路由一个自我震荡刑的蜂鸣器,只要在蜂鸣器两端加上超过 3v 的电压,蜂鸣器就会叫个 不停和一个发光二极管组成。设计中蜂鸣器是通过 ULN 2003 达林顿管芯片电流放大 IC 来控制。在要求 的温度、湿度达到一定的上界或者下界时,报警电路开始工作。 2.7 温度、湿度显示电路 本设计中用 4 个 LED 组成显示单元,采用静态显示方式。如图 2 所示, 图 2 温、湿度显示模块图 AT89C51 通过 2-4 译码器对 4 只 MC14495 芯片进行控制。MC14495 的输出端与 LED 数码管的 7 段 a,b,c,d,e,f,g 相连。MC14495 芯片的作用是输入被显示字符的二进制码(或 BCD 码) ,井把他自动转换成相 应的字形码,送给 LED 显示。 图 2 中,4 个输出端口用于输出显示字符的二进制码 (或 BCD 码) 。1 个输出端口用于控制 2-4 译码器工作, 还有 2 个输出口经译码器输出后控制哪一片 MC14495 显示输出,从而直观的看出温度、湿度经过闭环调 节之后的效果值。如我们假定温度上限、下限为 50,0,湿度为 70,30。我们可根据现场检测直观的显示 温、湿度值,超出系统将做报警处理。程序简单思路如下 [5] : #include Void main( ){ int a,b,c,d,e,f,g,g;//设置检测点 a,b 用来检测温度上下限,c,d 检测湿度上下限,e,f,g,h 对应显 示温度与湿度的测量值。 If(a>0b=f;c=g;d=h;//把检测对应连接显示接口,显示温度、湿度值。 else报警} 3 系统软件设计 3.1 数据采集 温度数据的采集经过 DS18B20 独特的功能,直接将采集的数据自动转化为数字量传入单片机,湿度数据 是由传感器测得现场湿度信号经变送器转换成 0~5V 的直流信号,送到 A/D 模数转换器转换成数字量后, 再送入单片机进行数据处理,处理后的数据进入 PID 算法比较做出控制量的选择。3.2 数字滤波当采样过程完成后,要对采样所得的数据进行数字滤波。数字滤波程序用于滤去来自控制现场对采样 值的干扰,数字滤波的算法很多,这里采用中值滤波。中值滤波原理很简单,就是对采样过程中的 n 个 (一般是 3 个)采样值进行比较,取中间值放入指定的存储单元。 3.3 单片机抗干扰电路的设计 在抗干扰方面的许多技术,如设计软件陷阱、加硬件看门狗电路等。若失控的程序进入“死循环”,通常采 用“看门狗” 技术使程序脱离“死循环”。通过不断检测程序循环运行时间,若发现程序循环时间超过最大循 环运行时间,则认为系统陷入“死循环” ,需进行出错处理。“看门狗” 技术大大提高了系统可靠性,本系统 “看门狗”让系统运行更加稳定可靠。 3.4 系统的 PID 控制算法 [6] 控制算法是控制系统的核心部分,是控制系统能否稳定和调节品质是否优良的关键。本系统是一个闭环控 制的单片机直接控制系统(DDC) ,它的工作原理是按照一定的采样周期 T 去
下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。2.下载的文档,不会出现我们的网址水印。
文档加载中……请稍候!
下载文档到电脑,查找使用更方便
8 积分 &&0人已下载
还剩页未读,继续阅读
<a href="UserManage/CopyrightAppeal.aspx?bid=1747125" title="版权申诉" class="fLeft works-manage-item works-manage-report" target="_blank"
关&键&词: 基于单片机的温湿度检测 监测控制 基于单片机 基于单片机的温湿度 基于单片机的温湿度控制系统 基于单片机的温度测量系统 测试与 温湿度 单片机 系统的研究 测量与控制 基于单片机的温湿度测试系统
& 蚂蚁文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
本文标题:—基于单片机的温湿度检测与控制系统研究.doc 链接地址:
当前资源信息
类型: 共享资源
格式: DOC
大小: 147.00KB
上传时间:
&& 广告或垃圾信息
&& 色情、淫秽、低俗信息
&& 反政府、反人类、反社会等反动信息
&& 散布赌博、暴力、凶杀、恐怖或者教唆犯罪等信息
&& 侮辱、诽谤等人身攻击信息
&& 散布谣言、扰乱社会秩序,破坏社会稳定等信息基于单片机的温湿度检测(完稿)_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
享专业文档下载特权
&赠共享文档下载特权
&10W篇文档免费专享
&每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
基于单片机的温湿度检测(完稿)
&&毕业设计
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
&#xe64e;加入VIP
还剩29页未读,
定制HR最喜欢的简历
你可能喜欢关于单片机如何控制湿度传感器以及检测出土壤湿度? - 知乎有问题,上知乎。知乎作为中文互联网最大的知识分享平台,以「知识连接一切」为愿景,致力于构建一个人人都可以便捷接入的知识分享网络,让人们便捷地与世界分享知识、经验和见解,发现更大的世界。7被浏览546分享邀请回答1添加评论分享收藏感谢收起0添加评论分享收藏感谢收起写回答51单片机检测温湿度 - 单片机/MCU论坛 -
中国电子技术论坛 -
最好最受欢迎电子论坛!
后使用快捷导航没有帐号?
51单片机检测温湿度
15:47:07  
怎么把12864F-1改成12864B的显示程序#ifndef _LCD_12864
#define _LCD_12864
/*****************************预定义**************************************/
#define uchar unsigned char
#define uint unsigned int& &
sbit LCD_RST=P0^1;
sbit LCD_SC& & & & =P0^4;
sbit LCD_SI& & & & =P0^3;
sbit LCD_CS& & & & =P0^0;
sbit LCD_A0& & & & =P0^2;
uchar code dis_col=128,dis_page=8;
uchar Simulation=1;& & & & //实物制作时请设置0,仿真测试时请设置1
/***************************12864管脚配置****************************/
/********************************************************************************************
* 函数名称:delayx()
* 功& & 能:延迟时间=a*1ms
* 入口参数:
* 出口参数:无
*********************************************************************************************/
void delayx(unsigned int ms)& & & &
{& & & & & & & & & & & & & & & & & & & & & & & &
& & & & while(ms--)
& & & & & & & & for(j = 0; j & 120; j++);
void LCD_Reset(void)
& &//delayx(50);//delay_ms(10);
& &LCD_RST=0;& & & & & & & & & & & & & & & & & & & & //复位
& &delayx(50);//delay_ms(10);& & & & & & & & & & & & & & & & & & & & //延时 1ms& & & &
& &LCD_RST=1;
& & & & delayx(50);//delay_ms(10);
//*******************************************************************
//送一个字节程序
//*******************************************************************
void SendBit(uchar dat,uchar bitcnt)
& & & & & & & &
& & & & & & & & for(i=0;i&i++)
& & & & & & & & {
&&& & & & & & & & & & & & LCD_SC=0;
&&& & & & & & & & & & & & if(( dat & 0x80 ) == 0)
&&& & & & & & & & & & & & LCD_SI=0;
&&& & & & & & & & & & & & else
&&& & & & & & & & & & & & LCD_SI=1;
& & & & & & & & & & & & LCD_SC=1;
& & & & & & & & & & & & dat=dat&&1;&&
& & & & & & & & }
/********************************************************************************************
* 函数名称:Lcd_Write_Command()
* 功& & 能:写指令代码
* 入口参数:无
* 出口参数:无
*********************************************************************************************/
void Lcd_Write_Command(uchar ctrlcode)
& &LCD_CS=0;
& &LCD_A0=0;
& &SendBit(ctrlcode,8);
& &LCD_CS=1;&&
/********************************************************************************************
* 函数名称:Lcd_Write_Byte()
* 功& & 能:写数据
* 入口参数:无
* 出口参数:无
*********************************************************************************************/
void Lcd_Write_Byte(uchar dispdata)
& &LCD_CS=0;
& &LCD_A0=1;
& &SendBit(dispdata,8);
& &LCD_CS=1;
/********************************************************************************************
* 函数名称:Lcd_Set_X_Y(uchar x, uchar y )
* 功& & 能:LCD设置x y坐标
* 入口参数:x y
* 出口参数:无
*********************************************************************************************/
void Lcd_Set_X_Y(uchar x, uchar y)
& &Lcd_Write_Command(x|0xB0);& & & && && && && && &&&// row address LSB
& &Lcd_Write_Command(y&&4|0x10);& & & & & & & & & & & & & & & && &&&// column address MSB
& &Lcd_Write_Command(y&0x0F|0x00);& & & & & & & & & & & && &&&// column address LSB
/****************************************************************************
*名称:Lcd_Character_16X8( bit bit_flag, uchar x, uchar y, uchar code *point )
*功能:显示16X8字符(字母)& && && &
*入口参数:
*出口参数:
*说明:bit_flag = 1 正常显示&&bit_flag = 0 黑白反相显示
****************************************************************************/
void Lcd_Character_16X8( bit bit_flag, uchar x, uchar y, uchar code *point )
& &uchar i , j,
& &temp=y;
& &if( bit_flag )
& && &for( i=0; i&2; i++ )
& && && &x+=i;
& & & && && &y=
& && && &for( j=0;j&8;j++ )
& && && &{
& && && && &Lcd_Set_X_Y( x, y ); y++;
& && && && &Lcd_Write_Byte( point[ i*8 + j] );&&
& && && &}
& && &for( i = 0; i & 2; i++ )
& && && &x +=
& && && &y =
& && && &for( j = 0; j & 8; j++ )
& && && &{
& && && && &Lcd_Set_X_Y( x, y ); y++;
& && && && &Lcd_Write_Byte( ~point[ i * 8 + j ] );
& && && &}
/****************************************************************************
* 名称:Lcd_Character_16X16( bit bit_flag, uchar x, uchar y, uchar code *point )
* 功能:显示16*16字符(汉字)& && &
* 入口参数:x y data
* 出口参数:无
*说明:bit_flag = 1 正常显示 bit_flag = 0 黑白反相显示
****************************************************************************/
void Lcd_Character_16X16( bit bit_flag, uchar x, uchar y, uchar code *point )
& &uchar i,j,
& &temp=y;
& &if( bit_flag )
& && &for( i=0; i&2; i++ )
& && && &x+=i;
& & & && && &y=
& && && &for( j=0;j&16;j++ )
& && && &{
& && && && &Lcd_Set_X_Y( x, y ); y++;
& && && && &Lcd_Write_Byte( point[ i*16 + j] );&&
& && && &}
& && &for( i = 0; i&2; i++ )
& && && &x +=
& && && &y =
& && && &for( j = 0; j & 16; j++ )
& && && &{
& && && && &Lcd_Set_X_Y( x, y ); y++;
& && && && &Lcd_Write_Byte( ~ point[ i * 16 + j ] );
& && && &}
/****************************************************************************
* 名称:Lcd_Clear(void)
* 功能:清屏& && &&&
* 入口参数:无
* 出口参数:无
****************************************************************************/
void Lcd_Clear()
& &uchar x,y;
& &for(x=0;x&dis_x++)& & & & & & & & & & & & //写dis_page页数据
& && &Lcd_Set_X_Y(x,0);
& && &for(y=0;y&132;y++) & & & & & & & & & & & & //写132列显示数据
& && &Lcd_Write_Byte(0x00);& & & & & & & & & & & & & & & & //写显示数据0x00
/*******************************************************************************************
* 函数名称:Lcd_Initial()
* 功& & 能:初始化LCD
* 入口参数:无
* 出口参数:无
*********************************************************************************************/
void Lcd_Initial()
& &delayx(50);//delay_ms(50);
& &Lcd_Write_Command(0xE2);
& &delayx(50);//delay_ms(50);
& &Lcd_Write_Command(0xAE);& & & & & & & & // set display OFF
& &Lcd_Write_Command(0xA2);& & & & & & & & // set 1/9 Bias
& & & & if(Simulation==0)
& & & & & & & & Lcd_Write_Command(0xA0);& & & && &&&// set ADC=1, SEG output normal direction& & & & & & & &
& & & & & & & & Lcd_Write_Command(0xC8);& & & && &&&// set SHL=1, COM output reverse direction
& & & & else
& & & & & & & & {
& & & & & & & & Lcd_Write_Command(0xA1);& & & && &&&// set ADC=1, SEG output normal direction& & & & & & & &
& & & & & & & & Lcd_Write_Command(0xC0);& & & && &&&// set SHL=1, COM output reverse direction
& &Lcd_Write_Command(0xF8);& & & & & & & & // set booster ratio
& &Lcd_Write_Command(0x00);& & & & & & & & // set 00: 2x,3x,4x,& & & & 01:5x& & & &
& &Lcd_Write_Command(0x25);& & & & & & & & // set 1+Rb/Ra(101),5.5
& &Lcd_Write_Command(0x81);& & & && &&&// Electronic volume mode set
& &Lcd_Write_Command(0x13);/////////////////CH12864F液晶的电源设置//Lcd_Write_Command(0x24);
& &Lcd_Write_Command(0x2C);& & & && &&&// set voltage converter(VC) on
& &Lcd_Write_Command(0x2E);& & & && &&&// set voltage converter(VC&CR) on
& &Lcd_Write_Command(0x2F);& & & & & & & & // set VC & VR & voltage follower on
& &Lcd_Write_Command(0xAF);& & & & & & & & // set display ON
& &Lcd_Write_Command(0x40);& & //set Start Line
& &Lcd_Clear();
/****************************************************************************
* 名称:Lcd_Time(uchar * clock_time )
* 功能:显示时间& && &
* 入口参数:无
* 出口参数:无& && && && && &&&
* 说明& & : 时间数组 BCD 码形式
****************************************************************************/
void Lcd_Time(uchar * clock_time )
& &uchar i=0;
& &//显示& &&hour时min分sec秒&& && && && && && && && && && && && && && &&&
& &i= * clock_time && 4;
& &Lcd_Character_16X8( 1, 2, 80, letter_logo[i]);& & //显示& &sec的高位
& &i= * clock_time & 0x0f;
& &Lcd_Character_16X8( 1, 2, 88, letter_logo[i]);& & //显示& &sec的低位
& &Lcd_Character_16X16( 1, 2, 96 , time_logo[2]);&&//显示& &秒
& &clock_time ++;
& &i= *&&clock_time && 4;
& &Lcd_Character_16X8( 1, 2, 48, letter_logo[i]);& & //显示& &min的高位
& &i= * clock_time & 0x0f;
& &Lcd_Character_16X8( 1, 2, 56, letter_logo[i]);& &//显示& &min的低位
& &Lcd_Character_16X16( 1, 2, 64 , time_logo[1]);&&//显示& &分
& &clock_time ++;
& &i= * clock_time && 4;
& &Lcd_Character_16X8( 1, 2, 16 , letter_logo[i]);& & //显示& &hour的高位
& &i= * clock_time & 0x0f;
& &Lcd_Character_16X8( 1, 2, 24 , letter_logo[i]);& & //显示& &hour的低位
& &Lcd_Character_16X16( 1, 2, 32 , time_logo[0]);&&//显示& &分& && && &
/****************************************************************************
* 名称:Lcd_Data(uchar * clock_time )
* 功能:显示日期& && &
* 入口参数:无
* 出口参数:无& && && && && &&&
* 说明& & : 时间数组 BCD 码形式
****************************************************************************/
void Lcd_Data(uchar * clock_time )
& &uchar i=0;
& &clock_time += 3;
& &//显示& &&year 年 month 月 day 日&& && && && && && && && && && && && && && && && &&&
& &i= * clock_time && 4;
& &Lcd_Character_16X8( 1, 0, 80, letter_logo[i]);&&//显示& &day的高位
& &i= * clock_time & 0x0f;
& &Lcd_Character_16X8( 1, 0, 88, letter_logo[i]);&&//显示& &day的低位&&
& &Lcd_Character_16X16( 1, 0, 96, data_logo[2]); //显示& &日
& &clock_time ++;
& &i= * clock_time && 4 ;
& &Lcd_Character_16X8( 1, 0, 48, letter_logo[i]);&&//显示& &month的高位
& &i= * clock_time & 0x0f;
& &Lcd_Character_16X8( 1, 0, 56, letter_logo[i]); //显示& &month的低位
& &Lcd_Character_16X16( 1, 0, 64, data_logo[1]);& &//显示& &月
& &clock_time ++ ;& &
& &i= * clock_time &&&&4;
& &Lcd_Character_16X8( 1, 0, 16 , letter_logo[i]); //显示& &year的高位
& &i= * clock_time & 0x0f;
& &Lcd_Character_16X8( 1, 0, 24 , letter_logo[i]); //显示& &year的低位
& &Lcd_Character_16X16( 1, 0, 32, data_logo[0]);& &//显示& &年
/****************************************************************************
* 名称:Lcd_Data(uchar * clock_time )
* 功能:显示日期& && &
* 入口参数:无
* 出口参数:无& && && && && &&&
* 说明& & : 时间数组 BCD 码形式
****************************************************************************/
void Lcd_Week( uchar week )
& &Lcd_Character_16X16( 1, 6, 16-8,&&week_logo[7] ); //星
& &Lcd_Character_16X16( 1, 6, 32-8, week_logo[8] ); //期
& &Lcd_Character_16X16( 1, 6, 48-8, week_logo[&&week & 0x0f ] );
/******************************************************************************
* 函数名称: Lcd_Clock( uchar *clock_time )
* 功能: 显示时钟
* 入口参数: 时钟地址
* 出口参数: 无
********************************************************************************/
void Lcd_Clock( uchar * clock_time )
& &Lcd_Data( clock_time ); //显示日期
& &Lcd_Time( clock_time ); //显示时间
/******************************************************************************
* 名称: void Lcd_Lunar_Calendar( uchar * lunch_calendar )
* 功能: 显示农历
* 入口参数: 农力指针
* 出口参数: 无
*******************************************************************************/
void Lcd_Lunar_Calendar( uchar * lunar_canlendar )
& &Lcd_Character_16X16( 1, 4, 16, lunar_calendar_logo[0] );
& &Lcd_Character_16X16( 1, 4, 32, lunar_calendar_logo[1] );
& &//year-mongth-day
& &i= * lunar_canlendar &&&&4;
& &Lcd_Character_16X8( 1, 4, 96, letter_logo[i] ); //农历天的高位
& &i= * lunar_canlendar & 0x0f;
& &Lcd_Character_16X8( 1, 4, 104, letter_logo[i] ); //农历天的低位
& &Lcd_Character_16X8( 1, 4, 88, letter_logo[11] ); //-
& &lunar_canlendar ++;
& &i= * lunar_canlendar &&&&4;
& &Lcd_Character_16X8( 1, 4, 72, letter_logo[i] ); //农历月的高位
& &i= * lunar_canlendar & 0x0f;
& &Lcd_Character_16X8( 1, 4, 80, letter_logo[i] ); //农历月的低位
& &Lcd_Character_16X8( 1, 4, 64, letter_logo[11] ); //-
& &lunar_canlendar ++;
& &i= * lunar_canlendar &&&&4;
& &Lcd_Character_16X8( 1, 4, 48, letter_logo[i] ); //农历年的高位
& &i= * lunar_canlendar & 0x0f;
& &Lcd_Character_16X8( 1, 4, 56, letter_logo[i] ); //农历年的地位
/*******************************************************************************
* 名称: Lcd_Temperature( uchar * temperture )
* 功能: 显示温度
* 入口参数: 温度
* 出口参数: 无
*********************************************************************************/
void Lcd_RH( uchar * RH_Data )
& &uchar i1,i2,i3,i4;
& &i1=RH_Data[0]/10+0x30;//百位数
& &i2=RH_Data[0]%10+0x30;//十位数
& &i3=RH_Data[1]/10+0x30;//百位数
& &i4=RH_Data[1]%10+0x30;//十位数
& &Lcd_Character_16X8( 1, 6, 64, letter_logo[ i1 ] );&&//负温度显示负号:-
& & & & Lcd_Character_16X8( 1, 6, 72, letter_logo[i2] );&&//&&小数位
& & & & Lcd_Character_16X8( 1, 6, 80, RH_logo[1] );& & //& &%
& & & & Lcd_Character_16X8( 1, 6, 96, letter_logo[ i3 ] ); //个位
& &Lcd_Character_16X8( 1, 6, 104, letter_logo[ i4 ] );&&//十位
& & & & Lcd_Character_16X8( 1, 6, 112, RH_logo[2] );& & //& &C & & & &
/***************************************************************************
*名称& & :Lcd_Set_Clock( uchar bit_flag, uchar *point )
*功能& & :显示调整的时间
*入口参数:指针
*出口参数:无
*说明& & :
****************************************************************************/
void Lcd_Set_Clock( uchar temp, uchar *point )
& &bit year_flag = 1;
& &bit month_flag = 1;
& &bit day_flag = 1;
& &bit hour_flag =1;
& &bit minute_flag = 1;
& &bit second_flag = 1;
& &if( temp == 1 ) //滚动到 second
& &&&second_flag = 0;
& &if( temp == 2 ) //滚动到 minute
& && &minute_flag = 0;
& &if( temp == 3 ) //滚动到 hour
& && &hour_flag = 0;
& &if( temp == 4 ) //滚动到 day
& && &day_flag = 0;
& &if( temp == 5 ) //滚动到 month
& && &month_flag = 0;
& &if( temp == 6 ) //滚动到 year
& && &year_flag = 0;
& &Lcd_Character_16X16( 1, 2, 0 , data_time_logo[0] );
& &Lcd_Character_16X16( 1, 2, 16, data_time_logo[1] );
& &point += 5;& & //指向年
& &i = *point && 4;&&
& &Lcd_Character_16X8( year_flag, 2, 40, letter_logo[i] );
& &i = *point & 0x0f;
& &Lcd_Character_16X8( year_flag, 2, 48, letter_logo[i] );
& &Lcd_Character_16X8( 1, 2, 56, letter_logo[11] );
& &point --;& &//指向月
& &//month
& &i = *point &&4;
& &Lcd_Character_16X8( month_flag, 2, 64, letter_logo[i] );
& &i = *point & 0x0f;
& &Lcd_Character_16X8( month_flag, 2, 72, letter_logo[i] );& && &
& &Lcd_Character_16X8( 1, 2, 80, letter_logo[11] );
& &point --;& &//指向日
& &//day& &
& &i = *point &&4;
& &Lcd_Character_16X8( day_flag, 2, 88, letter_logo[i] );
& &i = *point & 0x0f;
& &Lcd_Character_16X8( day_flag, 2, 96, letter_logo[i] );
& &Lcd_Character_16X16( 1, 4, 0, data_time_logo[2] );
& &Lcd_Character_16X16( 1, 4, 16, data_time_logo[3] );
& &point -- ; //指向时
& &i = *point &&4;
& &Lcd_Character_16X8( hour_flag, 4, 40, letter_logo[i] );
& &i = *point & 0x0f;
& &Lcd_Character_16X8( hour_flag, 4, 48, letter_logo[i] );& &
& &Lcd_Character_16X8( 1, 4, 56, letter_logo[10] );
& &point -- ;&&//指向分
& &//minnute
& &i = *point &&4;
& &Lcd_Character_16X8( minute_flag, 4, 64, letter_logo[i] );
& &i = *point & 0
& &Lcd_Character_16X8( minute_flag, 4, 72, letter_logo[i] );
& &Lcd_Character_16X8( 1, 4, 80, letter_logo[10] );
& &point --;& &//指向秒
& &//second
& &i = *point && 4;
& &Lcd_Character_16X8( second_flag, 4, 88, letter_logo[i] );
& &i = * point & 0x0f;
& &Lcd_Character_16X8( second_flag, 4, 96, letter_logo[i] );
/**************************************************************************************
* 名称: Lcd_Function( uchar temp )
* 功能: 滚动显示 时间设置
* 入口参数: 滚动位置
* 出口参数: 无
**************************************************************************************/
void Lcd_Function( uchar temp )
& &bit time_flag = 1;
& &if( temp == 2 ) //滚动到 时间设置
& && &time_flag = 0;
& &//时间设置
& &Lcd_Character_16X16( time_flag, 0, 0, function_logo[0] );
& &Lcd_Character_16X16( time_flag, 0, 16, function_logo[1] );
& &Lcd_Character_16X16( time_flag, 0, 32, function_logo[2] );
& &Lcd_Character_16X16( time_flag, 0, 48, function_logo[3] );
/********************************************************************************/
高级工程师
09:20:09  
这个程序能用的吗?
11:58:58  
支持!!!!!!!!!!!!!!
Powered by
供应链服务
版权所有 (C) 深圳华强聚丰电子科技有限公司

我要回帖

更多关于 温湿度检测工作原理 的文章

 

随机推荐