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

📄 lcd12864_3wires.lst

📁 实现12864液晶的图形显示
💻 LST
📖 第 1 页 / 共 4 页
字号:
    04D4 E004      LDI	R16,4
    04D5 D1EC      RCALL	_Set_White
(0220) 		Delay(2000);
    04D6 ED00      LDI	R16,0xD0
    04D7 E017      LDI	R17,7
    04D8 D13A      RCALL	_Delay
(0221) 		Delay(2000);
    04D9 ED00      LDI	R16,0xD0
    04DA E017      LDI	R17,7
    04DB D137      RCALL	_Delay
(0222) 		Set_White(4,1,4,1);			//
    04DC E081      LDI	R24,1
    04DD 838A      STD	Y+2,R24
    04DE E084      LDI	R24,4
    04DF 8388      STD	Y+0,R24
    04E0 E021      LDI	R18,1
    04E1 E004      LDI	R16,4
    04E2 D1DF      RCALL	_Set_White
(0223) 		Set_White(5,2,5,1);			//
    04E3 E081      LDI	R24,1
    04E4 838A      STD	Y+2,R24
    04E5 E085      LDI	R24,5
    04E6 8388      STD	Y+0,R24
    04E7 E022      LDI	R18,2
    04E8 E005      LDI	R16,5
    04E9 D1D8      RCALL	_Set_White
(0224) 		Set_White(6,3,6,1);			//
    04EA E081      LDI	R24,1
    04EB 838A      STD	Y+2,R24
    04EC E086      LDI	R24,6
    04ED 8388      STD	Y+0,R24
    04EE E023      LDI	R18,3
    04EF E006      LDI	R16,6
    04F0 D1D1      RCALL	_Set_White
(0225) 		Set_White(4,4,4,1);			//
    04F1 E081      LDI	R24,1
    04F2 838A      STD	Y+2,R24
    04F3 E084      LDI	R24,4
    04F4 8388      STD	Y+0,R24
    04F5 E024      LDI	R18,4
    04F6 E004      LDI	R16,4
    04F7 D1CA      RCALL	_Set_White
(0226) 		Delay(2000);
    04F8 ED00      LDI	R16,0xD0
    04F9 E017      LDI	R17,7
    04FA D118      RCALL	_Delay
(0227) 		Delay(2000);
    04FB ED00      LDI	R16,0xD0
    04FC E017      LDI	R17,7
    04FD D115      RCALL	_Delay
(0228) 		Set_White(1,1,1,1);			//
    04FE E081      LDI	R24,1
    04FF 838A      STD	Y+2,R24
    0500 8388      STD	Y+0,R24
    0501 E021      LDI	R18,1
    0502 E001      LDI	R16,1
    0503 D1BE      RCALL	_Set_White
(0229) 		Set_White(3,2,3,1);			//
    0504 E081      LDI	R24,1
    0505 838A      STD	Y+2,R24
    0506 E083      LDI	R24,3
    0507 8388      STD	Y+0,R24
    0508 E022      LDI	R18,2
    0509 E003      LDI	R16,3
    050A D1B7      RCALL	_Set_White
(0230) 		Set_White(2,3,2,1);			//
    050B E081      LDI	R24,1
    050C 838A      STD	Y+2,R24
    050D E082      LDI	R24,2
    050E 8388      STD	Y+0,R24
    050F E023      LDI	R18,3
    0510 E002      LDI	R16,2
    0511 D1B0      RCALL	_Set_White
(0231) 		Set_White(5,4,5,1);			//
    0512 E081      LDI	R24,1
    0513 838A      STD	Y+2,R24
    0514 E085      LDI	R24,5
    0515 8388      STD	Y+0,R24
    0516 E024      LDI	R18,4
    0517 E005      LDI	R16,5
    0518 D1A9      RCALL	_Set_White
(0232) 		Delay(2000);
    0519 ED00      LDI	R16,0xD0
    051A E017      LDI	R17,7
    051B D0F7      RCALL	_Delay
