嵌入式系统课程设计
嵌入式课程设计

嵌入式课程设计
嵌入式课程设计是指在大学或研究生教育阶段,学生通过嵌入式系统设计的课程,进行实践性的学习和探索,提高学生的嵌入式系统设计能力以及软硬件开发和应用技能。
嵌入式课程设计包括理论学习、实验设计和开发工程三个阶段。
在理论学习阶段,学生需要学习相关的计算机科学和电子学知识,了解嵌入式系统的组成、结构和工作原理。
在实验设计阶段,学生需要设计和实现嵌入式系统的硬件和软件,并进行调试和测试。
开发工程阶段,学生需要应用所学知识,设计和开发复杂的嵌入式系统,实现实际应用场景的功能需求。
嵌入式课程设计不仅可以有效提高学生的实践能力,还可以培养学生的团队协作精神和创新思维能力。
针对不同的学科和专业,嵌入式课程设计可以涵盖多个领域,比如电子、计算机、通信、自动化等多个领域,为学生未来的职业发展提供有力的支持和保障。
电子信息工程专业嵌入式系统设计课程的优秀教案范本

电子信息工程专业嵌入式系统设计课程的优秀教案范本一、引言在当今数字时代,嵌入式系统设计变得越来越重要。
作为电子信息工程专业的学生,掌握嵌入式系统设计的知识和技能至关重要。
本教案旨在通过精心设计的课程内容和教学方法,帮助学生全面理解和掌握嵌入式系统设计的基本概念和实践技巧。
二、课程目标本课程的目标是让学生:1. 理解嵌入式系统设计的基本概念和原理;2. 学会使用主流的嵌入式开发平台和工具;3. 掌握嵌入式系统设计中的常用编程语言和算法;4. 能够独立设计、实现和调试简单的嵌入式系统。
三、教学内容和安排1. 嵌入式系统设计概述- 嵌入式系统的定义和特点- 嵌入式系统的应用领域和发展趋势- 嵌入式系统设计流程和方法2. 嵌入式硬件平台和工具- 常用的嵌入式硬件平台介绍(例如Arduino、Raspberry Pi等) - 嵌入式系统设计所需的硬件组件和接口- 嵌入式系统开发工具和集成开发环境(IDE)的使用3. 嵌入式软件开发基础- 嵌入式系统的基本软件架构- 常用嵌入式操作系统和实时操作系统的介绍- 嵌入式系统编程语言(例如C、C++)的基础知识4. 嵌入式系统设计实践- 基于硬件平台的嵌入式系统设计案例分析- 嵌入式系统的硬件和软件设计与调试流程演示- 学生进行小组项目实践,完成一个简单的嵌入式系统设计任务四、教学方法和教学资源1. 授课方式:- 理论授课结合实例分析,深入浅出地讲解嵌入式系统设计的基本概念和原理;- 实践操作,通过演示和示范实现嵌入式系统设计的过程,引导学生掌握实践技巧;- 小组活动和讨论,培养学生的团队合作和问题解决能力。
2. 教学资源:- 提供教材和参考书籍,包括嵌入式系统设计的基础知识和案例分析;- 提供在线学习平台,供学生自主学习和讨论;- 提供实验室设备和软件工具,支持学生进行实践操作和项目设计。
五、评估方式和考核要求1. 平时表现:学生参与课堂讨论,完成作业和实验报告。
嵌入式课程设计报告

调试工具
使用GDB等调试工具进行程序调试, 可实现断点设置、变量查看、堆栈跟
踪等功能。
版本控制工具
使用Git等版本控制工具进行代码管理 ,实现多人协作开发、版本回溯等功 能。
性能分析工具
使用Valgrind等性能分析工具进行程 序性能分析,可实现内存泄漏检测、 函数调用关系分析等功能。
课程设计总结与展望
总结本次课程设计的经验教训和收 获,展望嵌入式系统未来的发展趋 势和应用前景。
02
硬件平台选择与搭建
常见嵌入式硬件平台比较
ARM平台
高性能、低功耗,广泛应用于智能手机、 平板电脑等移动设备。
PowerPC平台
高性能、高可靠性,适用于工业控制、航 空航天等高端应用设备、 数字电视等领域。
07
总结与展望
本次课程设计收获总结
理论与实践结合
通过本次课程设计,深入理解了 嵌入式系统的基本原理,同时将 理论知识应用于实际项目中,实 现了理论与实践的有机结合。
技能提升
在课程设计过程中,掌握了嵌入 式系统开发的基本技能,包括硬 件设计、软件编程和调试技术等 。
团队合作
与团队成员紧密合作,共同完成 了课程设计的任务,提高了团队 协作和沟通能力。
05
系统实现过程与代码展示
关键模块代码实现技巧分享
模块化设计
将系统划分为多个独立的功能模块,每个模块具有明 确的接口和功能,便于代码的管理和复用。
高效算法选择
针对系统需求,选择合适的算法和数据结构,以提高 代码执行效率。
代码优化
通过减少冗余代码、提高代码可读性和可维护性,降 低系统资源消耗。
系统集成测试方法论述
嵌入式课程设计报告
嵌入式系统课程设计报告

