网站大量收购闲置独家精品文档,联系QQ:2885784924

单片机产品设计与调试——基于STM32F1xx机型和HAL库函数 项目报告4-HAL答案.doc

单片机产品设计与调试——基于STM32F1xx机型和HAL库函数 项目报告4-HAL答案.doc

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

PAGE19

《单片机产品设计与制作》

项目报告

项目4、利用外部中断实现工件计数显示

姓名:

学号:

一、项目目标

理解中断的基本概念;

会利用STM32外部中断进行电路设计和程序设计,实现相应的功能。

二、具体工作任务

利用STM32单片机外部中断,设计工件计数显示装置,进行方案设计、器件选型、电路和程序设计,完成软硬件调试,实现如下功能:生产线上每过一个工件,计数值加1,计数范围0~99,十进制显示。

三、要点记录及成果检验

任务4.1

方案设计

姓名

学号

日期

分数

(一)要点记录

1、请画出系统方框图。

2、简述常见光电传感器的分类及原理。

对射式光电传感器将发射器和接收器对侧安装。没有工件时,接收器收到发射器发出的光;有工件时,光被工件阻挡,接收器收不到光。

镜反射式光电传感器将发射器和接收器同侧安装。没有工件时,发送器的光被反射镜反射给接收器;有工件时,光被工件吸收,接收器收不到光。

漫反射式光电传感器发射器和接收器也是同侧安装。没有工件时,发送器的光射向远处,接收器接收不到光;有工件时,光被工件表面反射回来,接收器收到光。

任务4.2

电路设计与测试

姓名

学号

日期

分数

1、如果用PE3接收传感器输入,数码管采用动态显示,573驱动,共阴极数码管,PD7~PD0接数码管段码,PD8和PD9作为位选信号。请画出完整电路(电源、外部高速晶振、外部低速晶振、启动、传感器、数码管)。

任务4.3

查询法程序设计与调试

姓名

学号

日期

分数

1、用PE4接收传感器输入,传感器程序怎么改?

Sensor.h

#ifndef_SENSOR_H

#define_SENSOR_H

#includesys.h //位带操作头文件

#includeSysTick.h //滴答时钟头文件

#defineSensor PEin(4)//为PE4起名Sensor

voidSensor_Init(void); //传感器初始化函数

voidSensor_Scan(void); //传感器扫描函数

#endif

Sensor.c

#includesensor.h

staticu8Sensor_Last; //存储sensor上一次的值

staticu8Workpiece; //存储工件数值(范围0~99)

/#includesensor.h

staticu8Sensor_Last; //上一次的检测值

externu8Workpiece; //工件数(范围0~99)

voidSensor_Init(void) //传感器初始化函数

{GPIO_InitTypeDefGPIO_Initure; //定义GPIO初始化变量

__HAL_RCC_GPIOE_CLK_ENABLE();//开启GPIOE时钟

GPIO_Initure.Pin=GPIO_PIN_4;//Pin2

GPIO_Initure.Mode=GPIO_MODE_INPUT; //输入

//GPIO_Initure.Pull=GPIO_NOPULL; //浮空输入

GPIO_Initure.Pull=GPIO_PULLUP; //上拉输入

HAL_GPIO_Init(GPIOE,GPIO_Initure); //按照以上设置初始化PE2

Sensor_Last=1; //传感器上次输入=1

Workpiece=0; //传感器当前检测值=0

}

/***************传感器采集与处理程序**********************

*功能:采集Sensor输入,每来一个工件,结果+1;

*输入:无

*输出:工件数,u8类型

***************传感器采集与处理程序***********************/

u8Sensor_Scan(void)

{

if(Sensor!=Sensor_Last) //如果Sensor当前值和上一次不相等,说明输入状态发生改变

{ if(Sensor==0) {Workpiece+=1;}//如果是下降沿,则工件数+1

Sensor_Last=Sensor; //无论是下降沿还是上升沿,将Sensor_Last刷新为当前值

delay_ms(10); //延

您可能关注的文档

文档评论(0)

balala11 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档