st7920serial.lst
来自「这是TOPWAY公司的LCD驱动程序」· LST 代码 · 共 1,211 行 · 第 1/5 页
LST
1,211 行
C51 COMPILER V8.02 ST7920SERIAL 07/24/2007 06:45:27 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE ST7920SERIAL
OBJECT MODULE PLACED IN st7920serial.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE st7920serial.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /******************************************************************************
2 Copyright 2007 普兰工作室
3 All rights reserved.
4
5 文件名 : st7920serial.c
6 模块名称:st7920 串行方式驱动12864液晶驱动
7 功能概要:st7920显示驱动、ds1302驱动、ds18b20驱动 显示时间,温度
8
9 取代版本:0.0.1
10 修改人 :pulan
11 完成日期:2007.07.08
12 升级说明:create
13 CPU: stc89c58 主频:11.0592M
14 液晶型号: 生产厂家: 驱动芯片:st7920
15 ******************************************************************************/
16 #include <reg52.h>
17
18 sbit Bell_Out = P1 ^ 0;//闹钟管脚输出,低有效
19
20 sbit DQ = P1 ^ 4;//ds1820data
21 sbit clock_clk = P3 ^ 5;//ds1302_clk
22 sbit clock_dat = P3 ^ 6;//ds1302_dat
23 sbit clock_Rst = P3 ^ 7;//ds1302_Rst
24
25 //键盘扫描
26 sbit Add_Key = P2 ^ 0;//加1键
27 sbit Dec_Key = P2 ^ 1;//减1键
28 sbit OK_Key = P2 ^ 2;//确定键
29
30 //引脚定义
31 sbit CS = P2 ^ 1; //片选 高电平有效 单片LCD使用时可固定高电平
32 sbit SID = P2 ^ 2; //数据
33 sbit SCLK = P2 ^ 4; //时钟
34 sbit psb = P2^5;
35 //为了编程方便定义的位变量
36 sbit a0 = ACC ^ 0;
37 sbit a1 = ACC ^ 1;
38 sbit a2 = ACC ^ 2;
39 sbit a3 = ACC ^ 3;
40 sbit a4 = ACC ^ 4;
41 sbit a5 = ACC ^ 5;
42 sbit a6 = ACC ^ 6;
43 sbit a7 = ACC ^ 7;
44
45 bit flag, Bell_Swh,Hourb,Minb,Kgb;//闹钟调时闪烁标志位
46 bit sec=0,min=0,hour=0,year=0,mon=0,day=0,weekk=0; //闪烁标志位
47 unsigned char id;
48 unsigned char id2;
49 unsigned char d;
50 unsigned char e;
51 unsigned char S_1302;
52 unsigned char H_1302;
53 unsigned char H_Bell;
54 unsigned char S_Bell;
55 //Function Definition 函数声明
C51 COMPILER V8.02 ST7920SERIAL 07/24/2007 06:45:27 PAGE 2
56 void Delay(int num);
57 void Init_DS18B20(void);
58 unsigned char ReadOneChar(void);
59 void WriteOneChar(unsigned char dat);
60 unsigned int ReadTemperature(void);
61 void clock_out(unsigned char dd);
62 unsigned char clock_in(void);
63 unsigned char read_clock(unsigned char ord);
64 void write_clock(unsigned char ord, unsigned char dd);
65 void Disp(void);
66 void id_case1_key(void);
67 void id_case2_key(void);
68 void Set_time(unsigned char sel,bit sel_1);
69 void Timer0_Init(void);
70 void Init_1302(void);
71 void Set_Bell(unsigned char sel, bit sel_1);
72 void Bell(void);
73 //12864
74 void Write_char(bit start, unsigned char ddata);
75 void Send_byte(unsigned char bbyte);
76 void Delaynms(unsigned int di);
77 void Lcd_init(void);
78 void Disp_img(unsigned char *img);
79 //void Lcd_img_Cls(void);
80 void LCD_Write_string(unsigned char X,unsigned char Y,unsigned char *s);
81 void LCD_set_xy( unsigned char x, unsigned char y );
82
83 unsigned char code num[]={"0123456789 :."};
84 unsigned char code yi[]={"一"};
85 unsigned char code er[]={"二"};
86 unsigned char code san[]={"三"};
87 unsigned char code si[]={"四"};
88 unsigned char code wu[]={"五"};
89 unsigned char code liu[]={"六"};
90 unsigned char code ri[]={"日"};
91 unsigned char code guan[]={"关"};
92 unsigned char code kai[]={"开"};
93 unsigned char code bt[]={"电子万年历"};
94 unsigned char code nian[]={"年"};
95 unsigned char code yue[]={"月"};
96 unsigned char code xq[]={"星期"};
97 unsigned char code sw[]={"室温"};
98 unsigned char code ssd[]={"℃"};
99 unsigned char code nzbz []={"ON"};
100 unsigned char code nzsd []={"闹钟设定"};
101 unsigned char code colon []={":"};
102 unsigned char code nzsjd []={"闹钟时候到!"};
103 unsigned char code xsfz[]={"H : M"};
104 unsigned char code space_c[]={" "};
105
106 unsigned char code logo[]={
107 /*-- 调入了一幅图像:logo.bmp -- */
108 /*-- 宽度x高度=128x64 显示湘灵电子LOGO --*/
109 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
110 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
111 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
112 0x00,0x01,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
113 0x00,0x03,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
114 0x00,0x03,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
115 0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x03,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
116 0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
117 0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,
C51 COMPILER V8.02 ST7920SERIAL 07/24/2007 06:45:27 PAGE 3
118 0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,
119 0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,
120 0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,
121 0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,
122 0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,
123 0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
124 0x10,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,
125 0x10,0x06,0x00,0x00,0x30,0x00,0x00,0x37,0xF8,0x80,0x00,0x00,0x00,0x00,0x00,0x00,
126 0x30,0x06,0x00,0x01,0x20,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
127 0x30,0x06,0x00,0x02,0x60,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
128 0x38,0x06,0x00,0x16,0x40,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
129 0x3C,0x06,0x00,0x24,0x00,0x3F,0x80,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
130 0x3C,0x0F,0x00,0x64,0x01,0xFF,0xF0,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
131 0x3F,0x1F,0x00,0x60,0x0F,0xFF,0xFC,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,
132 0x17,0xBF,0xE0,0x60,0x3F,0xFF,0xFE,0x7F,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,
133 0x00,0x7F,0x80,0x80,0xFF,0x00,0x3F,0x7F,0xFF,0xC0,0x00,0x00,0x00,0x01,0x80,0x00,
134 0x00,0x7E,0x01,0x81,0xF8,0x00,0x0F,0x01,0xE0,0x00,0x00,0x00,0x00,0x01,0xE6,0x00,
135 0x00,0x0E,0x03,0x43,0xEF,0xFC,0x0F,0x80,0xC0,0x00,0x00,0x00,0x00,0x03,0x7F,0x00,
136 0x00,0x0E,0x03,0x07,0xCF,0xFE,0x0F,0x80,0xC0,0x00,0x00,0x00,0x00,0x06,0x19,0x80,
137 0x00,0x0E,0x06,0x0F,0xBF,0xFE,0x0F,0x80,0xC0,0x00,0x3F,0x80,0x00,0x06,0x00,0xC0,
138 0x60,0x0E,0x06,0x1F,0x3F,0xBE,0x0F,0x00,0xC0,0x00,0xFF,0xC0,0x00,0x04,0x00,0xC0,
139 0x60,0x0E,0x0E,0x3C,0x7F,0x9E,0x0F,0x10,0xC0,0x81,0x80,0x60,0x01,0x84,0x00,0xC0,
140 0x60,0x0E,0x0C,0x38,0xFF,0xFE,0x1E,0x10,0xC1,0x83,0x00,0x21,0xC6,0x8C,0x00,0x60,
141 0x38,0x1E,0x18,0x70,0xFF,0xFE,0x3C,0x30,0xC3,0x0E,0x00,0x63,0x2C,0x8C,0xE0,0x30,
142 0x7F,0x9E,0x18,0x71,0xFF,0xFC,0x78,0x70,0xC3,0x18,0x00,0x62,0x29,0x8D,0xF8,0x18,
143 0x3E,0xBF,0x18,0xE1,0xFF,0xFC,0xF0,0x7C,0xC2,0x10,0x01,0xC2,0x25,0xF9,0x1E,0x08,
144 0x30,0x76,0x18,0xC1,0xFF,0xF1,0xE0,0xEC,0xC0,0x30,0x03,0x02,0x24,0xF9,0x03,0x8C,
145 0x20,0x66,0x11,0xC0,0xFF,0xE7,0x80,0x82,0x60,0x10,0x02,0x06,0x64,0x19,0x00,0x84,
146 0x20,0xC6,0x11,0x80,0xFF,0x9F,0x00,0x00,0xF0,0x19,0xC2,0x06,0x64,0x1F,0x10,0xCC,
147 0x01,0xC4,0x09,0x80,0x7F,0x7C,0x00,0x00,0xF8,0x0F,0x63,0x06,0x2C,0x1E,0x38,0xC8,
148 0x01,0x84,0x01,0x80,0x00,0xF8,0x0C,0x00,0xD8,0x00,0x23,0x06,0x38,0x12,0x01,0x98,
149 0x01,0x04,0x01,0x80,0x07,0xE0,0x18,0x00,0xCC,0x00,0x31,0x03,0x19,0xF6,0x01,0xF0,
150 0x00,0x04,0x01,0x98,0x7F,0x00,0x30,0x00,0x86,0x00,0x11,0x01,0x18,0x37,0x81,0x80,
151 0x00,0x04,0x01,0xC7,0xFC,0x00,0xE0,0x00,0x87,0x00,0x19,0x81,0x98,0x1D,0x9F,0x00,
152 0x00,0x04,0x01,0xC0,0x00,0x01,0x80,0x01,0x83,0x80,0x18,0xF0,0x98,0x18,0x03,0x00,
153 0x03,0x04,0x00,0xE0,0x00,0x07,0x00,0x01,0x01,0xC0,0xF8,0xD8,0x98,0xA8,0x03,0x00,
154 0x07,0x04,0x00,0xF0,0x00,0x1E,0x00,0x03,0x00,0xE0,0xC0,0x08,0x99,0xEF,0x3E,0x00,
155 0x0E,0x04,0x00,0x7C,0x00,0x7C,0x00,0x06,0x00,0x60,0xC0,0x08,0x99,0x12,0x36,0x00,
156 0x1C,0x04,0x00,0x3F,0xCF,0xF0,0x00,0x0C,0x00,0x30,0x40,0x0C,0x99,0x10,0x02,0x00,
157 0x3C,0x04,0x00,0x0F,0xFF,0xC0,0x00,0x38,0x00,0x18,0x7F,0xF8,0xFF,0x18,0x06,0x00,
158 0x3C,0x04,0x00,0x03,0xFF,0x00,0x00,0x60,0x00,0x00,0x3F,0xF0,0x66,0x1F,0xFC,0x00,
159 0x3C,0x04,0x00,0x00,0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
160 0x3C,0x0C,0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
161 0x3C,0x0C,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
162 0x3C,0x0C,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
163 0x18,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
164 0x18,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
165 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
166 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
167 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
168 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
169 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
170 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
171 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
172 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
173 };
174 /******************************************************************************************
175 * 函数名称 :Delay
176 * 功能描述 :
177 * 参数 : 参数名称: 输入/输出? 类型 描述
178 *
179 * 返回值 :
C51 COMPILER V8.02 ST7920SERIAL 07/24/2007 06:45:27 PAGE 4
180 * 作者 :
181 * 创建日期 :2006-12-19
182 * 全局变量 :
183 * 全局静态变量:
184 * 局部静态变量:
185 *----------------------------------------修改历史------------------------------------------
186 * 当前版本 : 修改人: 修改日期:
187 * 修改说明 :
188 ******************************************************************************************/
189 void Lcd_init(void) //初始化LCD
190 {
191 1 Delaynms(10); //启动等待,等LCM讲入工作状态
192 1 CS=1;
193 1 Write_char(0,0x30); //8 位介面,基本指令集
194 1 Write_char(0,0x0c); //显示打开,光标关,反白关
195 1 Write_char(0,0x01); //清屏,将DDRAM的地址计数器归零
196 1 }
197
198 /******************************************************************************************
199 * 函数名称 :Delay
200 * 功能描述 :
201 * 参数 : 参数名称: 输入/输出? 类型 描述
202 *
203 * 返回值 :
204 * 作者 :
205 * 创建日期 :2006-12-19
206 * 全局变量 :
207 * 全局静态变量:
208 * 局部静态变量:
209 *----------------------------------------修改历史------------------------------------------
210 * 当前版本 : 修改人: 修改日期:
211 * 修改说明 :
212 ******************************************************************************************/
213 void Write_char(bit start, unsigned char ddata) //写指令或数据
214 {
215 1 unsigned char start_data,Hdata,Ldata;
216 1 if(start==0)
217 1 start_data=0xf8; //写指令
218 1 else
219 1 start_data=0xfa; //写数据
220 1
221 1 Hdata=ddata&0xf0; //取高四位
222 1 Ldata=(ddata<<4)&0xf0; //取低四位
223 1 Send_byte(start_data); //发送起始信号
224 1 Delaynms(5); //延时是必须的
225 1 Send_byte(Hdata); //发送高四位
226 1 Delaynms(1); //延时是必须的
227 1 Send_byte(Ldata); //发送低四位
228 1 Delaynms(1); //延时是必须的
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?