一起创业网-为互联网创业者服务

怎么写门禁程序的文件

门禁程序的文件通常包括硬件和软件部分。以下是一个简单的门禁程序文件示例,使用C语言编写,假设使用1602液晶显示屏和28175I2C接口。

```c

include

include

define uchar unsigned char

define uint unsigned int

define DATA P0 // 1602驱动端口

define RS P2^0

define RW P2^1

define E P2^2

define KA P2^7

int Pre_KeyNo = 16, KeyNo = 16;

uchar key_buf;

uchar display_buf;

void delayMs(uint x) {

while (x--);

}

void Keys_Scan() {

// 扫描按键并存储按键值到key_buf

}

void Busy() {

DATA = 0xff;

RS = 0;

RW = 1;

while (DATA & 0x80);

E = 0;

E = 1;

}

void WriteData(uchar btData) {

Busy();

RS = 1;

RW = 0;

E = 1;

DATA = btData;

E = 0;

}

void Clear() {

Busy();

RS = 0;

RW = 0;

E = 1;

DATA = 0x0c;

delayMs(100);

DATA = 0x06;

delayMs(100);

DATA = 0x38;

}

void Init() {

Clear();

WriteData(0x0c); // 开显示,无光标显示

WriteData(0x06); // 文字不动,光标自动右移

WriteData(0x38); // 设置显示模式

}

void Display(uchar *buf) {

int i;

for (i = 0; i < 16; i++) {

if (buf[i] == 0) {

WriteData(0x00);

} else {

WriteData(0x7f);

}

}

}

void AddStudent(uchar *name, uchar *profession) {

// 添加学生账号

}

void DeleteStudent(uchar *name) {

// 删除学生账号

}

void AdministratorLogin() {

// 管理员登录

}

void AdministratorManagement() {

// 管理员操作界面

}

void main() {

uchar key;

uchar i;

uchar flag = 0;

Init();

while (1) {

Keys_Scan();

if (key == 0xFF) {

continue;

}

if (key == 0x01) { // 进入

flag = 1;

Display("欢迎进入公司");

} else if (key == 0x02) { // 离开

flag = 0;

Display("离开公司");

} else if (flag == 1) {

if (key >= '0' && key <= '9') {

key_buf[Pre_KeyNo] = key;

Pre_KeyNo++;

if (Pre_KeyNo == 16) {

Pre_KeyNo = 0;

KeyNo++;

}

Display(key_buf);

}

} else {

Clear();

Display("无效按键");

}

}

}

```

说明:

硬件部分

`include `:包含8051单片机的寄存器定义。

`define DATA P0`:定义1602驱动端口。

`define RS P2^0`、`define RW P2^1`、`define E P2^2`、`define KA P2^7`:定义1602液晶显示屏的控制线。

软件部分

`delayMs(uint x)`:延时函数,用于延时一段时间。

`Keys_Scan()`:扫描按键并存储按键值到`key_buf`。

`Busy()`:忙等待函数,用于等待液晶显示屏的