[单片机课程设计报告汇总] 单片机设计报告常用硬件元器件描述

[单片机课程设计必看] 单片机设计报告常用描述

硬件设计

AT89C51最小系统

AT89C51是美国ATMEL公司生产的低电压,高性能CMOS16位单片机,片内含4k bytes的可反复擦写的只读程序存储器和128 bytes的随机存取数据存储器,期间采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用16位中央处理器和Flash存储单元,功能强大的AT89C51单片机可灵活应用于各种控制领域。

AT89C51提供以下标准功能:4k字节Flash闪速存储器,128字节内部RAM,32个I/O口线,两个1 6位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。

本系统中央控制器采用的单片机AT89C51,复位电路采用上电复位电路。外接的晶振为12MHz晶振。

四位数码管电路

本次设计采用八段数码管显示,是四位一体共阴极数码管,由四个八段数码管集成,高电平点亮。在显示上我们通常采用两种方法:一种是静态显示,一种是动态显示。

静态显示是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。静态显示的优点是编程简单,显示亮度高,缺点是占用I/O端口多,实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。

LED数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态显示是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态显示。

在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,但能够节省大量的I/O端口,而且功耗更低。故本次设计采用动态显示方法。其原理图如图3所示。

img

八位数码管

本次设计采用八段数码管显示,是八位一体共阴极数码管,由八个八段数码管集成,高电平点亮。在显示上我们通常采用两种方法:一种是静态显示,一种是动态显示。

静态显示是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。静态显示的优点是编程简单,显示亮度高,缺点是占用I/O端口多,实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。

LED数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态显示是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态显示。

在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,但能够节省大量的I/O端口,而且功耗更低。故本次设计采用动态显示方法。

img

74HC573

本设计使用74HC573来驱动四位一体数码管。74HC573的八个锁存器都是透明的D型锁存器,当使能(LE)为高时,Q输出将随数据(D)输入而变。当使能(LE)为低时,输出将锁存在已建立的数据电平上。输出控制不影响锁存器的内部工作,即老数据可以保持,甚至当输出被关闭时,新的数据也可以置入。这种电路可以驱动大电容或低阻抗负载,可以直接与系统总线接口并驱动总线,而不需要外接口。特别适用于缓冲寄存器,I/O通道,双向总线驱动器和工作寄存器.573工作电压在5V(VCC)左右最大7V最小2V,最大输出电流为20MA,可用来驱动发光二极管。

img

74HC138

74HC138是一款高速CMOS器件,具有8个输出引脚,可以接受3位二进制加权地址输入(A0、A1和A2),并在使能时,提供8个互斥的低有效输出(Y0至Y7)。它是一款3到8线译码器,具有3个使能输入端(E1、E2和E3)。

当E1和E2置低且E3置高时,74HC138将保持所有输出为高。否则,它将根据A0、A1和A2的输入状态,将对应的输出置低。这种译码器功能使得它适用于许多应用,包括扩展总线、解码器和多路复用器等。

按键电路

键盘是人机交互的接口,本设计中,我们采用独立键盘。当按键按下,与主控芯片连接的端口被降为低电平,按键松开则也升为高电平。按键采用的是Tack Switch按钮开关,它具有自动恢复的功能。当我们按下按钮时,其中的接点接通,放开按钮后,接点恢复为切断。虽然Tack Switch有4个引脚,但实际上,其内部只有一对a接点,即其中两个引脚是内部相连通的,而另外两个引脚内部也是相连通的。

矩阵键盘

键盘是人机交互的接口,本设计中,我们采用矩阵键盘。矩阵键盘是一种常见的按键输入设备,与独立式按键相比,它能够提供更多的按键数量,同时占用较少的单片机I/O资源。在单片机设计中,使用矩阵键盘能够实现更多功能,提高设备的灵活性和可扩展性。矩阵键盘的基本原理是将行线和列线通过按键连接,通过检测行线和列线的电平变化来确定按键的按下状态。当按键被按下时,相应的行线和列线被连接,使得行线和列线的电平发生变化,单片机通过检测这个变化来识别按键的输入。与独立式按键相比,矩阵键盘具有以下优点:

占用资源少:矩阵键盘可以提供更多的按键数量,而占用单片机的I/O资源相对较少。

编程简单:矩阵键盘的编程相对独立式按键更为简单,可以通过简单的扫描算法实现按键的检测和识别。

扩展方便:通过增加行线和列线,可以方便地将矩阵键盘进行扩展,以实现更多的功能。

img

蜂鸣器模块

蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。 蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。

本设计采用电磁式蜂鸣器进行。电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场。振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。因此需要一定的电流才能驱动它,单片机I/O引脚输出的电流较小,单片机输出的TTL电平基本上驱动不了蜂鸣器,因此需要增加一个电流放大的电路。如蜂鸣器电路图5所示,蜂鸣器的正极接到VCC(+5V)电源上面,蜂鸣器的负极接到三极管的发射极E,三极管的基极B经过限流电阻R3后由单片机的beep引脚控制,当beep输出低电平时,三级管QS截止,没有电流流过线圈,蜂鸣器不发声;当beep输出高电平时,三级管导通,这样蜂鸣器的电流形成回路,发出声音。因此,我们可以通过程序控制beep脚的电平来使蜂鸣器发出声音和关闭。其电路图如图5所示。

img

LCD1602液晶模块1

LCD1602,也称为1602液晶屏,是一种常见的字符型液晶显示模块,广泛用于各种嵌入式系统、电子设备和DIY项目中。它可以显示两行各16个字符,提供了简单而有效的文本信息显示功能。以下是关于LCD1602的一些基本说明:

\1. 显示能力: LCD1602可以同时显示两行,每行可以显示16个字符,总共可以显示32个字符。每个字符通常是由5x8个像素组成。

\2. 控制方式: LCD1602通过并行接口与外部设备进行通信。通常使用8位数据总线(D0-D7)和3位控制信号(RS、RW、EN)来传输数据和指令。

\3. 字符集: LCD1602支持标准的ASCII字符集,包括英文字母、数字、标点符号等。它还可以通过编程自定义一些自定义字符。

\4. 背光: 大多数LCD1602模块都配有背光,可以通过控制引脚来打开或关闭背光。

\5. 电源要求: LCD1602通常使用5V电源供电,但某些型号也支持3.3V电源。

\6. 接口引脚: LCD1602通常具有16个引脚,其中有8个用于数据传输(D0-D7),3个用于控制(RS、RW、EN),还有VCC、GND等引脚。

\7. 功能指令: 使用控制信号和指令,您可以控制LCD1602的各种功能,包括清屏、光标位置控制、显示开关等。

\8. 编程: 在使用LCD1602时,可通过微控制器(例如Arduino、STM32等)编写程序来控制它。可以发送数据和指令以控制显示内容、光标位置和背光等。

\9. 示例应用: LCD1602广泛用于各种应用,例如温度显示、计时器、计数器、消息显示、数据监控等。它在学习嵌入式编程、电子电路和DIY项目中都非常有用。

以上是关于LCD1602基本的说明,它是一种功能简单但实用的液晶显示模块,适用于各种项目和应用。

LCD1602液晶模块2

本设计中以LM016L作为显示器件。LM016L智能型显示模块是一种低功耗、低价值、低损耗的显示器件,它不但可以显示各式各样的字符、汉字和图形,同时具有可编程能力,且与单片机接口方便。

1.引脚功能说明

LCD LM016L采用标准的14脚接口,各引脚接口说明如下:

第1脚:VSS为地电源。

第2脚:VDD接5V正电源。

第3脚:VEE为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。

第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。

第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。

第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。

第7~14脚:D0~D7为8位双向数据线。

2.基本操作时序表