(0233) 		Delay(2000);
    051C ED00      LDI	R16,0xD0
    051D E017      LDI	R17,7
    051E D0F4      RCALL	_Delay
(0234) 		Set_White(1,1,8,1);			//第1行,第1个汉字位置到第8汉字位置取消反白
    051F E081      LDI	R24,1
    0520 838A      STD	Y+2,R24
    0521 E088      LDI	R24,0x8
    0522 8388      STD	Y+0,R24
    0523 E021      LDI	R18,1
    0524 E001      LDI	R16,1
    0525 D19C      RCALL	_Set_White
(0235) 		Set_White(1,2,8,1);			//第2行,第1个汉字位置到第8汉字位置取消反白
    0526 E081      LDI	R24,1
    0527 838A      STD	Y+2,R24
    0528 E088      LDI	R24,0x8
    0529 8388      STD	Y+0,R24
    052A E022      LDI	R18,2
    052B E001      LDI	R16,1
    052C D195      RCALL	_Set_White
(0236) 		Set_White(1,3,8,1);			//第3行,第1个汉字位置到第8汉字位置取消反白
    052D E081      LDI	R24,1
    052E 838A      STD	Y+2,R24
    052F E088      LDI	R24,0x8
    0530 8388      STD	Y+0,R24
    0531 E023      LDI	R18,3
    0532 E001      LDI	R16,1
    0533 D18E      RCALL	_Set_White
(0237) 		Set_White(1,4,8,1);			//第4行,第1个汉字位置到第8汉字位置取消反白
    0534 E081      LDI	R24,1
    0535 838A      STD	Y+2,R24
    0536 E088      LDI	R24,0x8
    0537 8388      STD	Y+0,R24
    0538 E024      LDI	R18,4
    0539 E001      LDI	R16,1
    053A D187      RCALL	_Set_White
(0238) 		
(0239) 		Delay(2000);
    053B ED00      LDI	R16,0xD0
    053C E017      LDI	R17,7
    053D D0D5      RCALL	_Delay
(0240) 		Delay(2000);
    053E ED00      LDI	R16,0xD0
    053F E017      LDI	R17,7
    0540 D0D2      RCALL	_Delay
(0241) 		W_1byte(0,0,0x30);		//基本指令集,,绘图显示OFF
    0541 E380      LDI	R24,0x30
    0542 8388      STD	Y+0,R24
    0543 2722      CLR	R18
    0544 2700      CLR	R16
    0545 D072      RCALL	_W_1byte
(0242) 		W_1byte(0,0,0x01);		//清除显示
    0546 E081      LDI	R24,1
    0547 8388      STD	Y+0,R24
    0548 2722      CLR	R18
    0549 2700      CLR	R16
    054A D06D      RCALL	_W_1byte
(0243) 		W_1byte(0,0,0x01);		//清除显示
    054B E081      LDI	R24,1
    054C 8388      STD	Y+0,R24
    054D 2722      CLR	R18
    054E 2700      CLR	R16
    054F D068      RCALL	_W_1byte
(0244) 		W_1byte(0,0,0x01);		//清除显示
    0550 E081      LDI	R24,1
    0551 8388      STD	Y+0,R24
    0552 2722      CLR	R18
    0553 2700      CLR	R16
    0554 D063      RCALL	_W_1byte
(0245) 		Set_Draw();
    0555 D10D      RCALL	_Set_Draw
(0246) 		Delay(100);
    0556 E604      LDI	R16,0x64
    0557 E010      LDI	R17,0
    0558 D0BA      RCALL	_Delay
(0247) 		Draw_Pic(0,0,*PIC1);	//先替换液晶内部RAM中的数据,再开显示
    0559 E88C      LDI	R24,0x8C
    055A E090      LDI	R25,0
    055B 8399      STD	Y+1,R25
    055C 8388      STD	Y+0,R24
    055D 2722      CLR	R18
    055E 2700      CLR	R16
    055F D111      RCALL	_Draw_Pic
