?? 并行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 + -