读写操作时序如图10和图11所示。

img

图10 读操作时序

img

图11 写操作时序

3.LCD LM016L的RAM地址映射及标准字库表

液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,图12是016的内部显示地址。

img

图12 1602LCD内部显示地址

例如第二行第一个字符的地址是40H,那么是否直接写入40H就可以将光标定位在第二行第一个字符的位置呢?这样不行,因为写入显示地址时要求最高位D7恒定为高电平1,所以实际写入的数据应该是01000000B(40H)+10000000B(80H)=11000000B(C0H)。

在对液晶模块的初始化中要先设置其显示模式,在液晶模块显示字符时光标是自动右移的,无需人工干预。每次输入指令前都要判断液晶模块是否处于忙的状态。

016液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如图13所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等。每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。

img

图13 字符代码与图形对应图

4.液晶LM016L显示电路图

本设计中,液晶显示电路与单片机的连接如图14所示。

img

图14 液晶显示电路

MQ-2传感器模块

MQ-2传感器是一种常用的气体传感器,用于检测空气中的多种可燃气体和烟雾。它广泛应用于火灾报警系统、烟雾检测器以及一些环境监测和安全应用中。以下是有关MQ-2传感器的基本说明:

\1. 工作原理: MQ-2传感器基于化学敏感电阻原理。它包含一个敏感层,当空气中存在可燃气体或烟雾时,这些气体会与传感器的敏感材料发生化学反应,导致电阻值的变化。通过测量电阻值的变化,可以间接地检测出空气中的目标气体浓度。

\2. 检测气体: MQ-2传感器主要用于检测可燃气体,如甲烷(天然气)、丙烷、丁烷、乙烷等,以及烟雾。不同型号的MQ-2传感器可能对不同种类的气体有不同的灵敏度。

\3. 输出信号: MQ-2传感器通常提供一个模拟输出信号,其电压值与检测到的气体浓度成一定的关系。这个模拟输出可以通过模数转换器(ADC)进行读取,从而获取气体浓度的近似值。

\4. 预热时间: MQ-2传感器需要一定的时间来预热,使其处于稳定工作状态。通常在上电后需要等待一段时间(例如几分钟),传感器才能正常检测气体。

\5. 环境影响: MQ-2传感器对温度、湿度等环境因素比较敏感。环境的变化可能会影响传感器的准确性和稳定性。

\6. 应用领域: MQ-2传感器广泛用于火灾报警系统,以及需要监测可燃气体或烟雾的环境,如家庭、工业区域、实验室等。它也可以用于一些个人项目,如烟雾报警器、气体泄漏监测器等。

DS18B20温度传感器

DS18B20是一款数字温度传感器,它具有以下特点:

\1. 单一数据线接口:DS18B20通过一根数据线与主机连接,实现数据的传输和接收。

\2. 支持多种编程方式:DS18B20可以使用多种编程方式进行控制,如C语言、汇编语言等。

\3. 温度测量范围广:DS18B20的温度测量范围为-55℃~+125℃,精度为±0.5℃。

\4. 抗干扰能力强:DS18B20采用CRC校验技术,可以有效避免干扰信号对传感器的影响。

\5. 可编程报警:DS18B20可以设置报警温度,当温度超过设定值时,会自动输出报警信号。

\6. 多种封装形式:DS18B20可以采用多种封装形式,如SOIC、TO-92、裸片等。

\7. 使用方便:DS18B20的管脚简单,使用方便,易于集成。

在使用单片机控制DS18B20时,需要注意以下步骤:

\1. 连接数据线:将DS18B20的数据线连接到单片机的端口上。

\2. 初始化:初始化51单片机,设置数据传输方式和波特率等参数。

\3. 写控制指令:向DS18B20写入控制指令,如“开始测量”、“读取温度”等。

\4. 读取温度数据:从DS18B20读取温度数据,并进行处理和显示。

\5. 结束通信:结束与DS18B20的通信,释放资源。

