📄 lcd6610.s
字号:
; 0x38,0x54,0x54,0x58,0x00,
; 0x48,0x7E,0x49,0x49,0x01,
; 0x3A,0x55,0x55,0x53,0x21,
; 0x41,0x7F,0x08,0x48,0x70,
; 0x00,0x44,0x7D,0x40,0x00,
; 0x40,0x44,0x44,0x3D,0x00,
; 0x41,0x7F,0x10,0x68,0x4C,
; 0x00,0x41,0x7F,0x40,0x00,
; 0x7C,0x04,0x7C,0x04,0x78,
; 0x7C,0x04,0x04,0x78,0x00,
; 0x00,0x38,0x44,0x44,0x38,
; 0x42,0x7E,0x52,0x12,0x0C,
; 0x0C,0x12,0x52,0x7E,0x42,
; 0x44,0x7C,0x48,0x04,0x04,
; 0x4C,0x54,0x54,0x64,0x00,
; 0x04,0x3F,0x44,0x40,0x00,
; 0x3C,0x40,0x40,0x7C,0x40,
; 0x0C,0x30,0x60,0x30,0x0C,
; 0x0C,0x70,0x1C,0x70,0x0C,
; 0x44,0x6C,0x10,0x6C,0x44,
; 0x02,0x4E,0x50,0x70,0x0E,
; 0x00,0x64,0x54,0x4C,0x44
; };
;
;
; void LCD_write(unsigned char data,unsigned char dc);
; void LCD_contrast(unsigned char data);
; void lcd_ascii(char *s,unsigned char len);
; void lcd_color(unsigned char bkg,unsigned char text);
; void lcd_window(unsigned char xp,unsigned char yp,unsigned char xe,unsigned char ye);
; void lcd_gotoxy(unsigned char x, unsigned char y);
; void lcd_bar(unsigned char len,unsigned char val,unsigned char bkgcol,unsigned char fillcol);
; unsigned char lcd_bkg_color;
; unsigned char lcd_text_color;
; unsigned char lcd_x;
; unsigned char lcd_y;
;
;
;
; /***********LCD WRITE******************/
; /**********基础程序直接调用即可*********/
; void LCD_write(unsigned char data,unsigned char dc)
; {
.dbline 128
; unsigned char temp;
;
; temp=0;
clr R20
.dbline 129
; clr_lcd_data;
cbi 0x18,5
.dbline 130
; clr_lcd_clk;
cbi 0x18,7
.dbline 132
;
; if (dc) set_lcd_data; /*dc=0 instrution*/
tst R18
breq L2
.dbline 132
sbi 0x18,5
xjmp L3
L2:
.dbline 133
; else clr_lcd_data;
cbi 0x18,5
L3:
.dbline 134
; set_lcd_clk;
sbi 0x18,7
.dbline 135
; clr_lcd_clk;
cbi 0x18,7
.dbline 136
; if (data&0x80) set_lcd_data; //high 4 bit
sbrs R16,7
rjmp L4
.dbline 136
sbi 0x18,5
xjmp L5
L4:
.dbline 137
; else clr_lcd_data;
cbi 0x18,5
L5:
.dbline 138
; set_lcd_clk;
sbi 0x18,7
.dbline 139
; clr_lcd_clk;
cbi 0x18,7
.dbline 140
; if (data&0x40) set_lcd_data;
sbrs R16,6
rjmp L6
.dbline 140
sbi 0x18,5
xjmp L7
L6:
.dbline 141
; else clr_lcd_data;
cbi 0x18,5
L7:
.dbline 142
; set_lcd_clk;
sbi 0x18,7
.dbline 143
; clr_lcd_clk;
cbi 0x18,7
.dbline 144
; if (data&0x20) set_lcd_data;
sbrs R16,5
rjmp L8
.dbline 144
sbi 0x18,5
xjmp L9
L8:
.dbline 145
; else clr_lcd_data;
cbi 0x18,5
L9:
.dbline 146
; set_lcd_clk;
sbi 0x18,7
.dbline 147
; clr_lcd_clk;
cbi 0x18,7
.dbline 148
; if (data&0x10) set_lcd_data;
sbrs R16,4
rjmp L10
.dbline 148
sbi 0x18,5
xjmp L11
L10:
.dbline 149
; else clr_lcd_data;
cbi 0x18,5
L11:
.dbline 150
; set_lcd_clk;
sbi 0x18,7
.dbline 151
; clr_lcd_clk;
cbi 0x18,7
.dbline 152
; if (data&0x08) set_lcd_data;//low 4 bit
sbrs R16,3
rjmp L12
.dbline 152
sbi 0x18,5
xjmp L13
L12:
.dbline 153
; else clr_lcd_data;
cbi 0x18,5
L13:
.dbline 154
; set_lcd_clk;
sbi 0x18,7
.dbline 155
; clr_lcd_clk;
cbi 0x18,7
.dbline 156
; if (data&0x04) set_lcd_data;
sbrs R16,2
rjmp L14
.dbline 156
sbi 0x18,5
xjmp L15
L14:
.dbline 157
; else clr_lcd_data;
cbi 0x18,5
L15:
.dbline 158
; set_lcd_clk;
sbi 0x18,7
.dbline 159
; clr_lcd_clk;
cbi 0x18,7
.dbline 160
; if (data&0x02) set_lcd_data;
sbrs R16,1
rjmp L16
.dbline 160
sbi 0x18,5
xjmp L17
L16:
.dbline 161
; else clr_lcd_data;
cbi 0x18,5
L17:
.dbline 162
; set_lcd_clk;
sbi 0x18,7
.dbline 163
; clr_lcd_clk;
cbi 0x18,7
.dbline 164
; if (data&0x01) set_lcd_data;
sbrs R16,0
rjmp L18
.dbline 164
sbi 0x18,5
xjmp L19
L18:
.dbline 165
; else clr_lcd_data;
cbi 0x18,5
L19:
.dbline 166
; set_lcd_clk;
sbi 0x18,7
.dbline 167
; clr_lcd_clk;
cbi 0x18,7
.dbline -2
.dbline 168
; }
L1:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r temp 20 c
.dbsym r dc 18 c
.dbsym r data 16 c
.dbend
.dbfunc e lcd_init _lcd_init fV
.even
_lcd_init::
.dbline -1
.dbline 173
; /***********液晶初始化******************/
; /**********基础程序直接调用即可*********/
; /*****************************/
; void lcd_init(void)
; {
.dbline 174
; clr_lcd_cs; //enable lcd
cbi 0x18,3
.dbline 175
; clr_lcd_reset;
cbi 0x18,4
.dbline 176
; delay_ms(50);
ldi R16,50
ldi R17,0
xcall _delay_ms
.dbline 177
; set_lcd_reset;
sbi 0x18,4
.dbline 178
; delay_ms(50);
ldi R16,50
ldi R17,0
xcall _delay_ms
.dbline 180
;
; LCD_write(LCD_CMD_SWRESET,0);
clr R18
ldi R16,1
xcall _LCD_write
.dbline 181
; LCD_write(LCD_CMD_SLEEPOUT,0);
clr R18
ldi R16,17
xcall _LCD_write
.dbline 182
; LCD_write(LCD_CMD_DISPON,0);
clr R18
ldi R16,41
xcall _LCD_write
.dbline 183
; LCD_write(LCD_CMD_BSTRON,0);
clr R18
ldi R16,3
xcall _LCD_write
.dbline 184
; LCD_write(LCD_CMD_MADCTL,0);
clr R18
ldi R16,54
xcall _LCD_write
.dbline 185
; LCD_write(MADCTL_HORIZ,1);
ldi R18,1
ldi R16,72
xcall _LCD_write
.dbline 186
; LCD_write(LCD_CMD_COLMOD,0);
clr R18
ldi R16,58
xcall _LCD_write
.dbline 187
; LCD_write(2,1); //2\3\5
ldi R18,1
ldi R16,2
xcall _LCD_write
.dbline 188
; LCD_write(LCD_CMD_INVON,0);
clr R18
ldi R16,33
xcall _LCD_write
.dbline 189
; LCD_write(LCD_CMD_RGBSET,0);
clr R18
ldi R16,45
xcall _LCD_write
.dbline 191
; //wrtab1
; LCD_write(0,1);
ldi R18,1
clr R16
xcall _LCD_write
.dbline 192
; LCD_write(2,1);
ldi R18,1
ldi R16,2
xcall _LCD_write
.dbline 193
; LCD_write(4,1);
ldi R18,1
ldi R16,4
xcall _LCD_write
.dbline 194
; LCD_write(6,1);
ldi R18,1
ldi R16,6
xcall _LCD_write
.dbline 195
; LCD_write(9,1);
ldi R18,1
ldi R16,9
xcall _LCD_write
.dbline 196
; LCD_write(11,1);
ldi R18,1
ldi R16,11
xcall _LCD_write
.dbline 197
; LCD_write(13,1);
ldi R18,1
ldi R16,13
xcall _LCD_write
.dbline 198
; LCD_write(15,1);
ldi R18,1
ldi R16,15
xcall _LCD_write
.dbline 200
;
; LCD_write(0,1);
ldi R18,1
clr R16
xcall _LCD_write
.dbline 201
; LCD_write(2,1);
ldi R18,1
ldi R16,2
xcall _LCD_write
.dbline 202
; LCD_write(4,1);
ldi R18,1
ldi R16,4
xcall _LCD_write
.dbline 203
; LCD_write(6,1);
ldi R18,1
ldi R16,6
xcall _LCD_write
.dbline 204
; LCD_write(9,1);
ldi R18,1
ldi R16,9
xcall _LCD_write
.dbline 205
; LCD_write(11,1);
ldi R18,1
ldi R16,11
xcall _LCD_write
.dbline 206
; LCD_write(13,1);
ldi R18,1
ldi R16,13
xcall _LCD_write
.dbline 207
; LCD_write(15,1);
ldi R18,1
ldi R16,15
xcall _LCD_write
.dbline 209
; //wrtab1
; LCD_write(00,1);
ldi R18,1
clr R16
xcall _LCD_write
.dbline 210
; LCD_write(07,1);
ldi R18,1
ldi R16,7
xcall _LCD_write
.dbline 211
; LCD_write(0x0b,1);
ldi R18,1
ldi R16,11
xcall _LCD_write
.dbline 212
; LCD_write(0x0f,1);
ldi R18,1
ldi R16,15
xcall _LCD_write
.dbline 213
; LCD_contrast(54); //对比度00~127
ldi R16,54
xcall _LCD_contrast
.dbline 214
; set_lcd_cs; //disable lcd
sbi 0x18,3
.dbline -2
.dbline 215
; }
L20:
.dbline 0 ; func end
ret
.dbend
.dbfunc e LCD_contrast _LCD_contrast fV
; data -> R20
.even
_LCD_contrast::
xcall push_gset1
mov R20,R16
.dbline -1
.dbline 218
; /***********液晶对比度******************/
; void LCD_contrast(unsigned char data) //对比度00~127
; {
.dbline 219
; LCD_write(LCD_CMD_SETCON,0);
clr R18
ldi R16,37
xcall _LCD_write
.dbline 220
; LCD_write(data,1);
ldi R18,1
mov R16,R20
xcall _LCD_write
.dbline -2
.dbline 221
; }
L21:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r data 20 c
.dbend
.dbfunc e lcd_color _lcd_color fV
; text -> R18
; bkg -> R16
.even
_lcd_color::
.dbline -1
.dbline 225
; /***********液晶颜色******************/
; /******bkg=背景颜色***text=前景颜色*****/
; void lcd_color(unsigned char bkg,unsigned char text)
; {
.dbline 226
; lcd_bkg_color=bkg;
sts _lcd_bkg_color,R16
.dbline 227
; lcd_text_color=text;
sts _lcd_text_color,R18
.dbline -2
.dbline 228
; }
L22:
.dbline 0 ; func end
ret
.dbsym r text 18 c
.dbsym r bkg 16 c
.dbend
.dbfunc e lcd_window _lcd_window fV
; ye -> y+6
; xe -> y+4
; yp -> R20
; xp -> R22
.even
_lcd_window::
xcall push_gset2
mov R20,R18
mov R22,R16
.dbline -1
.dbline 231
; /********液晶窗口*P=原点***e=终点******/
; void lcd_window(unsigned char xp,unsigned char yp,unsigned char xe,unsigned char ye)
; {
.dbline 232
; LCD_write(LCD_CMD_CASET,0);
clr R18
ldi R16,42
xcall _LCD_write
.dbline 233
; LCD_write(xp,1);
ldi R18,1
mov R16,R22
xcall _LCD_write
.dbline 234
; LCD_write(xe,1);
ldi R18,1
ldd R16,y+4
xcall _LCD_write
.dbline 235
; LCD_write(LCD_CMD_PASET,0);
clr R18
ldi R16,43
xcall _LCD_write
.dbline 236
; LCD_write(yp,1);
ldi R18,1
mov R16,R20
xcall _LCD_write
.dbline 237
; LCD_write(ye,1);
ldi R18,1
ldd R16,y+6
xcall _LCD_write
.dbline -2
.dbline 238
; }
L23:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym l ye 6 c
.dbsym l xe 4 c
.dbsym r yp 20 c
.dbsym r xp 22 c
.dbend
.dbfunc e lcd_gotoxy _lcd_gotoxy fV
; y -> R22
; x -> R20
.even
_lcd_gotoxy::
xcall push_gset2
mov R22,R18
mov R20,R16
sbiw R28,3
.dbline -1
.dbline 241
; /********液晶窗口跳转**128x128*******/
; void lcd_gotoxy(unsigned char x, unsigned char y)
; {
.dbline 242
; clr_lcd_cs; //enable lcd
cbi 0x18,3
.dbline 243
; lcd_x=x;
sts _lcd_x,R20
.dbline 244
; lcd_y=y;
sts _lcd_y,R22
.dbline 245
; lcd_window(x,y,129,129);
ldi R24,129
std y+2,R24
std y+0,R24
mov R18,R22
mov R16,R20
xcall _lcd_window
.dbline 246
; set_lcd_cs; //disable lcd
sbi 0x18,3
.dbline -2
.dbline 247
; }
L24:
adiw R28,3
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r y 22 c
.dbsym r x 20 c
.dbend
.dbfunc e lcd_clr _lcd_clr fV
; count -> R20,R21
.even
_lcd_clr::
xcall push_gset1
sbiw R28,3
.dbline -1
.dbline 250
; /***********用底色清屏******************/
; void lcd_clr(void)
; {
.dbline 252
; unsigned int count;
; clr_lcd_cs; //enable lcd
cbi 0x18,3
.dbline 253
; lcd_x=0;
clr R2
sts _lcd_x,R2
.dbline 254
; lcd_y=0;
sts _lcd_y,R2
.dbline 255
; lcd_window(0x00,0x00,0x82,0x83);
ldi R24,131
std y+2,R24
ldi R24,130
std y+0,R24
clr R18
clr R16
xcall _lcd_window
.dbline 256
; LCD_write(LCD_CMD_RAMWR,0);
clr R18
ldi R16,44
xcall _LCD_write
.dbline 257
; for (count=0;count<18000;count++)
clr R20
clr R21
xjmp L29
L26:
.dbline 258
.dbline 259
ldi R18,1
lds R16,_lcd_bkg_color
xcall _LCD_write
.dbline 260
L27:
.dbline 257
subi R20,255 ; offset = 1
sbci R21,255
L29:
.dbline 257
cpi R20,80
ldi R30,70
cpc R21,R30
brlo L26
.dbline 261
; {
; LCD_write(lcd_bkg_color,1);
; }
; set_lcd_cs; //disable lcd
sbi 0x18,3
.dbline -2
.dbline 262
; }
L25:
adiw R28,3
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r count 20 i
.dbend
.dbfunc e lcd_bar _lcd_bar fV
; count -> R20,R21
; fillcol -> R22
; bkgcol -> R10
; val -> R12
; len -> R14
.even
_lcd_bar::
xcall push_gset5
mov R12,R18
mov R14,R16
sbiw R28,3
ldd R10,y+13
ldd R22,y+15
.dbline -1
.dbline 265
; /**********显示一个进度条****粗=14点************/
; void lcd_bar(unsigned char len,unsigned char val,unsigned char bkgcol,unsigned char fillcol)
; {
.dbline 267
; unsigned int count;
; clr_lcd_cs; //enable lcd
cbi 0x18,3
.dbline 268
; LCD_write(LCD_CMD_MADCTL,0);
clr R18
ldi R16,54
xcall _LCD_write
.dbline 269
; LCD_write(MADCTL_VERT,1);
ldi R18,1
ldi R16,104
xcall _LCD_write
.dbline 270
; lcd_window(lcd_x,lcd_y,lcd_x+len+1,lcd_y+13);
lds R24,_lcd_y
subi R24,243 ; addi 13
std y+2,R24
lds R24,_lcd_x
add R24,R14
subi R24,255 ; addi 1
std y+0,R24
lds R18,_lcd_y
lds R16,_lcd_x
xcall _lcd_window
.dbline 271
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -