单片机11 独立按键控制单个数码管
- 格式:ppt
- 大小:165.00 KB
- 文档页数:5
单片机独立按键简单说明调试过程独立按键调试过程也比较简单,独立按键有两个极,没有正负之分,按键按下,两个极相连,就是有个问题是机械按键按下或抬起是会存在机械抖动,所以就需要进行消抖,消抖可以分为硬件消抖和软件消抖,由于大多学习的时候不存在硬件消抖电路(省成本),所以软件消抖使用的相对较多一点。
需注意的问题是要消抖的问题,软件延时长了会对整个程序出现bug,当然这个程序非常小所以感觉不到问题所在,其实按键最好还是用外部中断来实现还是挺好,不会对整个程序存在延时问题(程序中间有延时整个程序运行到这里就会卡在这)。
主题:单片机独立按键控制LED灯实验原理目录1. 概述2. 单片机独立按键控制LED灯实验原理3. 实验步骤4. 结语1. 概述单片机在现代电子设备中起着至关重要的作用,它可以通过编程实现各种功能。
其中,控制LED灯是单片机实验中常见的任务之一。
本文将介绍单片机独立按键控制LED灯的实验原理及实验步骤,希望对初学者有所帮助。
2. 单片机独立按键控制LED灯实验原理单片机独立按键控制LED灯的实验原理主要涉及到单片机的输入输出端口及按键和LED的连接方式。
在单片机实验中,按键与单片机的输入端口相连,LED与单片机的输出端口相连。
通过按键的按下和松开来改变单片机输出端口电平,从而控制LED的亮灭。
3. 实验步骤为了完成单片机独立按键控制LED灯的实验,需要按照以下步骤进行操作:步骤一:准备材料- 单片机板- 按键- LED灯- 连线- 电源步骤二:搭建电路- 将按键与单片机的输入端口相连- 将LED与单片机的输出端口相连- 连接电源步骤三:编写程序- 使用相应的单片机开发软件编写程序- 程序中需要包括按键状态检测和LED控制的部分步骤四:烧录程序- 将编写好的程序烧录到单片机中步骤五:运行实验- 按下按键,观察LED的亮灭情况- 确保按键可以正确控制LED的亮灭4. 结语通过上述实验步骤,我们可以实现单片机独立按键控制LED灯的功能。
这个实验不仅可以帮助学习者了解单片机的输入输出端口控制,还可以培养动手能力和程序设计能力。
希望本文对单片机实验初学者有所帮助,谢谢阅读!实验步骤在进行单片机独立按键控制LED灯实验时,需要按照一定的步骤进行操作,以确保实验能够顺利进行并取得预期的效果。
下面将详细介绍实验步骤,帮助读者更好地理解和掌握这一实验过程。
1. 准备材料在进行单片机独立按键控制LED灯实验前,首先需要准备相应的材料。
这些材料包括单片机板、按键、LED灯、连线和电源。
在选择单片机板时,需要根据具体的实验需求来确定,常见的有51单片机、Arduino等,不同的单片机板具有不同的特性和使用方法,因此需要根据实验要求来选择适合的单片机板。
单片机课程设计题目汇总(一)说明:为便于同学提前探讨开发思路,自学相关内容,特将本课程设计的可选题目发给大家。
本次题目为其一部分,稍后会有另一部分。
鼓励大家自己设计题目。
要求:每个小组2-3人,每个题目最多限两个小组选;课程设计考核内容包括:C51源程序;现场显示结果;设计报告文档(文档的格式稍后公布,请注意查收)。
一、基于单片机的交通灯显示系统(一)设计内容:1、东西方向、南北方向均有红、黄、绿三种信号灯;(30分)2、带紧急制动按钮,按钮按下,所有方向亮红灯;再次按下,恢复正常显示(20分)3、夜间模式按钮按下,所有方向显示黄灯闪烁(20分)4、实时提醒绿灯亮的剩余时间(30分)图示:二、基于单片机的交通灯显示系统(二)设计内容:1、东西干道和南北干道的通行分左行、右行、直行,其中左行、右行固定15秒;直行固定30秒(40分)2、信号灯分绿灯(3种)、红灯、黄灯,每次绿灯换红灯时,黄灯亮3秒钟。
(30分)3、东西干道和南北干道交替控制,每次干道绿灯交替时,有3秒钟所有干道的交通灯都是黄灯闪烁3秒钟,提示已经进入路口的车辆迅速通过。
(30分)4、其他创新内容。
(10分)图示:三、基于单片机的波形发生器设计设计内容:1、设计一款能产生3种以上波形的波形发生器(30分)2、设计波形选择按钮(采用3个独立按键)(10分)3、点阵显示波形图案(20分)4、能同时输出两种波形(30分)5、显示频率(10分)图示:四、基于单片机的LED点阵广告牌设计设计内容:1、能显示不同字符、图形的LED点阵广告牌(30分)2、用独立按键控制不同字符的切换效果(如闪烁、静止、平移)(30分)3、可通过串口从电脑下载更新需要显示的字符(30分)4、其他创新功能(10分)图示:略五、基于单片机的篮球计分器设计设计内容:1、设计LCD显示篮球比分牌(30分)2、通过加分按钮可以给A队或B队加分(20分)3、设计对调功能,A队和B队分数互换,意味着中场交换场地。
项目3简易数字钟的设计(1)“简易数字种的设计”是本书第一个项目教学实例,提出项目任务要求,分解任务和知识点,逐个突破,最后再完成整个项目设计,达到学以致用的目的,这是项目教学的精髓。
本单元是“简易数字钟”的第一部分,介绍各模块的基本知识点。
【任务要求】(1)在6位数码管上分别显示时、分、秒,分与秒、小时与分之间用小数点间隔开。
(2)通过单片机内部定时器控制走时,走时准确。
(3)系统有四个按键,功能分别是调整,加,减,确定。
在按下调整键时候,显示“时”的两位数码管以1 Hz 频率闪烁。
如果再次按下调整键,则“分”开始闪烁,“时”恢复正常显示,依次循环,直到按下确定键,恢复正常的显示。
在数码管闪烁的时候,按下加或者减键可以调整相应的显示内容。
【内容安排】3.1 单位数码管的显示3.2 多位动态数码管的显示3.3 独立按键检测原理及实现3.4 中断的原理及应用3.5 定时器的原理及应用3.1 单个数码管的显示3.1.1 任务要求本单元“简易数字钟的设计”使用6位数码管作为时间显示器件,要掌握6位数码管的驱动方法,先从单个数码管入手。
本节的任务要求:在掌握单个数码管原理的基础上,在开发板的单个数码管上依次显示‘0’、‘1’、‘2’...”’‘9’、‘A’、‘b’、‘C’、‘d’、‘E’、‘F’16个数字或字母,间隔时间1s。
3.1.2 知识准备1、数码管的特点和外观数码管能显示数字和有限个数的字母,由于它具有显示清晰、亮度高、寿命长、价格低廉等特点,因此在电子产品中经常使用,图3.1.1是市面上常见到的数码管外观。
数码管按位数来区分,有单个位的,也有2位、3位和4位一体的。
按大小分,有0.28寸、0.36寸、0.56寸和0.8寸等。
按发光颜色分,有红色、绿色和蓝色等。
图3.1.1 数码管外形图片2、单个数码管的显示原理我们小时候玩过的“火柴棒游戏”,几根火柴组合起来,可以拼成各种各样的图形,数码管实际上就是利用这个原理做成的。
基于单片机的按键控制LED数码管共阴极动态显示电路设计报告毕业论文本篇报告将详细介绍基于单片机的按键控制LED数码管共阴极动态显示电路的设计。
一、引言LED数码管是一种常用的数字显示器件,广泛应用于各种计数器、时钟和计时器等电子设备中。
本设计旨在利用单片机实现对LED数码管的动态显示,并通过按键控制显示的数字。
二、设计方案1.系统结构本系统采用基于单片机的数字显示方案,其中包括一个单片机、数码管显示模块和按键模块。
单片机负责接收按键输入信号,并根据输入信号控制数码管显示相应的数字。
2.系统设计(1)数码管显示模块:该模块由共阴极LED数码管组成,共阴极接地,通过接通不同的端口线来控制数码管显示不同的数字。
(2)按键模块:该模块由多个按键组成,用于用户输入指定的数字。
每个按键接一个IO脚,通过按下不同的按键,触发不同的端口输入。
(3)单片机:本设计选用51单片机作为控制核心,通过IO口与数码管显示模块和按键模块连接。
单片机根据按键输入信号的变化,对数码管进行动态显示。
3.设计过程(1)针对单片机的接线设计:将单片机的IO口分别与数码管显示模块和按键模块连接。
将数码管的共阳极接电源正极,数码管的各段(即a、b、c、d、e、f、g)接单片机的IO脚。
(2)针对单片机软件设计:设计单片机程序实现按键输入的检测和数码管动态显示的控制。
首先初始化IO口,设置按键引脚为输入端口,设置数码管引脚为输出端口。
然后循环检测按键的状态。
当检测到按键被按下时,根据按键的不同选择分别显示不同的数字。
4.功能要求(1)按下不同的按键,数码管能够显示相应的数字,实现动态显示。
(2)按键输入具有去抖功能,避免误触发。
(3)程序运行稳定,能够正确响应按键输入,显示正确的数字。
三、实验结果经过实验验证,本设计实现了按键控制LED数码管共阴极动态显示的功能要求。
按下不同的按键,数码管能够正确显示相应的数字,程序运行稳定,无误触发现象。
学号1607080221天津城建大学单片机原理及接口技术课程设计设计说明书数码管显示亮度的按键控制设计起止日期:2019 年 1 月2 日至2019 年1 月11 日学生姓名韩徐班级16电信科2班成绩指导教师(签字)计算机与信息工程学院2019年1月11日天津城建大学课程设计任务书2018—2019学年第1学期计算机与信息工程学院电子信息科学与技术专业班级2班学号1607080221课程设计名称:单片机原理及应用A课程设计设计题目:数码管显示亮度的按键控制设计完成期限:自2019 年 1 月 2 日至2019 年 1 月11 日共 2 周设计依据、要求及主要内容:一.设计的目的1.进一步熟悉和掌握单片机系统设计和编程原理。
2.掌握单片机的接口技术及相关外围芯片的外特性、控制方法。
3.通过设计,掌握以单片机核心的电路设计的基本方法和技术。
4.通过实际程序设计和调试,掌握模块化程序设计方法和调试技术。
5.通过完成一个包括电路设计和程序开发的完整过程,了解开发单片机应用系统的全过程,为今后从事相应开发打下基础。
二.设计的基本要求1.认识设计的意义,掌握设计工作程序,学会使用工具书和技术参考资料,并培养科学的设计思想和良好的设计作风。
2.提高模型建立和设计能力,学会应用相关设计资料进行设计计算的方法。
3.提高独立分析、解决问题的能力,逐步增强实际应用训练。
4.设计的说明书要求简洁、通顺,电路图内容完整、清楚、规范。
三.设计主要内容a) 设计实现功能STC12C5A60S2(引脚排序及基本功能同AT89S51)作为主控芯片,设计利用按键实现数码管亮度的调整。
一是扩展DS18B20温度检测电路,并由数码管显示;二是扩展按键电路;三是利用按键调整数码管的亮度。
b) 原理图设计1.原理图设计要符合项目的工作原理,连线要正确。
2.图中所使用的元器件要合理选用,电阻、电容等器件的参数要正确标明。
3.原理图要完整,CPU、外围器件、外扩接口、输入/输出装置要一应俱全。
第八节单个数码管控制一、编写程序步骤一:打开bascom-avr编程环境;步骤二:新建空白编程文件;步骤三:设置系统频率,系统的波特率步骤四:输入程序程序举例:将下面程序在bascom-avr中编译及仿真'——————————————————————————————————'名称: 单个数码管控制程序'目的: 通过此程序,练习bascom-avr与实验板的使用,了解I/0口及数码管。
'目标芯片: Mega16'作者: 张恩锋'编译环境: BASCOM-A VR 1.11.8.4'protues 7仿真通过'———————————————————————————————————$regfile = "m16def.dat" ' 单片机型号$crystal = 8000000 ' 定义晶振频率Config Porta = Output '定义A口为输出口Do '循环DO__LOOP Porta = &B00000001 '让A口的输出,LoopEnd '————————————————————————————————————步骤五:保存程序步骤六:编译文件如下图所示:在菜单栏中单击“compile program”或按F7键编译文件,若提示错误请认真检查并及时更正错误。
二、仿真模拟在桌面中打开protues仿真软件2.1 添加元件点击新建文件单击“P”从库中选取元件在关键字中输入“7seg-com-cat-grn”添加一个共阴级数码管选择结果中的元件并双击。
同样的方法在关键字中输入“atmega16”添加A VR单片机单击“确定”退出添加元件界面。
单击添加的元件,在编辑界面鼠标会变成笔状。
在编辑界面单击鼠标,会出现器件的外形,选择好器件所放位置并单击鼠标就可放置元件单击鼠标后若是有特殊需要,可以在单片机元件图中点击鼠标右键把单片机进行旋转,如下图:同样的方法放置数码管。
按键控制数码管和流水灯设计报告实验报告实验名称:按键控制数码管和流水灯设计报告一、实验目的本实验旨在通过使用按键来控制数码管和流水灯的显示,加深对数码管和流水灯工作原理的理解,并掌握按键的基本输入输出原理。
二、实验器材1. Arduino开发板2.数码管模块3.面包板4.面包板连接线5.按键模块6.跳线三、实验原理数码管是一种将数字和一些常用符号通过数码电路显示在特定位置的显示器件,由多个LED组成,可显示0-9及一些小于9的字母和符号。
流水灯是一种LED灯的组合,通过不同的时序控制,实现灯光依次点亮或熄灭的效果。
本实验通过使用按键控制器将数码管和流水灯的状态控制与显示,按下不同的按键可以使数码管切换显示不同的数字,同时控制流水灯的点亮或熄灭。
四、实验步骤1. 将数码管模块连接到Arduino开发板的数字I/O口,连接方式可参考数码管模块的接口定义和Arduino开发板的编号。
2. 将按键模块连接到Arduino开发板的数字I/O口,连接方式可参考按键模块的接口定义和Arduino开发板的编号。
3. 按键模块和数码管模块都需要使用面包板连接线和跳线连接到Arduino开发板的相应引脚上。
4.根据按键的读取状态,通过编程控制数码管显示相应的数字,利用流水灯实现通过按键的控制点亮或熄灭。
五、实验结果经过编程和调试,实验中数码管能够正确显示按键输入的数字,同时根据按键输入状态控制流水灯的点亮或熄灭。
按不同的按键可以切换数码管的数字显示,实现了按键对数码管和流水灯的控制。
六、实验总结本实验通过按键来控制数码管和流水灯的显示,加深了对数码管和流水灯的工作原理的理解。
同时,掌握了按键的基本输入输出原理,并通过编程控制实现了按键对数码管和流水灯的控制。
本实验还有一些可以改进的地方,例如可以增加多个按键,实现更多的控制功能;还可以通过增加延时函数控制流水灯的点亮或熄灭速度。
通过不断改进和练习,可以提高对Arduino开发板的理解和掌握。
独立键盘/****************************************************************************** * 按键控制程序* 连接方法:JP10(P2)与JP1 (LED灯)连接,* JP11(P0)与JP5(按键接口)连接* * 开始点亮P1LED* 按P01 LED向右移一位* * 按P00 LED向左移一位* 连续按动按钮LED会不停的左移或右移******************************************************************************** /#include <reg51.h>#include <intrins.h>unsigned char scan_key();void proc_key(unsigned char key_v);void delayms(unsigned char ms);sbit K1 = P0^0; //对应按钮K1sbit K2 = P0^1; //对应按钮K2main(){unsigned char key_s,key_v;key_v = 0x03;P2 = 0xfe;while(1){key_s = scan_key();if(key_s != key_v){delayms(10);key_s = scan_key();if(key_s != key_v){key_v = key_s;proc_key(key_v);}}}}unsigned char scan_key(){unsigned char key_s;key_s = 0x00;key_s |= K2;key_s <<= 1;key_s |= K1;return key_s;}void proc_key(unsigned char key_v){if((key_v & 0x01) == 0){P2 = _crol_(P2,1);}else if((key_v & 0x02) == 0){P2 = _cror_(P2, 1);}}void delayms(unsigned char ms) // 延时子程序{unsigned char i;while(ms--){for(i = 0; i < 120; i++);}}矩阵键盘******************************************************************************* *描述: * * 矩阵键盘数码管显示键值** 排线连接方法:JP8(P1)与JP4(矩阵键盘接口)连接P0与JP3(静态数码管)连接* * 矩阵键盘定义:** P1.1-P1.4为列线,P1.4-P1.7为行线* * 喇叭接P1.5口矩阵键盘P1口,* * 注意:请将JP165短路冒断开* ******************************************************************************* #include <reg51.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned intuchar dis_buf; //显示缓存uchar temp;uchar key; //键顺序吗void delay0(uchar x); //x*0.14MS#define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};// 此表为LED 的字模unsigned char code LED7Code[] = {~0x3F,~0x06,~0x5B,~0x4F,~0x66,~0x6D,~0x7D,~0x07,~0x7F,~0x6F,~0x77,~0x7C,~0x39,~0x5 E,~0x79,~0x71};/*************************************************************//* *//* 延时子程序*//* *//*************************************************************/void delay(uchar x){ uchar j;while((x--)!=0){ for(j=0;j<125;j++){;}}}/*************************************************************//* /* 键扫描子程序(4*3 的矩阵) P1.4 P1.5 P1.6 P1.7为行*//* P1.1 P1.2 P1.3为列*/*************************************************************/void keyscan(void){ temp = 0;P1=0xF0; //高四位输入行为高电平列为低电平delay(1);temp=P1; //读P1口temp=temp&0xF0; //屏蔽低四位temp=~((temp>>4)|0xF0);if(temp==1) // p1.4 被拉低key=0;else if(temp==2) // p1.5 被拉低key=1;else if(temp==4) // p1.6 被拉低key=2;else if(temp==8) // p1.7 被拉低key=3;elsekey=16;P1=0x0F; //低四位输入列为高电平行为低电平delay(1);temp=P1; //读P1口temp=temp&0x0F;temp=~(temp|0xF0);if(temp==2) // p1.1 被拉低key=key+0;else if(temp==4) // p1.2 被拉低key=key+4;else if(temp==8) // p1.3 被拉低key=key+8;elsekey=16;dis_buf = key; //键值入显示缓存dis_buf = dis_buf & 0x0f;}/*************************************************************//* *//*判断键是否按下*//* *//*************************************************************/void keydown(void){P1=0xF0;if(P1!=0xF0) //判断按键是否按下如果按钮按下会拉低P1其中的一个端口{keyscan(); //调用按键扫描程序}}/*************************************************************//* *//* 主程序*//* *//*************************************************************/main(){P0=0xFF; //置P0口P1=0xFF; //置P1口delay(10); //延时while(1){keydown(); //调用按键判断检测程序P0 = LED7Code[dis_buf%16]&0x7f; //LED7 0x7f为小数点共阴和共阳此处也是不一样; %16表示输出16进制}}/************************************************************/标题: 试验数码管上如何显示数字(共阳极) * 连接方法:P0 与JP3 用8PIN排线连接*请学员认真消化本例程,用单片机脚直接控制数码管* #include <reg51.h>#include <intrins.h>#define NOP() _nop_() /* 定义空指令*/void delay(unsigned int i); //函数声名// 此表为LED 的字模unsigned char code LED7Code[] = {~0x3F,~0x06,~0x5B,~0x4F,~0x66,~0x6D,~0x7D,~0x07,~0x7F,~0x6F,~0x77,~0x7C,~0x39,~0x5 E,~0x79,~0x71};main(){unsigned int LedNumVal=1 ,C ; //定义变量while(1){if (++C>= 300){ LedNumVal++ ; //每隔300个扫描周期加一次C =0; //每隔300个扫描清零}// 将字模送到P0口显示P0 = LED7Code[LedNumVal%10]&0x7f; //LED7 0x7f为小数点共阴和共阳此处也是不一样;delay(150); //调用延时程序}}/****************************************************************** ** 延时程序** ******************************************************************/void delay(unsigned int i){char j;for(i; i > 0; i--)for(j = 200; j > 0; j--);}*******************************************************************************标题: 试验数码管上显示数字( 单片机直接实现位选共阴极) * * 连接方法:P0与J12 用8PIN排线连接P1与JP16 用排线连接***************************************************************************** 请学员认真消化本例程,用573锁存器控制和单片机脚直接位选控制(非译码器控制)数码管******************************************************************************** #include <reg51.h>#include <intrins.h>void delay(unsigned int i); //函数声名char DelayCNT;//定义变量//此表为LED 的字模, 共阴数码管0-9 -unsigned char code Disp_Tab[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40}; //段码控制//此表为8个数码管位选控制, 共阴数码管1-8个-unsigned char code dispbit[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdF,0xbF,0x7F}; //位选控制查表的方法控制/************主函数**********************/main(){unsigned int i,LedNumVal=1 ; //变量定义unsigned int LedOut[10]; //变量定义DelayCNT=0;while(1){if(++DelayCNT>=20) //控制数字变化速度{DelayCNT=0; //20个扫描周期清零一次++LedNumVal; //每隔20个扫描周期加一次}LedOut[0]=Disp_Tab[LedNumVal%10000/1000];LedOut[1]=Disp_Tab[LedNumVal%1000/100]|0x80;LedOut[2]=Disp_Tab[LedNumVal%100/10];LedOut[3]=Disp_Tab[LedNumVal%10];LedOut[4]=Disp_Tab[LedNumVal%10000/1000]; //千位LedOut[5]=Disp_Tab[LedNumVal%1000/100]|0x80; //百位带小数点LedOut[6]=Disp_Tab[LedNumVal%100/10]; //十位LedOut[7]=Disp_Tab[LedNumVal%10]; //个位for( i=0; i<9; i++){P0 = LedOut[i];P1 = dispbit[i]; //使用查表法进行位选/* switch(i) //使用switch 语句控制位选{case 0:P1 = 0x7F; break;case 1:P1 = 0xbF; break;case 2:P1 = 0xdF; break;case 3:P1 = 0xeF; break;case 4:P1 = 0xf7; break;case 5:P1 = 0xfb; break;case 6:P1 = 0xfd; break;case 7:P1 = 0xfe; break;} */delay(150); //扫描间隔时间太长会数码管会有闪烁感}}}void delay(unsigned int i){char j;for(i; i > 0; i--)for(j = 200; j > 0; j--);}。
51单⽚机学习笔记:独⽴按键s2按下数码管加⼀(缺陷版)在学习了独⽴按键后,就产⽣了这个想法。
所以今天就把他实现了出来:#include<reg52.h>sbit KEY_s2 = P3^0; //定义按键s2sbit WE = P2^7; //定义位选sbit DU = P2^6; //定义段选unsigned int code table[10] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F};unsigned int code duan[10] = {0,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};void delay() //20ms延时函数(⽤于键盘消抖){unsigned char a,b,c;for(c=1;c>0;c--)for(b=222;b>0;b--)for(a=40;a>0;a--);}void softwaredelay() //⽤于动态显⽰数码管{unsigned char a,b;for(b=102;b>0;b--)for(a=3;a>0;a--);}void digitaltube(unsigned int du,unsigned int num){if(num == 0){P0 = 0xFF;WE = 1;P0 = duan[du];WE = 0;DU = 1;P0 = table[0];DU = 0;}if(num == 1){P0 = 0xFF;WE = 1;P0 = duan[du];WE = 0;DU = 1;P0 = table[1];DU = 0;}if(num == 2){P0 = 0xFF;WE = 1;P0 = duan[du];WE = 0;DU = 1;P0 = table[2];DU = 0;}if(num == 3){P0 = 0xFF;WE = 1;P0 = duan[du];WE = 0;DU = 1;P0 = table[3];DU = 0;}if(num == 4){P0 = 0xFF;WE = 1;P0 = duan[du];WE = 0;DU = 1;P0 = table[4];DU = 0;}if(num == 5){P0 = 0xFF;WE = 1;P0 = duan[du];WE = 0;DU = 1;P0 = table[5];DU = 0;}if(num ==6){P0 = 0xFF;WE = 1;P0 = duan[du];WE = 0;DU = 1;P0 = table[6];DU = 0;}if(num == 7){P0 = 0xFF;WE = 1;P0 = duan[du];WE = 0;DU = 1;P0 = table[7];DU = 0;}if(num == 8){P0 = 0xFF;WE = 1;P0 = duan[du];WE = 0;DU = 1;P0 = table[8];DU = 0;}if(num == 9){P0 = 0xFF;WE = 1;P0 = duan[du];WE = 0;DU = 1;P0 = table[9];DU = 0;}}void main(){unsigned int sec = 0;unsigned int dt4;unsigned int dt3;unsigned int dt2;unsigned int dt1;while(1){if(KEY_s2 == 0){delay(); //键盘消抖if(KEY_s2 == 0) {sec ++;while(!KEY_s2); }}//松键盘后数码管显⽰加1dt4 = sec % 10;dt3 = (sec / 10) % 10;dt2 = (sec / 100) % 10;dt1 = (sec/ 1000) % 10;digitaltube(1 , dt1);softwaredelay();digitaltube(2 , dt2);softwaredelay();digitaltube(3 , dt3);softwaredelay();digitaltube(4 , dt4);softwaredelay();}}但是在烧录到单⽚机⾥执⾏的时候会发现在按键按下时,数码管是熄灭的......这就涉及到了中断的问题。