📄 1602_display.lst
字号:
C51 COMPILER V7.10 1602_DISPLAY 05/24/2008 18:19:06 PAGE 1
C51 COMPILER V7.10, COMPILATION OF MODULE 1602_DISPLAY
OBJECT MODULE PLACED IN .\output\1602_display.obj
COMPILER INVOKED BY: C:\C51\BIN\C51.EXE source\1602_display.c BROWSE DEBUG OBJECTEXTEND PRINT(.\list\1602_display.lst) O
-BJECT(.\output\1602_display.obj)
line level source
1 #include <aduc834.h>
2 #include"..\headers\1602.h"
3
4
5 extern unsigned char code CGTAB[32];
6 bit LCD_BUSY;
7 void LCD_Init()
8 {
9 1 unsigned char data i;
10 1 WR_CMD(Mode_2row_5_10); //8位数据接口,5x7点阵,单行显示
11 1 for(i=0;i<3;i++) //厂家要求,未明原因
12 1 {
13 2 LCD_En=1;
14 2 LCD_En=0; //下降沿操作
15 2 Wait(1000);
16 2 }
17 1 //WR_CMD(Mode_2row_5_7); //8位数据模式,2行显示,5x7点阵
18 1 WR_CMD(Scr_clc); //清屏
19 1 WR_CMD(Dis_NoCur); //光标闪烁
20 1 // WR_CMD(Mode_Cur_R);
21 1 WR_CGRAM(CGTAB,32,0x00);// 建立CGRAM字库
22 1
23 1 }
24 /***********短延时子程序*************************/
25
26 void Wait(int data length)
27 {
28 1 while (length >=0)
29 1 length--;
30 1 }
31
32 /**********写指令子程序*****************************/
33
34 void WR_CMD(unsigned char command)
35
36 { while(CHECK_LCD_BUSY());
37 1 LCD_RS = 0;//CODE REGESTER
38 1 LCD_RW = 0;//WRITE MODE
39 1 DAT_BUS = command;
40 1 LCD_En = 1; //下降沿触发使能
41 1 LCD_En = 0;
42 1 }
43
44 /**********写显示数据子程序**********************************/
45
46 void WR_DAT(unsigned char dat)
47
48 {
49 1 while(CHECK_LCD_BUSY());
50 1 LCD_RS = 1;//DATA REGESTER
51 1 LCD_RW = 0;//WRITE MODE
52 1
53 1 DAT_BUS = dat; //向总线写数据
54 1 LCD_En = 1; //下降沿触发使能
C51 COMPILER V7.10 1602_DISPLAY 05/24/2008 18:19:06 PAGE 2
55 1 LCD_En = 0;
56 1
57 1 }
58
59 /********建立CGRAM字库**********************************/
60
61 void WR_CGRAM(unsigned char *CGTAB,unsigned char counter,unsigned char address)
62 {
63 1
64 1 unsigned char data i;
65 1
66 1 WR_CMD(0x40|address); //设置CGRAM的地址
67 1
68 1 for(i=0;i<counter;i++)
69 1 {
70 2 WR_DAT(CGTAB[i]); //自定义字符数据写入CGRAM
71 2
72 2 }
73 1
74 1
75 1 }
76 /*****************DDRAM地址指针设置*************************/
77
78 void DDRAM_ADDR_SET(unsigned char row,unsigned char column)
79 {
80 1 unsigned char address;
81 1 address = column;
82 1 if (row==2)
83 1 {
84 2 address |= 0x40; //修正第二行显示地址40H--67H
85 2 }
86 1 address |= 0x80 ; //设置DDRAM地址指针命令
87 1 WR_CMD(address);
88 1
89 1 }
90
91 /******************BUSY位检测子程序******************************/
92
93 unsigned char CHECK_LCD_BUSY()
94 {
95 1 unsigned char temp1;
96 1 LCD_RS = 0;
97 1 LCD_RW = 1; //读LCD状态
98 1 DAT_BUS = 0xFF;
99 1 LCD_En = 1;
100 1 temp1 = DAT_BUS; //状态值读入
101 1 LCD_En = 0;
102 1 temp1 &= 0x80; //取最高位,把其他位屏蔽
103 1 return temp1;
104 1
105 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 191 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 9
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILER V7.10 1602_DISPLAY 05/24/2008 18:19:06 PAGE 3
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -