版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学生课程实践能力考查题目:温度按键设定、显示、报警系统设计学生课程实践能力考查题目:温度按键设定、显示、报警系统设计成绩金阪科扶寧院课程名称:嵌入式系统开发 专业班级:_学生学号: 学生姓名:_考查地点: 考查时长:4小时所属院部:— 指导教师: 20亿一20匹学年 第2学期金陵科技学院教务2017-2018学年第2学期《嵌入式系统开发》实践能力考核班级姓名学号课程名称嵌入式系统开发课程编号01授课时间2018年2月26日--2018年5月4日周学时4学分 2简要评语(从完成情况、是否具备独立开发能力、是否独立完成、编程熟练程度等角度评价。)任课教师签名: 日期:温度按键设定、显示、报警系统设计要求:1、读取DS18B2温度,在液晶上实时显示,并显示上、下限,初始值上限 32,下限26。2、 通过按键可以设置环境温度的上限和下限,WK_l键按下调节上限,再按下调节下限,再按下调节上限 KEY按下加1;KEY按下减1,根据上限和下限判断当前温度有没有超出范围。3、 当温度超过上限,LED1隔1秒亮一次。超过下限,LED2鬲1秒亮一次。(也可自定义报警方式)4、 串口波特率一律用9600bps。液晶显示的信息:STM32testname:xxxxxxxxxMaximumis32C,Minimumis26CThetemperatureis29C,now!(xxxxx是自己的名字拼音)目录:第一章.系统要求设计要求设计方案第二章.硬件设计开发板原理图DS18B20模块按键模块LCD显示模块LED模块第三章.软件设计程序流程图程序部分代码主函数、LED函数温度代码键盘代码第四章.实物效果图第五章.课程总结第一章.设计要求及方案设计要求1、读取DS18B2温度,在液晶上实时显示,并显示上、下限,初始值上限 32,下限26。2、 通过按键可以设置环境温度的上限和下限,WK_l键按下调节上限,再按下调节下限,再按下调节上限 KEY按下加1;KEY按下减1,根据上限和下限判断当前温度有没有超出范围。3、 当温度超过上限,LED隔1秒亮一次。超过下限,LED2鬲1秒亮一次。(也可自定义报警方式)4、 串口波特率一律用9600bps。液晶显示的信息:STM32testname:xxxxxxxxxMaximumis32C,Minimumis26CThetemperatureis29C,now!(xxxxx是自己的名字拼音)设计方案本次课程设计的要求是使用STM32F10设计一个温度测控系统,ALIENTEKMiniSTM32V3版开发板选择的是STM32F103RCT6乍为MCU它拥有的资源包括:48KBSRAM256KBFLASH2个基本定时器、4个通用定时器、2个高级定时器、2个DMA控制器(共12个通道)、3个SPI、2个IIC、5个串口、1个lSB、1个CAN、3个12位ADC、1个12位DAC、1个SDIO接口及51个通用IO口。在本课程中使用了以下部分来完成课程设计的要求:应用DS18B2C进行温度的检测。应用按键模块进行外部的上下限数值设定。应用LED的闪烁进行报警。应用LCD显示实时温度、上下限等信息。第二章.硬件设计21开发板原理图详解2AA1MCUALIENTEKMiinSTXB?V5版开发板进茸的是STM37FI0SRCT6卡人MCU.它鸠右r期资源包君;4SKBSRAMs256KBFLASH.2个基本走时器、千亍迪弓定幷器、2个高级定时器、2个DMA控甘器(A12个通道人3个SP1-.1个UC\5个串口r1个USiU、1个CAN.3个12隹ADC,1个12位DAG1个呂DIO接口段51个適用和口$谏芯片性价比戟高.MCU部分馆原理^^^2.1.1.1(圉为.垠姓国比较大,缩•小卜来口能有点耆■卜清,请大彖打廿卄友核光盘的匝理圈进行查看)所示.%、:MjWqMLUHliuuca4CLVVnMLVSill匸twPf~rCI9JLNT|iftI4I-ML・h-hLMLV4计粘pM.^r.T.1ftH**.WIIIT!WI,%、:MjWqMLUHliuuca4CLVVnMLVSill匸twPf~rCI9JLNT|iftI4I-ML・h-hLMLV4计粘pM.^r.T.1ftH**.WIIIT!WI,I'•h1卜.FJ 1nXTr,■iriir?忡q»-.2Tk-|lw3_k-:・KUi,mvBsfXIx&JMffccJ»■tqppjEl"IM-叫IA:匸阳TB:ifKiAIMh'vlUA!r13Xi>FAJ-iW^LQ'AULJIDfiJkilltn.IIM5kill讥•心[50匕<r阳l&FC)fL亂巧rnthrRTTw1rnnvrmUjyjJLJUX’im?亡魁TUQtiMIM■-WMEjwi.uriPAi卄Peicer、9hMi r*it^ajVi. L址皿iiwju>“-in/wi/W%1ALtH・SLi*■乙m拦PI74-W14Fl*>AUr0\W1HMFCUTD11€KZ¥mi.<kdiiMmuiiLmia理■. IT谒b5J也■SMM13.1IMttW012补T.tM11B4JFlrlOfIJH4W«#iyzKhmnmtiTi眄mmp*i-n»--M!uidMuu□£IVJTIKrJ£QLVykci1!nv4j厘«IIV4HWtR:U・i甲.wMfMW 灯申•■•冇賣们E:置%WVMMMVMlpnwt4”>u« fn•第frVlun-LB/fi\[叶g忙TMlCN1UOH;»EM档WK1.^1kftlrailN?M3D>E>IrttTETirx'ra*inorscPBD-wfMwiJ^rAcji^RIH11MH?甘HT利CKTVMENJim:亍1:■-ZL1:"x-rT^:7m2SF訂BiU:1L£BElR.|TLfflS*ln》trfift图211-1MCU部分IK理图上图中中上部的BOOri用于设置STM32的启动方弍'其时应启幻棋式如下表所示;BCOTOB)OH启劫模式翊户刀存存腸器说明BCOTOB)OH启劫模式翊户刀存存腸器说明用户闪存存诸器,也就是FLASH启动系统存储器启动,坤丁帯口下戟茨削启就,坯干在0愆』屯调:式代阳表2.1.11SOOTO<BOOT1官茁樓式表DS18B20设计
DS1BB20星由DALLAS半孚牡公司推出的一种的妊一线意践刀接口的温度宿廉券.勺传统的热敘电宙尊演逛元件崔比.它是一种新型的体枳小、活用电压宽、坦微赴翌器接口简坦的数字化逞度传整器.一鏡总竣结构旦有制洁且经济的特盘・可使用户轻松地组倉传感器网绪*从而为测量靈蜒的橹連剔入全新祗老,利■:湿度范BS为-桁—IMP#材度为士0上1C.现场i&黄倉接以“一談总线片的数字方式挎输*大大提离了廉统的抗干扰性*它龍直接读出被测厦置*并且可根据实麻要茨通过簡单的编程实现442烷的数字值读数方式.它H作在3^5.5V的电压転曲.采用雾种封越形式,賦M惶羞统设计灵活、方便「设定分鱗率及用户设崑的按警温康存哺在EEPROM中,抻电佶依撚保存*越内Sf菇构如国2&11所示:ko64#RDM*1工1ko64#RDM*1工1v»..®Z5I1DSUB20A京毕回医■■AA#AB«4<4■■■"■'J存脾-~{gtiCRCJKS阳雯用封的谨伴资俾曲下:1)活示灯DM2)TFTLCDW块3)DS1阳20泻医咚雪翱前產药分,在之前的实列已经介绍过了,ISDS18B20SS传感垂疇于外菲垂件(阪上没有直按犀按》,佢是在我们开发校上是育DS18B20按=1(U6)的,豆按播上DS18B20即可使审*下面,我们弁绍幵发稅上DS18B20接口和STH32的连畫电路,如匡2821昕示:團28.2.1DSl^R20接□与STKB2抽博接申略嵐从上图可以看出丫戏忙使冃的是STM32的P3来连接D$】8B】0的(U6)的DQ引輒圉中U百为DS13D3的捲口竹胃凰孔圭)<将DS18U20传籐器插入封这个上而「并用跳找帽晅揍1320^PA0.就可以3S5TM32来读取DS1SB20 连揍示意宙加圧2822所示:按键模块
ALIENTEKMiniSTM32开发板总共有3个按键,其原理图如下:KEYO和贰斤刃用作昔通按邀输入.分别谨接在PC和PA15托中PAL3和JT1JI共弔了,所乩在使KEYO+:KEY1 就弟能使申TTAG来潤試了:但是壬臥目£WD谓试,这点在使冃的时候聲注意*KEYO和KEY1还PS-2的DAT和CLK线共毛*WK-【IP按犍连蚕至LP&&™忙前WKUP引脚人它蓬了可以用作普逍諭入按链歹卜,还可以用作STM32的啖匪输入.该按灘是高电平触发的.由于R40还是DS1SB20的输入引脚』而1苦BMO是有二拉电咀的,祈哄在使屯\VKUP按键的时候,渣一定箜斷卄PAD和D呂诣E20的LCD显示模块ALIENTEKMinjSTM32升发板载脊目前比较通用的液晶显示模块接口,述有其比较會特亞的兼容性按口,干仅支持ALIEKrEK各种尺寸(2.4,2.8>5.5.4.3,"寸等)的TFTLCD,还支持OLEDa^s.同时,谨接□支持电电触摸弄H厶:电容触摸弃寻不同类型的尬摸屏接口,其原理圖如下;圈工2」液晶辰示槓块原連圈TFr_LCD是一个適至的液品嘆块援口.OLED是一个给OLED竝示摸块供电的按口”它和TFT_L「D拼接在一起*刍使用TFTLCT1时,我l:^^JTFT^LCD±《壽石插》就可隈了,E当我忙使用AL1LJNTLK的OLED銀块时,则捷OLLD挂讨做电鴻,祠时会连噎到¥!■T_LCD上*靠左插〉的部分管舟.从而实现QLED与MCU连接。ALIENTBKMiniSTM32的LCD接口isALIENTEK各种尺寸的丁FTLCD模块一.2.4寸卩2EW电阻屛)-2启寸(320*240,电題屏几寸(4fiO*32.O,电阻屏九43寸(S00*4R0・电容辟》、7—(8Or)*4R0.电容腭〕等,同时还兼容ALIMNTEK的096寸OLED蟆块这些引脚与MCU的连按关系我们在这里就不 列出了,大家可凶从MCU的原理圈上找到.LED模块
ALIEN!LKMin]SPALIEN!LKMin]SPlM:;2幵发柢上总共自S牛LEU・其原理屋如卜:其中PWR是开发板电源指示灯,为蓝色。LEDO和LED1分别接在PA8和PD2上,PA8还可以通过TIM1的通道1的PWM输出来控制DS0的亮度。为了方便大家判断,我们选择了DS0为红色,DS1为绿色的LED灯。第三章.软件设计程序流程图按键设定模块温度显示及报警模块
按键设定模块谁妊卜同KFV1tnKFV25S1KLS'lZIllkivs^n忖谁妊卜同KFV1tnKFV25S1KLS'lZIllkivs^n忖HfJFn-r程序部分代码主函数、#include""#include""#include""#include""#include""#include""#include""#include<>#include<>#include<>inttemp_low=22;inttemp_high=32;intzanshi_low=0;intzanshi_hign=0;voidTIM3_Int_Init(u16arr,u16psc){TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;NVIC_InitTypeDefNVIC_InitStructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);Cnow");LCD_ShowChar(0+25*8,110,',',16,0);LCD_ShowChar(0+29*8,110,'!',16,0);while(1){POINT_COLOR=BLUE;1dC",temperature/10,temperature%10);LCD_ShowString(0,110,200,16,16,shuzu);}delay_ms(10);//判断温度zanshi_low=temp_low*10;zanshi_hign=temp_high*10;if((temperature<zanshi_low)||(temperature>zanshi_hign)){if(temperature<zanshi_low){flag=1;printf("chaoxiaxian");}if(temperature>zanshi_hign){flag=2;printf("chaoshangxian");}}else{flag=0;LED0=1;//正常情况灯不亮LED1=1;//获取温度时间控制tt++;//浏览开关KEY_Init();delay_ms(10);keyvalue=KEY_Scan(0);if(keyvalue!=0){if(keyvalue==3){gaibianshui=(gaibianshui+1)%3;}if(gaibianshui==1)//改变上限{if(keyvalue==2)//key1按下{temp_high++;memset(shuzu,0,20);sprintf(shuzu,"Maxis%2dC,Minis%2dC",temp_high,temp_low);LCD_ShowString(0,90,200,16,16,shuzu);}if(keyvalue==1)//key0按下{temp_high--;memset(shuzu,0,20);sprintf(shuzu,"Maxis%2dC,Minis%2dC",temp_high,temp_low);LCD_ShowString(0,90,200,16,16,shuzu);}}if(gaibianshui==2)//改变上限{if(keyvalue==2)//key1按下{temp_low++;memset(shuzu,0,20);sprintf(shuzu,"Maxis%2dC,Minis%2dC",temp_high,temp_low);LCD_ShowString(0,90,200,16,16,shuzu);}if(keyvalue==1)//key0按下
temp_low--;memset(shuzu,0,20);sprintf(shuzu,"Maxis%2dC,Minis%2dC",temp_high,temp_low);}}temp_high,temp_low);}}keyvalue=0;}LCD_ShowString(0,90,200,16,16,shuzu);voidTIM3_IRQHandler(void)//TIM3中断{if(TIM_GetITStatus(TIM3,TIM_IT_Update)!=RESET)// 检查指定的TIM中断发生与否:TIM中断源{TIM_ClearITPendingBit(TIM3,TIM_IT_Update);//清除TIMx的中断待处理位:TIM中断源//温度不正常处理灯if(flag==1){LED0=!LED0;}if(flag==2){LED1=!LED1;}}}LED函数#include""voidLED_Init(void){GPIO_InitTypeDefGPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOD,ENABLE//);使能PA,PD端口时钟=GPIO_Pin_8; //LED0-->端口配置=GPIO_Mode_Out_PP; //推挽输出//根据设定参数初始化//输出高=//根据设定参数初始化//输出高GPIO_Init(GPIOA,&GPIO_InitStructure);GPIO_SetBits(GPIOA,GPIO_Pin_8);=GPIO_Pin_2; //LED1-->GPIO_Init(GPIOD,&GPIO_InitStructure);50MHzGPIO_SetBits(GPIOD,GPIO_Pin_2);=GPIO_Pin_2; //LED1-->GPIO_Init(GPIOD,&GPIO_InitStructure);50MHzGPIO_SetBits(GPIOD,GPIO_Pin_2);端口配置,推挽输出//推挽输出,10口速度为//输出高温度代码#include""#include""voidDS18B20_Rst(void){DS18B20_I0_0UT();//SETPA00UTPUTDS18B20_DQ_0UT=0;//拉低DQdelay_us(750);//拉低750usDS18B20_DQ_0UT=1;//DQ=1delay_us(15);//15US}//等待DS18B20的回应//返回1:未检测到DS18B20的存在//返回0:存在u8DS18B20_Check(void){u8retry=0;DS18B20_I0_IN();//SETPA0INPUTwhile(DS18B20_DQ_IN&&retry<200){retry++;delay_us(1);};if(retry>=200)return1;elseretry=0;while(!DS18B20_DQ_IN&&retry<240){retry++;delay_us(1);};if(retry>=240)return1;return0;}//从DS18B20读取一个位//返回值:1/0u8DS18B20_Read_Bit(void) //readonebit{u8data;DS18B20_IO_OUT();//SETPA0OUTPUTDS18B20_DQ_OUT=0;delay_us(2);DS18B20_DQ_OUT=1;DS18B20_IO_IN();//SETPA0INPUTdelay_us(12);if(DS18B20_DQ_IN)data=1;elsedata=0;delay_us(50);returndata;}//从DS18B20读取一个字节//返回值:读到的数据u8DS18B20_Read_Byte(void)//readonebyte{u8i,j,dat;dat=0;for(i=1;i<=8;i++){j=DS18B20_Read_Bit();dat=(j<<7)|(dat>>1);}returndat;}//写一个字节到DS18B20//dat:要写入的字节voidDS18B20_Write_Byte(u8dat){u8j;u8testb;DS18B20_IO_OUT();//SETPA0OUTPUT;for(j=1;j<=8;j++){testb=dat&0x01;dat=dat>>1;if(testb){DS18B20_DQ_OUT=0;//Write1delay_us(2);DS18B20_DQ_OUT=1;delay_us(60);}else{DS18B20_DQ_OUT=0;//Write0delay_us(60);DS18B20_DQ_OUT=1;delay_us(2);}}}//开始温度转换voidDS18B20_Start(void)//ds1820startconvert{DS18B20_Rst();DS18B20_Check();DS18B20_Write_Byte(0xcc);//skipromDS18B20_Write_Byte(0x44);//convert}//初始化DS18B20的10口DQ同时检测DS的存在//返回1:不存在//返回0:存在u8DS18B20_Init(void){GPI0_InitTypeDefGPI0_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//使能PORTA口时钟=GPI0_Pin_2; //P0RTA0推挽输出=GPIO_Mode_Out_PP;=GPIO_Speed_50MHz;GPIO_Init(GPIOA,&GPIO_InitStructure);GPIO_SetBits(GPIOA,GPIO_Pin_2);//输出1DS18B20_Rst();returnDS18B20_Check();}//从ds18b20得到温度值//精度://返回值:温度值(-550~1250)shortDS18B20_Get_Temp(void){u8temp;u8TL,TH;shorttem;DS18B20_Start();//ds1820startconvertDS18B20_Rst();DS18B20_Check();DS18B20_Write_Byte(0xcc);//skipromDS18B20_Write_Byte(0xbe);//convertTL=DS18B20_Read_Byte();//LSBTH=DS18B20_Read_Byte();//MSBif(TH>7){TH=~TH;TL=~TL;temp=0;//温度为负}elsetemp=1;//温度为正tem=TH;//获得高八位tem<<=8;tem+=TL;//获得底八位tem=(float)tem*;//转换if(temp)returntem;//返回温度值elsereturn-tem;}键盘代码#include""#include""//按键初始化函数//PA15和PC5设置成输入voidKEY_Init(void){GPIO_InitTypeDefGPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC,ENABLE);//使能PORTA,PORT时钟GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);//关闭jtag,使能SWD可以用SWD模式调试=GPIO_Pin_15;//PA15=GPIO_Mode_IPU;//设置成上拉输入GPIO_Init(GPIOA,&GPIO_InitStructure);// 初始化GPIOA15=GPIO_Pin_5;//PC5
=GPIO_Mode_IPU;//设置成上拉输入GPIO_Init(GPIOC,&GPIO_InitStructure);//初始化GPIOC5=GPIO_Pin_0;//PA0=GPIO_Mode_IPD;//PA0设置成输入,默认下拉GPIO_Init(GPIOA,&GPIO_InitStructure);//初始化}//按键处理函数//返回按键值//mode:0,不支持连续按;1,支持连续按//返回值://0,没有任何按键按下,KEY0>KEY1>WK_UP!!按键按松开标志支持连按〃KEYO_PRES,KEY0按下〃KEY1_PRES,KEY1按下//WKUP_PRESWK_U按下//注意此函数有响应优先级u8KEY_Scan(u8mode){,KEY0>KEY1>WK_UP!!按键按松
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版授权合同续签及运营权调整协议3篇
- 二零二五年度车辆抵押评估服务合同3篇
- 二零二五年度城市绿地租赁合同示范文本4篇
- 2025机械外加工合同协议书模板
- 二零二五年度车棚光伏发电系统设计与施工合同4篇
- 2025单方合同范本
- 二零二五年度高端电子产品采购与专业运输合同范本3篇
- 二零二五年度海南鲜品线上销售渠道建设合同2篇
- 二零二五年度存量房购买房屋维修保养合同3篇
- 二零二四年智慧农业债权债务担保合同3篇
- 盘式制动器中英文对照外文翻译文献
- 社会系统研究方法的重要原则
- 重症医学科健康宣教手册
- 2022版《义务教育英语课程标准》解读培训课件
- 科技进步类现代轨道交通综合体设计理论与关键技术公
- 五个带头方面谈心谈话范文三篇
- 互联网的发展历程
- 部编人教版五年级道德与法治下册全册课件(完整版)
- 广西贵港市2023年中考物理试题(原卷版)
- 外观质量评定报告
- 窒息的急救解读课件
评论
0/150
提交评论