标题:
我的单片机电子密码锁程序
[打印本页]
作者:
gctg
时间:
2019-5-11 20:44
标题:
我的单片机电子密码锁程序
0.png
(26.77 KB, 下载次数: 28)
下载附件
2019-5-19 02:11 上传
单片机源程序如下:
#include "Absacc.h"
#define C8255_A XBYTE[0x7F00] //8255 端口地址定义
#define C8255_B XBYTE[0x7F01]
#define C8255_C XBYTE[0x7F02]
#define C8255_CON XBYTE[0x7F03]
unsigned char a[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07,
0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71};
unsigned char b[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; // 显示缓冲
unsigned char key_down;
unsigned char key_value;
unsigned char key_count;
void delay(unsigned int time)
{
unsigned int i;
for(i=0; i<time; i++);
}
void keyscan() // 按键扫描函数
{
unsigned char cc;
C8255_A = 0x00; //X1 ~ X4 置 0
cc = C8255_C; // 得到 Y1 ~ Y4 的值
key_down = (~cc) & 0x0f;
}
void display() // 显示函数
{
unsigned char i, j = 0xDF;
for(i=0; i<6; i++)
{
C8255_A = 0xFF;
C8255_B = a[b[i]]; // 查表输出显示
C8255_A = j;
delay(0x100);
j = (j>>1)|(j<<7);
}
}
void clear() // 清屏
{
C8255_B = 0x00;
}
void writebuffer()
{
b[key_count] = key_value;
key_count--;
if(key_count == -1)
key_count = 5;
display();
clear();
keyscan();
while(key_down) // 键盘消抖
{
display();
clear();
keyscan();
}
}
void getkey() // 得到按键值
{
unsigned char value;
unsigned char i, j = 0xFE;
for(i=0; i<4; i++)
{
C8255_A = j;
value = C8255_C;
if(!(value & 0x01)) // 行 1
{
key_value = i + 0;
writebuffer();
return;
}
if(!(value & 0x02)) // 行 2
{
key_value = i + 4;
writebuffer();
return;
}
if(!(value & 0x04)) // 行 3
{
key_value = i + 8;
writebuffer();
return;
}
if(!(value & 0x08)) // 行 4
{
key_value = i + 12;
writebuffer();
return;
}
j <<= 1;
}
}
void main()
{
C8255_CON = 0x81; //8255 初始化
key_count = 5;
while(1)
{
display(); // 显示
clear(); // 清屏
keyscan(); // 按键扫描
if(key_down) // 判是否有键按下
{
display();
delay(0x80);
clear();
keyscan();
if(key_down)
{
getkey(); // 得到按键值
}
}
}
}
复制代码
所有资料51hei提供下载:
课程设计.zip
(293.17 KB, 下载次数: 4)
2019-5-11 20:40 上传
点击文件名下载附件
下载积分: 黑币 -5
keshetu.doc
(256.5 KB, 下载次数: 3)
2019-5-11 20:42 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
xingmou2000
时间:
2019-6-8 13:54
这里面哪来的8255~~
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1