




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、卑蛀#力*芳 科技学院 综合实验报告 (2015 - 2016 年度第二学期) 名称:嵌入式系统综合实验 题 目温度检测仪开发系统 院系:信息工程系 班 级: 学 号: 学生姓名: 指导教师: 成 绩: 20 LCD显示屏上。 一、实验目的和要求 1、使用温度传感器探测出目标温度,并通过图形方式显示在 如下图 2、当温度超过报警温度时,在LCD屏上显示报警状态,报警温度显示块为红色。 图形实例:当前温度颜色与刻度不同,当前温度为 26度,超过报警温度(设置 为26度),若不超过报警温度颜色自己设定。 50 3、当温度超过报警温度时,通过 PWM控制蜂鸣器实现报警。 4、当温度超过报警温度时,点
2、亮 LED报警灯,让其闪烁持续1s。 5、当温度超过报警温度时,通过串口传送到电脑端。 Glib_Li ne(x2,y1,x2,y2,color); Glib_Li ne(x1,y2,x2,y2,color); Glib_Li ne(x1,y1,x1,y2,color); _ /*/ 函数名称:Glib_FilledRecta ngle 功能描述:在LCD屏幕上用颜色填充一个矩形 传 参:int x1,int y1,int x2,int y2,int color 返回值:无 */ static void Glib_FilledRectangle(intx1,int y1,int x2,int
3、y2,int color) _ int i; for(i=y1;i=y2;i+) Glib_Li ne(x1,i,x2,i,color); _ /*/ 函数名称:Draw_Text16 功能描述:在LCD屏幕上显示一个16*16的汉字 传 参:int x,i nt y,i nt color,汉字点震字符 返回值:无 */ void Draw_Text16(U32 x,U32 y,U32 F_color,U32 BL_color,unsigned char num) unsigned short int i,j; unsigned char mask,buffer; for(i=0;i16;i+
4、) / 上半部分 16 mask=0 x80; / 掩码 buffer=HZK16i*2 + num *32; / 提取一行的第一个字节 for(j=0;j1; 提取一行的第 为笔画上色 mask=0 x80; / 掩码 buffer=HZK16(i*2 +1 ) + num *32;/ 个字节 for(j=0;j1; /*/ 函数名称: Draw_ASCII 功能描述:在LCD屏幕上显示一个8*16的数字或字母 传 参: int x,int y,int color ,汉字点震字符 返 回 值: 无 */ /void Draw_ASCII(U32 x,U32 y,U32 color,const
5、 unsigned char ch) void Draw_ASCII(U32 x,U32 y,U32 Font_color,U32 BL_color,unsigned char num) unsigned short int i,j,number; unsigned char mask,buffer; number = num - 0 x20; for(i=0;i16;i+) mask=0 x80; /buffer=chi; buffer = nAsciiDoti + 16 * number ; for(j=0;j1; /*/ 函数名称: Draw_Text24 功能描述:在LCD屏幕上显示一
6、个24*24的数字或字母 传 参: int x,int y,int color ,汉字点震字符 返 回 值: 无 */ void Draw_Text24(int x,int y,U32 F_color,U32 BL_color, unsigned char num)/ 显示 24*24 汉字 unsigned short int i,j; unsigned char mask,buffer; for(i=0;i24;i+) mask=0 x80; / 掩码 buffer=HZK24i*3 + 72 * num; /提取一行的第一个字节 for(j=0;j1; mask=0 x80; / 掩码
7、buffer=HZK24( i*3 + 1) + 72 * num;/ for(j=0;j1; mask=0 x80; / 掩码 buffer=HZK24( i*3 + 2) + 72 * num;/ 个字节 for(j=0;j1; 函数名称: Draw_ASCII 功能描述: 在LCD屏幕上显示一个8*16的数字或字母 /* 传 参: int x,int y,int color ,汉字点震字符 返 回 值: 无 */ /绘制大小为8X 16的ASCII码 /void Draw_ASCII(U32 x,U32 y,U32 color,const unsigned char ch) void D
8、raw_ASC1224(U32 x,U32 y,U32 F_color,U32 BL_color,unsigned char num) unsigned short int i,j,number; unsigned char mask,buffer; number = num - 0 x20; for(i=0;i24;i+) mask=0 x80; / 掩码 buffer=ASCII24i*2 + 48 * num; /提取一行的第一个字节 for(j=0;j1; mask=0 x80; /掩码 提取一行的第二个字节 为笔画上色 buffer=ASCII24( i*2 + 1) + 48 *
9、num;/ for(j=0;j1; 函数名称: tmrtemp 功能描述: 读取温度 传 参: 无 返 回 值: 无 */ void tmrtemp (void) unsigned char a,b; tmreset(); dmsec(2000); tmwbyte(0 xcc); tmwbyte(0 xbe); a = tmrbyte(); b = tmrbyte(); /复位 /延时 /跳过序列号命令 /发送读取命令 /读取低位温度 /读取高位温度 sdata = a / 16 + b * 16;/整数部分 xiaoshu1 = (a/小数第一位 xiaoshu2 = (a/ 小数第二位 x
10、iaoshu = xiaoshu1*10 + xiaoshu2; /小数两位 函数名称: Beep_On 功能描述: 打开蜂鸣器 蜂鸣器控制口拉高后,蜂鸣器开始工作 传 参: 无 返 回 值: 无 */ void Beep_On(void) GPBDAT |= 0 x01; /*/ 函数名称: Beep_Off 功能描述: 关闭蜂鸣器 蜂鸣器控制口拉低后,蜂鸣器停止工作 传 参: 无 返 回 值: 无 */ void Beep_Off(void) GPBDAT /*/ 函数名称: KeyNum 功能描述: 按键扫描程序 不同的按键按下 有不同的蜂鸣器工作时间返回值 传 参: 无 返 回 值:
11、unsigned char KeyTemp */ unsigned char KeyNum(void) unsigned char KeyTemp; KeyTemp = 0; / 根据按键的不同 蜂鸣器工作时间依次加倍 if (GPFDAT if (GPFDAT if (GPFDAT if (GPFDAT return KeyTemp; /*/ 函数名称: BeepCount 功能描述: 打开蜂鸣器 蜂鸣器控制口拉高后,蜂鸣器开始工作 传 参: 无 返 回 值: 无 */ void BeepCount(unsigned char count) unsigned int time; time =
12、 count * 100; if (time != 0) Beep_On(); Delay(time); Beep_Off(); Delay(time); /*/ 函数名称: BeepCount 功能描述: 打开蜂鸣器 蜂鸣器控制口拉高后,蜂鸣器开始工作 传 参: 无 返 回 值: 无 */ void Settine_Temp() unsigned char keycode; keycode = KeyNum(); / if( keycod ); void LCDmain(void) unsigned char i; unsigned int clour; unsigned char guoc
13、hong; unsigned char Beep_Enabl,keycode; unsigned char KeyLedEnable,Led_Enable,HoldLed; unsigned char KeyEnable; unsigned char HoldBeep; / 锁住蜂鸣器 unsigned char First; short temperature; / Uart_Init(); / Uart_Printf(nTest 320*240 TFT LCD!n); GPBCON = 0 x1dd7fc; / GPB5,GPB6,GPB8,GPB10设置为输出 GPBDAT = (15)
14、|(16)|(18)|(110);/ 使 LED全灭 GPBDAT / 关闭蜂鸣器 GPBUP = 0 x00; GPFCON = 0 x3FFC0C; / GPF0,GPF2,GPF3,GPF4 设置为输出 GPBCON |= 0 x01;/ GPB0 输出有效 GPBUP = 0XFFF; GPFUP = 0XFF; Beep_Off();/ 关闭蜂鸣器 Lcd_Port_Init(); Lcd_Init(); Lcd_PowerEnable(0, 1); Lcd_EnvidOnOff(1); Lcd_ClearScr(CYAN); RTC_Time_Set(); guochong = 0
15、; Beep_Enabl= keycode= Led_Enable =0; / Delay(100); / Glib_Rectangle(50,50,150,150,0 x11111); / Delay(100); / Glib_FilledRectangle(50,50,150,150,0 x11111); /Uart_Printf(nLCD Test OVERn); 显示 for(i = 0; i 5; i+ )Draw_Text24(20+i*24,40,BLUE,CYAN,i);/ 设定温度 for(i = 0; i 2; i+ )Draw_Text24(20+i*24,70,BLAC
16、K,CYAN,i+5);/ 显示当前温度 for(i = 0; i 3; i+ )Draw_Text24(68+i*24,70,BLACK,CYAN,i+2);/ 显示当前温度 Draw_ASC1224(140,40,MAGENTA,CYAN,2); / 为设定的温度值 十位为 2 Draw_ASC1224(152,40,MAGENTA,CYAN,6); / 个位为 6 Draw_ASC1224(164,40,MAGENTA,CYAN,10);/显示小数点 Draw_ASC1224(176,40,MAGENTA,CYAN,0); /表示小数位为 0 则表示 26.0 度 Draw_Text24
17、(188,40,MAGENTA,CYAN,7); Glib_Rectangle(1,138,318,171,BLACK); Glib_Rectangle(2,139,319,172,BLACK); Draw_ASCII(3,173,BLACK,CYAN,0); / Draw_ASCII(33,173,BLACK,CYAN,5); / 显示 0 显示 5 Draw_ASCII(55,173,BLACK,CYAN,1); / Draw_ASCII(63,173,BLACK,CYAN,0); 显示 10 Draw_ASCII(85,173,BLACK,CYAN,1); / Draw_ASCII(93
18、,173,BLACK,CYAN,5); 显示 15 Draw_ASCII(115,173,BLACK,CYAN,2); / Draw_ASCII(123,173,BLACK,CYAN,0); 显示 20 Draw_ASCII(145,173,BLACK,CYAN,2); / Draw_ASCII(153,173,BLACK,CYAN,5); 显示 25 Draw_ASCII(175,173,BLACK,CYAN,3); / Draw_ASCII(183,173,BLACK,CYAN,0); 显示 30 Draw_ASCII(205,173,BLACK,CYAN,3); / Draw_ASCII
19、(213,173,BLACK,CYAN,5); 显示 35 Draw_ASCII(235,173,BLACK,CYAN,4); / Draw_ASCII(243,173,BLACK,CYAN,0); 显示 40 Draw_ASCII(265,173,BLACK,CYAN,4); / Draw_ASCII(273,173,BLACK,CYAN,5); 显示 45 Draw_ASCII(295,173,BLACK,CYAN,5); / Draw_ASCII(303,173,BLACK,CYAN,0); 显示 50 for(i=0; i55; i+ ) if(i%5 = 0) 刻度 刻度 刻度 Gl
20、ib_Line(3+i*6,105,3+i*6,136,BLUE); /0 Glib_Line(4+i*6,105,4+i*6,136,BLUE); /0 else Glib_Line(3+i*6,115,3+i*6,136,BLUE); /0 Glib_FilledRectangle(3,140,319,170,CYAN) ; temperature = 20; while(1) /DS18B20PRO(); /zh(); temperature = DS18B20_Get_Temp(); if(First 500 ) temperature = 200; else First = 100;
21、 LedCounter +; if( LedCounter = 2 ) LedCounter = 0; keycode = KeyNum(); if( keycode = 0 x01) Beep_Enabl = 0; else Beep_Enabl = 1;HoldBeep = 0 x00; if(keycode = 0 x02)Led_Enable = 0; else Led_Enable = 1; HoldLed = 0 x00; if( Beep_Enabl ) Beep_On(); /如果允许蜂鸣器响,则蜂鸣器响 else Beep_Off(); / 否则关闭蜂鸣器 if( Led_E
22、nable ) if( LedCounter = 1 ) GPBDAT |= (15); else GPBDAT else GPBDAT |= (1=260 ) /判断温度,此处判读的温度为 26 度,此处 理已将温度小数位变成整数处理 clour = RED; if( HoldBeep = 0 x00 )Beep_Enabl = 1; if( HoldLed = 0 x00 ) Led_Enable = 1; KeyEnable = 1; KeyLedEnable = 1; if(guochong=0)guochong (temperature / 10)*6,170,BLUE) ; Glib_FilledRectangle(159 26)*6),140,319,170,CYAN) ; Glib_Filled
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 灯具环境友好型设计与绿色制造考核试卷
- 生物质能发电项目的社会影响评估考核试卷
- 生态产品价值实现机制考核试卷
- 石墨矿石的浮选与熔炼过程考核试卷
- 管道工程法律法规与政策考核试卷
- 糖果与巧克力品牌营销经验分享考核试卷
- 山东旅游职业学院《计算机数学》2023-2024学年第一学期期末试卷
- 喀什理工职业技术学院《安全监测技术及实验》2023-2024学年第二学期期末试卷
- 山东艺术设计职业学院《土建工程基础》2023-2024学年第二学期期末试卷
- 山东省聊城市华阳中学2024-2025学年高三保温练习(二)语文试题含解析
- DPtechIPS2000系列入侵防御系统培训胶片课件
- “四不伤害”安全生产专题培训课件
- 阿特拉斯空压机保养课件
- (房屋建筑部分)工程建设标准强制性条文2023年版
- 幼儿园中班语言《小兔子开铺子》课件
- 公司面谈表模板
- 苏教版科学一年级下册第10课形形色色的动物课件25张
- 超声诊断学:局灶性肝病(肝脏占位性病变)
- GB∕T 5019.8-2009 以云母为基的绝缘材料 第8部分:玻璃布补强B阶环氧树脂粘合云母带
- 延期还款申请表
- OSN9800光传输网络解决方案
评论
0/150
提交评论