嵌入式系统课程设计报告一、教学目标本课程的教学目标是使学生掌握嵌入式系统的基本概念、原理和设计方法,能够运用嵌入式系统进行实际项目的开发和实现。
具体来说,知识目标包括了解嵌入式系统的定义、特点、分类和应用领域;掌握嵌入式系统的硬件和软件组成及工作原理;熟悉嵌入式操作系统的基本概念和常用操作系统。
技能目标包括能够使用嵌入式系统开发工具和平台进行程序设计和调试;具备嵌入式系统硬件电路的设计和调试能力;能够运用嵌入式系统进行实际项目的开发和实现。
情感态度价值观目标包括培养学生的创新意识和团队合作精神,提高学生解决实际问题的能力和责任感。
二、教学内容根据课程目标,本课程的教学内容主要包括嵌入式系统的基本概念、原理和设计方法。
具体包括以下几个方面:1. 嵌入式系统的定义、特点、分类和应用领域;2. 嵌入式系统的硬件组成,如处理器、存储器、输入输出接口等;3. 嵌入式系统的软件组成,如固件、操作系统、应用程序等;4. 嵌入式操作系统的基本概念和常用操作系统;5. 嵌入式系统的设计方法和开发流程;6. 嵌入式系统硬件电路的设计和调试方法;7. 嵌入式系统在实际项目中的应用和案例分析。
三、教学方法为了实现课程目标,本课程将采用多种教学方法,包括讲授法、讨论法、案例分析法和实验法等。
通过多样化的教学方法,激发学生的学习兴趣和主动性。
具体教学方法如下:1. 讲授法:通过讲解嵌入式系统的基本概念、原理和设计方法,使学生掌握相关知识;2. 讨论法:通过分组讨论和课堂讨论,培养学生的思考能力和团队合作精神;3. 案例分析法:通过分析实际项目案例,使学生了解嵌入式系统在实际中的应用和设计方法;4. 实验法:通过实验操作和调试,锻炼学生的动手能力和实际问题解决能力。
四、教学资源为了支持教学内容和教学方法的实施,本课程将选择和准备以下教学资源:1.教材:选用权威、实用的嵌入式系统教材,为学生提供系统的学习资料;2. 参考书:推荐学生阅读相关参考书籍,丰富学生的知识体系;3. 多媒体资料:制作课件、教案等多媒体教学资料,提高课堂教学效果;4. 实验设备:准备嵌入式系统开发板、仿真器等实验设备,为学生提供实践操作的机会。
嵌入式开发系统课程设计

嵌入式开发系统课程设计一、课程目标知识目标:1. 理解嵌入式系统的基本概念、组成和分类;2. 掌握嵌入式开发环境搭建及编程基础;3. 学习嵌入式系统设计与实现的基本方法;4. 了解嵌入式系统在实际应用中的发展及其在各领域的应用。
技能目标:1. 能够独立搭建嵌入式开发环境,进行基本的程序编写和调试;2. 学会使用常见的嵌入式系统设计工具和软件;3. 掌握嵌入式系统硬件与软件的协同设计方法;4. 能够运用所学知识解决实际问题,完成一个小型嵌入式项目的设计与实现。
情感态度价值观目标:1. 培养学生对嵌入式系统开发的兴趣,激发其探究精神和创新意识;2. 培养学生的团队协作和沟通能力,使其能够在项目实践中相互学习、共同进步;3. 增强学生的社会责任感,使其认识到嵌入式技术在国家战略和民生领域的重大意义;4. 引导学生树立正确的价值观,关注技术发展对社会和环境的影响,培养其良好的职业道德。
二、教学内容1. 嵌入式系统概述:介绍嵌入式系统的基本概念、发展历程、特点及应用领域,对应教材第一章内容。
- 嵌入式系统定义与分类- 嵌入式系统的历史与发展趋势- 嵌入式系统的应用领域2. 嵌入式系统硬件平台:讲解嵌入式硬件系统的组成、结构与原理,对应教材第二章内容。
- 嵌入式处理器- 存储器与I/O接口- 嵌入式系统硬件设计方法3. 嵌入式系统软件平台:介绍嵌入式操作系统、编程语言及软件开发工具,对应教材第三章内容。
- 嵌入式操作系统原理与应用- 嵌入式编程语言(C、汇编等)- 软件开发工具与调试方法4. 嵌入式系统设计与实现:阐述嵌入式系统设计与实现的方法与步骤,对应教材第四章内容。
- 系统需求分析- 硬件与软件协同设计- 系统测试与优化5. 嵌入式项目实践:结合实际案例,让学生动手实践嵌入式项目设计与开发,对应教材第五章内容。
- 项目选题与需求分析- 硬件系统设计与搭建- 软件编程与调试- 系统测试与总结教学内容安排与进度根据学生实际情况进行调整,确保学生能够循序渐进地掌握嵌入式系统的基本知识和技能。
嵌入式系统stm32课程设计

