按键流程图
- 格式:vsd
- 大小:52.50 KB
- 文档页数:1


第1篇一、实验目的1. 理解按键输入的基本原理。
2. 掌握C语言编程中按键扫描和响应的实现方法。
3. 实现基于按键输入的加减功能,并能够查询结果。
二、实验环境1. 开发工具:Keil uVision52. 实验平台:STM32F103系列单片机开发板3. 外设:按键模块三、实验原理1. 按键扫描原理:通过查询或中断方式检测按键是否被按下,并判断是哪个按键被按下。
2. 单片机编程:使用C语言编写程序,实现对按键的扫描和加减功能的实现。
四、实验步骤1. 准备实验环境,连接按键模块到单片机开发板上。
2. 编写按键扫描函数,实现按键的检测和识别。
3. 编写加减功能函数,实现加法和减法运算。
4. 编写主函数,实现按键输入和结果显示。
五、实验代码```cinclude "stm32f10x.h"// 按键定义define KEY_ADD GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) // PA0define KEY_SUB GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_1) // PA1// 全局变量volatile int result = 0;// 按键扫描函数void KeyScan(void) {if (KEY_ADD == 0) {while (KEY_ADD == 0); // 防抖动 result += 1;}if (KEY_SUB == 0) {while (KEY_SUB == 0); // 防抖动 result -= 1;}}// 加减功能函数void AddSub(void) {KeyScan();// 显示结果// ... (此处省略显示代码)}// 主函数int main(void) {// 初始化GPIO// ... (此处省略初始化代码)while (1) {AddSub();}}```六、实验结果与分析1. 实验结果:通过按键输入,可以实现对数字的加减操作,并实时显示结果。
一、实验目的1.掌握4×4矩阵式键盘程序识别原理2.掌握4×4矩阵式键盘按键的设计方法二、设计原理(1)如图14.2所示,用单片机的并行口P3连接4×4矩阵键盘,并以单片机的P3.0-P3.3各管脚作输入线,以单片机的P3.4-P3.7各管脚作输出线,在数码管上显示每个按键“0-F”的序号(2)键盘中对应按键的序号排列如图14.1所示三、参考电路740)this.width=740" border=undefined>图14.2 4×4矩阵式键盘识别电路原理图740)this.width=740" border=undefined>图14.1 4×4键盘0-F显示740)this.width=740" border=undefined>图14.3 4×4矩阵式键盘识别程序流程图四、电路硬件说明(1)在“单片机系统”区域中,把单片机的P3.0-P3.7端口通过8联拨动拨码开关JP3连接到“4×4行列式键盘”区域中的M1-M4,N1-N4端口上(2)在“单片机系统”区域中,把单片机的P0.0-P0.7端口连接到“静态数码显示模块”区域中的任何一个a-h端口上;要求:P0.0对应着a,P0.1对应着b,……,P0.7对应着h五、程序设计内容(1)4×4矩阵键盘识别处理(2)每个按键都有它的行值和列值,行值和列值的组合就是识别这个按键的编码矩阵的行线和列线分别通过两并行接口和CPU通信键盘的一端(列线)通过电阻接VCC,而接地是通过程序输出数字“0”实现的键盘处理程序的任务是:确定有无键按下,判断哪一个键按下,键的功能是什么?还要消除按键在闭合或断开时的抖动两个并行口中,一个输出扫描码,使按键逐行动态接地;另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能六、程序流程图(如图14.3所示)七、汇编源程序;;;;;;;;;;定义单元;;;;;;;;;;COUNT EQU 30H;;;;;;;;;;入口地址;;;;;;;;;;ORG 0000HLJMP STARTORG 0003HRETIORG 000BHRETIORG 0013HRETIORG 001BHRETIORG 0023HRETIORG 002BHRETI;;;;;;;;;;主程序入口;;;;;;;;;;ORG 0100HSTART: LCALL CHUSHIHUA LCALL PANDUANLCALL XIANSHILJMP START ;;;;;;;;;;初始化程序;;;;;;;;;; CHUSHIHUA: MOV COUNT#00H RET;;;;;;;;;;判断哪个按键按下程序;;;;;;;;;; PANDUAN: MOV P3#0FFHCLR P3.4MOV A P3ANL A#0FHXRL A#0FHJZ SW1LCALL DELAY10MSJZ SW1MOV A P3ANL A#0FHCJNE A#0EH K1MOV COUNT#0LJMP DKK1: CJNE A#0DH K2MOV COUNT#4LJMP DKK2: CJNE A#0BH K3 MOV COUNT#8 LJMP DKK3: CJNE A#07H K4 MOV COUNT#12K4: NOPLJMP DKSW1: MOV P3#0FFH CLR P3.5MOV A P3ANL A#0FHXRL A#0FHJZ SW2LCALL DELAY10MS JZ SW2MOV A P3ANL A#0FHCJNE A#0EH K5 MOV COUNT#1 LJMP DKK5: CJNE A#0DH K6 MOV COUNT#5 LJMP DKK6: CJNE A#0BH K7 MOV COUNT#9 LJMP DKK7: CJNE A#07H K8 MOV COUNT#13K8: NOPLJMP DKSW2: MOV P3#0FFH CLR P3.6MOV A P3ANL A#0FHXRL A#0FHJZ SW3LCALL DELAY10MS JZ SW3MOV A P3ANL A#0FHCJNE A#0EH K9 MOV COUNT#2 LJMP DKK9: CJNE A#0DH KA MOV COUNT#6 LJMP DKKA: CJNE A#0BH KB MOV COUNT#10 LJMP DKKB: CJNE A#07H KC MOV COUNT#14 KC: NOPLJMP DKSW3: MOV P3#0FFH CLR P3.7MOV A P3ANL A#0FHXRL A#0FHJZ SW4LCALL DELAY10MSJZ SW4MOV A P3ANL A#0FHCJNE A#0EH KDMOV COUNT#3LJMP DKKD: CJNE A#0DH KE MOV COUNT#7LJMP DKKE: CJNE A#0BH KF MOV COUNT#11LJMP DKKF: CJNE A#07H KG MOV COUNT#15KG: NOPLJMP DKSW4: LJMP PANDUAN DK: RET ;;;;;;;;;;显示程序;;;;;;;;;; XIANSHI: MOV A COUNT MOV DPTR#TABLE MOVC A@A+DPTRMOV P0 ALCALL DELAYSK: MOV A P3ANL A#0FHXRL A#0FHJNZ SKRET ;;;;;;;;;;10ms延时程序;;;;;;;;;;DELAY10MS: MOV R6#20D1: MOV R7#248DJNZ R7$DJNZ R6D1RET;;;;;;;;;;200ms延时程序;;;;;;;;;;DELAY: MOV R5#20LOOP: LCALL DELAY10MSDJNZ R5LOOPRET;;;;;;;;;;共阴码表;;;;;;;;;;TABLE: DB 3FH06H5BH4FH66H6DH7DH07H DB 7FH6FH77H7CH39H5EH79H71H ;;;;;;;;;;结束标志;;;;;;;;;;END八、C语言源程序#include<AT89X51.H>unsigned char code table[]={0x3f0x660x7f0x390x060x6d0x6f0x5e0x5b0x7d0x770x790x4f0x070x7c0x71};void main(void){ unsigned char i j k key;while(1){ P3=0xff; //给P3口置1//P3_4=0; //给P3.4这条线送入0//i=P3;i=i&0x0f; //屏蔽低四位//if(i!=0x0f) //看是否有按键按下//{ for(j=50;j>0;j--) //延时//for(k=200;k>0;k--);if(i!=0x0f) //再次判断按键是否按下//{ switch(i) //看是和P3.4相连的四个按键中的哪个// { case 0x0e:key=0;break;case 0x0d:key=1;break;case 0x0b:key=2;break;case 0x07:key=3;break;}P0=table[key]; //送数到P0口显示//}}P3=0xff;P3_5=0; //读P3.5这条线//i=P3;i=i&0x0f; //屏蔽P3口的低四位//if(i!=0x0f) //读P3.5这条线上看是否有按键按下// { for(j=50;j>0;j--) //延时//for(k=200;k>0;k--);i=P3; //再看是否有按键真的按下//i=i&0x0f;if(i!=0x0f){ switch(i) //如果有显示相应的按键//{ case 0x0e:key=4;break;case 0x0d:key=5;break;case 0x0b:key=6;break;case 0x07:key=7;break;}P0=table[key]; //送入P0口显示//}}P3=0xff;P3_6=0; //读P3.6这条线上是否有按键按下// i=P3;i=i&0x0f;if(i!=0x0f){ for(j=50;j>0;j--)for(k=200;k>0;k--);i=P3;i=i&0x0f;if(i!=0x0f){ switch(i){ case 0x0e:key=8;break;key=9;break;case 0x0b:key=10;break;case 0x07:key=11;break;}P0=table[key];}}P3=0xff;P3_7=0; //读P3.7这条线上是否有按键按下// i=P3;i=i&0x0f;if(i!=0x0f){ for(j=50;j>0;j--)for(k=200;k>0;k--);i=P3;i=i&0x0f;if(i!=0x0f){ switch(i){ case 0x0e:key=12;break;case 0x0d:key=13;break;key=14;break;case 0x07:key=15;break;}P0=table[key];}}}}九、注意事项在硬件电路中,要把8联拨动拨码开关JP2拨下,把8联拨动拨码开关JP3拨上去。
消防系统管理三流程——设备操作流程(泰和安-JB-QGL-TX3032A)注意:根据各项目消防主机品牌对操作流程操作自行调整。
一、联动型消防系统操作示意图1、消防主机处置火情操作示意图(泰和安-JB-QGL-TX3032A)消防主机联动设备处置火警操作指引①确认现场发生火警为火情信息②按“消音”键设备运行状态转换操作指引③如消防主机在“禁止”状态,须操纵至“允许”状态,“允许”指示灯亮起。
2、多线控制盘操作示意图(泰和安-JB-QGL-TX3032A)在处置火情事件时,如被控制的主要消防设备未动作,可在多线控制盘进行直启手动操作。
多线控制盘启动操作指引①多线控制盘“手动方式”操作至允许状态,“允许”指示灯亮起消火栓泵启动操作指引②手动直接启动消火栓泵“启动”键,“启动”与“反馈”指示灯先后亮起,证明设备正常动作。
喷淋(雨淋、预作用、水炮、水幕、细水雾)水泵启动操作指引③手动直接启动喷淋泵“启动”键,“启动”与“反馈”指示灯先后亮起,证明设备正常动作启动正压送风风机操作启动消防排烟风机操作④手动启动失火单元或防火分区正压送风风机⑤手动启动失火单元或防火分区消防排烟风机“启动”键,“启动”与“反馈”指示灯先后亮起“启动”键,“启动”与“反馈”指示灯先后亮起3、总线控制盘操作示意图在处置火情事件时,如控制的消防设备未动作,可在总线控制盘进行手动操作。
①按动主界面“联动模式”键②按屏幕下方“上下键”功能③按屏幕中第2选项“设置手动控制状态”按确认键显示“操作已完成”防火卷帘门下降操作指引在总线控制盘面板上找到控制防火卷帘门按键区域,选择失火区域的防火卷帘门按键按下“操作”键,“启动”与“反馈”指示灯先后亮起,控制屏显示为“防火卷帘门动作”电梯迫降操作指引在总线控制盘面板上找到控制电梯按键区域,选择失火区域的电梯按键按下“操作”键,“动作”与“反馈”指示灯先后亮起,控制屏显示为“电梯迫降”应急照明切换操作指引在总线控制盘面板上找到控制应急照明按键区域,选择失火区域的应急照明按键按下“操作”键,“动作”与“反馈”指示灯先后亮起,控制屏显示为“强切间切电”4、消防设备测试操作示意图(泰和安-JB-QGL-TX3032A)消防控制室启动XX栋楼非消防电源强切功能指引①将消防主机进入“系统界面”②进入“运行模式”,进入“调试”模式确认③按“菜单”键“上下”键选择系统设置,选择10模拟火警④输入测试二次码⑤如:输入70683321号⑥按F1启动消防控制室启动XX防火分区卷帘门下降功能指引跟应急、强切、等操作方式雷同消防控制室启动XX 栋楼(防火分区)正压送风风机指引①在控制盘上将钥匙设置为“允许”状态②启动待测试XX 栋楼(防火分区)正压送风机消防控制室启动XX 防火分区消防排烟风机指引①在控制盘上将钥匙设置为“允许”状态②启动待测试XX 栋楼(防火分区)消防排烟机消防控制室启动(室内外)消火栓泵指引①在控制盘上将钥匙设置为“允许”状态②启动待测试消火栓泵(泵房现场安排人员复位)消防控制室启动喷淋泵指引①在控制盘上将钥匙设置为“允许”状态②启动待测试喷淋泵(泵房现场安排人员复位)消防控制室启动XX栋楼(防火分区)消防疏散广播指引①控制盘运行方式调到“允许”状态②进入“设置界面”,点击7进入“设置手动启停设备模式③点击“允许”、“确认”④手动方式“允许”灯亮⑤按下该区域广播按钮,动作后“工作”灯亮5、消防设备故障屏蔽及修复解除屏蔽操作示意图消防设备故障状态,设备屏蔽操作指引①控制板处操作“屏蔽”键输入故障设备回路号、地址码,设备类型按“F1”键完成消防设备故障修复后,设备屏蔽解除操作指引①控制板处操作“取消屏蔽”键输入设备回路号、地址码、设备类型编号选按F1键完成二、电气火灾报警设备操作流程图(泰和安-TE3004)电气火灾监控系统具有火灾预警功能,只能进行监视,无控制设备功能,将异常信息报工程组人员现场查看,并进行检测、维修,检修后正常后按下复位键输入密码1357确认异常报警点按下消音键三、防火门监控设备操作流程图(泰和安:TX3820G)该系统具有防火门状态监视功能,只能进行监视,无控制设备功能,将异常信息报安全组人员现场查看异常状态消除后,将主机复位(跟电气火灾监控设备雷同)确认异常报警点按下消音键四、气体灭火设备操作流程图(泰和安-JB-QGL-TX3032A)确认火警信息按下消音键控制室主机操作:确认真实火情后点击手/自动转换按钮现场手动按钮操作敲碎玻璃按启动。
单片机课程设计题目:基于AT89C51单片机的倒计时学院:机械与电气工程学院专业:电气工程及其自动化学号:101401010205目录1、设计要求 (3)2. 工作原理 (3)2.1硬件设计 (4)2.1.1 单片机AT89S51 (4)2.1.2 显示器件选择 (5)2.1.3复位电路 (7)2.1.4 时钟电路 (7)2.1.6 蜂鸣器 (9)3、软件设计 (10)3.1 按键流程图: (10)3.2 定时器流程图: (11)3.3蜂鸣器发出音乐流程图: (12)3.4主程序流程图: (13)4、电路仿真 (14)参考文献 (15)附录1 电路图 (16)附录2 程序 (16)附录3 元件清单 (21)1、设计要求利用AT89C51单片机结合LED显示器设计一个简易的倒数计数器,可用来煮方便面、煮开水或小睡片刻等。
做一小段时间倒计数,当倒计数为0时,红色LED灯闪烁,通知倒计数终了,该做应当做的事。
定时闹钟的基本功能如下。
●显示格式为“分分:秒秒”。
用4个按键操作来设置当前想要倒计数的时间。
一旦按下键则开始倒计数,当计数为0时,发出一阵利用AT89C51单片机结合LED显示器设计一个简易的倒数计数器,可用来煮方便面、煮开水或小睡片刻等。
做一小段时间倒计数,当倒计数为0时,红色LED灯闪烁,通知倒计数终了,该做应当做的事。
音乐声。
程序执行后工作指示灯LED闪动,表示程序开始执行,按下操作键K1~K4动作如下。
●K1—可调整倒计数的时间1~60分钟。
●K2—设置倒计数的时间为5分钟,显示“0500”。
●K3—设置倒计数的时间为10分钟,显示“1000”。
●K4—设置倒计数的时间为20分钟,显示“2000”。
按K1键则在LED上显示出设置画面。
此时,若:a. 按操作键K2—增加倒计数的时间1分钟。
b. 按操作键K3—减少倒计数的时间1分钟。
c. 按操作键K4—设置完成。
附加功能:K5—计数开始按钮。