⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd6610.s

📁 你熟悉QT吗?Linux系统上领先的GUI
💻 S
📖 第 1 页 / 共 3 页
字号:
; 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 + -