📄 tc1602a.lst
字号:
C51 COMPILER V8.02 TC1602A 10/05/2008 17:55:05 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE TC1602A
OBJECT MODULE PLACED IN .\TC1602A.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ..\TC1602A\TC1602A.c LARGE BROWSE DEBUG OBJECTEXTEND PRINT(.\TC1602A.lst) O
-BJECT(.\TC1602A.obj)
line level source
1 /********************************************************************************/
2 /* filename : TC1602A.c */
3 /* created : xillinx */
4 /* descript : 处理字符型LCD显示 */
5 /********************************************************************************/
6 #include "../CPU/CPU.h"
7 #include "../CFG/CFG.h"
8 #include "../UART/UART.h"
9 #include "../TC1602A/TC1602A.h"
10
11 /********************************************************************************/
12 /* funname : LCDT_delay_5ms() */
13 /* created : xillinx */
14 /* time : 2008-08-06 */
15 /* descript: 延时等待,1US需要3.7个NOP, 1000000US需要 3700000 */
16 /********************************************************************************/
17 void LCDT_delay_5ms(void)
18 { unsigned int time=0xE000;
19 1 while(time--);
20 1 }
21
22 /********************************************************************************/
23 /* funname : LCDT_set_display() */
24 /* created : xillinx */
25 /* time : 2008-08-06 */
26 /* descript: 设置显示模式 */
27 /********************************************************************************/
28 void LCDT_set_display(unsigned char mode)
29 { LCDT_wr_cmd = 0x08|mode;
30 1 }
31
32 /********************************************************************************/
33 /* funname : LCDT_wait_busy() */
34 /* created : xillinx */
35 /* time : 2008-08-06 */
36 /* descript: 等待释放BUSY信号 */
37 /********************************************************************************/
38 void LCDT_wait_busy(void)
39 { while((LCDT_rd_cmd&0x80)==0x80); //* 等待BUSY释放
40 1 }
41
42 /********************************************************************************/
43 /* funname : LCDT_print_char() */
44 /* created : xillinx */
45 /* time : 2008-08-06 */
46 /* descript: 按指定位置显示一个字符,x表示列,y表示行 */
47 /********************************************************************************/
48 void LCDT_print_char(unsigned char x, unsigned char y, unsigned char mdata)
49 { y &= 0x1; //* y不能大于0x1
50 1 x &= 0xF; //* x不能大于0xF
51 1 if(y==0x1)
52 1 { x|=0x40; //* 当要显示第二行时地址码+0x40;
53 2 }
54 1 x |= 0x80; //* 算出指令码,写显示RAM/DDRAM的地址
C51 COMPILER V8.02 TC1602A 10/05/2008 17:55:05 PAGE 2
55 1 LCDT_wr_cmd =x; //* 写入显示数据要写的地址单元
56 1 LCDT_wait_busy();
57 1 LCDT_wr_data=mdata; //* 写入显示数据
58 1 }
59
60 /********************************************************************************/
61 /* funname : LCDT_print_string() */
62 /* created : xillinx */
63 /* time : 2008-08-06 */
64 /* descript: 按指定位置显示一串字符,x表示列,y表示行 */
65 /********************************************************************************/
66 void LCDT_print_string(unsigned char x, unsigned char y, unsigned char * mdata)
67 { unsigned char list=0x0;
68 1 y &= 0x1; //* y不能大于0x1
69 1 x &= 0xF; //* x不能大于0xF
70 1 while(x<0x10)
71 1 { if(mdata[list]==0x0)
72 2 { break;
73 3 }
74 2 LCDT_print_char(x, y, mdata[list]); //* 显示单个字符
75 2 list++;
76 2 x++;
77 2 }
78 1 }
79
80 /********************************************************************************/
81 /* fun_name : LCDT_LED_open() */
82 /* version : v1.00 */
83 /* created : xillinx */
84 /* descript : LCDP的背光打开 */
85 /********************************************************************************/
86 void LCDT_LED_open(void)
87 { c51_U07_latch|=0x40; //* LCD背光打开
88 1 c51_hc138_cs_keyw[0x0]=c51_U07_latch;
89 1 }
90
91 /********************************************************************************/
92 /* fun_name : LCDT_LED_clear() */
93 /* version : v1.00 */
94 /* created : xillinx */
95 /* descript : LCDP的背光打开 */
96 /********************************************************************************/
97 void LCDT_LED_clear(void)
98 { LCDT_wr_cmd = 0x01; //* 清显示屏
99 1 LCDT_wait_busy(); //* 等待BUSY释放
100 1 }
101 /********************************************************************************/
102 /* funname : LCDT_initialize() */
103 /* created : xillinx */
104 /* time : 2008-08-06 */
105 /* descript: 字符型显示LCD */
106 /********************************************************************************/
107 void LCDT_initialize()
108 { LCDT_wr_cmd = 0x38;
109 1 LCDT_delay_5ms();
110 1 LCDT_wr_cmd = 0x38;
111 1 LCDT_delay_5ms();
112 1 LCDT_wr_cmd = 0x38;
113 1
114 1 LCDT_wr_cmd = 0x38; ///* 8位数据端口,2行显示,5x7点阵
115 1 LCDT_wait_busy(); //* 等待BUSY释放
116 1
C51 COMPILER V8.02 TC1602A 10/05/2008 17:55:05 PAGE 3
117 1 LCDT_wr_cmd = 0x08; //* 关闭显示
118 1 LCDT_wait_busy(); //* 等待BUSY释放
119 1
120 1 LCDT_wr_cmd = 0x02; //* 归位
121 1 LCDT_wait_busy(); //* 等待BUSY释放
122 1
123 1 LCDT_wr_cmd = 0x01; //* 清显示屏
124 1 LCDT_wait_busy(); //* 等待BUSY释放
125 1
126 1 LCDT_wr_cmd = 0x06; //* 输入方式设置为指针加1计数,允许画面滚动
127 1 LCDT_wait_busy(); //* 等待BUSY释放
128 1
129 1 LCDT_wr_cmd = 0x08|LCDT_ENB_DISPLAY; //* 打开显示,其他不设置
130 1 LCDT_wait_busy(); //* 等待BUSY释放
131 1
132 1 LCDT_LED_open();
133 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 219 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- 4
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
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 + -