📄 12864.lst
字号:
C51 COMPILER V8.02 12864 03/16/2008 12:44:12 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE 12864
OBJECT MODULE PLACED IN 12864.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 12864.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg52.h>
2 #include"delay.h" //包含延时函数的头文件
3 /**************************************************************
4 iO口宏定义区
5 ***************************************************************/
6 sbit CS =P1^0;
7 sbit SID=P1^1;//r/w
8 sbit SCK=P1^2;//e
9 sbit psb=P1^3;//串行并行数据选择端
10 sbit rst=P1^5;//复位
11 /*******************************************************************
12 常量声明区
13 ********************************************************************/
14 unsigned char code time[]={"0123456789"} ;
15 unsigned char code AC_TABLE[]={ //坐标编码
16 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,
17 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,
18 0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,
19 0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f,
20 };
21 /****************************************************************
22 声明:建议读者先查阅我们提供的12864word文档资料,理解12864定坐标的
23 方式。
24 发送一个字节
25 *****************************************************************/
26 void SendByte(unsigned char Dbyte)
27 {
28 1 unsigned char i;
29 1 for(i=0;i<8;i++)
30 1 {
31 2 SCK = 0;
32 2 Dbyte=Dbyte<<1;
33 2 SID = CY;
34 2 SCK = 1;
35 2 SCK = 0;
36 2 }
37 1 }
38 /**********************************************************
39 接收一个字节
40 ***********************************************************/
41
42 unsigned char ReceiveByte(void)
43 {
44 1 unsigned char i,temp1,temp2;
45 1 temp1=temp2=0;
46 1 for(i=0;i<8;i++)
47 1 {
48 2 temp1=temp1<<1;
49 2 SCK = 0;
50 2 SCK = 1;
51 2 SCK = 0;
52 2 if(SID) temp1++;
53 2 }
54 1 for(i=0;i<8;i++)
55 1 {
C51 COMPILER V8.02 12864 03/16/2008 12:44:12 PAGE 2
56 2 temp2=temp2<<1;
57 2 SCK = 0;
58 2 SCK = 1;
59 2 SCK = 0;
60 2 if(SID) temp2++;
61 2 }
62 1 return ((0xf0&temp1)+(0x0f&temp2));
63 1 }
64 /****************************************************************
65 检查忙状态
66 ******************************************************************/
67 void CheckBusy( void )
68 {
69 1 do SendByte(0xfc); //11111,RW(1),RS(0),0
70 1 while(0x80&ReceiveByte());
71 1 }
72
73 /******************************************************************
74 写一个字节的指令
75 *******************************************************************/
76 void WriteCommand( unsigned char Cbyte )
77 {
78 1 CS = 1;
79 1 CheckBusy();
80 1 SendByte(0xf8); //11111,RW(0),RS(0),0
81 1 SendByte(0xf0&Cbyte);
82 1 SendByte(0xf0&Cbyte<<4);
83 1 CS = 0;
84 1 }
85 /*************************************************************
86 写一个字节的数据
87 **************************************************************/
88 void WriteData( unsigned char Dbyte )
89 {
90 1 CS = 1;
91 1 CheckBusy();
92 1 SendByte(0xfa); //11111,RW(0),RS(1),0
93 1 SendByte(0xf0&Dbyte);
94 1 SendByte(0xf0&Dbyte<<4);
95 1 CS = 0;
96 1 }
97
98 /******************************************************************
99 lcd初始化函数
100 *******************************************************************/
101 void LcmInit( void )
102 {
103 1 rst=1;
104 1 psb=0; //串行接法
105 1 WriteCommand(0x30);
106 1 WriteCommand(0x03);
107 1 WriteCommand(0x0c);
108 1 WriteCommand(0x01);
109 1 WriteCommand(0x06);
110 1 }
111
112 /*******************************************************************************************************
113 设定光标函数
114 ********************************************************************************************************/
115 void Location_xy_12864(unsigned char x,unsigned char y)
116 {
117 1 switch(x)
C51 COMPILER V8.02 12864 03/16/2008 12:44:12 PAGE 3
118 1 {
119 2 case 0:
120 2 x=0x80;break;
121 2 case 1:
122 2 x=0x90;break;
123 2 case 2:
124 2 x=0x88;break;
125 2 case 3:
126 2 x=0x98;break;
127 2 default:
128 2 x=0x80;
129 2 }
130 1 y=y&0x07;
131 1 WriteCommand(0x30);
132 1 WriteCommand(y+x);
133 1 WriteCommand(y+x);
134 1
135 1 }
136 /***********************************************************************************
137 清除文本
138 ************************************************************************************/
139 void LcmClearTXT( void )
140 {
141 1 unsigned char i;
142 1 WriteCommand(0x30);
143 1 WriteCommand(0x80);
144 1 for(i=0;i<64;i++)
145 1 WriteData(0x20);
146 1 Location_xy_12864(0,0);
147 1 }
148 /**************************************************************************************
149 清除图片
150 *****************************************************************************************/
151 void LcmClearBMP( void )
152 {
153 1 unsigned char i,j;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -