外中断(按键)控制数码管显示

发布者:真诚友谊最新更新时间:2015-12-28 来源: eefocus关键字:外中断  按键控制  数码管显示 手机看文章 扫描二维码
随时随地手机看文章
#include "config.h"

#define uint  unsigned int
#define uchar unsigned char
#define ulong unsigned long

#define SIGNAL P3_5    // 键盘初始信号

#define KEY6  P3_2    // KEY6口就是INT0口
#define KEY2  P3_3

int num;


//  延时约(0.001 * n)秒
void delay(unsigned char n)
{
    ulong i;
    do {
        i = CPUCLK / 1000;
  while(i--);
    } while (--n != 0);
}


void int0() interrupt 0   // 也可不判断是否为KEY6按下,因为引发此中断的就是KEY6键
{
 if(KEY6 == 0)
 {
  delay(10);      // 延时消除按键抖动
  if (KEY6 == 0)     // 确定有键按下
      
   num++;
   if (num > 9)
    num = 0;
   P0 = num;
  }
  while (!KEY6)     // 等待KEY1松开
  delay(10);      // 延时消除松键抖动
 }
}


void int1() interrupt 2       
{
 if(KEY2 == 0)    
 {
  delay(10);      // 延时消除按键抖动
  if (KEY2 == 0)     // 确定有键按下
      
   num--;
   if (num < 0)
    num = 9;
   P0 = num;
  }
  while (!KEY2)     // 等待KEY1松开
  delay(10);      // 延时消除松键抖动
 }
}

// 外中断初始化函数
void int_init()
{
 EA = 1;       // 开总中断
 EX0 = 1;       // 开外中断0
 IT0 = 0;       // 外中断0低电平触发方式
 EX1 = 1;
 IT1 = 0;
}

// 主程序入口
void main(void)
{
 int_init();
 SIGNAL = 0;      // 重要!!虽然SIGNAL和IT1是同一地址,但必须初始化SIGNAL
 
 num = 0;
 P0 = num;
 
 for (;;){
 }
}

 

外中断程序设计步骤:

1. 开总中断

2. 开外中断

3. 设置外中断触发方式

4. 中断处理程序

关键字:外中断  按键控制  数码管显示 引用地址:外中断(按键)控制数码管显示

上一篇:串行通讯(单片机)
下一篇:定时器控制数码管扫描显示

推荐阅读最新更新时间:2024-03-16 14:42

对单片机数码管显示段选位选的理解
在51单片机的数码管的应用开发中一些小的细节还是应该注意到的。 其中位选信号应该在段选之前打开,下面是一段示例代码(我用的是国信长天开发板): #include reg51.h // 包含51单片机寄存器定义的头文件 #include intrins.h #define uint unsigned int sbit buzz=P0^6; /************************************************** 函数功能:d延时函数,延时一段时间 ***************************************************/ void dela
[单片机]
zigbee学习之路(三):按键控制
一.前言 通过前一次的实验,相信大家都已经对cc2530程序的编写有了一定的认识,这次我们来操作和实验的是cc2530上的按键模块。 二.原理分析 我们先来看一下按键的原理图: 根据原理图我们可以得出,按键不按下的时候值为0,因为接地,所以,按键要被按下的时候,BUT1和BUT2输入值为1,当检测到它们为1时,按键就为按下的状态,因为P0DIR默认的状态是输入,所以不需要配置IO寄存器,当按键按下时,改变led的状态,来验证实验。 三.程序 #define LED1 P1_0 //LED1为P1_0端口控制 #define LED2 P1_1 //LED2为P1_1端口控制 #define LED3 P1_4
[单片机]
zigbee学习之路(三):<font color='red'>按键</font>的<font color='red'>控制</font>
51单片机按键控制输出pwm的占空比
之前说到利用51单片机输出pwm,但是输出的pwm是固定占空比的,如果想要改变占空比,还得回过头来修改程序并重新烧写进单片机。这样做的话不但麻烦、效率低,还又把芯片的可烧写次数减少了一次,虽然51的芯片现在很便宜,但能省点就省点,能不浪费就不浪费,哈哈,开玩笑啦!最主要的还是为了灵活性,为此特地通过加入按键的功能来实现动态修改输出的pwm的占空比。这样在用pwm控制电机的时候就能使用按键来控制电机转速了。废话不多说,见下: #include reg51.h #define uint unsigned int #define uchar unsigned char uchar
[单片机]
msp430按键控制灯亮灭
  msp430按键控制   LAUNCHPAD的实验板上共有两个按键,一个按键接至RESET脚,固定作为复位按键来使用(S1)。按键S2连接在引脚P1.3,可供我们自由使用。这里我们实现通过此按键控制LED的闪烁。应当注意,连接按键的引脚松开时为高电平,按下为低电平。   按键一般可以通过扫描和中断来实现。扫描是指程序通过循环不停地读取IO口的输入值,并以此判断按键是否按下。中断实现可以免除扫描的麻烦,在按键按序通过循环不停地读取IO口的输入值,并以此判断按键是否按下。中断实现可以免除扫描的麻烦,在按键按下时,中断当前的程序,执行中断处理函数,效率较高。   msp430按键控制灯亮灭   1、实现功能:按一下按键,le
[单片机]
msp430<font color='red'>按键</font><font color='red'>控制</font>灯亮灭
PWM --用按键控制 LED 的亮度
以前写过一篇关于 PWM 的博文,已经有一年了,链接如下: http://hi.baidu.com/do_sermon/item/ff523b0a8b9d3d173b53ee74 文中使用了示波器来显示不同占空比的波形。 其实,利用 LED 也能通过亮度来表现出 PWM 参数的变化,用实物进行测试,效果很好,但是用 PROTEUS 进行仿真试验,却只是看到闪烁的厉害,基本上看不出亮度的变化。 近来发现,加上一个大电容,就可以减弱 LED 的闪烁,亮度就能够稳定一些,这样一来,就可以用 PROTEUS 软件直接观察亮度的变化了。 电路见下图。图中的大电容(C6)的容量是 4700uF,这个是可以随便调整的,实
[单片机]
PWM --用<font color='red'>按键</font><font color='red'>控制</font> LED 的亮度
STC51-数码管显示
1 数码管显示原理 我们先来看几个数码管的图片, 左图为单位数码管、中图为双位数码管、右图为四位数码管, 另外还有右下角不带点的数码管,最右图还有“米”字数码管等。 不管将几位数码管连在一起,数码管的显示原理都是一样的,都是靠点亮内部的发光二极管来发光,下面就来我们讲解一个数码管是如何亮起来的。数码管内部电路如下图所示,从图(a)可看出,一位数码管的引脚是10个,显示一个8字需要7个小段,另外还有一个小数点,所以其内部一共有8个小的发光二极管,最后还有一个公共端,生产商为了封装统一,单位数码管都封装10个引脚,其中第3和第8引脚是连接在一起的。而它们的公共端又可分为共阳极和共阴极,图(b)为共阴极内部原理图,图
[单片机]
STC51-<font color='red'>数码管</font><font color='red'>显示</font>
时钟及温度用74hc164+74ls145数码管显示单片机程序
下面是实物图: 电路图 很简单我就不画了 数码管用74hc164串行转并行 芯片 +74ls145这2个芯片驱动一个负责段选一个负责位选,具体看程序顶部的引脚定义.完整的keil工程文件下载地址: http://www.51hei.com/f/164smg.rar 下面是程序源码. #include reg52.h #include intrins.h #define uchar unsigned char #define uint unsigned int sbit iicclk=P1^0;////总线存储时钟引脚定义 sbit iicdat=P1^1;////总线存储数据引脚定义 sbit hc164dat
[单片机]
时钟及温度用74hc164+74ls145<font color='red'>数码管</font><font color='red'>显示</font>单片机程序
基于AVR微控制器的ADC按键设计技巧
1 引言 在单片机应用领域中,人机交互的途径和方式灵活多样,但键盘输人仍然是最常见、最重要的方法。通常实现键盘接口的方式有:直接输入、矩阵结构、A/D方式、键盘和显示复用、并行扩展、串口扩充以及用键盘和显示专用控制器件。本设计使用A/D转换的方法,其硬件电路简单,按键电路与MCU的连线少,易修改,而且可以节省MCU有限的I/0资源。但在处理按键数目较多的情况时,往往会出现按键不可靠的问题,如按键没有任何反映,按键功能交叉。本文除了给出A/D按键的硬件电路外.着重介绍利用软件技巧来实现可靠的键盘接口。 2硬件设计 本设计选用的单片机是基于AVR增强型RISC结构的低功耗8位CMOS微控制器ATmegal68「1」该微控制器具有
[模拟电子]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved