📄 smc1602.lst
字号:
C51 COMPILER V8.05a SMC1602 08/08/2007 23:55:41 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE SMC1602
OBJECT MODULE PLACED IN SMC1602.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE source\SMC1602.c BROWSE INCDIR(.\include) DEBUG OBJECTEXTEND PRINT(.\SMC160
-2.lst) OBJECT(SMC1602.obj)
line level source
1 //*************************************************************************************************
2 //* *
3 //* ***************************SMC1602驱动程序************************* *
4 //* *
5 //*************************************************************************************************
6
7
8 //*************************************************************************************************
9 //* *
10 //* ******************************头文件及宏定义************************** *
11 //* *
12 //*************************************************************************************************
13 #include <at89x51.h>
14
15 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<端口设置宏定义>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
16 #define LCDRS P3_5 //寄存器选择信号:
17 // 0--数据寄存器;
18 // 1--指令寄存器。
19
20 #define LCDRW P3_6 //读写信号:
21 // 1--读LCD;
22 // 0--写LCD。
23
24 #define LCDE P3_7 //片选信号,当输入下降沿信号时,
25 //执行指令或传送数据。
26
27 #define LCDPORT P0 //LCD数据接口。
28
29
30
31 //*************************************************************************************************
32 //* *
33 //* ******************************延时函数***************************** *
34 //* *
35 //*************************************************************************************************
36 void vDelay()
37 {
38 1 unsigned int uiCount;
39 1 for(uiCount=0;uiCount<250;uiCount++);
40 1 }
41
42
43 //*************************************************************************************************
44 //* *
45 //* **************************把1个命令写入LCD************************* *
46 //* *
47 //*************************************************************************************************
48 void vWriteCMD(unsigned char ucCommand)
49 {
50 1 vDelay(); //先延时。
51 1
52 1 LCDE=1; //然后把LCD改为写入命令状态。
53 1 LCDRS=0;
54 1 LCDRW=0;
C51 COMPILER V8.05a SMC1602 08/08/2007 23:55:41 PAGE 2
55 1
56 1 LCDPORT=ucCommand; //再输出命令。
57 1
58 1 LCDE=0; //最后执行命令。
59 1 }
60
61
62 //*************************************************************************************************
63 //* *
64 //* ***************************把1个数据写入LCD************************ *
65 //* *
66 //*************************************************************************************************
67 void vWriteData(unsigned char ucData)
68 {
69 1 vDelay(); //先延时。
70 1
71 1 LCDE=1; //然后把LCD改为写入数据状态。
72 1 LCDRS=1;
73 1 LCDRW=0;
74 1
75 1 LCDPORT=ucData; //再输出数据。
76 1
77 1 LCDE=0; //最后显示数据。
78 1 }
79
80
81
82 //*************************************************************************************************
83 //* *
84 //* **********************把1个字符显示到当前光标处********************* *
85 //* *
86 //*************************************************************************************************
87 void vShowOneChar(unsigned char ucChar)
88 {
89 1 switch(ucChar)
90 1 {
91 2 case ' ': vWriteData(0x20);break;
92 2 case '!': vWriteData(0x21);break;
93 2 case '"': vWriteData(0x22);break;
94 2 case '#': vWriteData(0x23);break;
95 2 case '$': vWriteData(0x24);break;
96 2 case '%': vWriteData(0x25);break;
97 2 case '&': vWriteData(0x26);break;
98 2 case '>': vWriteData(0x27);break;
99 2 case '(': vWriteData(0x28);break;
100 2 case ')': vWriteData(0x29);break;
101 2 case '*': vWriteData(0x2A);break;
102 2 case '+': vWriteData(0x2B);break;
103 2 case '-': vWriteData(0x2D);break;
104 2 case '.': vWriteData(0x2E);break;
105 2 case '/': vWriteData(0x2F);break;
106 2 case '=': vWriteData(0x3D);break;
107 2 case '<': vWriteData(0x3E);break;
108 2 case '?': vWriteData(0x3F);break;
109 2 case '^': vWriteData(0x5E);break;
110 2 case ':': vWriteData(0x3A);break;
111 2
112 2 case '0': vWriteData(0x30);break;
113 2 case '1': vWriteData(0x31);break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -