📄 超声波.lst
字号:
C51 COMPILER V7.06 __声瞋 12/20/2007 18:29:07 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE __声瞋
OBJECT MODULE PLACED IN 超声波.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE 超声波.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /***********************************************************************************/
2 /* LCD(HS12864图形点阵液晶KS0108B控制器)底层驱动程序 */
3 /* LCD接线见LCD.H定义, */
-
4 /* 版本:V 1.0 */
5 /* 浙江天煌科技实业有限公司 */
6 /***********************************************************************************/
7
8 #include <At89x52.h>
9 #include <stdio.h>
10 #include <string.h>
11 #include "lcd.h"
12
13 typedef struct typFNT_Char //------字符字模显示数据结构------
14 {
15 char Index_Char[1];
16 char Msk_Char[16];
17 };
18 struct typFNT_Char code ASC_16[] = {//-----显示为8*16-----
19 // MingLiu体
20 "0",0x00,0xF0,0x08,0x04,0xC4,0x28,0xF0,0x00,0x00,0x0F,0x14,0x23,0x20,0x10,0x0F,0x00,
21 "1",0x00,0x00,0x00,0x08,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,
22 "2",0x00,0x18,0x04,0x04,0x04,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,
23 "3",0x00,0x08,0x04,0x84,0xC4,0x38,0x00,0x00,0x00,0x20,0x20,0x20,0x20,0x11,0x0E,0x00,
24 "4",0x00,0x00,0x80,0x60,0x18,0xFC,0x00,0x00,0x00,0x06,0x05,0x04,0x04,0x3F,0x04,0x00,
25 "5",0x00,0x00,0x7C,0x44,0x44,0x84,0x04,0x00,0x00,0x20,0x20,0x20,0x20,0x10,0x0F,0x00,
26 "6",0x00,0xE0,0x90,0x48,0x44,0x84,0x04,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,
27 "7",0x00,0x1C,0x04,0x04,0x04,0xE4,0x1C,0x00,0x00,0x00,0x00,0x38,0x07,0x00,0x00,0x00,
28 "8",0x00,0x30,0x48,0x84,0x84,0x48,0x30,0x00,0x00,0x0E,0x11,0x20,0x20,0x11,0x0E,0x00,
29 "9",0x00,0xF0,0x08,0x04,0x04,0x08,0xF0,0x00,0x00,0x20,0x21,0x22,0x12,0x09,0x07,0x00,
30 ".",0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x0C,0x00,0x00,0x00,
31 ":",0x00,0x00,0x00,0x60,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x0C,0x00,0x00,0x00,
32 "N",0x08,0xF8,0x30,0xC0,0x00,0x08,0xF8,0x08,0x20,0x3F,0x20,0x00,0x07,0x18,0x3F,0x00,
33 "o",0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,
34
35
36
37 };
38
39 typedef struct typFNT_GB16 //------字符字模显示数据结构------
40 {
41 char Index_GB16[2];
42 char Msk_GB16[32];
43 };
44 struct typFNT_GB16 code GB_16[] = { // 显示16*16
45 // 楷体_GB2312
46 "经",0x00,0x60,0x50,0xC8,0x46,0x30,0x80,0x88,0x48,0x24,0x14,0x4C,0x80,0x00,0x00,0x00,0x00,0x12,0x13,0x0A,0
-x09,0x24,0x20,0x22,0x22,0x1E,0x11,0x11,0x10,0x10,0x00,0x00,
47 "纬",0x00,0x30,0xA8,0x66,0xB0,0x88,0x00,0x48,0xFF,0xA4,0xA4,0xA4,0x80,0x00,0x00,0x00,0x00,0x09,0x05,0x05,0
-x02,0x00,0x01,0x01,0x7F,0x00,0x04,0x08,0x07,0x00,0x00,0x00,
48 "度",0x00,0x00,0x00,0xF8,0x08,0x28,0xF8,0xA9,0xA6,0x7C,0x14,0x14,0x00,0x00,0x00,0x00,0x20,0x18,0x06,0x21,0
-x20,0x22,0x16,0x0A,0x09,0x17,0x30,0x20,0x20,0x20,0x20,0x00,
49 "速",0x80,0x80,0x44,0xC8,0x00,0xC0,0x48,0x48,0xFF,0xA4,0xA4,0x60,0x00,0x00,0x00,0x00,0x10,0x10,0x13,0x1C,0
-x10,0x18,0x15,0x23,0x3F,0x20,0x62,0x64,0x20,0x20,0x20,0x00,
50 "时",0x00,0xF8,0x48,0x44,0xFC,0x00,0xA0,0x20,0x20,0x20,0xFE,0x10,0x10,0x10,0x00,0x00,0x00,0x0F,0x04,0x04,0
C51 COMPILER V7.06 __声瞋 12/20/2007 18:29:07 PAGE 2
-x0F,0x00,0x00,0x01,0x10,0x20,0x3F,0x00,0x00,0x00,0x00,0x00,
51 "间",0x00,0x00,0xF8,0x02,0x04,0xE0,0xA4,0x14,0xF4,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,0x00,0x00,0x1F,0x00,0
-x00,0x07,0x02,0x02,0x07,0x00,0x10,0x20,0x1F,0x00,0x00,0x00,
52 ":",0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x33,0
-x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
53 };
54
55
56 /*--------函数列表-------*/
57 /*-----状态检查-----*/
58 void Check_Busy(void)
59 {
60 1 uchar dat;
61 1 DI=0;
62 1 RW=1;
63 1 do{
64 2 DataPort=0x00;
65 2 EN=1;
66 2 dat=DataPort;
67 2 EN=0;
68 2 dat=0x80 & dat; //仅当第7位为0时才可操作(判别busy信号)
69 2 }while(!(dat==0x00));
70 1 }
71
72 /*-----向LCD发送命令------*/
73 void Writ_Comd(uchar command)
74 {
75 1 Check_Busy();
76 1 RW=0;DI=0;
77 1 DataPort=command;
78 1 EN=1; EN=0;
79 1 }
80
81 /*-----写显示数据------*/
82 void Write_Dat(uchar dat)
83 {
84 1 Check_Busy();
85 1 RW=0;DI=1;
86 1 DataPort=dat;
87 1 EN=1; EN=0;
88 1 }
89
90 /*------设定行地址(页)--X 0-7------*/
91 void Set_Line(uchar line)
92 {
93 1 line=line & 0x07; // 0<=line<=7
94 1 line=line|0xb8; //1011 1xxx
95 1 Writ_Comd(line);
96 1 }
97
98 /*------设定列地址--Y 0-63-----*/
99 void Set_Column(uchar column)
100 {
101 1 column=column & 0x3f; // 0=<column<=63
102 1 column=column | 0x40; // 01xx xxxx
103 1 Writ_Comd(column);
104 1 }
105
106 /*-----设定显示开始行--XX-----*/
107 void Set_StartLine(uchar startline) //0--63
108 {
109 1 startline=startline & 0x07;
C51 COMPILER V7.06 __声瞋 12/20/2007 18:29:07 PAGE 3
110 1 startline=startline | 0xc0; //1100 0000
111 1 Writ_Comd(startline);
112 1 }
113
114 /*-----开关显示-----ONOFF=1:ON;ONOFF=0:OFF-----*/
115 void Set_OnOff(uchar onoff)
116 {
117 1 onoff=0x3e | onoff; //0011 111x
118 1 Writ_Comd(onoff);
119 1 }
120
121 /*------选择屏幕:screen: 0-全屏,1-左屏,2-右屏-----*/
122 void Select_Screen(uchar screen)
123 {
124 1 switch(screen)
125 1 { case 0: cs1=1;
126 2 cs2=1;
127 2 break;
128 2 case 1: cs1=1;
129 2 cs2=0;
130 2 break;
131 2 case 2: cs1=0;
132 2 cs2=1;
133 2 break;
134 2 }
135 1 }
136
137 /*-----清屏:screen: 0-全屏,1-左屏,2-右-----*/
138 void LCD_Clr(uchar screen)
139 { unsigned char i,j;
140 1 Select_Screen(screen);
141 1 for(i=0;i<8;i++)
142 1 {Set_Line(i);
143 2 for(j=0;j<128;j++)
144 2 { Write_Dat(0x00); }
145 2 }
146 1 }
147
148 /*-----初始化LCD------*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -