📄 test_lcd12864.c
字号:
#include<reg51.H>
#include<test_lcd12864.h>
#include <intrins.h>
#include <absacc.h>
#include <math.h>
#include <stdio.h>
#include <string.h>
#define uchar unsigned char
#define uint unsigned int
void Display_comm(void);
void Display(void);
void Display_second(void);
void Display_name(void);
void Display_data(void);
void delay_ms(int ms);
unsigned char idata Return_data[17];
int j[4];
int k=0;
//串口初始化 晶振为11.0592M 方式1 波特率300-57600
void InitCom(unsigned char BaudRate)
{
unsigned char THTL;
switch (BaudRate)
{
case 1: THTL = 64; break; //波特率300
case 2: THTL = 160; break; //600
case 3: THTL = 208; break; //1200
case 4: THTL = 232; break; //2400
case 5: THTL = 244; break; //4800
case 6: THTL = 250; break; //9600
case 7: THTL = 253; break; //19200
case 8: THTL = 255; break; //57600
default: THTL = 208;
}
SCON = 0x50; //串口方式1,允许接收
TMOD = 0x20; //定时器1定时方式2
TCON = 0x40; //设定时器1开始计数
TH1 = THTL;
TL1 = THTL;
PCON = 0x80; //波特率加倍控制,SMOD位
RI = 0; //清收发标志
TI = 0;
TR1 = 1; //启动定时器
}
//从串口接收一个字符串(非中断方式)
void ComInStr(void)
{
unsigned char temp,len;
temp = 1;
len =0;
while (temp)
{
while(!RI); //空语句判断字符是否收完
temp = SBUF; //保存字符
Return_data[len] = temp;
if (temp == 0x0A)//判断结束标志位
temp = 0x00;
RI = 0; //清RI
len++; //字符串指针加一
}
}
//比较所获得的字符串
int cmpstr(void)
{unsigned char idata have_data0[7]={0x46,0x33,0x39,0x34,0x34,0x45,0x42};//陈志宏
unsigned char idata have_data1[7]={0x46,0x33,0x32,0x30,0x34,0x41,0x30};//李志华
unsigned char idata have_data2[7]={0x46,0x31,0x36,0x46,0x44,0x37,0x44};//林跃东
unsigned char idata have_data3[7]={0x45,0x45,0x46,0x33,0x36,0x34,0x45};//张仁建
int i=0;
for(i=0;i<7;i++)
{ if (have_data0[i]==Return_data[i+8])
j[0]++;
else if (have_data1[i]==Return_data[i+8])
j[1]++;
else if (have_data2[i]==Return_data[i+8])
j[2]++;
else if (have_data3[i]==Return_data[i+8])
j[3]++;
}
for(k=0;k<4;k++)
if (j[k]==7) Display_name();
}
//判断刷卡人
void Display_name()
{switch(k)
{case 0: DisplayCgrom(0x8a,"陈志宏");break;
case 1: DisplayCgrom(0x8a,"李志平");break;
case 2: DisplayCgrom(0x8a,"林跃东");break;
case 3: DisplayCgrom(0x8a,"张仁建");break;
}
}
void main(void)
{ //初始化液晶显示和串口
LcdInit();
InitCom(6);
//清屏
LcdClear();
{
//显示"请刷卡"
Display();
//串口接收字符
ComInStr();
//字符识别
cmpstr();
delay(2000);
delay(2000);
}
while(1);
}
/********************************
函数名称:Display()显示刷卡界面
入口参数:无
返回参数:无
********************************/
void Display(void)
{
DisplayCgrom(0x92,"请刷卡");
}
/********************************
函数名称:Display_first 显示第二屏
入口参数:无
返回参数:无
********************************/
//void Display_first(void)
//{
// DisplayCgrom(0x90,"刷卡人:");
// DisplayCgrom(0x8a,"林跃东");
//}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -