当前位置: 首页 > news >正文

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

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

硬件设计

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脚的电平来使蜂鸣器发出声音和关闭。

相关文章:

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

[单片机课程设计必看] 单片机设计报告常用描述 硬件设计 AT89C51最小系统 AT89C51是美国ATMEL公司生产的低电压,高性能CMOS16位单片机,片内含4k bytes的可反复擦写的只读程序存储器和128 bytes的随机存取数据存储器,期间采用ATMEL公司的高…...

Docker学习——⑧

文章目录 1、什么是 Docker Compose(容器编排)2、为什么要 Docker Compose?3、Docker Compose 的安装4、Docker Compose 的功能和使用场景5、Docker Compose 文件(docker-compose.yml)5.1 文件语法版本5.2 文件基本结构及常见指令 6、Docker …...

力扣刷题第二十一天--栈与队列

前言 周末玩了两天,s赛看的难受。。。还是和生活对线吧 内容 一、用栈实现队列 232.用栈实现队列 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty): 实现 MyQueue 类&#…...

Python基础-解释器安装

一、下载 网址Welcome to Python.orgPython更新到13了,我们安装上一个12版本。 这里我保存到网盘里了,不想从官网下的,可以直接从网盘里下载。 链接:百度网盘 请输入提取码百度网盘为您提供文件的网络备份、同步和分享服务。空间…...

MySQL(14):视图

数据库对象 对象描述表(TABLE)表是存储数据的逻辑单元,以行和列的形式存在,列就是字段,行就是记录数据字典就是系统表,存放数据库相关信息的表。系统表的数据通常由数据库系统维护,程序员通常不应该修改,只…...

Blazor 附件上传和下载功能

效果图 page "/uploadFile" inject Microsoft.AspNetCore.Hosting.IWebHostEnvironment WebHostEnvironment inject ToastService ToastService inject DownloadService DownloadService<h3>UploadFile</h3><Button OnClick"ButtonClick" C…...

Git 安装配置

目录 Linux 平台上安装 Debian/Ubuntu Centos/RedHat 源码安装 Windows 平台上安装 Mac 平台上安装 Git 配置 用户信息 文本编辑器 差异分析工具 查看配置信息 在使用Git前我们需要先安装 Git。Git 目前支持 Linux/Unix、Solaris、Mac和 Windows 平台上运行。 Git …...

Center Smoothing Certified Robustness for Networks with Structured Outputs

文章目录 Center Smoothing: Certified Robustness for Networks with Structured OutputsSummaryResearch ObjectiveProblem StatementMethodsEvaluationConclusionNotesGaussian Smoothing常用希腊字母霍夫丁不等式&#xff08;Hoeffdings inequality&#xff09;1.简述2.霍夫…...

C#几种截取字符串的方法

在C#编程中&#xff0c;经常需要对字符串进行截取操作&#xff0c;即从一个长字符串中获取所需的部分信息。本文将介绍几种常用的C#字符串截取方法&#xff0c;并提供相应的示例代码。 目录 1. 使用Substring方法2. 使用Split方法3. 使用Substring和IndexOf方法4. 使用Regex类…...

【PG】PostgreSQL高可用方案repmgr部署(非常详细)

目录 简介 1 概述 1.1 术语 1.2 组件 1.2.1 repmgr 1.2.2 repmgrd 1.3 Repmgr用户与元数据 2 安装部署 2.0 部署环境 2.1 安装要求 2.1.1 操作系统 2.1.2 PostgreSQL 版本 2.1.3 操作系统用户 2.1.4 安装位置 2.1.5 版本要求 2.2 安装 2.2.1 软件包安装 2.2…...

Linux Makefile配置问题

编写一个简单的工程文件&#xff0c;制作Makefile需要包含lpthread&#xff0c;当Makefile写为如下配置时 #CROSSCOMPILE : arm-linux- CROSSCOMPILE :CFLAGS : -Wall -O2 -c CFLAGS -I$(PWD)LDFLAGS : -lpthread LDFLAGS -lm -ldlCC : $(CROSSCOMPILE)gcc #LD :…...

k8s篇之underlay网络和overlay区别

k8s中underlay网络和overlay区别 一、网络 1 Overlay网络&#xff1a; Overlay叫叠加网络也叫覆盖网络&#xff0c;指的是在物理网络的基础之上迭代实现新的虚拟网络&#xff0c;即可使网络中的容器可以互相通信。 优点是对物理网络的兼容性比较好&#xff0c;可以实现pod的…...

