当前位置: 首页 > 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 …...

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…...

<6>-MySQL表的增删查改

目录 一&#xff0c;create&#xff08;创建表&#xff09; 二&#xff0c;retrieve&#xff08;查询表&#xff09; 1&#xff0c;select列 2&#xff0c;where条件 三&#xff0c;update&#xff08;更新表&#xff09; 四&#xff0c;delete&#xff08;删除表&#xf…...

Java 加密常用的各种算法及其选择

在数字化时代&#xff0c;数据安全至关重要&#xff0c;Java 作为广泛应用的编程语言&#xff0c;提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景&#xff0c;有助于开发者在不同的业务需求中做出正确的选择。​ 一、对称加密算法…...

CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云

目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

wpf在image控件上快速显示内存图像

wpf在image控件上快速显示内存图像https://www.cnblogs.com/haodafeng/p/10431387.html 如果你在寻找能够快速在image控件刷新大图像&#xff08;比如分辨率3000*3000的图像&#xff09;的办法&#xff0c;尤其是想把内存中的裸数据&#xff08;只有图像的数据&#xff0c;不包…...

【Linux】自动化构建-Make/Makefile

前言 上文我们讲到了Linux中的编译器gcc/g 【Linux】编译器gcc/g及其库的详细介绍-CSDN博客 本来我们将一个对于编译来说很重要的工具&#xff1a;make/makfile 1.背景 在一个工程中源文件不计其数&#xff0c;其按类型、功能、模块分别放在若干个目录中&#xff0c;mak…...

Xela矩阵三轴触觉传感器的工作原理解析与应用场景

Xela矩阵三轴触觉传感器通过先进技术模拟人类触觉感知&#xff0c;帮助设备实现精确的力测量与位移监测。其核心功能基于磁性三维力测量与空间位移测量&#xff0c;能够捕捉多维触觉信息。该传感器的设计不仅提升了触觉感知的精度&#xff0c;还为机器人、医疗设备和制造业的智…...

[论文阅读]TrustRAG: Enhancing Robustness and Trustworthiness in RAG

TrustRAG: Enhancing Robustness and Trustworthiness in RAG [2501.00879] TrustRAG: Enhancing Robustness and Trustworthiness in Retrieval-Augmented Generation 代码&#xff1a;HuichiZhou/TrustRAG: Code for "TrustRAG: Enhancing Robustness and Trustworthin…...

【Post-process】【VBA】ETABS VBA FrameObj.GetNameList and write to EXCEL

ETABS API实战:导出框架元素数据到Excel 在结构工程师的日常工作中,经常需要从ETABS模型中提取框架元素信息进行后续分析。手动复制粘贴不仅耗时,还容易出错。今天我们来用简单的VBA代码实现自动化导出。 🎯 我们要实现什么? 一键点击,就能将ETABS中所有框架元素的基…...