📄 并行12864显示.lst
字号:
C51 COMPILER V7.50 并行12864显蔩 04/10/2009 20:32:20 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE 并行12864显蔩
OBJECT MODULE PLACED IN 并行12864显示.OBJ
COMPILER INVOKED BY: E:\Program Files\Keil\C51\BIN\C51.EXE 并行12864显示.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /********************************************************************
2 * 文件名 : 并行12864显示.c
3 * 描述 : 该程序实现了用并行的方式对12864液晶进行控制。
4 * 创建人 : 东流,2009年4月10日
5 * 版本号 : 2.0
6 * 技术支持论坛:www.zidh.com/bbs(请进入“赞助商板块”中的“东流电子工作室”)
7 * 感谢“中国自动化资讯网”对本工作室的大力支持。
8 ***********************************************************************/
9 #include "reg52.h"
10 #define uchar unsigned char
11 #define LCD_Data P0 //DO-D7数据总线
12
13 sbit LCD_RS = P2^5; //指令/数据选择信号
14 sbit LCD_RW = P2^6; //读写选择信号
15 sbit LCD_E = P2^7; //使能信号
16 sbit LCD_PS = P2^2; //并/串行接口选择
17
18 uchar code show[]=" ¥超性价比¥ 单片机开发板 QQ:85536436 MADE BY 东流";
19
20 /********************************************************************
21 * 名称 : delay()
22 * 功能 : 延时函数
23 * 输入 : 延时5MS * SECOND
24 * 输出 : 无
25 ***********************************************************************/
26 void delay(uchar second) //second=1时,延时5ms子程序
27 {
28 1 uchar i, j, k;
29 1 for(i=second; i>0; i--)
30 1 for(j=20; j>0; j--)
31 1 for(k=248; k>0; k--)
32 1 ;
33 1 }
34
35 /********************************************************************
36 * 名称 : Convert(uchar In_Date)
37 * 功能 : 因为电路设计时,P0.0--P0.7接法刚好了资料中的相反,所以设计该函数。
38 * 输入 : 1602资料上的值
39 * 输出 : 送到1602的值
40 ***********************************************************************/
41 uchar Convert(uchar In_Date)
42 {
43 1 uchar i, Out_Date = 0, temp = 0;
44 1 for(i=0; i<8; i++)
45 1 {
46 2 temp = (In_Date >> i) & 0x01;
47 2 Out_Date |= (temp << (7 - i));
48 2 }
49 1 return Out_Date;
50 1 }
51
52 /********************************************************************
53 * 名称 : ReadStatusLCD()
54 * 功能 : 读状态
55 * 输入 : 无
C51 COMPILER V7.50 并行12864显蔩 04/10/2009 20:32:20 PAGE 2
56 * 输出 : 无
57 ***********************************************************************/
58 void ReadStatusLCD(void)
59 {
60 1 LCD_E = 0;
61 1 LCD_Data = 0xFF;
62 1 LCD_RS = 0;
63 1 LCD_RW = 1;
64 1 LCD_E = 1;
65 1 LCD_E = 0;
66 1 }
67
68 /********************************************************************
69 * 名称 : WriteCommandLCD()
70 * 功能 : 写命令函数
71 * 输入 : 无
72 * 输出 : 无
73 ***********************************************************************/
74 void WriteCommandLCD(uchar Command,BuysC)
75 {
76 1 LCD_E = 0;
77 1 LCD_RS = 0;
78 1 LCD_RW = 0;
79 1 LCD_Data = Convert(Command);
80 1 LCD_E = 1;
81 1 LCD_E = 0;
82 1 }
83
84 /********************************************************************
85 * 名称 : WriteDataLCD()
86 * 功能 : 写数据函数
87 * 输入 : 输入12864的数据
88 * 输出 : 无
89 ***********************************************************************/
90 void WriteDataLCD(uchar Data)
91 {
92 1 LCD_E = 0;
93 1 LCD_RS = 1;
94 1 LCD_RW = 0;
95 1 LCD_Data = Convert(Data);
96 1 LCD_E = 1;
97 1 LCD_E = 0;
98 1 }
99
100 /********************************************************************
101 * 名称 : LCDInit(void)
102 * 功能 : LCD初始化
103 * 输入 : 无
104 * 输出 : 无
105 ***********************************************************************/
106 void LCDInit(void)
107 {
108 1 WriteCommandLCD(0x01,1); //清除显示
109 1 delay(1);
110 1 WriteCommandLCD(0x03,1); //地址归位
111 1 delay(1);
112 1 WriteCommandLCD(0x0c,1); //开显示
113 1 WriteCommandLCD(0x30,1); //基本指令集动作
114 1 }
115
116 /********************************************************************
117 * 名称 : Display(uchar show[])
C51 COMPILER V7.50 并行12864显蔩 04/10/2009 20:32:20 PAGE 3
118 * 功能 : 显示函数
119 * 输入 : show[](所要显示的内容)
120 * 输出 : 无
121 ***********************************************************************/
122 void Display(uchar show[])
123 {
124 1 uchar *p, i = 0;
125 1 p = show;
126 1 WriteCommandLCD(0x80,1);
127 1 while(*p != '\0')
128 1 {
129 2 WriteDataLCD(*p++);
130 2 i++;
131 2 if(i==16) WriteCommandLCD(0x90,1);
132 2 else if(i==32) WriteCommandLCD(0x88,1);
133 2 else if(i==48) WriteCommandLCD(0x98,1);
134 2 }
135 1 }
136
137 /********************************************************************
138 * 名称 : Main(void)
139 * 功能 : 主函数
140 * 输入 : 无)
141 * 输出 : 无
142 ***********************************************************************/
143 void Main(void)
144 {
145 1 LCD_PS = 1;
146 1 delay(8); //启动等待,等LCM讲入工作状态
147 1 LCDInit(); //LCM初始化
148 1 Display(show);
149 1 delay(250);
150 1 WriteCommandLCD(0xa7,1);
151 1 delay(250);
152 1 while(1);
153 1 }
154
155
156
157
158
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 280 ----
CONSTANT SIZE = 63 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 6
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 + -