📄 test_lcd12864.lst
字号:
C51 COMPILER V7.50 TEST_LCD12864 03/14/2008 16:51:27 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE TEST_LCD12864
OBJECT MODULE PLACED IN test_lcd12864.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE test_lcd12864.c BROWSE DEBUG OBJECTEXTEND
line level source
1
2
3 #include<reg51.H>
4 #include<test_lcd12864.h>
5 #include <intrins.h>
6 #include <absacc.h>
7 #include <math.h>
8 #include <stdio.h>
9 #include <string.h>
10 #define uchar unsigned char
11 #define uint unsigned int
12 //void Display_comm(void);
13 void Display(void);
14 //void Display_second(void);
15
16 void Display_name(void);
17 //void Display_data(void);
18 //void delay_ms(int ms);
19 unsigned char idata Return_data[17];
20 int j[4];
21 int k=0;
22
23 //串口初始化 晶振为11.0592M 方式1 波特率300-57600
24 void InitCom(unsigned char BaudRate)
25 {
26 1 unsigned char THTL;
27 1 switch (BaudRate)
28 1 {
29 2 case 1: THTL = 64; break; //波特率300
30 2 case 2: THTL = 160; break; //600
31 2 case 3: THTL = 208; break; //1200
32 2 case 4: THTL = 232; break; //2400
33 2 case 5: THTL = 244; break; //4800
34 2 case 6: THTL = 250; break; //9600
35 2 case 7: THTL = 253; break; //19200
36 2 case 8: THTL = 255; break; //57600
37 2 default: THTL = 208;
38 2 }
39 1 SCON = 0x50; //串口方式1,允许接收
40 1 TMOD = 0x20; //定时器1定时方式2
41 1 TCON = 0x40; //设定时器1开始计数
42 1 TH1 = THTL;
43 1 TL1 = THTL;
44 1 PCON = 0x80; //波特率加倍控制,SMOD位
45 1 RI = 0; //清收发标志
46 1 TI = 0;
47 1 TR1 = 1; //启动定时器
48 1 }
49
50
51 //从串口接收一个字符串(非中断方式)
52 void ComInStr(void)
53 {
54 1 unsigned char temp,len;
55 1 temp = 1;
C51 COMPILER V7.50 TEST_LCD12864 03/14/2008 16:51:27 PAGE 2
56 1 len =0;
57 1
58 1 while (temp)
59 1 {
60 2
61 2 while(!RI); //空语句判断字符是否收完
62 2 temp = SBUF; //保存字符
63 2 Return_data[len] = temp;
64 2 if (temp == 0x0A)//判断结束标志位
65 2 temp = 0x00;
66 2 RI = 0; //清RI
67 2 len++; //字符串指针加一
68 2 }
69 1 }
70
71
72 //分析比较所获得的字符串
73 int cmpstr(void)
74 {unsigned char idata have_data0[7]={0x46,0x33,0x39,0x34,0x34,0x45,0x42};//陈志宏
75 1 unsigned char idata have_data1[7]={0x46,0x33,0x32,0x30,0x34,0x41,0x30};//李志华
76 1 unsigned char idata have_data2[7]={0x46,0x31,0x36,0x46,0x44,0x37,0x44};//林跃东
77 1 unsigned char idata have_data3[7]={0x45,0x45,0x46,0x33,0x36,0x34,0x45};//张仁建
78 1 int i=0;
79 1 for(i=0;i<7;i++)
80 1 { if (have_data0[i]==Return_data[i+8])
81 2 j[0]++;
82 2 if (have_data1[i]==Return_data[i+8])
83 2 j[1]++;
84 2 if (have_data2[i]==Return_data[i+8])
85 2 j[2]++;
86 2 if (have_data3[i]==Return_data[i+8])
87 2 j[3]++;
88 2 }
89 1 for(k=0;k<4;k++)
90 1 { if (j[k]==7) { Display_name(); j[k]=0; }
91 2 else j[k]=0;}
92 1
93 1 }
94 //判断刷卡人
95 void Display_name()
96 { //清屏
97 1 LcdClear();
98 1 DisplayCgrom(0x90,"刷卡人:");
99 1 switch(k)
100 1 {case 0: DisplayCgrom(0x8a,"陈志宏");break;
101 2 case 1: DisplayCgrom(0x8a,"李志平");break;
102 2 case 2: DisplayCgrom(0x8a,"林跃东");break;
103 2 case 3: DisplayCgrom(0x8a,"张仁建");break;
104 2 }
105 1
106 1 }
107
108 void main(void)
109 { //初始化液晶显示和串口
110 1
111 1 InitCom(6);
112 1 LcdInit();
113 1 //清屏
114 1 LcdClear();
115 1 while(1)
116 1 {
117 2
C51 COMPILER V7.50 TEST_LCD12864 03/14/2008 16:51:27 PAGE 3
118 2 //显示"请刷卡"
119 2 Display();
120 2 //串口接收字符
121 2 ComInStr();
122 2 //字符识别
123 2 cmpstr();
124 2 delay(2000);
125 2 //清屏
126 2 LcdClear();
127 2 }
128 1
129 1
130 1 }
131
132
133
134 /********************************
135 函数名称:Display()显示刷卡界面
136 入口参数:无
137 返回参数:无
138 ********************************/
139 void Display(void)
140 {
141 1 DisplayCgrom(0x92,"请刷卡");
142 1 }
143
144
145
146 /********************************
147 函数名称:Display_first 显示第二屏
148 入口参数:无
149 返回参数:无
150 ********************************/
151 //void Display_first(void)
152 //{
153 // DisplayCgrom(0x90,"刷卡人:");
154 // DisplayCgrom(0x8a,"林跃东");
155
156
157 //}
158
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 627 ----
CONSTANT SIZE = 71 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 10 ----
IDATA SIZE = 17 28
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -