📄 clcd.lst
字号:
C51 COMPILER V7.09 CLCD 08/03/2005 14:28:35 PAGE 1
C51 COMPILER V7.09, COMPILATION OF MODULE CLCD
OBJECT MODULE PLACED IN CLCD.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE CLCD.C OPTIMIZE(2,SPEED) BROWSE DEBUG OBJECTEXTEND
line level source
1 /*******************************************************
2 * 文件名: LCD.C
3 * 功能描述: 液晶控制实验
4 * 显示"唐都科教仪器公司欢迎您!", 滚屏一周
5 *******************************************************/
6
7 #include "SST89x5x4.h"
8 #include "lcd.h"
9 sbit RW = P1^0; //读写控制
10 sbit RS = P1^1; //数据, 命令切换
11 sbit CS2 = P1^2; //控制器2片选
12 sbit CS1 = P1^3; //控制器1片选
13 sbit E = P1^4; //使能信号
14 sbit LT = P1^5; //背景灯控制
15 void delay(char time);
16
17 void Query(char chip); //状态查询
18 void Clear(); //清屏
19 void writehz(char xadd,char yadd,char chip,char* hz);
20
21 char Wdata;
22 char xadd; //X地址
23 char yadd; //Y地址
24
25 void SendMCmd(unsigned char cmd) //向控制器1发送命令
26 {
27 1 Query(1); delay(1); //查询忙状态
28 1 RS = RW = CS1 = 0; //控制写入命令
29 1 P0 = cmd;
30 1 E = 0; E = 1; E = 0; CS1 = 1;
31 1 }
32 void SendSCmd(unsigned char cmd) //向控制器2发送命令
33 {
34 1 Query(2); delay(1);
35 1 RS = RW = CS2 = 0;
36 1 P0 = cmd;
37 1 E = 0; E = 1; E = 0; CS2 = 1;
38 1 }
39 void SendMData(unsigned char dat) //向控制器1写数据
40 {
41 1 Query(1); delay(1);
42 1 RS = 1; RW = 0; CS1 = 0;
43 1 P0 = dat;
44 1 E = 0; E=1; E=0; CS1 = 1;
45 1 }
46 void SendSData(unsigned char dat) //向控制器2写数据
47 {
48 1 Query(2); delay(1);
49 1 RS = 1; RW = 0; CS2 = 0;
50 1 P0 = dat;
51 1 E=0; E=1; E=0; CS2 = 1;
52 1 }
53 void Query(char chip) //状态查询,chip指出控制器号
54 { //chip=1为控制器1
55 1 unsigned char xdata statu, count = 100;
C51 COMPILER V7.09 CLCD 08/03/2005 14:28:35 PAGE 2
56 1 RS = 0; RW = 1;
57 1 if(chip == 1) CS1 = 0;
58 1 else CS2 = 0;
59 1 do
60 1 {
61 2 E = 1; statu = P0; E = 0;
62 2 if((statu&0x80)!=0x80) break;
63 2 }while(count--);
64 1 if(chip == 1) CS1 = 1;
65 1 else CS2 = 1;
66 1 }
67
68 void Clear() //清除显示屏
69 {
70 1 unsigned char i, j;
71 1 for(i=0; i<8; i++)
72 1 {
73 2 xadd = 0xb8+i; yadd = 0x40;
74 2 SendMCmd(xadd); SendSCmd(xadd); //设置X,Y地址
75 2 SendMCmd(yadd); SendSCmd(yadd);
76 2 for(j=0; j<64; j++)
77 2 {
78 3 SendMData(0x00); SendSData(0x00); //为所以RAM写00
79 3 }
80 2 }
81 1 }
82 void writehz(char xadd,char yadd,char chip,char* hz)
83 { //写汉字子程序 16*16
84 1 int x,y;
85 1 if(chip==0x01) //为控制器1
86 1 {
87 2 SendMCmd(xadd); SendMCmd(yadd);
88 2
89 2 for(x=0;x<2;x++) //写入汉字字模
90 2 {
91 3 for(y=0;y<16;y++)
92 3 {
93 4 Wdata = hz[y+(x*16)];
94 4 SendMData(Wdata);
95 4 }
96 3 xadd++;
97 3 SendMCmd(xadd); SendMCmd(yadd);
98 3 }
99 2 }
100 1 else //为控制器2
101 1 {
102 2 SendSCmd(xadd); SendSCmd(yadd);
103 2
104 2 for(x=0;x<2;x++) //写入汉字字模
105 2 {
106 3 for(y=0;y<16;y++)
107 3 {
108 4 Wdata = hz[y+(x*16)];
109 4 SendSData(Wdata);
110 4 }
111 3 xadd++;
112 3 SendSCmd(xadd); SendSCmd(yadd);
113 3 }
114 2 }
115 1 }
116
117 void main(void)
C51 COMPILER V7.09 CLCD 08/03/2005 14:28:35 PAGE 3
118 {
119 1 unsigned char x; unsigned int y;
120 1 LT = 0; //关闭背景灯
121 1 SendMCmd(0x3f); SendSCmd(0x3f); //打开显示
122 1 SendMCmd(0xc0); SendSCmd(0xc0); //设置起始行
123 1 Clear();
124 1 writehz(0xba,0x40,1,tang); //显示"唐"
125 1 writehz(0xba,0x50,1,du); //都
126 1 writehz(0xba,0x60,1,ke); //科
127 1 writehz(0xba,0x70,1,jiao); //教
128 1 writehz(0xba,0x40,2,yi); //仪
129 1 writehz(0xba,0x50,2,qi); //器
130 1 writehz(0xba,0x60,2,gong); //公
131 1 writehz(0xba,0x70,2,si); //司
132 1 writehz(0xbc,0x60,1,huan); //欢
133 1 writehz(0xbc,0x70,1,ying); //迎
134 1 writehz(0xbc,0x40,2,nin); //您
135 1 writehz(0xbc,0x50,2,gantan); //!
136 1
137 1 for(x=0xc1;x<0xFF;x++) //滚屏一周
138 1 {
139 2 SendMCmd(x); SendSCmd(x);
140 2 for(y=0; y<0x1000; y++) delay(0xff);
141 2 }
142 1 while(1);
143 1 }
144
145 void delay(char time)
146 {
147 1 char i;
148 1 char j;
149 1 for(i=0;i<=time;i++)
150 1 {
151 2 for(j=0;j<=0x10;j++);
152 2 }
153 1 }
154
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 891 ----
CONSTANT SIZE = 352 ----
XDATA SIZE = ---- 2
PDATA SIZE = ---- ----
DATA SIZE = 35 23
IDATA SIZE = ---- ----
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 + -