📄 shiyan3.lst
字号:
C51 COMPILER V8.01 SHIYAN3 11/06/2008 18:52:58 PAGE 1
C51 COMPILER V8.01, COMPILATION OF MODULE SHIYAN3
OBJECT MODULE PLACED IN shiyan3.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE shiyan3.c BROWSE DEBUG OBJECTEXTEND
line level source
1 //*****液晶显示程序设计(HD44780)*******
2 //*****设计者*******************展凌***
3 //****程序实现功能:简单的显示字符******
4 #include<reg52.h>
5 #define uchar unsigned char
6 sbit rs=P1^5;//写信号
7 sbit rw=P1^6;//读信号
8 sbit en=P1^7;//使能信号
9 sbit flag=ACC^7;//忙标志,flag=1(正在忙),flag=0(空闲)
10 uchar idata fttp[13]="www.heart.com";//要显示的字符
11 uchar idata host[16]="ZhanLing welcome";
12
13 //*****************************************
14 void delay()//延时函数
15 {//用于读写数据要保持的时间
16 1 //时序图要求是120ns,长点没关系
17 1 uchar i;
18 1 for(i=200;i>0;i--);
19 1 }
20 //*****************************************
21 void busy_flag()//检查忙标志函数
22 {//如果正在处理数据,则等待
23 1 do
24 1 {//这段要按照时序图来写
25 2 en=0;
26 2 rw=1;
27 2 rs=0;
28 2 en=1;
29 2 ACC=P0;
30 2 en=0;
31 2 }while(flag==1);
32 1 }
33 //*****************************************
34 void write_com(uchar com)//写命令函数
35 {//向液晶写入命令
36 1 //要按照时序图来写
37 1 busy_flag();//检查忙
38 1 en=0;
39 1 rw=0;
40 1 rs=0;
41 1 en=1;
42 1 P0=com;//写入命令
43 1 en=0;
44 1 delay();//延时一会
45 1 }
46 //******************************************
47 void write_dat(uchar dat)//写数据函数
48 {//向LCD写入数据,LCD会显示出来的
49 1 //严格按照时序图来写
50 1 busy_flag();//检查忙
51 1 en=0;
52 1 rw=0;
53 1 rs=1;
54 1 en=1;
55 1 P0=dat;//写入数据
C51 COMPILER V8.01 SHIYAN3 11/06/2008 18:52:58 PAGE 2
56 1 en=0;
57 1 delay();//延时一会
58 1 }
59 //*****************************************
60 void intc()//初始化函数
61 {
62 1 write_com(0x01);//LCD清屏
63 1 write_com(0x02);//LCD光标复位
64 1 write_com(0x06);//写入一数据,光标自动右移
65 1 write_com(0x0c);//不显示光标
66 1 write_com(0x38);//P0的8位数据线都有效(必须)
67 1 }
68 //*********************************************
69 void main()//主函数
70 {
71 1 uchar i;
72 1 intc();//初始化
73 1 for(i=0;i<13;i++)
74 1 {
75 2 write_dat(fttp[i]);
76 2 //第1行顶格显示13个字符
77 2 }
78 1 write_com(0x80+0x40);//改变光标位置
79 1 //0x80表示第1行顶格,0x80+0x40第2行顶格
80 1 //0x80+0x41表示第2行第2个位置
81 1 for(i=0;i<16;i++)
82 1 {
83 2 write_dat(host[i]);
84 2 //第2行顶格显示16个字符
85 2 }
86 1 while(1);//循环
87 1 }
88 //**************************************************
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 122 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = 29 ----
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 + -