AVR单片机(ATMEGA16)矩阵键盘扫描程序

本文介绍了一种针对AVR单片机ATMEGA16的矩阵键盘扫描程序设计方法,参考了51单片机的矩阵键盘检测程序,探讨了程序的实现思路及其可能存在的缺陷。
摘要由CSDN通过智能技术生成

程序思路与缺陷参考:51单片机(AT89C52)矩阵键盘检测程序

#include<iom16v.h>
typedef unsigned char uchar;
typedef unsigned int uint;
#define dula_h	PORTD|=0x01
#define dula_l	PORTD&=0xfe
#define wela_h	PORTD|=0x02
#define wela_l	PORTD&=0xfd
#define keyport PORTB
#define keypin (PINB)
#define keydre DDRB
#define keystate0 0		//按键确认状态
#define keystate1 1		//按键无动作状态
char keystate=1;	//按键状态初始化为按键无动作状态
uchar keynum=0;
void delayms(uint z)	  //1ms
{
 uint x,y;
 for(x=z;x>0;x--)
 				 for(y=157;y>0;y--);
}
uchar table[]={	//共阳数码管
0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,
0xc6,0xa1,0x86,0x8e};
void smg(void)
{
	dula_l;
	wela_l;
	PORTC=0x01;
	wela_h;
	wela_l;
	PORTC=table[keynum];
	dula_h;
	dula_l;
	delayms(1);

	PORTC=0x02;
	wela_h;
	wela_l;
	PORTC=table[keynum];
	dula_h;
	dula_l;
	delayms(1);

	PORTC=0x04;
	wela_h;
	wela_l;
	POR
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值