版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、山东大学嵌入式系统课程报告名号院业级2015年11月25日目录目录2课程概述31 .官方定义32 .个人理解3项目经历4课程实验4实验目的4实验过程5扩展实验7自动刹车灯7附录8智能插座项目代码8课程概述1 .官方定义IEEE对嵌入式系统的定义:“用于控制、监视或者辅助操作机器和设备的装置”。嵌入式系统是一种专用的计算机系统,作为装置或设备的一部分。通常,嵌入式系统是一个控制程序存储在ROM中的嵌入式处理器控制板。事实上,所有带有数字接口的设备,如手表、微波炉、录像机、汽车等,都使用嵌入式系统,有些嵌入式系统还包含操作系统,但大多数嵌入式系统都是由单个程序实现整个控制逻辑。从应用对象上加以定义
2、,嵌入式系统是软件和硬件的综合体,还可以涵盖机械等附属装置。国内普遍认同的嵌入式系统定义为:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。2 .个人理解虽然听说嵌入式这个词挺早的,大一刚开学就听学长学姐提到过,但是真正开始做一个嵌入式的项目的时候我基本上是带着纯软件的眼光去看的,感觉除了需要考虑这个程序所要运行的机器的性能,比如最基本的延迟,之外,好像也没什么特别的。我第一个项目是用GSM模块和51单片机做的手机控制电源,大概就是下面这个模型。使用51作为命令发出者和状态判决者对两个模块进行控制。该项目程序源码见附录。当
3、时跟着厂家的示例程序和注释猜变量的作用和运行流程,加上代码长度有限制,最后勉强算是完成了功能。中间出现过很多奇怪的问题,有一些是硬件本身的问题,比如天线接触不好,必须固定在一个角度才能初始化成功,还有一些特别莫名其妙的问题,有时候程序运行就是老是跳过某一句话,实际调试的时候就特别崩溃,有时候考虑数据还。当时也学了GUI编程,然后就特别感慨,给我3天我能完成一个小软件的大部分进度,但是3天时间我连一个硬件问题都找不出来。后来大二下学了微机原理,然后才明白整个流程是怎么样的,尤其是当时讲中断的时候,我觉得就像发现新大陆一样,当时学期末做的那四个实验我觉得都特别有意义,我把AD转换传送到数码管上连续
4、显示的时候,老师告诉我可以利用视觉残留进行即时的连续变化,调好延时的时间间隙就可以了,做出来确实是这样的。我觉得嵌入式编程的过程式思维还是很符合一般人的思维习惯的,只不过需要考虑实际运行环境,条件不那么宽松。项目经历2014哈工大山大联赛校级二等奖2015基于GSM模块的智能插座课程实验实验目的实现使用SysTick以及三个按键控制三只LED灯的闪烁效果:1.程序启动,没有按键按下时,三只灯依靠SysTick中断有规律亮灭。2.当三个按键中其中一个按下时其余两只灯全部熄灭,只有对应的LED灯长亮。实验过程在main初始化的时候加一句while(SysTick_Configuration(720
5、0000)!=0);定时就能启动滴答时钟,系统每过1ms即进入一次stm32f10x_it.c中的SysTick_Handler()函数。在中断向量表中查找到SysTick_Handler(),对它进行修改。即完成了无按键输入时LED的有规律亮灭。* briefThisfunctionhandlesSysTickHandler.* paramNone* retvalNone* /voidSysTick_Handler(void)Led_Turn_on_all();Delay(3000000);Led_Turn_off_all();Delay(3000000);下面实现按键响应。在Interru
6、ptConfig()中可以找到按键响应的中断号,在侧栏的startup中可以找到中断向量表,从中找到本函数中用到的GPIO_KEY1_EXTI_IRQ即EXTI9_5_IRQn于是我们找到了关键的中断处理函数,将它按照要求进行修改。即完成功能2。,* FunctionName:EXTI9_5_IRQHandler* Description:ThisfunctionhandlesExternallines9to5interruptrequest.* Input:None* Output:None* Return:None*,voidEXTI9_5_IRQHandler(void)/*Key*/i
7、f(EXTI_GetITStatus(EXTI_Line5)!=RESET)Led_Turn_off_all();Led_Turn_on_1();/*CleartheEXTILine5*/EXTI_ClearITPendingBit(EXTI_Line5);if(EXTI_GetITStatus(EXTI_Line6)!=RESET)Led_Turn_off_all();Led_Turn_on_2();/*CleartheEXTILine6*/EXTI_ClearITPendingBit(EXTI_Line6);if(EXTI_GetITStatus(EXTI_Line7)!=RESET)Le
8、d_Turn_off_all();Led_Turn_on_3();/*CleartheEXTILine7*/EXTI_ClearITPendingBit(EXTI_Line7);扩展实验自动刹车灯自动刹车灯是一个小巧的电路板,在刹车减速时自动亮起。可以将其安装在自行车上,用于警示其他车辆和行人。自动刹车灯由电池供电并使用内置加速度传感器。原件:STM32两LED灯,两个红色LED加速度传感器使用方法自动刹车灯共有两个工作模式:刹车灯模式和警示灯模式。启动后自动进入警示灯模式,两种模式下加速度传感器的参数不同,但在静止时设备都会自动休眠,可以通过按键唤醒。设备使用两节5号电池供电。刹车灯模式:设
9、备当作自动刹车灯使用时应当使用扎带等方式固定于自行车座椅下或后轮货架上。固定完成后将开关调至ON端,在之后的使用中可以不必关闭。自动刹车灯在车辆静止30秒之后自动休眠,在监测到连续震动之后自动唤醒。工作时,如果没有监测到刹车,自动刹车灯左右两个LED均以低亮度显示黄色。当车辆刹车时,自动刹车灯的四只LED均以高亮显示红色。警示灯模式:设备工作于警示灯模式下时,会依次以渐强和渐弱的形式点亮各LED,显示警示灯的效果。这种模式下加速度传感器不工作。作用是在晚上可以提醒后方的车辆前面有自行车行驶。STM32供电,在检测到反向加速度时,向 STM32输出一个电平触发相实验构想加速度传感器使用应引脚的中
10、断处理程序,该中断处理程序将红色LED所在引脚输出低电平,即点亮红色警示灯。附录智能插座项目代码#include<reg52.h>#include<intrins.h>#include<string.h>#include<stdio.h>#defineuintunsignedint#defineucharunsignedchar#defineMAXCHAR81sbitLED0=P2A0;sbitLED1=P2A1;sbitLED2=P2A2;sbitLED3=P2A3;/sbitLED4=P2A4;/sbitLED5=P2A5;/sbitLED6
11、=P2A6;/sbitLED7=P2A7;sbitOutJIDIANQI1=P2A7;sbitOutJIDIANQI2=P2A6;sbitOutJIDIANQI3=P2A5;sbitOutJIDIANQI4=P2A4;/sbitJIDIANQI=P1、0;sbitSend_ENGLISH_key=P3A2;sbitSend_CALLING_key=P3A3;ucharaaMAXCHAR;charSendCurCondition4;charSendResult9;inti=1;codeucharAT00="AT'r'n"codeucharATCN尸"
12、AT+CNMI=2,1rn"codeucharCMGF1="AT+CMGF=1rn"/发英文TEXT短信按键/打电话按键/握手检测/短信设置1短信设置2中午codeucharCMGR12="AT+CMGR=1rn"/读短信/删除短信codeucharCMGD12="AT+CMGD=1rn"#defineCALL_YOU_TELNUMBER"ATr'n"#defineSEND_MESSA_TO_YOUR"at+cmgs="quot
13、;rn"#defineSEND_MESSA_CONTENT"”uchara,j=0,flag=0;intg_timeout=0;voiddelay(uintms)/延时子程序uchari;while(ms-)for(i=0;i<120;i+);/*函数名称:Print_Char函数功能:发送单个字符入口参数:ch出口参数:无*voidPrint_Char(ucharch)/发送单个字符SBUF=ch;/送入缓冲区while(TI!=1);等待发送完毕TI=0;软件1#零/*函数名称:Print_Str函数功能:发送字符串入口参数:*str出口参数:无*/*voidPr
14、int_Str(uchar*str)/发送字符串while(*str!=''0')Print_Char(*str);delay(2);str+;/*函数名称:Ini_UART函数功能:串口初始化、定时器初始化入口参数:无出口参数:无*/void Ini_UART(void)串口初始化、定时器初始化SCON = 0x50 ;/SCON: serail mode 1,8-bit UART, enable ucvr/UART为模式,8位数据,允许接收TMOD|=0x20;TMOD:timer1,mode2,8-bitreload/定时器1为模式2,8位自动重装PCON|=0x
15、80;SMOD=1;TH1 = 0xFA ;/Baud:19200fosc="11".0592MHzTL1=0xFA;IE |= 0x90 ;/EnableSerialInterruptTR1 = 1 ;/ timer 1 runTI=1;ES=1;void clearBuff(void)for(j=0;j<MAXCHAR;j+)aaj=0x00;j=0;intHand()delay(10);if(strstr(aa,"OK")!=NULL)/检测单片机和模块的连接g_timeout=0;return1;if(g_timeout>50)g_t
16、imeout=0;return-1;g_timeout+;return0;void AT(void)/初始化程序clearBuff();Print_Str(AT00);delay(50);while(strstr(aa,"OK")=NULL)delay(50);LED1=0;clearBuff();Print_Str(AT00);Print_Str(CMGF1);delay(50);Print_Str(ATCN);delay(50);Print_Str(CMGD);delay(50);LED2=0;voidsend_english()chara1='0',a
17、2='0',a3='0',a4='0'if(OutJIDIANQII)a1='1'if(OutJIDIANQI2)a2='1'if(OutJIDIANQI3)a3='1'if(OutJIDIANQI4)a4='1'SendCurCondition0=a1;SendCurCondition1=a2;SendCurCondition2=a3;SendCurCondition3=a4;clearBuff();Print_Str(CMGF1);delay(100);Print_Str(SEN
18、D_MESSA_TO_YOUR);delay(300);Print_Str(SendCurCondition);/发短信内容delay(10);Print_Char(0x1A);/发送结束符号delay(10);clearBuff();voidsend_result()chara1='0',a2='0',a3='0',a4='0'if(OutJIDIANQII)a1='1'if(OutJIDIANQI2)a2='1'if(OutJIDIANQI3)a3='1'if(OutJIDIAN
19、QI4)a4='1'SendResult0=a1;SendResult1=a2;SendResult2=a3;SendResult3=a4;SendResult4=''SendResult5=''SendResult6='O'SendResult7='K'SendResult8='0'clearBuff();Print_Str(CMGF1);delay(100);Print_Str(SEND_MESSA_TO_YOUR);delay(300);Print_Str(SendResult);/发短信内容
20、delay(50);Print_Char(0x1A);/发送结束符号delay(10);clearBuff();voidmain()OutJIDIANQI1=1;OutJIDIANQI2=1;OutJIDIANQI3=1;OutJIDIANQI4=1;LED0=0;delay(500);Ini_UART();/初始化串口delay(500);AT();/初始化模块Send_ENGLISH_key=1;/发英文TEXT短信按键clearBuff();Print_Str(CMGD);while(Hand()=0)LED2=0;LED1=0;LED0=0;clearBuff();while(1)LE
21、D3=0;LED2=0;LED1=0;LED0=0;if(Send_ENGLISH_key=0)/发英文TEXT短信按键send_english();if(strstr(aa,"+CMTI")!=NULL)/?+CMTI?/LED7=0;clearBuff();delay(50);Print_Str(CMGR);delay(100);if(strstr(aa,"ask")!=NULL)/iA=1;/LED6=i;send_english();delay(100);clearBuff();Print_Str(CMGD);delay(50);while(Ha
22、nd()=0);clearBuff();elseif(strstr(aa,"0000")!=NULL)/LED7=1;OutJIDIANQI1=0;OutJIDIANQI2=0;OutJIDIANQI3=0;OutJIDIANQI4=0;if(strstr(aa,"0001")!=NULL)OutJIDIANQI1=0;OutJIDIANQI2=0;OutJIDIANQI3=0;OutJIDIANQI4=1;if(strstr(aa,"0010")!=NULL)OutJIDIANQI1=0;OutJIDIANQI2=1;OutJIDI
23、ANQI3=0;OutJIDIANQI4=0;if(strstr(aa,"0011")!=NULL)OutJIDIANQI1=0;OutJIDIANQI2=0;OutJIDIANQI3=1;OutJIDIANQI4=1;if(strstr(aa,"0100")!=NULL)OutJIDIANQI1=0;OutJIDIANQI2=1;OutJIDIANQI3=0;OutJIDIANQI4=0;if(strstr(aa,"0101")!=NULL)OutJIDIANQI1=0;OutJIDIANQI2=1;OutJIDIANQI3=0;O
24、utJIDIANQI4=1;if(strstr(aa,"0110")!=NULL)OutJIDIANQI1=0;OutJIDIANQI2=1;OutJIDIANQI3=1;OutJIDIANQI4=0;if(strstr(aa,"0111")!=NULL)OutJIDIANQI1=0;OutJIDIANQI2=1;OutJIDIANQI3=1;OutJIDIANQI4=1;if(strstr(aa,"1000")!=NULL)OutJIDIANQI1=1;OutJIDIANQI2=0;OutJIDIANQI3=0;OutJIDIANQI4=0;if(strstr(aa,"1001")!=NULL)O
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中国科大研究生院劳务派遣岗位招聘备考题库及1套完整答案详解
- 游戏策划师面试问题集及答案
- 2025年南京市恒丰银行南京分行社会招聘14人备考题库完整答案详解
- 2025年四川现代种业集团科技创新中心有限公司分公司及权属企业招聘备考题库带答案详解
- 2025年石嘴山市大武口区教师招聘考试参考题库及答案解析
- 2025年台州学院编制外合同工招聘备考题库附答案详解
- 2025年昆明市盘龙区汇承中学招聘教师备考题库及答案详解一套
- 广东机场安检审计考试题及答案
- 嵌入式系统工程师面试题及答案
- 产品经理岗位面试题详解与答案参考
- 智能垃圾分类设备
- 医疗美容诊所、门诊部规章制度及岗位职责
- DL-T5394-2021电力工程地下金属构筑物防腐技术导则
- HYT 082-2005 珊瑚礁生态监测技术规程(正式版)
- 区块链技术在旅游行业的应用
- 机械制造技术课程设计-低速轴机械加工工艺规程设计
- 机场运行职业规划书
- 注塑成型工艺流程
- JGT266-2011 泡沫混凝土标准规范
- 银行物业服务投标方案(技术方案)
- 数控刀具的选择
评论
0/150
提交评论