📄 lcd.lst
字号:
C51 COMPILER V8.05a LCD 05/09/2008 17:28:58 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE LCD
OBJECT MODULE PLACED IN LCD.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE LCD.C BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <STC12C5410AD.h>
2
3 #define uchar unsigned char
4 #define uint unsigned int
5
6 sbit RS = P3^2;
7 sbit RW = P3^3;
8 sbit E = P3^4;
9 sbit WDT= P3^5;
10
11 void InitialCPU(void);
12 void Delay60ns(int);
13 void wr_InD(uchar,uchar);
14 void Lcd_Init(void);
15 void chk_busy(void);
16 void Clear_Lcd(void);
17 void Char_Disp(uchar x, uchar y, char *p);
18
19
20 main()
21 { char date[8] = {' ','a','b','c','d','e','f','g'};
22 1 char *p = date;
23 1
24 1 InitialCPU();
25 1 Lcd_Init();
26 1 while(1)
27 1 {
28 2
29 2 //Clear_Lcd();
30 2 chk_busy();
31 2 WDT = !WDT;
32 2 Char_Disp(0,0,"星期一");
33 2 Char_Disp(0,1,"星期二");
34 2 Char_Disp(0,2,"星期三");
35 2 Char_Disp(0,3,"星期四");
36 2 Delay60ns(120);
37 2 }
38 1 }
39
40
41 /************************************/
42 /* CPU 初始化子程序 */
43 /************************************/
44 void InitialCPU(void)
45 { //IDLE_CLK |=0x01;
46 1 //端口设置
47 1 P1M0 = 0x00; //设置P1 口为IO状态
48 1 P1M1 = 0x00;
49 1
50 1 P3M0 = 0x00; //设置P3 口为IO状态
51 1 P3M1 = 0x00;
52 1 WDT = 0;
53 1 }
54
55
C51 COMPILER V8.05a LCD 05/09/2008 17:28:58 PAGE 2
56
57 //**************
58 //延时
59 //**************
60 void Delay60ns(int ns)
61 {
62 1 int i,j;
63 1 for (i=0;i<ns;i++);
64 1 {
65 2 for (j=0;j<4;j++);
66 2
67 2 }
68 1 }
69
70 //**************
71 //输入命令或数据
72 //**************
73
74 void wr_InD(unsigned char com_d,unsigned char content)
75 {
76 1 //chk_busy ();
77 1 //SoftDelay(8);
78 1 E = 1;
79 1 if (com_d)
80 1 {
81 2 RS = 0;
82 2 RW = 0; //写命令 RS=0, RW=0
83 2 }
84 1 else
85 1 {
86 2 RS = 1;
87 2 RW = 0; //写数据 RS=1, RW=0
88 2 }
89 1 P1 = content; //命令或数据内容
90 1 ///E = 1; //使能 开始写数据或命令
91 1 Delay60ns(3);
92 1 E = 0; //不使能 写数据或命令完毕
93 1
94 1 }
95
96
97
98 //**********
99 //LCD初始化
100 //**********
101 void Lcd_Init(void)
102 {
103 1 wr_InD(1,0x30); //8bits,基本指令
104 1
105 1 wr_InD(1,0x0c); //开显示,显游标,不反显
106 1
107 1 wr_InD(1,0x01); //清屏
108 1 Delay60ns(200);
109 1 wr_InD(1,0x06);
110 1 }
111
112
113 //**************
114 //忙检查
115 //**************
116 void chk_busy(void)
117 {
C51 COMPILER V8.05a LCD 05/09/2008 17:28:58 PAGE 3
118 1 RS = 0;
119 1 RW = 1;
120 1
121 1 while (1)
122 1 {
123 2 //Delay70ns(2);
124 2 E = 1;;
125 2
126 2 if ((P1 & 0x80) == 0) //判断DB7为1,则忙
127 2 break; //空闲时退出
128 2
129 2 //Delay70ns(2);
130 2 E = 0;
131 2 }
132 1
133 1 E = 0;
134 1 }
135
136
137
138 //**********
139 //清屏
140 //**********
141 void Clear_Lcd(void)
142 {
143 1 wr_InD(1,0x01);
144 1 }
145
146
147
148 //**********
149 //显示汉字
150 //**********
151 void Char_Disp(unsigned char x, unsigned char y, char *p)
152 {
153 1 if(y == 0)
154 1 wr_InD(1,(0x80+x));
155 1
156 1 if(y == 1)
157 1 wr_InD(1,(0x90+x));
158 1
159 1 if(y == 2)
160 1 wr_InD(1,(0x88+x));
161 1
162 1 if(y == 3)
163 1 wr_InD(1,(0x98+x));
164 1
165 1 while(*p != 0)
166 1 wr_InD(0,*p++);
167 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 330 ----
CONSTANT SIZE = 35 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 16
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 + -