DHT11温湿度传感器

DHT11传感器是一种数字温湿度传感器,可以同时测量环境中的温度和湿度。该传感器具有体积小、精度高、稳定性好等优点,与单片机接口简单,易于使用。

DHT11传感器的主要特点如下:

\1. 测量范围:温度范围为0℃50℃,湿度范围为20%90%。

\2. 精度:温度误差在±2℃,湿度误差在±5%以内。

\3. 响应时间:传感器响应时间小于1秒。

\4. 接口方式:单线串行接口,与单片机接口简单。

\5. 功耗:工作电流为0.5mA,待机电流为0.03mA。

DHT11传感器在使用时需要注意以下几点:

\1. 在连接电路时需要将数据线(绿线)接在单片机的强上拉输出端口,以保证读取数据的稳定性。

\2. 在使用前需要进行校准,以保证测量精度。

\3. 在读取传感器数据时,需要等待一段时间(约1秒)以保证传感器响应充分。

\4. 在长时间不使用时,需要断开电源以降低功耗。

DHT11传感器可以广泛应用于温湿度监测、智能控制、环境测试等领域。在单片机毕业设计中,使用DHT11传感器可以实现对环境温湿度的实时监测和控制,具有一定的实用价值。

SHT11温湿度传感器

SHT11是一款由Sensirion公司生产的温湿度传感器,它具有高度集成、高精度、快速响应以及低功耗等特点。SHT11采用CMOSens技术,使得温湿度测量更加准确可靠。该传感器体积小巧,易于集成在各种单片机系统中。

它具有以下特点:

1.高精度:SHT11的湿度测量精度可达±1.8%,温度测量精度可达±0.4℃,能够满足大多数应用的需求。

2.快速响应:SHT11的响应时间仅需1秒,能够实时反映环境中的温湿度变化。

3.高度集成:SHT11将温湿度传感器、信号处理电路、A/D转换器等集成于一体,大大简化了系统的设计。

4.低功耗:SHT11采用CMOS工艺,待机电流仅20μA,非常适合电池供电系统。

5.抗干扰能力强:SHT11采用数字式校准,有效避免了外部干扰对测量结果的影响。

SHT11传感器是一款高精度、高可靠性的温湿度传感器,其内部集成了温度和湿度传感器元件,能够输出数字信号。该传感器具有I2C接口,可以与各种微控制器进行通信,实现高精度的温湿度测量。

SHT11传感器的主要特点如下:

\1. 高精度:温度误差范围在±0.4℃,湿度误差范围在±4.5%。

\2. 全温度范围:-40℃到+123.8℃。

\3. 线性输出:温度和湿度的输出都是线性的,方便进行数据处理。

\4. 高速:SHT11传感器具有高速模式,可以快速响应系统的变化。

\5. 小型封装:SHT11传感器采用紧凑的封装设计,适合用于空间受限的场合。

在单片机毕业设计中使用SHT11传感器,可以实现对环境温湿度的实时监测和记录,适用于各种需要温湿度控制的应用场景,如智能家居、工业控制、环境监测等。通过与单片机接口连接,可以实现数据的采集和处理,并通过按键设置温湿度上下限,实现自动控制。

拨动开关

拨动开关是一种通过拨动开关柄使电路接通或断开的开关。这种开关具有滑块动作灵活、性能稳定可靠的特点,因此被广泛应用于各种仪器/仪表设备、各种电动玩具、传真机、音响设备、医疗设备、美容设备等电子产品领域。

拨动开关的品种主要有单极双位、单极三位、双极双位以及双极三位等。单极双位开关可以控制一路电路的两个状态,单极三位开关可以控制三路电路的两个状态,而双极双位开关可以控制两路电路的两个状态,双极三位开关则可以控制三路电路的三个状态。

在使用拨动开关时,我们需要注意开关的工作电压、电流、接触电阻以及绝缘电阻等参数。同时,在安装和使用过程中,应确保开关的安装位置合理,避免受到潮湿、高温等环境因素的影响。

总的来说,拨动开关是一种在电子产品中常见的开关组件,具有广泛的应用范围。

LCD12864

一、LCD12864简介

LCD12864是一种常见的液晶显示屏模块,其显示分辨率为128X64。该模块具有低电压、微功耗的特点,使其在单片机系统中得到了广泛应用。LCD12864的接口类型为8位并口,可以与80系列的单片机直接相连。此外,LCD12864具有两种操作模式:左半屏幕操作和右半屏幕操作。当引脚有效时,左半屏幕操作有效,而右半屏幕操作则在引脚无效时进行。

二、LCD12864与单片机的连接

在单片机大作业中,我们需要将LCD12864与单片机进行连接。连接方式如下:

\1. VCC接到单片机的电源端口,为LCD12864提供电源。

\2. GND接到单片机的地线端口,为LCD12864提供接地。

\3. RS接到单片机的P0或P2端口,用于控制LCD12864的数据传输方向。

\4. RW接到单片机的P0或P2端口,用于控制LCD12864的读/写操作。

\5. E接到单片机的P0或P2端口,用于控制LCD12864的使能信号。

\6. D0-D7接到单片机的P0端口,用于传输数据到LCD12864。

通过以上连接方式,我们可以实现单片机与LCD12864之间的数据传输和控制操作。

三、LCD12864的基本操作

LCD12864具有多种基本操作,包括清屏、光标移动、输入方式设置等。这些操作可以通过发送相应的指令集来实现。下面是一些常用的指令集:

\1. 清除屏幕指令:将光标移动到屏幕的左上角,并清除整个屏幕的内容。

\2. 输入方式设置指令:用于设置输入方式,包括大写字母、小写字母、数字等。

\3. 光标移动指令:用于移动光标位置,可以在水平方向和垂直方向上进行移动。

\4. 显示字符指令:用于在指定位置显示一个字符。

通过发送以上指令集,我们可以实现LCD12864的各种基本显示和控制功能。

四、LCD12864在单片机大作业中的应用

在单片机大作业中,LCD12864可以作为一个重要的显示和控制设备。通过与单片机的连接,我们可以实现以下应用:

\1. 显示数据:将数据或参数显示在LCD12864上,方便用户查看。

\2. 输入数据:通过LCD12864的键盘接口,实现数据的输入功能。

\3. 控制功能:根据系统的需要,通过LCD12864的指令集实现各种控制功能,如调节亮度、设置参数等。

\4. 人机交互界面:利用LCD12864的显示功能,构建一个简单的人机交互界面,提高用户体验。

通过以上应用,LCD12864可以为单片机大作业提供良好的显示和控制功能,提高系统的智能化程度和用户体验。

总之,LCD12864是一种常用的液晶显示屏模块,具有低电压、微功耗的特点和多种基本操作指令集。通过与单片机的连接,我们可以实现各种基本的显示和控制功能,为单片机大作业提供良好的人机交互界面。

MPX4115

MPX4115是一种硅电容式压力传感器,而不是电阻式水位传感器。它具有高精度、稳定性好、响应速度快等优点,可以测量气体的静压力、动压力和压力差等参数,被广泛应用于各种控制系统和测试系统中。

MPX4115压力传感器采用三线电压输出方式,将电压信号通过串口传输到单片机,单片机通过A/D转换后将数据显示在液晶显示屏上,以实现实时监测和数据处理。同时,它还具有多种功能按键,可以通过按键设置参数和调整显示,非常方便实用。

在实际应用中,MPX4115压力传感器需要考虑多种因素,如供电电源的稳定性、传感器的灵敏度和温度变化等。这些因素可能会影响传感器的精度和稳定性,因此需要进行相应的设计和处理,以确保传感器能够正常工作并输出准确的压力信号。

总之,MPX4115压力传感器是一种高精度、高性能的压力传感器,可以广泛应用于各种控制系统和测试系统中,为系统的自动化控制和智能化管理提供准确的压力信号。

ULN2003

ULN2003是一种高电压、高电流驱动器,它被广泛应用于步进电机、直流电机、继电器和其他高负载电器的驱动。它由德州仪器(Texas Instruments)公司生产,具有七个晶体管开关,可将输入信号转换为输出驱动信号。ULN2003的七个输出口被标记为OUT1到OUT7,每个输出口都能承受高达500mA的负载电流。

当输入信号为高电平时,相应的输出口就会导通,输出端会输出高电平,驱动负载电器。反之,当输入信号为低电平时,输出端就会输出低电平,驱动负载电器停止运转。由于ULN2003内部集成的晶体管是npn型晶体管,因此它需要外接一个电源。通常情况下,这个电源的电压范围为5V到50V,具体取决于所驱动的负载电器的额定电压。此外,为了确保ULN2003能够正常工作,需要外接一个电容器,其额定电容量为0.1uf。

总的来说,ULN2003具有高电压、高电流驱动能力,能够驱动各种负载电器;内部有七个晶体管输出口,便于多路驱动;简单易用,只需要连接几个引脚即可实现驱动;具有较高的可靠性和稳定性。

软件设计

主程序

主程序完成外部中断初始化、定时器初始化、蜂鸣器模块初始化。主程序扫描主持人不断扫描按键,进行对应的操作。

主要(关键)代码:

按键扫描子函数

关键代码介绍

​ if(key1==0)

​ {

​ DelayMs(10);

​ if(key1==0)

​ {

​ num=1;

​ while(!key1);

​ }

​ }

程序一直判断按键引脚电压,按下按键电压为0。按键会产生抖动,需要进行消抖处理,演示10毫秒后,如果按键电压还是0,令按键数目num为1。表示按下的按键是按键1。供主函数处理按键消息。

显示子程序

该函数用于动态扫描数码管。输入参数 FirstBit 表示需要显示的第一位,如赋值2表示从第三个数码管开始显示,如输入0表示从第一个显示。 Num表示需要显示的位数,如需要显示99两位数值则该值输入2。显示主要控制74HC573锁存数据。先清除数据,清段锁存。然后选择位码。开位锁存将数据存在位锁存器,选择到了需要显示的数码管。位锁存完成后将数据写进段锁存数据,将需要显示的数据写到数码管中。

蜂鸣器提示子函数

蜂鸣器的正极接到VCC(+5V)电源上面,蜂鸣器的负极接到三极管的发射极E,三极管的基极B经过限流电阻R3后由单片机的beep引脚控制,当beep输出低电平时,三级管QS截止,没有电流流过线圈,蜂鸣器不发声;当beep输出高电平时,三级管导通,这样蜂鸣器的电流形成回路,发出声音。因此,我们可以通过程序控制beep脚的电平来使蜂鸣器发出声音和关闭。

是0,令按键数目num为1。表示按下的按键是按键1。供主函数处理按键消息。

显示子程序

该函数用于动态扫描数码管。输入参数 FirstBit 表示需要显示的第一位,如赋值2表示从第三个数码管开始显示,如输入0表示从第一个显示。 Num表示需要显示的位数,如需要显示99两位数值则该值输入2。显示主要控制74HC573锁存数据。先清除数据,清段锁存。然后选择位码。开位锁存将数据存在位锁存器,选择到了需要显示的数码管。位锁存完成后将数据写进段锁存数据,将需要显示的数据写到数码管中。

蜂鸣器提示子函数

蜂鸣器的正极接到VCC(+5V)电源上面,蜂鸣器的负极接到三极管的发射极E,三极管的基极B经过限流电阻R3后由单片机的beep引脚控制,当beep输出低电平时,三级管QS截止,没有电流流过线圈,蜂鸣器不发声;当beep输出高电平时,三级管导通,这样蜂鸣器的电流形成回路,发出声音。因此,我们可以通过程序控制beep脚的电平来使蜂鸣器发出声音和关闭。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/142029.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构—队列的实现

前言:上次我们已经学习了数据结构中一个重要的线性表—栈,那么我们这一次就来学习另外一个重要的线性表—队列。 目录: 一、 队列的概念 二、 队列的实现: 1.队列的创建 三、 队列的操作 1.初始化队列 2.队尾入队列 3.队头出队列…

CSRF和XSS漏洞结合实战案例

文章目录 CSRF和XSS漏洞结合实战案例实验原理实验步骤信息收集构造CSRF和XSS代码xss注入 CSRF和XSS漏洞结合实战案例 实验环境为csm 实验原理 攻击者利用JavaScript可以构造请求的功能在留言面板构造一个存储型xss注入,里面的内容为js请求。请求新添加用户&…

python matlplotlib/seaborn 绘制曲线的平均值标准差阴影图

1. seaborn 旧版本(0.8.1)中使用tsplot,新版本中使用lineplot 直线代表均值,阴影代表meanstd(带有置信区间,参数ci) import seaborn as sns import matplotlib.pyplot as plt import numpy as np import pandas as p…

11月14日星期二今日早报简报微语报早读

11月14日星期二,农历十月初二,早报微语早读。 1、江西南城县:限时发放购房补贴政策,三孩家庭每平方米最高补贴500元; 2、2023年中国内地电影市场累计票房突破500亿元; 3、市场监管总局:在全国…

Javaweb开发 利用servlet+jsp+jdbc+tomcat数据库实现登录功能

前言:很久没更新了,今天给大家分享一个Java web的小案例,是一个登录页面,利用Login控制类和JDBC连接数据库,并判断用户名密码是否正确,项目最终部署在Tomcat上。 先看效果 正文 一、前期工作 1.首先我们…

ubuntu上安装edge浏览器

1下载edge浏览器 官网下载 edge浏览器的linux版本可在上面的官网中寻找。 我选择的是Linux(.deb)。 2 安装 可在终端的edge安装包所在的路径下输入下面命令安装。 sudo dpkg -i edge安装包的名称.deb3 安装可能存在的问题 1dpkg:依赖关系问题使得edge-stable的配置工作不…

Docker的安装配置与使用

1、docker安装与启动 首先你要保证虚拟机所在的盘要有至少20G的空间,因为docker开容器很吃空间的,其次是已经安装了yum依赖 yum install -y epel-release yum install docker-io # 安装docker配置文件 /etc/sysconfig/docker chkconfig docker on # 加…

uniapp 小程序 身份证 和人脸视频拍摄

使用前提&#xff1a; 已经在微信公众平台的用户隐私协议&#xff0c;已经选择配置“摄像头&#xff0c;录像”等权限 开发背景&#xff1a;客户需要使用带有拍摄边框的摄像头 &#xff0c;微信小程序的方法无法支持&#xff0c;使用camera修改 身份证正反面&#xff1a; <…

【unity】网格描边方法

【unity】网格描边方法 介绍对模型四边网格的三种描边方法&#xff1a;包括纯Shader方法、创建网格方法和后处理方法。于增强场景中3D模型的轮廓&#xff0c;使其在视觉上更加突出和清晰。这种效果可以用于增强三维场景中的物体、角色或环境&#xff0c;使其在视觉上更加吸引人…

前端---CSS的盒模型

文章目录 什么是盒模型&#xff1f;设置边框设置内边距设置外边距块级元素水平居中 什么是盒模型&#xff1f; 页面上的每个HTML元素都是一个一个的“盒子”&#xff0c;这些盒子由&#xff1a;内容、内边距、边框、外边距组成。 我们可以和住的房子联系起来&#xff0c;更好…

Python实现WOA智能鲸鱼优化算法优化卷积神经网络回归模型(CNN回归算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 鲸鱼优化算法 (whale optimization algorithm,WOA)是 2016 年由澳大利亚格里菲斯大学的Mirjalili 等提…

STM32H750之FreeRTOS学习--------(六)FreeRTOS的列表和列表项

六、FreeRTOS的列表和列表项 文章目录 六、FreeRTOS的列表和列表项列表相关结构体列表项相关结构体迷你列表项列表相关API函数介绍初始化列表vListInitialise()函数vListInitialiseItem()函数vListInsert()函数 vListInsertEnd()函数 uxListRemove() 列表就是一个双向链表&…

21.计算老师的工资

&#xff08;定义结构体数组存放教师的财务信息&#xff08;教工卡号&#xff0c;应发工资&#xff0c;个人所得税&#xff0c;实发工资&#xff09;具体要求如下从键盘输入5个教师的教工卡号&#xff0c;应发工资 计算每人的个人所得税&#xff08;应发工资10%&#xff09;&am…

Prometheus+Ansible+Consul实现服务发现

一、简介 1、Consul简介 Consul 是基于 GO 语言开发的开源工具&#xff0c;主要面向分布式&#xff0c;服务化的系统提供服务注册、服务发现和配置管理的功能。Consul 提供服务注册/发现、健康检查、Key/Value存储、多数据中心和分布式一致性保证等功能。 在没有使用 consul 服…

C语言仅凭自学能到什么高度?

今日话题&#xff0c;C语言仅凭自学能到什么高度&#xff1f;学习C语言的决定我确实非常推荐&#xff0c;毕竟它是编程领域的“通用工具”&#xff0c;初学者可以尝试并在发现编程的乐趣后制定长期学习计划。至于能够达到何种高度&#xff0c;这实在无法准确回答。即使是经验丰…

ARM64 linux并发与同步之经典自旋锁

1.3 经典自旋锁 在实际项目中临界区数据有可能会修改一个数据结构或者链表中的数据&#xff0c;在整个过程中要保证原子性&#xff0c;才不会影响数据的有效性&#xff0c;这个过程使用原子变量不合适&#xff0c;需要使用锁机制来完成&#xff0c;自旋锁&#xff08;spinlock&…

Elasticsearch7 入门 进阶

1、全文检索 1.1、数据分类 按数据分类的话&#xff0c;主要可以分为以下三类&#xff1a; 结构化数据&#xff1a;固定格式、有限长度&#xff0c;比如mysql存的数据非结构化数据&#xff1a;不定长、无固定格式&#xff0c;比如邮件、Word文档、日志等半结构化数据&#xf…

【Opencv】cv::dnn::NMSBoxes()函数详解

本文通过原理和示例对cv::dnn::NMSBoxes&#xff08;&#xff09;进行解读&#xff0c;帮助大家理解和使用。 原理 cv::dnn::NMSBoxes是OpenCV库中的一个函数&#xff0c;用于在目标检测中处理多个预测框。在目标检测中&#xff0c;模型可能会为同一个物体生成多个预测框&…

传统企业数字化转型都要面临哪些挑战?_数据治理平台_光点科技

数字化转型已经成为传统企业发展的必经之路&#xff0c;但在这个过程中&#xff0c;企业往往会遭遇多方面的挑战。 1.文化和组织惯性 最大的挑战之一是企业文化和组织惯性的阻力。传统企业往往有着深厚的历史和根深蒂固的工作方式&#xff0c;员工和管理层可能对新的数字化工作…

海外媒体发稿:彭博社发稿宣传中,5种精准营销方式

在如今的信息发生爆炸时期&#xff0c;营销方式多种多样&#xff0c;但是充分体现精准营销并针对不同用户群体的需求并非易事。下面我们就根据彭博社发稿营销推广为例子&#xff0c;给大家介绍怎样根据不同用户人群方案策划5种精准营销方式。 1.界定总体目标用户人群在制订精准…