程序过程很简单,就是系统上电后LED0-LED3亮,LED4-LED7灭;当第一次按下SW8后,LED4-LED7亮,LED0-LED3灭 ,再次按下SW8后,LED0-LED3亮,LED4-LED7灭。
按钮在按下与弹起的过程中会出现一定的抖动,这有时会对应用过程产生影响,所以我想了一个办法,用switch来 判断按钮的状态。
#include
#include
char B=0,choose1=1;
void SURE_key(int Key_Num); //定义按键状态判断函数
//=============================
void delay_ms(int k)
{
int i,j;
for(i=0;i {
for(j=0;j<850;j++)
;
}
}
//=============================
int main()
{
unsigned char i=0;
DDRA=0xff; //初始化端口A全为输出
PORTA=~(0xf); //初始化端口A 0-3输出低电平;4-7输出高电平
DDRD=0x0; //初始化端口D全为输入
PORTD|=0xff; //打开上拉电阻
while(1)
{
SURE_key(~PIND&(1<<4)); //判断按键状态,按下弹起后B++
if(B%2==1) PORTA=(0xf);
else PORTA=~(0xf);
}
return 0;
}
void SURE_key(int Key_Num)
{
switch(choose1)
{
case 1:
if(Key_Num!=0) choose1=2; //按下了么?
else choose1=1;
break;
case 2:
if(Key_Num!=0) choose1=3; //按下了么?
else choose1=1;
break;
case 3:
if(Key_Num!=0) choose1=3; //按下了!松开了么?
else choose1=4;
break;
case 4: //松开了
B++;
choose1=1;
break;
}
}
关键字:AVR单片机 软件按钮消抖
引用地址:
AVR单片机软件按钮消抖与确认
推荐阅读最新更新时间:2024-03-16 16:06
avr单片机的TWI两线串行接口
ATMEL的TWI 和 PHILIPS的IIC 基本上应该是算一个东西,但是他们在名义上是不同的,这样谁都不用支付给对方使用费。他们的协议是一样的,所有我们作为使用者基本可以简单的看成 TWI就是IIC 。 废话说完,开始正题。这次是关于在ATMega16 平台下的硬件IIC(还不太习惯说TWI)的使用。在ATMega16的Datasheet里我们可以看到很强大的功能,主从设置很多。本文只说一种最常用的方式,那就是 ATMega16 硬件TWI 的 扫描发送 和 扫描读取 。 首先要明确TWI 发送和接受的流程: 发送: 1,设定数据传输波特率 2,发送START信号,等待应答 =
[单片机]
AVR单片机读卡器程序设计
#include #include #define uchar unsigned char #define uint unsigned int //**********定义全局变量*******************// //查表0 1 2 3 4 5 6 7 8 9 E F P OFF uchar table ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x79,0x71,0x73,0x00}; uchar ICcode ;//定义IC卡复位时读出的4字节代码; uchar ICcontent ;//定义IC卡有效信息; uchar Money
[单片机]
通过采用AVR单片机ATXmega128A1进行便携式仪表的设计
1.引言 工业化仪表,因其集信息的获取.转换.存储.传输.分析.处理及显示于一体而成为工业控制领域的基础和核心之一.随着计算机技术.微电子技术的发展,工业化仪表已逐渐发展成为具有微处理器系统的智能化仪表.便携式智能仪表因其携带方便.操作方便.界面友好.人机接口丰富.功耗低等特性,使得其在当今生活中越来越普及. AVR XMEGA是8/16位AVR微处理器的升级版本.其采用Atmel picoPower技术,所有器件均可使用1.6V工作电压.MCU具有5霺唤醒时间和100nA的业界极低耗电量,其内部增加集成了全速USB?高速高精度模拟系统.DMA控制器和创新的事件系统,最大限度的提升了数据吞吐量和实时性能,并有效减轻了处理器负载
[单片机]
DHT11温湿度传感器的AVR单片机例程
/************************************************************************* 程序:ICC-AVR 功能:波特率9600 串口发送温湿度数据 数据格式:湿度 温度 校验和 例如串口发送数据 59 00 24 00 53 则湿度为59 温度为24 校验和为53 公司:DHT11 芯片:M8 晶振:外部 7.3728Mhz **************************************************** **********************/ #include iom8v.h #include macros.h t
[单片机]
什么是AVR单片机
什么是AVR单片机?AVR单片机有什么优点?为什么要选择AVR单片机? AVR单片机是ATMEL公司研制开发的一种新型单片机,它与51单片机、PIC单片机相比具有一系列的优点: 1:在相同的系统时钟下AVR运行速度最快; 2: 芯片内部的Flsah、EEPROM、SRAM容量较大; 3:所有型号的Flash、EEPROM都可以反复烧写、全部支持在线编程烧写(ISP); 4:多种频率的内部RC振荡器、上电自动复位、看门狗、启动延时等功能,零外围电路也可以工作; 5:每个IO口都可以以推换驱动的方式输出高、低电平,驱动能力强; 6:内部资源丰富,一般都集成AD、DA模数器;PWM;SPI、USART、TWI、I2C通信口
[单片机]
avr单片机Proteus风速计模型仿真 bascom源程序
编译环境:bascom avr+Proteus8.9 单片机源程序如下: rem Main.bas file generated by New Project wizard rem rem Created: 周二 6月 2 2020 TAOTIE rem Processor: ATmega8 rem Compiler: BASCOM-AVR rem Write your code here $regfile = m8def.dat $crystal = 8000000 '$baud = 9600
[单片机]
AVR单片机(学习ing)—(十一)、ATMEGA16驱动12864—01—①
十一、ATMEGA16驱动12864液晶(驱动器为HD61202) 十一—(01)、今天只是个简单的动态的驱动~~(以后还会更新的~~移位什么的~~毕竟这些显示屏还是挺重要的~~而且更重要的是赶紧买板子~~ ) 先上图片~~ 这个是用ATMEGA16仿真的(我真的很疼~~对比一下下面51仿真的,数据被压缩,完全不能理解~~数据完全一样~~) 然后是程序: IAR11_1.c //------------------------------------------------------------------------------ //main #include ioavr.h #include intrinsic
[单片机]
单键开关电路在AVR单片机中的应用
1 引 言 单键开关电路已经广泛应用于PDA、手机和电子词典等数码产品中,其实现方式多种多样。一般可采用RS触发器、计数器以及采用555集成电路等等。在单片机的一些实际应用中,以上的实现方式会增加整个电路的复杂度,不能达到简洁、实用的效果。本文将介绍一种可以在单片机应用中实现的,简易、稳定的轻触式单键开关电路。 2 电路原理 如图1所示,DC-DC为一个带有关断控制端的直流稳压电源芯片,MCU是一个单片机。当按下S1时,Q1和D1导通,稳压芯片工作,为单片机供电。单片机马上将相应的I/O引脚置为输出高,这时Q1和Q2导通,整个电路进入工作状态。而后单片机再将这个I/O引脚设置为输入,由于上拉电阻R4的存在,Q
[单片机]