📄 lcd1602.lst
字号:
C51 COMPILER V7.50 LCD1602 04/21/2007 17:45:23 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE LCD1602
OBJECT MODULE PLACED IN lcd1602.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE lcd1602.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*
2 ***************************************************************************
3 *
4 * (C) Copyright 2007,单片机初学者园地
5 * All Rights reserved.
6 *
7 *项目名称: 51单片机学习开发系统
8 *
9 *本文件名称:LCD1602.c
10 *
11 * 完成作者 : 歪歪
12 * 当前版本 : V1.0
13 * 完成日期 : 2007年4月1日
14 * 描 述 :
15 * 此程序实现,完成液晶的驱动程序,可以显示任意的ASCII字符
16 *
17 *
18 ****************************************************************************
19 */
20
21
22 #include <reg52.h> //调用头文件(单片机内部的寄存器定义)
23
24 /******本段为硬件I/O口定义********/
25 sbit KEY0 = P0 ^ 0; //KEY和发光管复用,请将4个跳线插到KEY端
26 sbit KEY1 = P0 ^ 1;
27 sbit KEY2 = P0 ^ 2;
28 sbit KEY3 = P0 ^ 3;
29 sbit DIG0 = P0 ^ 4; //数码管位0
30 sbit DIG1 = P0 ^ 5; //数码管位1
31
32 sbit BUZZ = P3 ^ 3; //蜂鸣器
33 sbit LCD_RW = P3 ^ 6;
34 sbit LCD_RS = P3 ^ 7;
35 sbit LCD_E = P3 ^ 4;
36
37 #define LED_SEG P1 //数码管
38 #define LCD_DATA P2 //LCD
39 #define LCD_BUSY 0x80 // 用于检测LCD的BUSY标识
40
41 void lcd_init(void);
42 void display_string(unsigned char x,unsigned char y,unsigned char *s);
43 //LCD
44 unsigned char code LcdBuf1[]= {"welcom!"};
45 unsigned char code LcdBuf2[]= {"MCU-STUDY-BOARD"};
46 //unsigned char code LcdBuf2[]= {"current temp: C"};
47
48 //函数声明
49 void disp_selec(unsigned char bit_selec,unsigned char seg);
50
51 /**************************************************
52 ** 函数名称: dellay
53 ** 入口参数:h(unsigned int型)
54 ** 出口参数:无
55 ** 功能描述: 短暂延时,使用11.0592晶体,约0.01MS
C51 COMPILER V7.50 LCD1602 04/21/2007 17:45:23 PAGE 2
56 ****************************************************/
57 void dellay(unsigned int h)
58 {
59 1 while(h--); //0.01MS
60 1 }
61
62 unsigned char time_temp; //全局变量,定时器加1
63 unsigned char time_num; //全局变量,按一次键加1
64
65
66 /************主程序**************/
67 main()
68 {
69 1 lcd_init();
70 1 display_string(3,0,LcdBuf1);
71 1 display_string(0,1,LcdBuf2);
72 1
73 1 while(1); //单片机在此反复执行
74 1 }
75
76 //写数据
77
78 void WriteDataLcd(unsigned char wdata)
79 {
80 1 LCD_DATA=wdata;
81 1 LCD_RS=1;
82 1 LCD_RW=0;
83 1 LCD_E=0;
84 1 dellay(100); //短暂延时
85 1 LCD_E=1;
86 1 }
87 //写命令
88 void WriteCommandLcd(unsigned char wdata)
89 {
90 1 LCD_DATA=wdata;
91 1 LCD_RS=0;
92 1 LCD_RW=0;
93 1 LCD_E=0;
94 1 dellay(100); //短暂延时
95 1 LCD_E=1;
96 1 }
97
98 //LCD初始化
99 void lcd_init(void)
100 {
101 1 LCD_DATA=0;
102 1 WriteCommandLcd(0x38);
103 1 dellay(1000);
104 1 WriteCommandLcd(0x38);
105 1 dellay(1000);
106 1 WriteCommandLcd(0x38); //显示模式设置
107 1 WriteCommandLcd(0x08); //关闭显示
108 1 WriteCommandLcd(0x01); //显示清屏
109 1 WriteCommandLcd(0x06); //显示光标移动设置
110 1 WriteCommandLcd(0x0c); //显示开及光标移动设置
111 1 }
112 //设置光标
113 void display_xy(unsigned char x,unsigned char y)
114 {
115 1 if(y==1)
116 1 x+=0x40;
117 1 x+=0x80;
C51 COMPILER V7.50 LCD1602 04/21/2007 17:45:23 PAGE 3
118 1 WriteCommandLcd(x);
119 1 }
120 //显示单个字符
121 void display_char(unsigned char x,unsigned char y,unsigned char dat)
122 {
123 1 display_xy(x,y);
124 1 WriteDataLcd(dat);
125 1 }
126
127 //显示字符串
128 void display_string(unsigned char x,unsigned char y,unsigned char *s)
129 {
130 1 display_xy(x,y);
131 1 while(*s)
132 1 {
133 2 WriteDataLcd(*s);
134 2 s++;
135 2 }
136 1 }
137
138
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 165 ----
CONSTANT SIZE = 24 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 2 ----
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 + -