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

📄 main.lss

📁 用AVR单片机对LCD12864液晶操作源程序
💻 LSS
📖 第 1 页 / 共 5 页
字号:
	}
	
	for(i=0;i<L/8;i++)									 //从第一页写
	{
		Write_lcd12864_Order( (page+i)|0xb8,right);
		Write_lcd12864_Order((y+ki*8)|0x40,right);
		
		
		for(j=0;j<H;j++)								 //写行
		{
		
			Is_lcd12864_busy(right);
			CLR_LCD_EN;
			_delay_us(2);
    		SET_LCD_DI;
			_delay_us(1);
    		CLR_LCD_RW;
			_delay_us(1);
		LCD12864_DataPort=ASC_5[k].Msk[H*i+j];


    		SET_LCD_EN; 
			_delay_us(2);
			CLR_LCD_EN;
			_delay_us(2);
		}
	   
	}
	break;
	}	 
//********************************************************
   case 8:
	 {
	for(k=0;k<sizeof(ASC_8)/sizeof(ASC_8[0]);k++)
	{
		 
		if(p1[0] == ASC_8[k].Index[0] )
		
			break;
	}
	
	for(i=0;i<L/8;i++)
	{
		Write_lcd12864_Order( (page+i)|0xb8,right);
		Write_lcd12864_Order((y+ki*8)|0x40,right);
		
		
		for(j=0;j<H;j++)
		{
		
			Is_lcd12864_busy(right);
			CLR_LCD_EN;
			_delay_us(2);
    		SET_LCD_DI;
			_delay_us(1);
    		CLR_LCD_RW;
			_delay_us(1);
		LCD12864_DataPort=ASC_8[k].Msk[H*i+j];


    		SET_LCD_EN;
			_delay_us(2);
			CLR_LCD_EN;
			_delay_us(2);
		}
	   
	}
	break;
	}
}
}
	 
//********************************************************	
else

