没有合适的资源?快使用搜索试试~ 我知道了~
avr key lcd
需积分: 3 5 下载量 43 浏览量
2010-06-28
10:58:44
上传
评论
收藏 12KB TXT 举报
温馨提示
试读
12页
本程序利用ATMEGA128单片机,做的人机界面系统,按键输入密码和LCD液晶显示等
资源推荐
资源详情
资源评论
#include <IOM128V.H>
#include <MACROS.H>
#include "lcd.h"
#include "eeplist.h"
//控制端口定义
#define KEY_PORT PORTF
#define KEY_DDR DDRF
#define KEY_PIN PINF
#define KEY_INT_PORT PORTE
#define KEY_INT_DDR DDRE
#define KEY_INT_PIN PINE
//端口配置定义
#define KEY_DDR_Num 0x0F //端口输入输出方向配置
#define KEY_PIN_Num 0xF0 //端口输入掩码
#define KEY_INT_Bit 0x7f //端口
//逻辑定义
#define TRUE 1
#define FALSE 0
//定义表
const unsigned char KEY[17] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
//定义变量
unsigned char IDcntMemory = 0; //用于记录ID按下的数字已经有几位了
unsigned char MAcntMemory = 0; //用于记录密码按下的数字已经有几位了
unsigned char key_jz; //按键的健值
unsigned char key_press_flag = FALSE; //是否有按键按下
unsigned char Index = 1; //菜单索引
unsigned char IndexNum; //菜单条目索引个数
unsigned char FormIndex = 0; //表明显现在是第几个窗口在现显示
unsigned char IDBuf[5]; //0~3存放ID 4存放ID长度
unsigned char CodeBuf[5];//0~3存放ID 4存放长度
extern unsigned char ASCIIDisplayBuf[16]; //存放显示时需要的数据
extern unsigned char TimeBuf[8]; //存放系统时间
//初始化按键需要的配置
void Mcu_init_Key(void)
{
KEY_PORT = KEY_PIN_Num;
KEY_DDR = KEY_DDR_Num;
EIMSK |= 0x80;
}
//被中断处理函数调用,返回按键值
unsigned char Mcu_Get_Key(void)
{
unsigned char temp = 0;//暂时存储按键值
unsigned char cnt;
EIMSK &= (~0x80);//关闭中断,防止再次进入中断,恢复其IO功能
KEY_INT_DDR &= KEY_INT_Bit;//置位输入方向
for(cnt = 4;cnt < 8;cnt++)
{
if(cnt == 4)
KEY_PORT = 0xFE;
else if(cnt == 5)
KEY_PORT = 0xFD;
else if(cnt == 6)
KEY_PORT = 0xFB;
else
KEY_PORT = 0xF7;
if((KEY_PIN&KEY_PIN_Num) == 0xE0)
unsigned char CodeBuf[5];//0~3存放ID 4存放长度
extern unsigned char ASCIIDisplayBuf[16]; //存放显示时需要的数据
extern unsigned char TimeBuf[8]; //存放系统时间
//初始化按键需要的配置
void Mcu_init_Key(void)
{
KEY_PORT = KEY_PIN_Num;
KEY_DDR = KEY_DDR_Num;
EIMSK |= 0x80;
}
//被中断处理函数调用,返回按键值
unsigned char Mcu_Get_Key(void)
{
unsigned char temp = 0;//暂时存储按键值
unsigned char cnt;
EIMSK &= (~0x80);//关闭中断,防止再次进入中断,恢复其IO功能
KEY_INT_DDR &= KEY_INT_Bit;//置位输入方向
for(cnt = 4;cnt < 8;cnt++)
{
if(cnt == 4)
KEY_PORT = 0xFE;
else if(cnt == 5)
KEY_PORT = 0xFD;
else if(cnt == 6)
KEY_PORT = 0xFB;
else
KEY_PORT = 0xF7;
if((KEY_PIN&KEY_PIN_Num) == 0xE0)
剩余11页未读,继续阅读
资源评论
gwm1224
- 粉丝: 16
- 资源: 8
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功