版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGEPAGE11《单片机产品设计与制作》项目作业项目1、利用GPIO和位带操作实现温度报警姓名:学号:
任务目标能说出单片机的定义、作用;能说出3种以上常见的单片机产品和生产厂家;能说出STM32单片机的生产厂家、主要系列产品和主要性能指标;能说出学习单片机的目的。能画出系统方框图并说出温度传感器和报警灯的选型理由及其工作原理。能画出程序流程图;写出程序框架、写出程序并对程序做出解释。会使用库函数GPIO_ReadInputDataBit()、GPIO_WriteBit()、GPIO_SetBits()、GPIO_ResetBits()、RCC_APB2PeriphClockCmd()、GPIO_Init()编写程序。理解位带操作的基本概念,会利用给出的框架和位带操作文件编写带有位带操作的程序。会给程序加入宏定义,提高程序的移植性。理解分组管理的模块化程序设计思路,会利用现有框架设计自己的模块化程序。能画出分组管理的温度报警器程序框架,写出程序。要点记录及成果检验任务1.1认识单片机姓名学号日期分数(一)术语记录英文简称英文全称中文CPUCentralProcessingUnit中央处理器SCMSingleChipMicrocomputer单片机Memory存储器MCUMicroControlUnit微控制器I/OInput/Output输入/输出EmbeddedComputer嵌入式计算机Interface接口(二)概念明析1、简要说明什么是单片机?单片机是将CPU、存储器、I/O接口等部件集成在一起的一个芯片。2、指出3家单片机厂商及其主要产品。单片机厂家包括Intel、Motorola、Zilog、Philips、Atmel、宏晶科技、Rockwell、NEC、EPSON、Hitachi、SiliconLabs、ST等等。其中最著名的是Intel的MCS-51单片机。此外还有Atmel公司的AT89S51/52。宏晶科技的STC于51系列单片机等。意法半导体的STM32也是一款单片机。3、举例说明三种使用了单片机的产品。智能空调、智能玩具、汽车控制系统、智能仪器仪表等……4、指出STM32单片机的生产厂家、主要系列产品和主要性能指标。生产厂家:意法半导体公司主要系列产品及其位数:CPU位数内核系列描述32Cortex-M0STM32L0低功耗STM32F0入门级Cortex-M3STM32L1低功耗STM32F1基础型,主频72MHzSTM32F2高性能Cortex-M4STM32L4低功耗STM32F3混合信号STM32F4高性能,主频180MHzCortex-M7STM32F7高性能8超级版6502STM8S标准系列STM8AF标准系列的汽车应用STM8AL低功耗的汽车应用STM8L低功耗5、总结一下学习单片机的目的。学习单片机目的是为了理解单片机产品的电路组成和程序组成,掌握使用、维护、维修、改造和开发单片机产品的方法。6、单片机开发常使用的编程语言有哪些?各自有什么特点?机器语言汇编语言C语言用二进制的机器指令表示例如0010010000000101用指令助记符表示例如MOVSr4,#0x05用语句表示例如用赋值语句:AAA=5;是唯一能被CPU识别和执行的语言需要转换(汇编)成机器码才可以被执行需要转换(编译)成机器码才可以被执行不容易理解和记忆相比机器语言更易于理解和记忆类似于自然语言,更好理解记忆CPU不同,机器语言不同CPU不同,指令助记符不同CPU不同,但C语言的语法不变一条汇编指令对应一条机器指令一条C语句,常对应若干条机器指令不如C语言功能强,编程难度大于C语言功能强、编程简便生成的代码占内存少,速度快生成的代码一般不如汇编语言精简7、学习单片机需要的工具有哪些?1、硬件开发平台(1)开发板或实验箱,其上应配有单片机芯片以及按键、LED灯、数码管、蜂鸣器、LCD、温度传感器等多种常用外设。(2)下载器或调试器下载器可以将PC机中的程序下载到单片机的程序存储器。调试器除了程序下载还提供程序调试功能。2、软件开发平台除了电脑,还需要一个专门的开发软件,一般称为IDE(IntegratedDevelopmentEnvironment集成开发环境)用于程序开发与调试。支持STM32的IDE很多,比较著名的有IARSystems公司的EWARM和Keil公司的MDK-ARM。3、工具和测量仪器主要用到万用表、电烙铁、信号源、电源、示波器等仪器和工具。任务1.2方案设计与器件选型姓名学号日期分数(一)术语记录英文全称中文翻译英文简称英文全称中文翻译TemperatureSensor温度传感器LEDLightEmittingDiode发光二极管TemperatureSwitch温度开关(二)要点记录1、画出以单片机为核心的温度报警器方框图,简述其工作原理。2、简述电接点水银温度开关工作原理。水银温度计是利用水银热膨胀特性进行温度测量的,温度增加,水银柱升高。电接点水银温度计与普通水银温度计不同的是,在其外部可以看到两根导线。在水银柱内部,每一根导线都连有一根电极。其中长电极插到温度计的下部,短电极则可根据需要调整到设定温度例如30℃处。当温度下降到低于设定值时,长短电极之间断开。当温度上升超过设定值时,长短电极之间通过水银导通。因此两根电极之间相当于一个开关,温度越限时,开关闭合。通过导线可以方便地将温度开关信号远传到控制电路。这就是电接点水银温度计的工作原理。任务1.3电路设计与测试姓名学号日期分数(一)术语记录英文简称英文全称中文翻译GPIOGeneralPurposeInputOutput通用输入输出(二)自主设计请画出使用两组电源,一组为数字电源、模拟电源、基准电源供电,另一组是备用电池的供电电路。或请画出使用三组电源,一组为数字电源和模拟电源供电、一组为基准电源供电,另一组是备用电池的供电电路。如果用PF5接收传感器输入,用PF6控制LED输出,并且PF6接LED正极,请画出输入电路和输出电路。任务1.4程序设计与调试姓名学号日期分数(一)调试过程记录故障现象:解决办法:原因分析:故障现象:解决办法:原因分析:(二)术语记录英文中文翻译英文中文翻译Library库IPD下拉输入Project项目IPU上拉输入Include包含IN_FLOATING浮空输入GPIO_ReadInputDataBitGPIO读输入位OUT_PP推挽输出GPIO_WriteBitGPIO写位OUT_OD漏极开路输出GPIO_SetBitsGPIO位写1Structure结构体GPIO_ResetBitsGPIO位写0Translate编译Initialize初始化Build生成RCC_APB2PeriphClockCmdAPB2设备时钟控制命令Option选项Enable使能,允许Target目标Disable禁止,失能Debug调试AnalogInput模拟量输入Settings设置Digital/DiscreteInput数字量/离散量输入Setup设置DigitalOutput数字量输出Download下载(三)自主设计1、如果用PB5接收传感器输入,用PB6接LED负极,电路怎么画,程序怎么改?#include"stm32f10x.h"voidGPIOB5_Init()//GPIOB5初始化函数 {GPIO_InitTypeDef GPIO_InitStructure; //定义结构体变量,用于存放GPIO初始化参数 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//开启GPIOB时钟 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5; //指出准备对Pin_5做初始化 //GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPD; //指出本引脚为内部下拉输入IPD GPIO_Init(GPIOB,&GPIO_InitStructure); //按照以上设置,对GPIOB初始化(PB5) }voidGPIOB6_Init()//GPIOB6初始化函数 {GPIO_InitTypeDef GPIO_InitStructure; //定义变量,用于存储GPIO初始化参数 //RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//开启GPIOB时钟 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6; //指出准备对Pin_6初始化 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; //指定输出速度为50MHz GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; //设置为推挽输出Out_PP GPIO_Init(GPIOB,&GPIO_InitStructure); //按照以上设置初始化GPIOB(PB6) GPIO_SetBits(GPIOB,GPIO_Pin_6); //向PB6输出1(熄灭) }intmain(){u8temperature; //定义变量temperature,用于存储温度值 GPIOB5_Init(); //调用子函数GPIOB5_Init(),进行PB5初始化 GPIOB6_Init(); //调用子函数GPIOB6_Init(),进行PB6初始化 while(1) //循环程序 {temperature=GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_5);//读取PB5引脚输入并送给temperature if(temperature==1) //如果温度越限 {GPIO_WriteBit(GPIOB,GPIO_Pin_6,Bit_RESET);} //则点亮LED else //否则 {GPIO_WriteBit(GPIOB,GPIO_Pin_6,Bit_SET);} //熄灭LED }}2、如果用PB5接收传感器输入,用PB6接LED正极,电路怎么画,程序怎么改?#include"stm32f10x.h"voidGPIOB5_Init()//GPIOB5初始化函数 {GPIO_InitTypeDef GPIO_InitStructure; //定义结构体变量,用于存放GPIO初始化参数 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//开启GPIOB时钟 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5; //指出准备对Pin_5做初始化 //GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPD; //指出本引脚为内部下拉输入IPD GPIO_Init(GPIOB,&GPIO_InitStructure); //按照以上设置,对GPIOB初始化(PB5) }voidGPIOB6_Init()//GPIOB6初始化函数 {GPIO_InitTypeDef GPIO_InitStructure; //定义变量,用于存储GPIO初始化参数 //RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//开启GPIOB时钟 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6; //指出准备对Pin_6初始化 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; //指定输出速度为50MHz GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; //设置为推挽输出Out_PP GPIO_Init(GPIOB,&GPIO_InitStructure); //按照以上设置初始化GPIOB(PB6) GPIO_ResetBits(GPIOB,GPIO_Pin_6); //向PB6输出0(熄灭) }intmain(){u8temperature; //定义变量temperature,用于存储温度值 GPIOB5_Init(); //调用子函数GPIOB5_Init(),进行PB5初始化 GPIOB6_Init(); //调用子函数GPIOB6_Init(),进行PB6初始化 while(1) //循环程序 {temperature=GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_5);//读取PB5引脚输入并送给temperature if(temperature==1) //如果温度越限 {GPIO_WriteBit(GPIOB,GPIO_Pin_6,Bit_SET);} //则点亮LED else //否则 {GPIO_WriteBit(GPIOB,GPIO_Pin_6,Bit_RESET);} //熄灭LED }}3、用GPIO_SetBits()和GPIO_ResetBits()库函数,题2怎么改?题2的主程序改变如下:intmain(){u8temperature; //定义变量temperature,用于存储温度值 GPIOB5_Init(); //调用子函数GPIOB5_Init(),进行PB5初始化 GPIOB6_Init(); //调用子函数GPIOB6_Init(),进行PB6初始化 while(1) //循环程序 {temperature=GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_5);//读取PB5引脚输入并送给temperature if(temperature==1) //如果温度越限 {GPIO_SetBits(GPIOB,GPIO_Pin_6);} //则点亮LED else //否则 {GPIO_ResetBits(GPIOB,GPIO_Pin_6);} //熄灭LED }}4、如果按键采用如图电路,应如何编写PA0初始化程序?PA0初始化中应设置为IPU模式voidGPIOA_Init() //GPIOA初始化函数 {GPIO_InitTypeDef GPIO_InitStructure; //定义结构体变量,用于存放GPIO初始化参数 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//开启GPIOA时钟 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0; //指出准备对Pin_0做初始化 //GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU; //指出本引脚为内部上拉输入IPU GPIO_Init(GPIOA,&GPIO_InitStructure); //按照以上设置,对GPIOA初始化(PA0) }5、如果采用图示输入电路,应如何编写初始化程序?PA0初始化中应设置为IN_FLOATING(浮空)模式voidGPIOA_Init() //GPIOA初始化函数 {GPIO_InitTypeDef GPIO_InitStructure; //定义结构体变量,用于存放GPIO初始化参数 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//开启GPIOA时钟 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0; //指出准备对Pin_0做初始化 //GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING; //指出本引脚为内部浮空输入IN_FLOATING GPIO_Init(GPIOA,&GPIO_InitStructure); //按照以上设置,对GPIOA初始化(PA0) }6、用PE2接收传感器输入,设置为内部上拉输入;用PC1连接LED的正极,电路怎么接,程序如何编写?#include"stm32f10x.h"voidGPIOE_Init()//GPIOE初始化函数 {GPIO_InitTypeDef GPIO_InitStructure; //定义结构体变量,用于存放GPIO初始化参数 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);//开启GPIOE时钟 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2; //指出准备对Pin_2做初始化 //GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU; //指出本引脚为内部下拉输入IPU GPIO_Init(GPIOE,&GPIO_InitStructure); //按照以上设置,对GPIOE初始化(PE2) }voidGPIOC_Init()//GPIOC初始化函数 {GPIO_InitTypeDef GPIO_InitStructure; //定义变量,用于存储GPIO初始化参数 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);//开启GPIOC时钟 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1; //指出准备对Pin_1初始化 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; //指定输出速度为50MHz GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; //设置为推挽输出Out_PP GPIO_Init(GPIOC,&GPIO_InitStructure); //按照以上设置初始化GPIOC(PC1) GPIO_ResetBits(GPIOC,GPIO_Pin_6); //向PC1输出0(熄灭) }intmain(){u8temperature; //定义变量temperature,用于存储温度值 GPIOE_Init(); //调用子函数GPIOE_Init(),进行PE2初始化 GPIOC_Init(); //调用子函数GPIOC_Init(),进行PC1初始化 while(1) //循环程序 {temperature=GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_2);//读取PE2引脚输入并送给temperature if(temperature==1) //如果温度越限 {GPIO_WriteBit(GPIOC,GPIO_Pin_1,Bit_SET);} //则点亮LED else //否则 {GPIO_WriteBit(GPIOC,GPIO_Pin_1,Bit_RESET);} //熄灭LED }}任务1.5利用位操作实现温度报警器姓名学号日期分数(一)调试过程记录故障现象:解决办法:原因分析:故障现象:解决办法:原因分析:(二)术语记录英文全称中文翻译英文全称中文翻译Public公共Application应用System系统Group组define定义compile编译Startup启动IncludePaths包含路径User用户FolderSetup文件夹Periph_Driver设备驱动BitBand位带(三)自主设计1、用分组管理的方法,对图示电路进行编程,要求:按下按键K_Right,LED5点亮,否则熄灭。请画出文件夹的框架,写出文件main.c、key.c、key.h、led.c、led.h的内容。(1)框架(2)main.c#include"stm32f10x.h" //位带操作头文件#include"system.h" //位带操作头文件#include"key.h" //按键定义头文件#include"led.h" //led定义头文件intmain(){ Key_Init(); //初始化按键 Led_Init(); //初始化LED while(1) { Led5=K_Right; }}(3)key.c#include"key.h" //声明包含key.h文件#include"stm32f10x.h" //声明包含stm32f10x.h文件/***********按键初始化***********************/voidKey_Init(){ GPIO_InitTypeDef GPIO_InitStructure; //定义结构体变量,用于存放GPIO初始化参数 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOE,ENABLE); //开启GPIOA和GPIOE时钟 /*********GPIOA_Pin_0初始化**********/ GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0; //Pin_0 //GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPD; //内部下拉输入IPD GPIO_Init(GPIOA,&GPIO_InitStructure); //GPIOA_Pin_0初始化 /**********GPIOE_Pin_2、Pin_3、Pin_4初始化********/ GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4; //Pin_2、Pin_3、Pin_4 //GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU; //内部上拉输入IPU GPIO_Init(GPIOE,&GPIO_InitStructure); //GPIOE初始化}(4)key.h#ifndef_KEY_H //如果不曾定义符号_KEY_H#define_KEY_H //则定义定义符号_KEY_H #define K_Up PAin(0) //定义K_Up按键 #define K_Left PEin(2) //定义K_Left按键 #define K_Down PEin(3) //定义K_Down按键 #define K_Right PEin(4) //定义K_Right按键 voidKey_Init(void); //声明函数Key_Init()#endif led.c#include"led.h"#include"stm32f10x.h"/********LED初始化****************************/voidLed_Init(){ GPIO_InitTypeDef GPIO_InitStructure; //定义变量,用于存储GPIO初始化参数 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);//开启GPIOC时钟 /**********GPIOC_Pin_0~Pin_7初始化********/ G
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年鄞城商贸发展有限公司招聘笔试参考题库含答案解析
- 2025年贵州蔬菜集团有限公司招聘笔试参考题库含答案解析
- 2025年湖南兴禹建设有限公司招聘笔试参考题库含答案解析
- 2025年陕西电力集团有限公司招聘笔试参考题库含答案解析
- 2024版打磨协议合同
- 2024版拆房工程承包合同
- 二零二五年度房地产预告抵押权转让合同3篇
- 二零二五年度测绘数据保密传输安全合同3篇
- 2024版大型酒店店面租赁合同(品牌联营版)3篇
- 2024版环保工程承包合同
- 2025福建中闽海上风电限公司招聘14人高频重点提升(共500题)附带答案详解
- 智能网联汽车技术应用专业国家技能人才培养工学一体化课程标准
- 政治-北京市朝阳区2024-2025学年高三第一学期期末质量检测考试试题和答案
- 物业公司绩效考核与激励机制
- 术后甲状旁腺功能减退症管理专家共识
- 【7道期末】安徽省安庆市区2023-2024学年七年级上学期期末道德与法治试题(含解析)
- 基金项目经理招聘笔试题与参考答案(某大型集团公司)2025年
- 2023-2024学年浙江省丽水市莲都区教科版六年级上册期末考试科学试卷
- 汉字文化解密学习通超星期末考试答案章节答案2024年
- 我县教育发展面临的问题及对策建议
- 口腔修复学专业英语词汇整理
评论
0/150
提交评论