for(ki=0;ki<len;ki=ki+2)	  
{
   p1=&hz[ki];
//*************************************************************
switch(H)					  
{					  

	
//*************************************************************	
   case 12:
	{

	for(k=0;k<sizeof(GB_12)/sizeof(GB_12[0]);k++)
	{
		 
		if(p1[0] == GB_12[k].Index[0] && p1[1] == GB_12[k].Index[1])
		
			break;
	}
	
	for(i=0;i<L/8;i++)
	{
		Write_lcd12864_Order( (page+i)|0xb8,right);
		Write_lcd12864_Order((y+ki*8)|0x40,right);
		
		for(j=0;j<H;j++)
		{
		
			Is_lcd12864_busy(right);
			CLR_LCD_EN;
			_delay_us(2);
    		SET_LCD_DI;
			_delay_us(1);
    		CLR_LCD_RW;
			_delay_us(1);
    	
		LCD12864_DataPort=GB_12[k].Msk[H*i+j];


    		SET_LCD_EN;
			_delay_us(2); 
			CLR_LCD_EN;
			_delay_us(2);
		}
	   
	}
	break;
	}
//********************************************************
    case 16:
	 {
	for(k=0;k<sizeof(GB_16)/sizeof(GB_16[0]);k++)
	{
		 
		if(p1[0] == GB_16[k].Index[0] && p1[1] == GB_16[k].Index[1])
		
			break;
	}
	
	for(i=0;i<L/8;i++)
	{
		Write_lcd12864_Order((page+i)|0xb8,right);
		Write_lcd12864_Order((y+ki*8)|0x40,right);
		
		
		for(j=0;j<H;j++)
		{
		
			Is_lcd12864_busy(right);
			CLR_LCD_EN;
			_delay_us(2);
    		SET_LCD_DI;
			_delay_us(1);
    		CLR_LCD_RW;
			_delay_us(1);
    	
			
		LCD12864_DataPort=GB_16[k].Msk[H*i+j];


    		SET_LCD_EN;
			_delay_us(2);	
			CLR_LCD_EN;
			_delay_us(2);
		}
	   
	}
	break;
	}
	//********************************************************
case 100:
	 {
	for(k=0;k<sizeof(TU_48)/sizeof(TU_48[0]);k++)
	{
		 
		if(p1[0] == TU_48[k].Index[0] && p1[1] == TU_48[k].Index[1])
		
			break;
	}
	
	 //CLR_LCD_CS1;
	 //SET_LCD_CS2;
	for(i=0;i<L/8;i++)
	{
		Write_lcd12864_Order( (page+i)|0xb8,0);
		Write_lcd12864_Order((y+ki*8)|0x40,0);
		
		
		for(j=0;j<H/2+6;j++)
		{
		
			Is_lcd12864_busy(0);
			CLR_LCD_EN;
			_delay_us(2);
    		SET_LCD_DI;
			_delay_us(1);
    		CLR_LCD_RW;
			_delay_us(1);
		
		LCD12864_DataPort=TU_48[k].Msk[H*i+j];


    		SET_LCD_EN; 
			_delay_us(2);
			CLR_LCD_EN;
			_delay_us(2);
		}
	   
	}
	//***************************************************
	 //  	SET_LCD_CS1;
	//	CLR_LCD_CS2;
	for(i=0;i<L/8;i++)
	{
		Write_lcd12864_Order( (page+i)|0xb8,1);
		Write_lcd12864_Order((y+ki*8)|0x40,1);
		
		
		for(j=H/2+6;j<H;j++)
		{
		
			Is_lcd12864_busy(1);
			CLR_LCD_EN;
			_delay_us(2);
    		SET_LCD_DI;
			_delay_us(1);
    		CLR_LCD_RW;
			_delay_us(1);
		
		LCD12864_DataPort=TU_48[k].Msk[H*i+j];


    		SET_LCD_EN;
			_delay_us(2);
			CLR_LCD_EN;
			_delay_us(2);
		}
	   
	}
	break;
	}
//*********************************************************
case 128:
	 {
	for(k=0;k<sizeof(TU_64)/sizeof(TU_64[0]);k++)
	{
		 
		if(p1[0] == TU_64[k].Index[0] && p1[1] == TU_64[k].Index[1])
		
			break;
	}
	
	 //CLR_LCD_CS1;
	 //SET_LCD_CS2;
	for(i=0;i<L/8;i++)
	{
		Write_lcd12864_Order((page+i)|0xb8,0);
		Write_lcd12864_Order((y+ki*8)|0x40,0);
		
	
		for(j=0;j<H/2;j++)
		{
		
			Is_lcd12864_busy(0);
			CLR_LCD_EN;
			_delay_us(2);
    		SET_LCD_DI;
			_delay_us(1);
    		CLR_LCD_RW;
			_delay_us(1);
		
		LCD12864_DataPort=TU_64[k].Msk[H*i+j];


    		SET_LCD_EN;
			_delay_us(2);
			CLR_LCD_EN;
			_delay_us(2);
		}
	   
	}
	//***************************************************
	  // 	SET_LCD_CS1;
	//	CLR_LCD_CS2;
	for(i=0;i<L/8;i++)
	{
		Write_lcd12864_Order( (page+i)|0xb8,1);
		Write_lcd12864_Order((y+ki*8)|0x40,1);
		
		
		for(j=H/2;j<H;j++)
		{
		
			Is_lcd12864_busy(1);
			CLR_LCD_EN;
			_delay_us(2);
    		SET_LCD_DI;
			_delay_us(1);
    		CLR_LCD_RW;
			_delay_us(1);
		
		LCD12864_DataPort=TU_64[k].Msk[H*i+j];


    		SET_LCD_EN;
			_delay_us(2);
			CLR_LCD_EN;
			_delay_us(2);
		}
	   
	}
	break;
	}
//********************************************************
}
}
}	
//********************************************************

//********************************************************
// //清屏
//********************************************************
void Clearscreen(UCHAR right)
   
{
 1a2:	0f 93       	push	r16
 1a4:	1f 93       	push	r17
 1a6:	cf 93       	push	r28
 1a8:	df 93       	push	r29
 1aa:	18 2f       	mov	r17, r24
 1ac:	c0 e0       	ldi	r28, 0x00	; 0
 1ae:	d0 e0       	ldi	r29, 0x00	; 0
	UCHAR j,k;
//清半屏幕
	for(k=0;k<8;k++)
	{
		Write_lcd12864_Order( k|0xb8,right);
 1b0:	61 2f       	mov	r22, r17
 1b2:	9e 01       	movw	r18, r28
 1b4:	28 6b       	ori	r18, 0xB8	; 184
 1b6:	82 2f       	mov	r24, r18
 1b8:	0e 94 b5 00 	call	0x16a	; 0x16a <Write_lcd12864_Order>
		Write_lcd12864_Order(0x40,right);
 1bc:	61 2f       	mov	r22, r17
 1be:	80 e4       	ldi	r24, 0x40	; 64
 1c0:	0e 94 b5 00 	call	0x16a	; 0x16a <Write_lcd12864_Order>
 1c4:	00 e0       	ldi	r16, 0x00	; 0
	
		for(j=0;j<64;j++)
		{
			
			Is_lcd12864_busy(right);
 1c6:	81 2f       	mov	r24, r17
 1c8:	0e 94 92 00 	call	0x124	; 0x124 <Is_lcd12864_busy>
			CLR_LCD_EN;
 1cc:	aa 98       	cbi	0x15, 2	; 21
*/
void
_delay_loop_1(uint8_t __count)
{
	__asm__ volatile (
 1ce:	94 e0       	ldi	r25, 0x04	; 4
 1d0:	89 2f       	mov	r24, r25
 1d2:	8a 95       	dec	r24
 1d4:	f1 f7       	brne	.-4      	; 0x1d2 <Clearscreen+0x30>
			_delay_us (2);
    		SET_LCD_DI;
 1d6:	a8 9a       	sbi	0x15, 0	; 21
*/
void
_delay_loop_1(uint8_t __count)
{
	__asm__ volatile (
 1d8:	82 e0       	ldi	r24, 0x02	; 2
 1da:	28 2f       	mov	r18, r24
 1dc:	2a 95       	dec	r18
 1de:	f1 f7       	brne	.-4      	; 0x1dc <Clearscreen+0x3a>
			_delay_us(1);
    		CLR_LCD_RW;
 1e0:	a9 98       	cbi	0x15, 1	; 21
*/
void
_delay_loop_1(uint8_t __count)
{
	__asm__ volatile (
 1e2:	8a 95       	dec	r24
 1e4:	f1 f7       	brne	.-4      	; 0x1e2 <Clearscreen+0x40>
			_delay_us(1);
			LCD12864_DataPort_DIR=0XFF;
 1e6:	8f ef       	ldi	r24, 0xFF	; 255
 1e8:	81 bb       	out	0x11, r24	; 17
    		LCD12864_DataPort=0x00;
 1ea:	12 ba       	out	0x12, r1	; 18
    		SET_LCD_EN;
 1ec:	aa 9a       	sbi	0x15, 2	; 21
*/
void
_delay_loop_1(uint8_t __count)
{
	__asm__ volatile (
 1ee:	89 2f       	mov	r24, r25
 1f0:	8a 95       	dec	r24
 1f2:	f1 f7       	brne	.-4      	; 0x1f0 <Clearscreen+0x4e>
			_delay_us (2);
			CLR_LCD_EN;
 1f4:	aa 98       	cbi	0x15, 2	; 21
*/
void
_delay_loop_1(uint8_t __count)
{
	__asm__ volatile (
 1f6:	9a 95       	dec	r25
 1f8:	f1 f7       	brne	.-4      	; 0x1f6 <Clearscreen+0x54>
 1fa:	0f 5f       	subi	r16, 0xFF	; 255

⌨️ 快捷键说明

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