嵌入式系统stm32课程设计一、课程目标知识目标:1. 理解嵌入式系统基本概念,掌握STM32的硬件结构和编程环境。
2. 学会使用C语言进行STM32程序设计,理解中断、定时器等基本原理和应用。
3. 掌握嵌入式系统外围设备的使用,如LED、按键、串口等,并能进行简单的系统集成。
技能目标:1. 能够运用所学知识,设计并实现具有实际功能的嵌入式系统项目。
2. 培养学生的动手实践能力,提高问题解决能力和程序调试技巧。
3. 增强团队协作能力,通过项目实践,学会分工合作和沟通交流。
情感态度价值观目标:1. 培养学生对嵌入式系统的兴趣,激发学习热情,形成自主学习的习惯。
2. 树立正确的工程观念,注重实际应用,关注技术发展,提高创新意识。
3. 培养学生的责任心,使其认识到所学知识对社会和国家的贡献,树立远大理想。
课程性质:本课程为实践性较强的课程,结合理论知识和实际操作,培养学生的嵌入式系统设计能力。
学生特点:学生具备一定的电子技术基础和编程能力,对嵌入式系统有一定了解,但缺乏实际项目经验。
教学要求:结合课程特点和学生学习情况,注重理论与实践相结合,通过项目驱动,引导学生主动探究,提高解决问题的能力。
将课程目标分解为具体的学习成果,便于教学设计和评估。
二、教学内容1. 嵌入式系统概述- 嵌入式系统的定义、特点与应用领域- STM32微控制器简介2. STM32硬件结构与编程环境- STM32的内部结构、外设接口- Keil MDK集成开发环境的使用3. STM32编程基础- C语言基础回顾- STM32程序框架与编译过程- 中断、定时器等基本原理及应用4. 外围设备使用- LED、按键、串口等外设的原理与编程- ADC、PWM等模拟外设的使用5. 嵌入式系统项目实践- 设计并实现具有实际功能的嵌入式系统项目- 项目分析与需求分析- 硬件电路设计与软件编程6. 课程总结与拓展- 课程知识梳理与巩固- 探讨嵌入式系统发展趋势与前沿技术教学内容安排与进度:第1-2周:嵌入式系统概述、STM32硬件结构与编程环境第3-4周:STM32编程基础第5-6周:外围设备使用第7-8周:嵌入式系统项目实践第9-10周:课程总结与拓展教学内容与教材关联性:本教学内容紧密结合教材,按照教材章节顺序进行教学,确保学生能够系统地掌握嵌入式系统STM32的知识点和技能。
嵌入式系统课课程设计
嵌入式系统课课程设计一、教学目标本课程的教学目标是让学生掌握嵌入式系统的基本概念、原理和应用,培养学生运用嵌入式系统解决实际问题的能力。
具体分为以下三个部分:1.知识目标:(1)了解嵌入式系统的基本概念、特点和分类;(2)掌握嵌入式处理器、外围设备及其接口技术;(3)熟悉嵌入式操作系统的基本原理和常用操作系统;(4)了解嵌入式系统的设计方法和开发流程。
2.技能目标:(1)能够使用嵌入式处理器和外围设备搭建简单的嵌入式系统;(2)能够编写嵌入式系统的基本程序,实现常见的功能;(3)具备嵌入式操作系统的基本编程能力;(4)能够运用嵌入式系统解决实际问题,开展创新设计。
3.情感态度价值观目标:(1)培养学生对嵌入式系统的兴趣,激发学习热情;(2)培养学生团队合作精神,提高沟通与协作能力;(3)培养学生创新意识,培育勇于探索的精神;(4)培养学生责任感,强化安全意识。
二、教学内容本课程的教学内容主要包括以下几个部分:1.嵌入式系统概述:嵌入式系统的概念、特点、分类和应用领域;2.嵌入式处理器:嵌入式处理器的结构、工作原理和性能评估;3.嵌入式外围设备:存储器、输入输出接口、定时器等;4.嵌入式操作系统:嵌入式操作系统的原理、结构和常用操作系统;5.嵌入式系统设计方法:需求分析、系统架构设计、软件设计等;6.嵌入式系统开发流程:项目立项、系统设计、编程调试、测试等;7.嵌入式系统应用案例:常见嵌入式系统的应用案例分析。
三、教学方法本课程采用多种教学方法,以激发学生的学习兴趣和主动性:1.讲授法:通过讲解嵌入式系统的基本概念、原理和应用,使学生掌握相关知识;2.讨论法:学生针对嵌入式系统的某个主题进行讨论,提高学生的思考和表达能力;3.案例分析法:分析实际案例,使学生了解嵌入式系统在实际应用中的工作原理和设计方法;4.实验法:让学生动手搭建嵌入式系统,亲身体验嵌入式程序的编写和调试过程。
四、教学资源本课程的教学资源包括:1.教材:选用国内权威、实用的嵌入式系统教材;2.参考书:提供相关的嵌入式系统著作,供学生拓展阅读;3.多媒体资料:制作课件、教学视频等,丰富教学手段;4.实验设备:提供嵌入式系统实验平台,让学生动手实践。
大学嵌入式方向课程设计
大学嵌入式方向课程设计一、课程目标知识目标:1. 理解嵌入式系统的基础知识,掌握其硬件和软件的基本组成、工作原理及相互关系。
2. 学会使用至少一种嵌入式编程语言,如C或Python,编写简单的嵌入式程序。
3. 了解嵌入式系统在不同领域的应用,如物联网、智能家居、自动化控制等。
技能目标:1. 能够运用所学知识,设计并实现简单的嵌入式项目,具备基本的嵌入式系统开发能力。
2. 掌握使用常见的嵌入式开发工具和调试方法,如Keil、IAR等。
3. 能够分析嵌入式系统的性能,针对实际问题提出合理的解决方案。
情感态度价值观目标:1. 培养学生对嵌入式系统的兴趣,激发他们探索新技术、新领域的热情。
2. 培养学生的团队协作精神,让他们在项目实践中学会沟通、分享和合作。
3. 培养学生的创新意识,鼓励他们勇于尝试,不断挑战自我,为我国嵌入式技术的发展贡献力量。
课程性质:本课程为大学嵌入式方向的课程,旨在使学生掌握嵌入式系统的基础知识和技能,培养具备实际开发能力的人才。
学生特点:大学嵌入式方向的学生具备一定的电子技术、计算机技术和编程基础,对新技术充满好奇,喜欢动手实践。
教学要求:结合学生特点和课程性质,注重理论与实践相结合,强化项目实践,培养学生具备实际开发能力。
在教学过程中,将目标分解为具体的学习成果,以便进行教学设计和评估。
二、教学内容1. 嵌入式系统概述:介绍嵌入式系统的定义、发展历程、应用领域及发展趋势,对应教材第一章内容。
- 嵌入式系统的基本概念- 嵌入式系统的历史与发展- 嵌入式系统的应用领域及前景2. 嵌入式硬件基础:讲解嵌入式系统的硬件组成、原理及性能指标,对应教材第二章内容。
- 嵌入式处理器- 存储器与I/O接口- 传感器与执行器3. 嵌入式软件基础:介绍嵌入式操作系统、编程语言及软件开发流程,对应教材第三章内容。
- 嵌入式操作系统原理- 嵌入式编程语言(C/Python)- 嵌入式软件开发流程4. 嵌入式系统设计与实践:通过项目实践,使学生掌握嵌入式系统的设计方法,对应教材第四章内容。
嵌入式课程设计
嵌入式 课程设计一、课程目标知识目标:1. 理解嵌入式系统的基础概念,掌握其组成、工作原理和应用领域;2. 学习嵌入式编程的基本语法和技巧,能独立编写简单的嵌入式程序;3. 了解嵌入式系统的设计与开发流程,掌握基本的硬件调试和软件优化方法。
技能目标:1. 培养学生运用所学知识解决实际问题的能力,能针对特定需求设计简单的嵌入式系统;2. 提高学生的编程实践能力,熟练使用嵌入式开发工具和调试设备;3. 培养学生的团队协作能力,通过项目实践,学会与他人共同分析和解决问题的方法。
情感态度价值观目标:1. 激发学生对嵌入式系统的兴趣,培养其探究精神和创新意识;2. 培养学生严谨、细致的学习态度,养成认真负责的工作作风;3. 强化学生的国家意识,使其认识到嵌入式技术在国家战略和经济社会发展中的重要性。
本课程针对高年级学生,结合学科特点和教学要求,旨在通过理论教学与实践操作相结合的方式,使学生在掌握嵌入式系统基本知识的基础上,提高实际应用能力。
课程目标具体、可衡量,以便学生和教师能够清晰地了解课程的预期成果,并为后续的教学设计和评估提供依据。
二、教学内容1. 嵌入式系统概述:介绍嵌入式系统的定义、发展历程、应用领域及发展趋势;教材章节:第一章 嵌入式系统概述2. 嵌入式硬件基础:讲解嵌入式系统的硬件组成、常见微控制器、外围设备及其接口技术;教材章节:第二章 嵌入式硬件基础3. 嵌入式编程基础:学习嵌入式编程语言(如C语言)、编程规范和技巧;教材章节:第三章 嵌入式编程基础4. 嵌入式系统设计与开发:介绍嵌入式系统的设计流程、开发环境、调试方法;教材章节:第四章 嵌入式系统设计与开发5. 嵌入式系统实例分析:分析典型嵌入式系统的结构和功能,进行实际案例讲解;教材章节:第五章 嵌入式系统实例分析6. 嵌入式系统项目实践:组织学生进行小组项目实践,培养实际应用能力和团队协作精神;教材章节:第六章 嵌入式系统项目实践教学内容安排和进度:第1周:嵌入式系统概述第2-3周:嵌入式硬件基础第4-5周:嵌入式编程基础第6-7周:嵌入式系统设计与开发第8-9周:嵌入式系统实例分析第10-12周:嵌入式系统项目实践教学内容根据课程目标制定,具有科学性和系统性。
嵌入式系统技术课程设计
嵌入式系统技术课程设计一、课程设计的背景和意义嵌入式系统具有高度集成、高度可靠、低功耗等特点,在现代生产和生活中有着广泛应用。
然而,嵌入式系统的研发与应用对于普通软件开发和计算机专业的学生来说是个相对较新的领域,需要掌握更多的硬件和软件技术知识。
因此,率先开展嵌入式系统技术课程深入探讨,提高学生嵌入式系统的理论水平及实践能力,具有重要意义。
课程设计旨在使学生熟练掌握嵌入式系统设计、嵌入式编程、嵌入式应用等方面的知识和技能,通过实践操作和项目实现,培养学生独立思考、团队协作、解决问题的能力,以应对未来工作的需要。
二、设计内容本次课程设计以嵌入式系统为核心,包括硬件设计和软件编程两个方面,主要设计内容如下:1. 硬件设计硬件设计是本次课程设计中最关键的一环。
硬件设计涉及到微处理器的选型、板级系统的设计、外设控制和通信等多个方面。
在设计硬件电路时,需要考虑到系统本身的需求,包括性能、功耗、成本等多方面因素。
经过初步的调研,我们选择使用STC89C52RC微处理器,并基于该处理器设计嵌入式系统硬件电路。
2. 软件编程软件编程是嵌入式系统设计中不可或缺的一部分。
在硬件电路设计完成后,需要对硬件进行编程,以实现系统的功能。
本次课程设计中,软件编程主要分为两部分:嵌入式系统应用程序的编写和程序的调试。
在应用程序编写阶段,需要使用汇编语言和C 语言进行编程,以实现系统功能。
在程序调试过程中,需要使用仿真器对应用程序进行调试,保证系统的稳定运行。
3. 项目实现项目实现是本次课程设计的重点。
课程设计组要参与一个由老师提供的项目:“嵌入式温度控制系统”。
项目实现过程中,学生需要根据设计要求利用已掌握的知识进行硬件电路设计、软件编程,在制作过程中体现开发团队合作、工程管理和其他软技能方面的培养。
三、设计流程与实施计划课程设计实施的流程如下:1.学生进行嵌入式系统的理论学习,并实践操作;2.硬件电路的设计和实验室制作,根据老师提供的电路图进行硬件电路的设计;3.软件编程的实验室制作,进行实验室编程;4.项目实现过程,进行团队协作、工程管理和其他软技能方面的培养;5.项目演示与汇报,学生分别展示自己的项目,教师点评,进行现场交流与互动。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
学 生 课 程 实 践 能 力 考 查题目:温度按键设定、显示、报警系统设计课程名称:嵌入式系统开发 专业班级: 学生学号: 学生姓名:考查地点: 考查时长: 4小时 所属院部: 指导教师:2017 — 2018学年 第 2 学期金陵科技学院教务成绩2017-2018学年第2学期《嵌入式系统开发》实践能力考核班级姓名学号课程名称嵌入式系统开发课程编号0806504151授课时间2018年2月26日-- 2018年5月4日周学时 4 学分 2简要评语(从完成情况、是否具备独立开发能力、是否独立完成、编程熟练程度等角度评价。
)任课教师签名:日期:温度按键设定、显示、报警系统设计要求:1、读取DS18B20温度,在液晶上实时显示,并显示上、下限,初始值上限32,下限26。
2、通过按键可以设置环境温度的上限和下限,WK_UP键按下调节上限,再按下调节下限,再按下调节上限……KEY1按下加1;KEY0按下减1,根据上限和下限判断当前温度有没有超出范围。
3、当温度超过上限,LED1隔1秒亮一次。
超过下限,LED2隔1秒亮一次。
(也可自定义报警方式)4、串口波特率一律用9600bps。
液晶显示的信息:STM32 testname: xxxxxxxxxMaximum is 32C,Minimum is 26 CThe temperature is 29 C,now!(xxxxx是自己的名字拼音)目录:第一章.系统要求1.1设计要求1.2设计方案第二章.硬件设计2.1开发板原理图2.2 DS18B20模块2.3按键模块2.4 LCD显示模块2.5 LED 模块第三章.软件设计3.1程序流程图3.2程序部分代码3.2.1主函数、main.c3.2.2 LED 函数led.c3.2.3温度代码 s18b20.c3.2.4键盘代码key.c第四章.实物效果图第五章.课程总结第一章.设计要求及方案1.1设计要求1、读取DS18B20温度,在液晶上实时显示,并显示上、下限,初始值上限32,下限26。
2、通过按键可以设置环境温度的上限和下限,WK_UP键按下调节上限,再按下调节下限,再按下调节上限……KEY1按下加1;KEY0按下减1,根据上限和下限判断当前温度有没有超出范围。
3、当温度超过上限,LED1隔1秒亮一次。
超过下限,LED2隔1秒亮一次。
(也可自定义报警方式)4、串口波特率一律用9600bps。
液晶显示的信息:STM32 testname: xxxxxxxxxMaximum is 32C,Minimum is 26 CThe temperature is 29 C,now!(xxxxx是自己的名字拼音)1.2设计方案本次课程设计的要求是使用STM32F103设计一个温度测控系统,ALIENTEK MiniSTM32 V3 版开发板选择的是 STM32F103RCT6 作为 MCU,它拥有的资源包括:48KB SRAM、256KB FLASH、2 个基本定时器、4 个通用定时器、2 个高级定时器、2 个 DMA 控制器(共 12 个通道)、3 个 SPI、2 个 IIC、5 个串口、1 个 USB、1 个 CAN、3 个 12 位 ADC、1 个 12 位 DAC、1 个SDIO 接口及 51 个通用 IO 口。
在本课程中使用了以下部分来完成课程设计的要求:1.应用DS18B20进行温度的检测。
2.应用按键模块进行外部的上下限数值设定。
3.应用LED的闪烁进行报警。
4.应用LCD显示实时温度、上下限等信息。
第二章.硬件设计2.2 DS18B20设计2.3按键模块ALIENTEK MiniSTM32 开发板总共有 3 个按键,其原理图如下:2.4 LCD显示模块2.5 LED 模块其中 PWR 是开发板电源指示灯,为蓝色。
LED0 和 LED1 分别接在 PA8 和 PD2 上,PA8还可以通过 TIM1 的通道 1 的 PWM 输出来控制 DS0 的亮度。
为了方便大家判断,我们选择了 DS0 为红色,DS1 为绿色的 LED 灯。
第三章.软件设计3.1程序流程图温度显示及报警模块按键设定模块3.2程序部分代码3.2.1主函数、main.c#include "led.h"#include "delay.h"#include "sys.h"#include "usart.h"#include "lcd.h"#include "ds18b20.h"#include "key.h"#include <string.h>#include <stdio.h>#include <stdlib.h>int temp_low = 22;int temp_high = 32;int zanshi_low=0;int zanshi_hign=0;void TIM3_Int_Init(u16 arr,u16 psc){TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;NVIC_InitTypeDef NVIC_InitStructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //时钟使能TIM_TimeBaseStructure.TIM_Period = arr; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值计数到5000为500msTIM_TimeBaseStructure.TIM_Prescaler =psc; //设置用来作为TIMx时钟频率除数的预分频值 10Khz的计数频率TIM_TimeBaseStructure.TIM_ClockDivision = 0; //设置时钟分割:TDTS = Tck_tim TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上计数模式TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //根据TIM_TimeBaseInitStruct 中指定的参数初始化TIMx的时间基数单位TIM_ITConfig( //使能或者失能指定的TIM中断TIM3, //TIM2TIM_IT_Update ,ENABLE //使能);NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn; //TIM3中断NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //先占优先级0级NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //从优先级3级NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道被使能NVIC_Init(&NVIC_InitStructure); //根据NVIC_InitStruct中指定的参数初始化外设NVIC寄存器TIM_Cmd(TIM3, ENABLE); //使能TIMx外设}u8 flag=0;int main(void){u8 t = 0;u8 shuzu[20];u8 keyvalue=0;u8 gaibianshui=0;short temperature;delay_init(); //延时函数初始化uart_init(9600); //串口初始化为9600NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 设置中断优先级分组2 LED_Init(); //初始化与LED连接的硬件接口TIM3_Int_Init(9999,7199);//10Khz的计数频率,计数到5000为500msLCD_Init();POINT_COLOR = RED; //设置字体为红色LCD_ShowString(0, 50, 200, 16, 16, "STM32 test");LCD_ShowString(0, 70, 200, 16, 16, "name: zhang qi qi ");//LCD_ShowString(0,90,200,16,16,"Max 32 C Min 26 C");memset(shuzu, 0, 20);sprintf(shuzu, "Max is %2d C,Min is %2d C", temp_high, temp_low);LCD_ShowString(0, 90, 200, 16, 16, shuzu);while (DS18B20_Init()) //DS18B20初始化{LCD_ShowString(0, 130, 200, 16, 16, "DS18B20 Error");delay_ms(200);LCD_Fill(0, 130, 239, 130 + 16, WHITE);delay_ms(200);}POINT_COLOR = BLUE; //设置字体为蓝色LCD_ShowString(0, 110, 260, 16, 16, "The temperature is: . C now ");LCD_ShowChar(0+25*8,110,',',16,0);LCD_ShowChar(0+29*8,110,'!',16,0);while (1){POINT_COLOR = BLUE; //设置字体为蓝色if (t % 10 == 0) //每100ms读取一次{t = 0;temperature = DS18B20_Get_Temp();if (temperature < 0){LCD_ShowChar(0 + 40, 150, '-', 16, 0); //显示负号temperature = -temperature; //转为正数}elseLCD_ShowChar(0 + 40, 150, ' ', 16, 0); //去掉负号memset(shuzu, 0, 20);sprintf(shuzu, "The temperature is:%3d.%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, "Max is %2d C,Min is %2d C", temp_high, temp_low);LCD_ShowString(0, 90, 200, 16, 16, shuzu);}if(keyvalue==1) //key0按下{temp_high--;memset(shuzu, 0, 20);sprintf(shuzu, "Max is %2d C,Min is %2d C", 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, "Max is %2d C,Min is %2d C", temp_high, temp_low);LCD_ShowString(0, 90, 200, 16, 16, shuzu);}if(keyvalue==1) //key0按下{temp_low--;memset(shuzu, 0, 20);sprintf(shuzu, "Max is %2d C,Min is %2d C", temp_high, temp_low);LCD_ShowString(0, 90, 200, 16, 16, shuzu);}}keyvalue=0;}}}void TIM3_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;}}}3.2.2 LED 函数led.c#include "led.h"void LED_Init(void){GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOD, ENABLE); //使能PA,PD端口时钟GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; //LED0-->PA.8 端口配置 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHzGPIO_Init(GPIOA, &GPIO_InitStructure); //根据设定参数初始化GPIOA.8GPIO_SetBits(GPIOA,GPIO_Pin_8); //PA.8 输出高GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; //LED1-->PD.2 端口配置, 推挽输出GPIO_Init(GPIOD, &GPIO_InitStructure); //推挽输出,IO口速度为50MHzGPIO_SetBits(GPIOD,GPIO_Pin_2); //PD.2 输出高}3.2.3温度代码 s18b20.c#include "ds18b20.h"#include "delay.h"void DS18B20_Rst(void){DS18B20_IO_OUT(); //SET PA0 OUTPUTDS18B20_DQ_OUT=0; //拉低DQdelay_us(750); //拉低750usDS18B20_DQ_OUT=1; //DQ=1delay_us(15); //15US}//等待DS18B20的回应//返回1:未检测到DS18B20的存在//返回0:存在u8 DS18B20_Check(void){u8 retry=0;DS18B20_IO_IN();//SET PA0 INPUTwhile (DS18B20_DQ_IN&&retry<200){retry++;delay_us(1);};if(retry>=200)return 1;else retry=0;while (!DS18B20_DQ_IN&&retry<240){retry++;delay_us(1);};if(retry>=240)return 1;return 0;}//从DS18B20读取一个位//返回值:1/0u8 DS18B20_Read_Bit(void) // read one bit {u8 data;DS18B20_IO_OUT();//SET PA0 OUTPUTDS18B20_DQ_OUT=0;delay_us(2);DS18B20_DQ_OUT=1;DS18B20_IO_IN();//SET PA0 INPUTdelay_us(12);if(DS18B20_DQ_IN)data=1;else data=0;delay_us(50);return data;}//从DS18B20读取一个字节//返回值:读到的数据u8 DS18B20_Read_Byte(void) // read one byte{u8 i,j,dat;dat=0;for (i=1;i<=8;i++){j=DS18B20_Read_Bit();dat=(j<<7)|(dat>>1);}return dat;}//写一个字节到DS18B20//dat:要写入的字节void DS18B20_Write_Byte(u8 dat){u8 j;u8 testb;DS18B20_IO_OUT();//SET PA0 OUTPUT;for (j=1;j<=8;j++){testb=dat&0x01;dat=dat>>1;if (testb){DS18B20_DQ_OUT=0;// Write 1delay_us(2);DS18B20_DQ_OUT=1;delay_us(60);}else{DS18B20_DQ_OUT=0;// Write 0delay_us(60);DS18B20_DQ_OUT=1;delay_us(2);}}}//开始温度转换void DS18B20_Start(void)// ds1820 start convert{DS18B20_Rst();DS18B20_Check();DS18B20_Write_Byte(0xcc);// skip romDS18B20_Write_Byte(0x44);// convert}//初始化DS18B20的IO口 DQ 同时检测DS的存在//返回1:不存在//返回0:存在u8 DS18B20_Init(void){GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //使能PORTA口时钟GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; //PORTA0 推挽输出GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);GPIO_SetBits(GPIOA,GPIO_Pin_2); //输出1DS18B20_Rst();return DS18B20_Check();}//从ds18b20得到温度值//精度:0.1C//返回值:温度值(-550~1250)short DS18B20_Get_Temp(void){u8 temp;u8 TL,TH;short tem;DS18B20_Start (); // ds1820 start convertDS18B20_Rst();DS18B20_Check();DS18B20_Write_Byte(0xcc);// skip romDS18B20_Write_Byte(0xbe);// convertTL=DS18B20_Read_Byte(); // LSBTH=DS18B20_Read_Byte(); // MSBif(TH>7){TH=~TH;TL=~TL;temp=0;//温度为负}else temp=1;//温度为正tem=TH; //获得高八位tem<<=8;tem+=TL;//获得底八位tem=(float)tem*0.625;//转换if(temp)return tem; //返回温度值else return -tem;}3.3.4键盘代码key.c#include "key.h"#include "delay.h"//按键初始化函数//PA15和PC5 设置成输入void KEY_Init(void){GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC,ENABLE);//使能PORTA,PORTC时钟GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);//关闭jtag,使能SWD,可以用SWD 模式调试GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;//PA15GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //设置成上拉输入GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA15GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;//PC5GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //设置成上拉输入GPIO_Init(GPIOC, &GPIO_InitStructure);//初始化GPIOC5GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;//PA0GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //PA0设置成输入,默认下拉GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA.0 }//按键处理函数//返回按键值//mode:0,不支持连续按;1,支持连续按;//返回值://0,没有任何按键按下//KEY0_PRES,KEY0按下//KEY1_PRES,KEY1按下//WKUP_PRES,WK_UP按下//注意此函数有响应优先级,KEY0>KEY1>WK_UP!!u8 KEY_Scan(u8 mode){static u8 key_up=1;//按键按松开标志if(mode)key_up=1; //支持连按if(key_up&&(KEY0==0||KEY1==0||WK_UP==1)){delay_ms(10);//去抖动key_up=0;if(KEY0==0)return KEY0_PRES;else if(KEY1==0)return KEY1_PRES;else if(WK_UP==1)return WKUP_PRES;}else if(KEY0==1&&KEY1==1&&WK_UP==0)key_up=1;return 0;// 无按键按下}第四章.实物效果图第五章课程总结嵌入式开发是自动化专业的主要课程之一,现实生活中,嵌入式在应用可以说得是无处不在。