(0248) 		W_1byte(0,0,0x36);		//8BIT控制界面,扩充指令集,,绘图显示ON
    0560 E386      LDI	R24,0x36
    0561 8388      STD	Y+0,R24
    0562 2722      CLR	R18
    0563 2700      CLR	R16
    0564 D053      RCALL	_W_1byte
(0249) 		Delay(5000);
    0565 E808      LDI	R16,0x88
    0566 E113      LDI	R17,0x13
    0567 D0AB      RCALL	_Delay
(0250) 		W_1byte(0,0,0x34);		//绘图显示OFF,主要解决画图时拖尾的现象,即先
    0568 E384      LDI	R24,0x34
    0569 8388      STD	Y+0,R24
    056A 2722      CLR	R18
    056B 2700      CLR	R16
    056C D04B      RCALL	_W_1byte
(0251) 								//替换好液晶内部RAM中的数据在开显示。									
(0252) 		Draw_Pic(0,0,*PIC2);
    056D E88C      LDI	R24,0x8C
    056E E094      LDI	R25,4
    056F 8399      STD	Y+1,R25
    0570 8388      STD	Y+0,R24
    0571 2722      CLR	R18
    0572 2700      CLR	R16
    0573 D0FD      RCALL	_Draw_Pic
(0253) 		W_1byte(0,0,0x36);		//8BIT控制界面,扩充指令集,绘图显示ON
    0574 E386      LDI	R24,0x36
    0575 8388      STD	Y+0,R24
    0576 2722      CLR	R18
    0577 2700      CLR	R16
    0578 D03F      RCALL	_W_1byte
(0254) 		Delay(5000);
    0579 E808      LDI	R16,0x88
    057A E113      LDI	R17,0x13
    057B D097      RCALL	_Delay
(0255) 								//画完图后要显示文字要重新设置成普通模式	
(0256) 		W_1byte(0,0,0x30);		//基本指令集,,绘图显示OFF
    057C E380      LDI	R24,0x30
    057D 8388      STD	Y+0,R24
    057E 2722      CLR	R18
    057F 2700      CLR	R16
    0580 D037      RCALL	_W_1byte
(0257) 		W_1byte(0,0,0x01);		//清除显示
    0581 E081      LDI	R24,1
    0582 8388      STD	Y+0,R24
    0583 2722      CLR	R18
    0584 2700      CLR	R16
    0585 D032      RCALL	_W_1byte
    0586 CF08      RJMP	0x048F
    0587 9623      ADIW	R28,3
    0588 9508      RET
_LCD_Init:
  cmd                  --> R20
    0589 940E0758  CALL	push_gset1
    058B 9721      SBIW	R28,1
(0258) 		
(0259) 		//for(;;);
(0260) 	}
(0261) }
(0262) /******************************************************************/
(0263) void LCD_Init(void)
(0264) {
(0265)  	uchar cmd;
(0266)  	cmd=0x30;			//功能设置 8位数据,基本指令
    058C E340      LDI	R20,0x30
(0267) 	W_1byte(0,0,cmd);
    058D 8348      STD	Y+0,R20
    058E 2722      CLR	R18
    058F 2700      CLR	R16
    0590 D027      RCALL	_W_1byte
(0268) 	Delay(2);
    0591 E002      LDI	R16,2
    0592 E010      LDI	R17,0
    0593 D07F      RCALL	_Delay
(0269) 	cmd=0x0C;			//显示状态 ON,游标OFF,反白OFF
    0594 E04C      LDI	R20,0xC
(0270) 	W_1byte(0,0,cmd);	//写指令
    0595 8348      STD	Y+0,R20
    0596 2722      CLR	R18
    0597 2700      CLR	R16
    0598 D01F      RCALL	_W_1byte
(0271) 	Delay(2);
    0599 E002      LDI	R16,2
    059A E010      LDI	R17,0
    059B D077      RCALL	_Delay
(0272) 	cmd=0x01;			//清除显示
    059C E041      LDI	R20,1
(0273) 	W_1byte(0,0,cmd);	//写指令
    059D 8348      STD	Y+0,R20
    059E 2722      CLR	R18
    059F 2700      CLR	R16
    05A0 D017      RCALL	_W_1byte
(0274) 	Delay(2);
    05A1 E002      LDI	R16,2
    05A2 E010      LDI	R17,0
    05A3 D06F      RCALL	_Delay
(0275) 	cmd=0x02;			//地址归位
    05A4 E042      LDI	R20,2
(0276) 	W_1byte(0,0,cmd);	//写指令
    05A5 8348      STD	Y+0,R20
    05A6 2722      CLR	R18
    05A7 2700      CLR	R16
    05A8 D00F      RCALL	_W_1byte
(0277) 	Delay(2);
    05A9 E002      LDI	R16,2
    05AA E010      LDI	R17,0
    05AB D067      RCALL	_Delay
(0278) 	cmd=0x80;			//设置DDRAM地址
    05AC E840      LDI	R20,0x80
(0279) 	W_1byte(0,0,cmd);	//写指令
    05AD 8348      STD	Y+0,R20
    05AE 2722      CLR	R18
    05AF 2700      CLR	R16
    05B0 D007      RCALL	_W_1byte
(0280) 	Delay(2);			//延时
    05B1 E002      LDI	R16,2
    05B2 E010      LDI	R17,0
    05B3 D05F      RCALL	_Delay
    05B4 9621      ADIW	R28,1
    05B5 940E075B  CALL	pop_gset1
    05B7 9508      RET
_W_1byte:
  H_data               --> R22
  S_ID                 --> R10
  L_data               --> R20
  W_data               --> Y+6
  RS                   --> R20
  RW                   --> R22
    05B8 940E0754  CALL	push_gset3
    05BA 2F42      MOV	R20,R18
    05BB 2F60      MOV	R22,R16
(0281) }
(0282) /*******************************************************************
(0283) 函 数 名:W_1byte
(0284) 入口参数:RW、RS、W_data
(0285) 出口参数:无
(0286) 建立日期:2007年3月3日
(0287) 修改日期:
(0288) 函数作用:写一个字节的数据到12864液晶,包括指令和数据
(0289) 说    明:RW=1,从液晶读数据到MCU;RW=0,写一个数据到液晶;
(0290) 		 (一般RW都设为0,即只向液晶写数据,不读数据)
(0291)           RS=1,写入的是数据;RS=0,写入的是指令;
(0292) 		  一般模式:RW=0,RS=1;写数据
(0293) 		  			RW=0,RS=0;写指令
(0294) ********************************************************************/
(0295) void W_1byte(uchar RW, uchar RS, uchar W_data)
(0296) {
(0297) 	uint H_data,L_data,S_ID = 0xf8;	 //11111RWRS0
    05BC EF88      LDI	R24,0xF8
    05BD E090      LDI	R25,0
    05BE 015C      MOVW	R10,R24
(0298) 	if(RW == 0)
    05BF 2366      TST	R22
    05C0 F419      BNE	0x05C4
(0299) 	{
(0300) 	 	S_ID &=~ 0x04;
    05C1 7F8B      ANDI	R24,0xFB
    05C2 015C      MOVW	R10,R24
(0301) 	}
    05C3 C003      RJMP	0x05C7
(0302) 	else					//if(RW==1)
(0303) 	{
(0304) 	 	S_ID |= 0X04;
    05C4 01C5      MOVW	R24,R10
    05C5 6084      ORI	R24,4
    05C6 015C      MOVW	R10,R24
(0305) 	}
(0306) 	if(RS == 0)
    05C7 2344      TST	R20
    05C8 F421      BNE	0x05CD
(0307) 	{
(0308) 	 	S_ID &=~ 0x02;
    05C9 01C5      MOVW	R24,R10
    05CA 7F8D      ANDI	R24,0xFD
    05CB 015C      MOVW	R10,R24

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -