📄 1602c.lst
字号:
C51 COMPILER V8.08 1602C 04/01/2009 15:14:43 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE 1602C
OBJECT MODULE PLACED IN 1602C.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 1602C.C BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<ADI/ADuC834.h> //包含头文件,这个嘛,就不用多说了~~
2 #define uint unsigned int //预定义一下
3 #define uchar unsigned char
4 sbit rs=P2^3; //1602的数据/指令选择控制线
5 sbit rw=P2^4; //1602的读写控制线
6 sbit en=P2^5; //1602的使能控制线
7 /*P2口接1602的D0~D7,注意不要接错了顺序,我以前可在这上面吃过亏~*/
8 uchar n,m,TCcount=0;
9 uchar code table[]="LCD1602 check ok"; //要显示的内容1放入数组tablel
10 uchar code table1[]="study up"; //要显示的内容2放入数组table1
11 void delay(uint n) //延时函数
12 {
13 1 uint x,y;
14 1 for(x=n;x>0;x--)
15 1 for(y=110;y>0;y--);
16 1 }
17 //中断初始化**************************************************************************************
18 void sys_init(void)
19 {
20 1 ET0=1;
21 1 EA=1;
22 1 }
23 //定时计数器初始化**************************************************************************************
24 void TC_init(void)
25 {
26 1 TMOD|=0x01;
27 1 TH0=0;
28 1 TL0=0;
29 1 TR0=1;
30 1 }
31 void lcd_wcom(uchar com) //1602写命令函数
32 {
33 1 rs=0; //选择指令寄存器
34 1 rw=0; //选择写
35 1 P0=com; //把命令字送入P2
36 1 delay(5); //延时一小会儿,让1602准备接收数据
37 1 en=1; //使能线电平变化,命令送入1602的8位数据口
38 1 en=0;
39 1 }
40 void lcd_wdat(uchar dat) //1602写数据函数
41 {
42 1 rs=1; //选择数据寄存器
43 1 rw=0; //选择写
44 1 P0=dat; //把要显示的数据送入P2
45 1 delay(5); //延时一小会儿,让1602准备接收数据
46 1 en=1; //使能线电平变化,数据送入1602的8位数据口
47 1 en=0;
48 1 }
49 void lcd_init() //1602初始化函数
50 {
51 1 lcd_wcom(0x38); //8位数据,双列,5*7字形
52 1 lcd_wcom(0x0F); //开启显示屏,关光标,光标不闪烁
53 1 lcd_wcom(0x06); //显示地址递增,即写一个数据后,显示位置右移一位
54 1 lcd_wcom(0x01); //清屏
55 1 }
C51 COMPILER V8.08 1602C 04/01/2009 15:14:43 PAGE 2
56 void T0_int() interrupt 1 //定时器0中断
57 {
58 1 ET0=0;
59 1 TH0=0;
60 1 TL0=0;
61 1 TCcount++;
62 1 if(TCcount==10)
63 1 {
64 2 lcd_wcom(0x80);
65 2 for(n=0;n<8;n++) //将table1[]中的数据依次写入1602显示
66 2 {
67 3 lcd_wdat(table1[n]);
68 3 delay(1);
69 3 }
70 2 }
71 1 if(TCcount==20)
72 1 {
73 2 lcd_wcom(0x80+0x40);
74 2 for(m=0;m<16;m++) //将table[]中的数据依次写入1602显示
75 2 {
76 3 lcd_wdat(table[m]);
77 3 delay(1);
78 3 }
79 2 }
80 1 if(TCcount==30)
81 1 {
82 2 lcd_wcom(0x80);
83 2 for(m=0;m<16;m++) //将table[]中的数据依次写入1602显示
84 2 {
85 3 lcd_wdat(table[m]);
86 3 delay(1);
87 3 }
88 2 }
89 1 if(TCcount==40)
90 1 {
91 2 TCcount=0;
92 2 lcd_wcom(0x80+0x40);
93 2 for(n=0;n<8;n++) //将table1[]中的数据依次写入1602显示
94 2 {
95 3 lcd_wdat(table1[n]);
96 3 delay(1);
97 3 }
98 2 }
99 1 ET0=1;
100 1 }
101 void main() //主函数
102 {
103 1 sys_init();
104 1 TC_init();
105 1 lcd_init(); //液晶初始化
106 1 lcd_wcom(0x80); //显示地址设为80H(即00H,)上排第一位
107 1 for(m=0;m<16;m++) //将table[]中的数据依次写入1602显示
108 1 {
109 2 lcd_wdat(table[m]);
110 2 delay(1);
111 2 }
112 1 lcd_wcom(0x80+0x44); //重新设定显示地址为0xc4,即下排第5位
113 1 for(n=0;n<8;n++) //将table1[]中的数据依次写入1602显示
114 1 {
115 2 lcd_wdat(table1[n]);
116 2 delay(1);
117 2 }
C51 COMPILER V8.08 1602C 04/01/2009 15:14:43 PAGE 3
118 1 while(1); //动态停机
119 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 333 ----
CONSTANT SIZE = 26 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 3 ----
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 + -