兼职项目 智能自行车
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

101 lines
3.5 KiB

C51 COMPILER V9.56.0.0 LCD 04/08/2022 02:58:55 PAGE 1
C51 COMPILER V9.56.0.0, COMPILATION OF MODULE LCD
OBJECT MODULE PLACED IN lcd.OBJ
COMPILER INVOKED BY: D:\Keil_v5\C51\BIN\C51.EXE lcd.c OPTIMIZE(8,SPEED) BROWSE DEBUG OBJECTEXTEND TABS(2)
line level source
1 #include "lcd.h"
2
3
4 void Read_Busy() //忙检测函数,判断bit7是0,允许执行;1禁止
5 {
6 1 unsigned char sta; //
7 1 LCD1602_DB = 0xff;
8 1 LCD1602_RS = 0;
9 1 LCD1602_RW = 1;
10 1 do
11 1 {
12 2 LCD1602_EN = 1;
13 2 sta = LCD1602_DB;
14 2 LCD1602_EN = 0; //使能,用完就拉低,释放总线
15 2 }while(sta & 0x80);
16 1 }
17
18 void Lcd1602_Write_Cmd(unsigned char cmd) //写命令
19 {
20 1 Read_Busy();
21 1 LCD1602_RS = 0;
22 1 LCD1602_RW = 0;
23 1 LCD1602_DB = cmd;
24 1 LCD1602_EN = 1;
25 1 LCD1602_EN = 0;
26 1 }
27
28 void Lcd1602_Write_Data(unsigned char dat) //写数据
29 {
30 1 Read_Busy();
31 1 LCD1602_RS = 1;
32 1 LCD1602_RW = 0;
33 1 LCD1602_DB = dat;
34 1 LCD1602_EN = 1;
35 1 LCD1602_EN = 0;
36 1 }
37
38 void LcdSetCursor(unsigned char x,unsigned char y) //坐标显示
39 {
40 1 unsigned char addr;
41 1 if(y == 0)
42 1 addr = 0x00 + x;
43 1 else
44 1 addr = 0x40 + x;
45 1
46 1 Lcd1602_Write_Cmd(addr|0x80);
47 1 }
48
49 //按指定位置显示一个字符
50 void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData)
51 {
52 1 Y &= 0x1;
53 1 X &= 0xF; //限制X不能大于15,Y不能大于1
54 1 if (Y) X |= 0x40; //当要显示第二行时地址码+0x40;
55 1 X |= 0x80; //算出指令码
C51 COMPILER V9.56.0.0 LCD 04/08/2022 02:58:55 PAGE 2
56 1 Lcd1602_Write_Cmd(X); //发命令字
57 1 Lcd1602_Write_Data(DData); //发数据
58 1 }
59
60
61 void LcdShowStr(unsigned char x,unsigned char y,unsigned char *str) //显示字符串
62 {
63 1 LcdSetCursor(x,y); //当前字符的坐标
64 1 while(*str != '\0')
65 1 {
66 2 Lcd1602_Write_Data(*str++);
67 2 }
68 1 }
69
70 void InitLcd1602() //1602初始化
71 {
72 1 Lcd1602_Write_Cmd(0x38); //打开,5*8,8位数据
73 1 Lcd1602_Write_Cmd(0x0c);
74 1 Lcd1602_Write_Cmd(0x06);
75 1 Lcd1602_Write_Cmd(0x01); //清屏
76 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 157 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 3
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)