掉瓶子小游戏

欢迎来到程序小院 掉瓶子 玩法&#xff1a;旋转的瓶子&#xff0c;根据瓶子方向&#xff0c;点击鼠标左键瓶子掉落&#xff0c;从桌面中间掉下即得1分&#xff0c;卡在桌边瓶子碎了游戏结束&#xff0c;快去掉瓶子吧^^。开始游戏https://www.ormcc.com/play/gameStart/203 htm…...

Elasticsearch7 入门 进阶

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

你是怎么封装微信小程序的数据请求的?

当封装微信小程序的数据请求时&#xff0c;可以采用一种模块化的方法&#xff0c;将请求逻辑与界面逻辑分离&#xff0c;以提高代码的可维护性和可扩展性。以下是一个基于前言、高质量代码、理解、优缺点和结尾的范例&#xff1a; 前言 在微信小程序中&#xff0c;数据请求是…...

C++ vector中capacity()和size() 的区别

size是指容器当前拥有元素的个数&#xff0c; capacity是指容器在必须分配新的存储空间之前可以存放的元素总数。 如vector<int> ivect(10),ivect.capacity()10&#xff0c;ivect.size()0, 当向ivect中插入元素时&#xff0c;只要没有超过10个&#xff0c;那么capacity就…...

【Redis】redis-server和redis-cli

上一篇《redis 的下载和安装》 https://blog.csdn.net/m0_67930426/article/details/134341071?spm1001.2014.3001.5501 安装完之后开始使用 打开客户端之前需要先打开服务端 redis-server 直接使用该命令打开就行 然后在打开客户端 redis-cli 使用ping命令查看是否连接服…...

【系统架构设计】架构核心知识: 2.4 系统建模过程和系统设计

目录 一 系统建模过程 1 结构化建模 2 信息工程建模方法 3 面向对象建模方法...

企业电子招标采购系统源码之从供应商管理到采购招投标、采购合同、采购执行的全过程数字化管理

功能描述 1、门户管理&#xff1a;所有用户可在门户页面查看所有的公告信息及相关的通知信息。主要板块包含&#xff1a;招标公告、非招标公告、系统通知、政策法规。 2、立项管理&#xff1a;企业用户可对需要采购的项目进行立项申请&#xff0c;并提交审批&#xff0c;查看所…...

ubantu libssl.so.1.1: cannot open shared object file

libssl.so.1.1: cannot open shared object file 使用 Ubuntu 22.04 时&#xff0c;有时候会遇到如下错误 error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory 这是因为Ubuntu 22.04 默认使用的是 openssl3.0 …...

网络编程(Modbus进阶)

思维导图 Modbus RTU&#xff08;先学一点理论&#xff09; 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议&#xff0c;由 Modicon 公司&#xff08;现施耐德电气&#xff09;于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

三维GIS开发cesium智慧地铁教程(5)Cesium相机控制

一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点&#xff1a; 路径验证&#xff1a;确保相对路径.…...

vscode(仍待补充)

写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh&#xff1f; debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...

【2025年】解决Burpsuite抓不到https包的问题

环境&#xff1a;windows11 burpsuite:2025.5 在抓取https网站时&#xff0c;burpsuite抓取不到https数据包&#xff0c;只显示&#xff1a; 解决该问题只需如下三个步骤&#xff1a; 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…...

ardupilot 开发环境eclipse 中import 缺少C++

目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...

NFT模式:数字资产确权与链游经济系统构建

NFT模式&#xff1a;数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新&#xff1a;构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议&#xff1a;基于LayerZero协议实现以太坊、Solana等公链资产互通&#xff0c;通过零知…...

MySQL用户和授权

开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务&#xff1a; test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

基于Java+MySQL实现(GUI)客户管理系统

客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息&#xff0c;对客户进行统一管理&#xff0c;可以把所有客户信息录入系统&#xff0c;进行维护和统计功能。可通过文件的方式保存相关录入数据&#xff0c;对…...

C++ 设计模式 《小明的奶茶加料风波》

&#x1f468;‍&#x1f393; 模式名称&#xff1a;装饰器模式&#xff08;Decorator Pattern&#xff09; &#x1f466; 小明最近上线了校园奶茶配送功能&#xff0c;业务火爆&#xff0c;大家都在加料&#xff1a; 有的同学要加波霸 &#x1f7e4;&#xff0c;有的要加椰果…...