📄 12864.lst
字号:
C51 COMPILER V8.06 12864 08/05/2007 15:38:00 PAGE 1
C51 COMPILER V8.06, 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 //ST7920 串口C51演示程序
2 //0755-27899659,27892739
3 // ST7920 测试程序(串口)
4 //***************************************************************************
5 //连线表: CPU=89C52 SystemClock=12Mhz *
6 //CS=P3.0 SCLK=P3.1 SID=P3.2 Reset=RC in Board *
7 //***************************************************************************
8 #include <reg52.h>
9 #include <stdlib.h>
10 #include <stdio.h>
11 #include<string.h>
12 #include<INTRINS.H>
13
14 sbit CS =P1^0; //LCD
15 sbit SCK=P1^2;
16 sbit SID=P1^1;
17 sbit Key=P1^3;
18
19 unsigned char code AC_TABLE[]={
20 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87, //第一行汉字位置
21 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97, //第二行汉字位置
22 0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f, //第三行汉字位置
23 0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f, //第四行汉字位置
24 };
25 unsigned char code str1[]="128x64字库屏";
26 unsigned char code str2[]="WWW.LCMLCD.COM";
27 unsigned char code str3[]="联系电话:";
28 unsigned char code str4[]="0755-27899659";
29 unsigned char code bmp1[];
30
31 //串口发送一个字节
32 void SendByte(unsigned char Dbyte)
33 {
34 1 unsigned char i;
35 1 for(i=0;i<8;i++)
36 1 {
37 2 SCK = 0;
38 2 Dbyte=Dbyte<<1; //左移一位
39 2 SID = CY; //移出的位给SID
40 2 SCK = 1;
41 2 SCK = 0;
42 2 }
43 1 }
44
45 //串口接收一个字节
46 //仅在读取数据的时候用到
47 //而读出的数据是一次只能读出4bit的
48 unsigned char ReceiveByte(void)
49 {
50 1 unsigned char i,temp1,temp2;
51 1 temp1=temp2=0;
52 1 for(i=0;i<8;i++)
53 1 {
54 2 temp1=temp1<<1;
55 2 SCK = 0;
C51 COMPILER V8.06 12864 08/05/2007 15:38:00 PAGE 2
56 2 SCK = 1;
57 2 SCK = 0;
58 2 if(SID) temp1++;
59 2 }
60 1 for(i=0;i<8;i++)
61 1 {
62 2 temp2=temp2<<1;
63 2 SCK = 0;
64 2 SCK = 1;
65 2 SCK = 0;
66 2 if(SID) temp2++;
67 2 }
68 1 return ((0xf0&temp1)+(0x0f&temp2));
69 1 }
70
71 void CheckBusy( void )
72 {
73 1 do SendByte(0xfc); //11111,RW(1),RS(0),0
74 1 while(0x80&ReceiveByte()); //BF(.7)=1 Busy
75 1 }
76
77 void WriteCommand( unsigned char Cbyte )
78 {
79 1 CS = 1;
80 1 CheckBusy();
81 1 SendByte(0xf8); //11111,RW(0),RS(0),0
82 1 SendByte(0xf0&Cbyte); //高四位
83 1 SendByte(0xf0&Cbyte<<4);//低四位(先执行<<)
84 1 CS = 0;
85 1 }
86
87 void WriteData( unsigned char Dbyte )
88 {
89 1 CS = 1;
90 1 CheckBusy();
91 1 SendByte(0xfa); //11111,RW(0),RS(1),0
92 1 SendByte(0xf0&Dbyte); //高四位
93 1 SendByte(0xf0&Dbyte<<4);//低四位(先执行<<)
94 1 CS = 0;
95 1 }
96
97 unsigned char ReadData( void )
98 {
99 1 CheckBusy();
100 1 SendByte(0xfe); //11111,RW(1),RS(1),0
101 1 return ReceiveByte();
102 1 }
103
104 void Delay(unsigned int MS)
105 {
106 1 unsigned char us,usn;
107 1 while(MS!=0) //for 12M
108 1 { usn = 2;
109 2 while(usn!=0)
110 2 {
111 3 us=0xf5;
112 3 while (us!=0){us--;};
113 3 usn--;
114 3 }
115 2 MS--;
116 2 }
117 1 }
C51 COMPILER V8.06 12864 08/05/2007 15:38:00 PAGE 3
118
119 //三元液晶测试架专用延时函数
120 void DelayKey(unsigned int Second , unsigned int MS100)
121 { //输入精确到0.1S,是用","
122 1 unsigned int i;
123 1 for(i=0;i<Second*100+MS100*10;i++)
124 1 {
125 2 if(Key==0)
126 2 {
127 3 Delay(20);
128 3 while(Key==0) {Delay(20);}
129 3 break;
130 3 }
131 2 else Delay(10);
132 2 }
133 1 }
134
135 void LcmInit( void )
136 {
137 1 WriteCommand(0x30); //8BitMCU,基本指令集合
138 1 WriteCommand(0x03); //AC归0,不改变DDRAM内容
139 1 WriteCommand(0x0C); //显示ON,游标OFF,游标位反白OFF
140 1 WriteCommand(0x01); //清屏,AC归0
141 1 WriteCommand(0x06); //写入时,游标右移动
142 1 }
143
144 //文本区清RAM函数
145 void LcmClearTXT( void )
146 {
147 1 unsigned char i;
148 1 WriteCommand(0x30); //8BitMCU,基本指令集合
149 1 WriteCommand(0x80); //AC归起始位
150 1 for(i=0;i<64;i++)
151 1 WriteData(0x20);
152 1 }
153
154 //图形区和文本区显示在两个不同的RAM区
155 //图形区清RAM函数
156 void LcmClearBMP( void )
157 {
158 1 unsigned char i,j;
159 1 WriteCommand(0x34); //8Bit扩充指令集,即使是36H也要写两次
160 1 WriteCommand(0x36); //绘图ON,基本指令集里面36H不能开绘图
161 1 for(i=0;i<32;i++) //12864实际为256x32
162 1 {
163 2 WriteCommand(0x80|i); //行位置
164 2 WriteCommand(0x80); //列位置
165 2 for(j=0;j<32;j++) //256/8=32 byte
166 2 WriteData(0);
167 2 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -