📄 lcd.lst
字号:
1: /*********************************************************************
2: * Goldenchip ICDDEMO Workshop for MCUPIC16F877 *
3: **********************************************************************
4: * 本程序包含控制外部液晶面板的4-BIT控制模式子程序。这些程序是专门为 *
5: * 高奇ICDDEMO演示板设计的。但它也可作为其他类型的使用 KS0066U控制器的*
6: * 液晶面板的控制程序。 *
7: * ICDDEMO板使用的LCD显示信号口为: *
8: * PORTB2-》数据位0 *
9: * PORTB3-》数据位1 *
10: * PORTB4-》数据位2 *
11: * PORTB5-》数据位3 *
12: * PORTB1-》RS控制位 *
13: * PORTA5-》E 控制位 *
14: * 本程序使用4M晶振 *
15: *********************************************************************/
16:
17: /*********************************************************************
18: * Filename: lcd.c *
19: * Date: 10/19/2002 *
20: * Edit by Yamato View ,Goldenchip Electronic Co. ,Ltd. *
21: * *
22: * TEL: 86-0591-3375855-721 *
23: * *
24: *********************************************************************/
25: #include <pic.h>
26: #include "lcd.h"
27: // PORTBITS
28: #define PortBit(port,bit) ((unsigned)&(port)*8+(bit))
29: #define RS RB1
30: #define E RA5
31:
32: void Init_Lcd( void ) // 初始化 LCD 显示
33: {
34: PORTB = 0xC1;
35: TRISB = 0xC1;
36: TRISA = 0xDF;
37:
38: Delay15Ms(); // ~15mS延时
39:
40: DATA = 0x00;
41: E = 1;
42: NOP();
43: NOP();
44: E = 0;
45:
46: DATA = 0x08;
47: E = 1;
48: NOP();
49: NOP();
50: E = 0;
51: Delay5Ms();
52:
53: Write_Lcd_Cmd( 0x28 ); //
54: Write_Lcd_Cmd( 0x0C ); // 开显示
55: Write_Lcd_Cmd( 0x06 ); // 设置指针移动方式
56: Write_Lcd_Cmd( 0x01 ); // 清屏
57: }
58:
59: void Write_Lcd_Cmd( unsigned char cmd ) // 写命令到LCD子程序
60: {
61: DATA &=0xc3;
62: DATA |= ( ( cmd >>2 ) & 0x3C ); // 送高4位
63: RS = 0; // 设置为发送命令格式
64: E = 1; // 发送信号,下降沿触发
65: NOP();
66: NOP();
67: E = 0;
68: DATA &=0xc3 ; //
69: DATA |= ( ( cmd <<2 ) & 0x3C ); // 送低4位
70: E = 1; // 发送信号,下降沿触发
71: NOP();
72: NOP();
73: E = 0; //
74: Delay5Ms(); //
75: }
76:
77:
78: void Write_Lcd_Data( unsigned char data ) // 写数据到LCD的子程序
79: {
80: DATA &= 0xc3;
81: DATA |= ( ( data >>2 ) & 0x3C ); // 送高4位
82: RS = 1; // 设置为发送数据格式
83: E = 1; //
84: NOP();
85: NOP(); //
86: E = 0; // set enable low
87: //;DATA &= 0xF0;
88: DATA &= 0xc3;
89: DATA |= ( ( data <<2 ) & 0x3C ); // 送低4位
90: E = 1; //
91: NOP();
92: NOP(); //
93: E = 0; //
94: Delay5Ms(); //
95: }
96:
97: void Home_Clr( void ) // 清屏
98: {
99: Write_Lcd_Cmd( 0x01 );
100: }
101:
102:
103: void Line_1( void ) // 从第一行显示
104: {
105: Write_Lcd_Cmd( 0x80 );
106: }
107:
108: void Line_2( void ) // 从第2行开始显示
109: {
110: Write_Lcd_Cmd (0xC0 );
111: }
112:
113:
114:
115: void Delay15Ms( void ) // 精确 15ms 延时
116: {
117: unsigned char outer, inner;
118: for (outer = 45; outer > 0; outer--)
119: for (inner = 235; inner > 0; inner--);
120: }
121:
122: void Delay5Ms( void ) // 精确 5ms 延时
123: {
124: unsigned char outer, inner;
125: for (outer = 15; outer > 0; outer--)
126: for (inner = 240; inner > 0; inner--);
127: }
128:
129:
130: void Delay200Us( void ) // 精确 200us 延时
131: {
132: unsigned char delay;
133: for (delay = 167; delay > 0; delay--);
134: }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -