📄 text1.lst
字号:
C51 COMPILER V7.50 TEXT1 04/07/2008 15:32:04 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE TEXT1
OBJECT MODULE PLACED IN Text1.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Text1.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg52.h>
2 #define uchar unsigned char
3 #define uint unsigned int
4 #define DataPort P0
5 #define N 800
6 sbit E=P2^5;
7 sbit RW=P2^6;
8 sbit RS=P2^7;
9 sbit RSTB=P2^4;
10 int num;
11 uint i=0;
12 uint l=0;
13 uint b;
14 uchar temp;
15 uchar a[]="东莞理工学院0123456789abcdefg,今天是2008年04月07日星期1.";
16 uchar c[]={2+'0',5+'0'};
17 uchar d[]={0x98,0x90,0x88,0x80};
18 ////////////////////////////////////////////////////////////
19
20 /**************延时1ms*count*****************///
21 void delay(int count)
22 {
23 1 int x,y;
24 1 for(x=0;x<count;x++)
25 1 for(y=0;y<120;y++);
26 1 }
27 /***********忙检测********************/
28 void Busy()
29 {
30 1 DataPort=0xFF;
31 1 RS=0;
32 1 RW=1;
33 1 E =1;
34 1 if (P0^7==1) delay(10);
35 1 E=0;
36 1 }
37
38 /***********写指令子程序****************/
39 void Write_Com(uchar command)
40 {
41 1 Busy(); //检测忙标志位
42 1 RS=0;
43 1 RW=0;
44 1 E=1;
45 1 DataPort=command; //写入指令
46 1 delay(1);
47 1 E=0;
48 1 RW=1;
49 1 DataPort=0xff;
50 1 }
51
52 /***********写数据子程序***************/
53 void Write_Data(uchar Data)
54 {
55 1 Busy();
C51 COMPILER V7.50 TEXT1 04/07/2008 15:32:04 PAGE 2
56 1 RS=1;
57 1 RW=0;
58 1 E=1;
59 1 DataPort=Data;
60 1 delay(1);
61 1 E=0;
62 1 RW=1;
63 1 }
64
65 /***********LCD初始化*******************/
66
67 void Init_LCD(void)
68 {
69 1 RSTB=0;
70 1 delay(1);
71 1 RSTB=1;
72 1 delay(1);
73 1 Write_Com(0x32);//30H--基本指令操作
74 1 Write_Com(0x32);
75 1 Write_Com(0x0e);//开显示,关光标,不闪烁。
76 1 Write_Com(0x00);//清除显示
77 1 Write_Com(0x06);//指定在资料写入或读取时,光标的移动方向,DDRAM的地址计数器(AC)加1。
78 1 }
79
80 /*****************清屏***********************/
81 void Clear_LCD(void)
82 {
83 1 Write_Com(0x01);
84 1 Write_Com(0x34);
85 1 Write_Com(0x30);
86 1 }
87 /*******************逐行显示***************************************/
88 /**** 灵活的算法,实现字体向上走动,x=d[0]=0x98时,i=0时执行第1,3个if,最终将字写在0x98开始的行中。
89 x=d[1]=0x90时,i=0时执行第1,4个if,最终将字写在0x98开始的行中,i=16时执行第2个if,将字写在
90 0x98中。。。以此类推。。。 ****/
91
92 void Display_Line(uchar x)
93 {
94 1 uchar c=0;
95 1 c=x-0x1; //本函数说明,函数内部的计算公式一定要处在函数的首行
96 1 if(i==0) Write_Com(x);
97 1 if(i==2*(0x87-c)) Write_Com(0x90);
98 1 if(i==2*(0x97-c)) Write_Com(0x98);
99 1 if(i==2*(0x8f-c)) Write_Com(0x88);
100 1 }
101
102 /********************汉字显示********************/
103 void Show_Chiese()
104 {
105 1 EA=0;
106 1 b=sizeof(a)/sizeof(char); //注意,这里不能单纯写成b=sizeof(a),编译器看到的就是一个有52个元素的字符形
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -