本篇文章给大家谈谈c语言防抖动程序,以及c语言按键防抖对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
1、求一个用avr单片机 、 C语言代码,通过L298控制步进电机。 要能防止步进电机抖动。 谢谢2、单片机 按键作为外部中断的输入,怎么使用软件防抖动?c语言,谢谢。3、单片机键盘去抖动c语言程序!!!
求一个用avr单片机 、 C语言代码,通过L298控制步进电机。 要能防止步进电机抖动。 谢谢
是AVRmega128控制步进机的程序
//***********************************************************************
// 包含文件
//***********************************************************************
#include string.h
#include stdio.h
#define F_CPU 7372800 // 单片机主频为7.3728MHz,用于延时子程序
#include util/delay.h
#include avr/io.h
#include avr/iom128.h
//***********************************************************************
// 定义变量区
//***********************************************************************
#define Data_IO PORTA //液晶数据口
#define Data_DDR DDRA //数据口方向寄存器
#define D_LE0 PORTD = ~(1 PD4) //数码管段控制位为0,锁存端口数据
#define D_LE1 PORTD |= (1 PD4) //数码管段控制位为1,锁存器输出与端口一致
#define W_LE0 PORTD = ~(1 PD5) //数码管位控制位为0
#define W_LE1 PORTD |= (1 PD5) //数码管位控制位为1
#define delay_us(x) _delay_us(x) //AVR GCC延时函数 x(us)
#define delay_ms(x) _delay_ms(x) //AVR GCC延时函数 x(ms)
#define uchar unsigned char
#define uint unsigned int
uchar F_Rotation[8]={0xE2,0xE6,0xE4,0xEC,0xE8,0xF8,0xF0,0xF2 };//正转表格, 0111,0011 1011,1001 1101,1100 ,1110,0110
uchar B_Rotation[8]={0xF2,0xF0,0xF8,0xE8,0xEC,0xE4,0xE6,0xE2};//反转表格
//***********************************************************************
// 主程序
//***********************************************************************
int main(void)
{
uint i,j;
DDRB=0xFF;
PORTD=0xFF;
DDRD=0xFF;
D_LE1; //关掉数码管,以免显示乱码
W_LE1;
Data_IO=0xFF; //关数码管
W_LE0;
while(1)
{
for(j=0;j32*8;j++) //步距角5.625/64 减速比1/64,8拍,这个循环为反转一圈
{
for(i=0;i8;i++)
{
PORTB=B_Rotation[i];
delay_ms(10);
}
}
for(j=0;j64*8;j++) //步距角5.625/64 减速比1/64,8拍,这个循环为正转一圈
{
for(i=0;i8;i++)
{
PORTB=F_Rotation[i];
delay_ms(10);
}
}
}
}
单片机 按键作为外部中断的输入,怎么使用软件防抖动?c语言,谢谢。
进入中断后,关闭这个外部中断,同时启动一个50ms的定时器,退出这个外部中断。在那个50ms定时到时,判断这个外部中断引脚的电平 ,确定是否为抖动。
单片机键盘去抖动c语言程序!!!
使用这个到板子里面:
#include reg52.h
sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
sbit ENLED = P1^4;
sbit KEY1 = P2^4;
sbit KEY2 = P2^5;
sbit KEY3 = P2^6;
sbit KEY4 = P2^7;
unsigned char code LedChar[] = { //数码管显示字符转换表0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8,0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E};
void delay();
void main(){
bit keybuf = 1; //按键值暂存,临时保存按键的扫描值
bit backup = 1; //按键值备份,保存前一次的扫描值
unsigned char cnt = 0; //按键计数,记录按键按下的次数
ENLED = 0; //选择数码管 DS1 进行显示
ADDR3 = 1;
ADDR2 = 0;
ADDR1 = 0;
ADDR0 = 0;
P2 = 0xF7; //P2.3 置 0,即 KeyOut1 输出低电平
P0 = LedChar[cnt]; //显示按键次数初值
while (1){
keybuf = KEY4; //把当前扫描值暂存
if (keybuf != backup){ //当前值与前次值不相等说明此时按键有动作
delay(); //延时大约 10ms
if (keybuf == KEY4){ //判断扫描值有没有发生改变,即按键抖动
if (backup == 0){ //如果前次值为 0,则说明当前是弹起动作
cnt++; //按键次数+1
//只用 1 个数码管显示,所以加到 10 就清零重新开始
if (cnt = 10){
cnt = 0;
}
P0 = LedChar[cnt]; //计数值显示到数码管上
}
backup = keybuf; //更新备份为当前值,以备进行下次比较
}
}
}
}
/* 软件延时函数,延时约 10ms */
void delay(){
unsigned int i = 1000;
while (i–);
}
c语言防抖动程序的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c语言按键防抖、c语言防抖动程序的信息别忘了在本站进行查找喔。