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

📄 display.c

📁 mb90f387s驱动240128液晶程序
💻 C
📖 第 1 页 / 共 5 页
字号:

void disp_vip(void)
{
	LCMCE = 0;
	if(var.u.vip == 20){//qp
	    if(stc.flash.bit.dir){
	        lcd_cls((USER_SX / 8),USER_SY,(USER_GAO / 8),USER_KUAN);
	    }else{
	        if(stc.flag.bit.rtc_clr){
	        	lcd_cls(0,USER_HY,LCDKUAN,USER_GAO);
	        }else{
	        	lcd_cls((USER_HX / 8),USER_HY,(USER_KUAN / 8),USER_GAO);
	        }
	    }
	}else if(var.u.vip < 20){//vip
	    //var.u.addr = ERR_ADDR;
	    //var.u.addr += (var.u.vip - 1) * ERR_KUAN / 8;
	    if(stc.flash.bit.dir){
            var.u.locat.word = (VIP_SY + (VIP_KUAN - ERR_KUAN) / 2) * LCDKUAN + (VIP_SX / 8);
            
	    }else{
            var.u.locat.word = (VIP_HY  + 16) * LCDKUAN + VIP_HX / 8 + (VIP_KUAN - ERR_KUAN) / 2 / 8;
	        
        }
        disp_str((unsigned char *)var.u.addr,ERR_KUAN / 8);
	    
	}else{
	    //var.u.kuan = USER_GAO / 8;
	    //var.u.gao = USER_KUAN;
	    //var.u.addr = var.u.addr_vip;
        if(stc.flash.bit.dir){
            //var.u.locat.word = USER_SY * LCDKUAN + (USER_SX / 8);
   			disp_bmps();
    	    
    	    
        }else{
            //var.u.locat.word = USER_HY * LCDKUAN + (USER_HX / 8);
            
            disp_bmph();
    	}
    	
    }
    LCMCE = 1;
}
*/
void disp_kuang(void)
{
	unsigned char i,j,data;
    var.u.addr = ZK816_ADDR;
    if(stc.flash.bit.kuang){
    	var.u.addr += (47 * 16);
    }else{
    	var.u.addr += (36 * 16);
    }
    LCMCE = 0;
    
    if(stc.flash.bit.dir){
    	data = *(var.u.addr + 14);
    	var.u.locat.word = LC_SY * LCDKUAN + (LC_SX - 8) / 8;
    	lcd_sxian(data,LC_KUAN + LC_KUAN);
    	data = *(var.u.addr + 15);
    	var.u.locat.word = LC_SY * LCDKUAN + (LC_SX + LC_GAO) / 8;
    	lcd_sxian(data,LC_KUAN + LC_KUAN);
    	
    	var.u.locat.word = (LC_SY - 8) * LCDKUAN + (LC_SX - 8) / 8;
    	for(i = 0;i < 8;i++){
    		fnCmd2(LC_ADD_POS,var.u.locat.byte[0],var.u.locat.byte[1]);	// 置地址指针
       		fnCmd(LC_AUT_WR);				// 自动写
       		data = *(var.u.addr + i * 2);
       		fnDataW(data);				// 写数据
       		if(data & 0x01){
       			data = 0xff;
       		}else{
       			data = 0;
       		}
       		for(j = 0;j < (LC_GAO / 8);j++){
    			fnDataW(data);				// 写数据
    		}
    		data = *(var.u.addr + i * 2 + 1);
       		fnDataW(data);				// 写数据
			fnCmd(LC_AUT_OVR);
			var.u.locat.word += LCDKUAN;
		}
		var.u.locat.word = (LC_SY + LC_KUAN + LC_KUAN) * LCDKUAN + (LC_SX - 8) / 8;
		for(i = 0;i < 8;i++){
    		fnCmd2(LC_ADD_POS,var.u.locat.byte[0],var.u.locat.byte[1]);	// 置地址指针
       		fnCmd(LC_AUT_WR);				// 自动写
       		data = *(var.u.addr + (7 - i) * 2);
       		fnDataW(data);				// 写数据
       		if(data & 0x01){
       			data = 0xff;
       		}else{
       			data = 0;
       		}
       		for(j = 0;j < (LC_GAO / 8);j++){
    			fnDataW(data);				// 写数据
    		}
    		data = *(var.u.addr + (7 - i) * 2 + 1);
       		fnDataW(data);				// 写数据
			fnCmd(LC_AUT_OVR);
			var.u.locat.word += LCDKUAN;
		}
	}else{
    	data = *(var.u.addr + 14);
    	var.u.locat.word = LC_HY * LCDKUAN + (LC_HX - 8) / 8;
    	lcd_sxian(data,LC_GAO);
    	data = *(var.u.addr + 15);
    	var.u.locat.word = LC_HY * LCDKUAN + (LC_HX + LC_KUAN + LC_KUAN) / 8;
    	lcd_sxian(data,LC_GAO);
    	
    	var.u.locat.word = (LC_HY - 8) * LCDKUAN + (LC_HX - 8) / 8;
    	for(i = 0;i < 8;i++){
    		fnCmd2(LC_ADD_POS,var.u.locat.byte[0],var.u.locat.byte[1]);	// 置地址指针
       		fnCmd(LC_AUT_WR);				// 自动写
       		data = *(var.u.addr + i * 2);
       		fnDataW(data);				// 写数据
       		if(data & 0x01){
       			data = 0xff;
       		}else{
       			data = 0;
       		}
       		for(j = 0;j < (LC_KUAN * 2 / 8);j++){
    			fnDataW(data);				// 写数据
    		}
    		data = *(var.u.addr + i * 2 + 1);
       		fnDataW(data);				// 写数据
			fnCmd(LC_AUT_OVR);
			var.u.locat.word += LCDKUAN;
		}
		var.u.locat.word = (LC_HY + LC_GAO) * LCDKUAN + (LC_HX - 8) / 8;
		for(i = 0;i < 8;i++){
    		fnCmd2(LC_ADD_POS,var.u.locat.byte[0],var.u.locat.byte[1]);	// 置地址指针
       		fnCmd(LC_AUT_WR);				// 自动写
       		data = *(var.u.addr + (7 - i) * 2);
       		fnDataW(data);				// 写数据
       		if(data & 0x01){
       			data = 0xff;
       		}else{
       			data = 0;
       		}
       		for(j = 0;j < (LC_KUAN * 2 / 8);j++){
    			fnDataW(data);				// 写数据
    		}
    		data = *(var.u.addr + (7 - i) * 2 + 1);
       		fnDataW(data);				// 写数据
			fnCmd(LC_AUT_OVR);
			var.u.locat.word += LCDKUAN;
		}
	}
}

void disp_shuxian(void)
{
	unsigned char i,j,n;
	union{
		unsigned char 	byte[2];
		unsigned char *	ptr;
	}ptrb;
    LCMCE = 0;
    if(stc.flash.bit.dir){
    	var.u.locat.word = LC_SY * LCDKUAN + (LC_SX / 8);
    	var.u.len = (LC_GAO / 8);
    	if(var.u.shuxian3 == 0xff){
	    	ptrb.byte[0] = var.u.shuxian1;
	    	ptrb.byte[1] = var.u.shuxian2;
	    	for(i = 0;i < LC_KUAN * 2;i++){
    		    fnCmd2(LC_ADD_POS,var.u.locat.byte[0],var.u.locat.byte[1]);	// 置地址指针
                fnCmd(LC_AUT_WR);				// 自动写
    			for(j = 0;j < (LC_GAO / 8);j++){
    				fnDataW(*ptrb.ptr);				// 写数据
				    ptrb.ptr++;
				}
				fnCmd(LC_AUT_OVR);				// 自动写结束
                var.u.locat.word += LCDKUAN;
                
            }
	    }else if(var.u.shuxian3){
    		var.u.addrs3 = ADDR_AZ + (LC_KUAN / 8 * LC_GAO * (var.u.shuxian3 - 1));
    		if(var.u.shuxian1 == 0){
    			var.u.addrs1 = LC_ADDR;
    		}else if(var.u.shuxian1 < 12){
    			var.u.addrs1 = LC_ADDR + (LC_KUAN / 8 * LC_GAO * (var.u.shuxian1 - 1));
    		}else{
    			var.u.addrs1 = ADDR_AZ + (LC_KUAN / 8 * LC_GAO * (var.u.shuxian1 - 12));
    		}
    		if(var.u.shuxian2 == 0){
    			var.u.addrs2 = LC_ADDR;
    		}else if(var.u.shuxian2 < 12){
    			var.u.addrs2 = LC_ADDR + (LC_KUAN / 8 * LC_GAO * (var.u.shuxian2 - 1));
    		}else{
    			var.u.addrs2 = ADDR_AZ + (LC_KUAN / 8 * LC_GAO * (var.u.shuxian2 - 12));
    		}
    	    n = 0;
    	    for(i = 0;i < (LC_KUAN * 2);i++){
    		    if(n % 3 == 0){
    			    n++;
    			}
    		    if(n < LC_KUAN){
    		        var.u.addr = var.u.addrs1;
    		    }else if(n < LC_KUAN * 2){
    				var.u.addr = var.u.addrs2;
    		    }else{
    		        var.u.addr = var.u.addrs3;
    		    }
    		    var.u.addr += (n % LC_KUAN) * (LC_GAO / 8);
    			fnCmd2(LC_ADD_POS,var.u.locat.byte[0],var.u.locat.byte[1]);	// 置地址指针
                fnCmd(LC_AUT_WR);				// 自动写
    			for(j = 0;j < (LC_GAO / 8);j++){
    				fnDataW(*var.u.addr);				// 写数据
				    var.u.addr++;
				}
				fnCmd(LC_AUT_OVR);				// 自动写结束
                var.u.locat.word += LCDKUAN;
                n++;
            }
        }else if(var.u.shuxian1){
    	    if(var.u.shuxian1 < 12){
    			var.u.addrs1 = LC_ADDR + (LC_KUAN / 8 * LC_GAO * (var.u.shuxian1 - 1));
    		}else{
    			var.u.addrs1 = ADDR_AZ + (LC_KUAN / 8 * LC_GAO * (var.u.shuxian1 - 12));
    		}
    		for(i = 0;i < LC_KUAN;i++){
    		    fnCmd2(LC_ADD_POS,var.u.locat.byte[0],var.u.locat.byte[1]);	// 置地址指针
                fnCmd(LC_AUT_WR);				// 自动写
    			for(j = 0;j < (LC_GAO / 8);j++){
    				fnDataW(*var.u.addrs1);				// 写数据
				    var.u.addrs1++;
				}
				fnCmd(LC_AUT_OVR);				// 自动写结束
                var.u.locat.word += LCDKUAN;
                
            }
    		if(var.u.shuxian2 == 0){
    			var.u.addrs2 = LC_ADDR;
    		}else if(var.u.shuxian2 < 12){
    			var.u.addrs2 = LC_ADDR + (LC_KUAN / 8 * LC_GAO * (var.u.shuxian2 - 1));
    		}else{
    			var.u.addrs2 = ADDR_AZ + (LC_KUAN / 8 * LC_GAO * (var.u.shuxian2 - 12));
    		}
    		for(i = 0;i < LC_KUAN;i++){
    		    fnCmd2(LC_ADD_POS,var.u.locat.byte[0],var.u.locat.byte[1]);	// 置地址指针
                fnCmd(LC_AUT_WR);				// 自动写
    			for(j = 0;j < (LC_GAO / 8);j++){
    				fnDataW(*var.u.addrs2);				// 写数据
				    var.u.addrs2++;
				}
				fnCmd(LC_AUT_OVR);				// 自动写结束
                var.u.locat.word += LCDKUAN;
                
            }
        }else if(var.u.shuxian2){
            if(var.u.shuxian2 < 12){
    			var.u.addrs2 = LC_ADDR + (LC_KUAN / 8 * LC_GAO * (var.u.shuxian2 - 1));
    		}else{
    			var.u.addrs2 = ADDR_AZ + (LC_KUAN / 8 * LC_GAO * (var.u.shuxian2 - 12));
    		}
    		for(i = 0;i < (LC_KUAN / 2);i++){
    		    fnCmd2(LC_ADD_POS,var.u.locat.byte[0],var.u.locat.byte[1]);	// 置地址指针
                fnCmd(LC_AUT_WR);				// 自动写
    			for(j = 0;j < (LC_GAO / 8);j++){
    				fnDataW(0);				// 写数据
				    
				}
				fnCmd(LC_AUT_OVR);				// 自动写结束
                var.u.locat.word += LCDKUAN;
                
            }
            for(i = 0;i < LC_KUAN;i++){
    		    fnCmd2(LC_ADD_POS,var.u.locat.byte[0],var.u.locat.byte[1]);	// 置地址指针
                fnCmd(LC_AUT_WR);				// 自动写
    			for(j = 0;j < (LC_GAO / 8);j++){
    				fnDataW(*var.u.addrs2);				// 写数据
				    var.u.addrs2++;
				}
				fnCmd(LC_AUT_OVR);				// 自动写结束
                var.u.locat.word += LCDKUAN;
                
            }
            for(i = 0;i < (LC_KUAN / 2);i++){
    		    fnCmd2(LC_ADD_POS,var.u.locat.byte[0],var.u.locat.byte[1]);	// 置地址指针
                fnCmd(LC_AUT_WR);				// 自动写
    			for(j = 0;j < (LC_GAO / 8);j++){
    				fnDataW(0);				// 写数据
				    
				}
				fnCmd(LC_AUT_OVR);				// 自动写结束
                var.u.locat.word += LCDKUAN;
                
            }
        }else{
    	    lcd_cls((LC_SX / 8),LC_SY,(LC_GAO / 8),(LC_KUAN * 2));
    	}
    		
    }else{          //横显
    	
    	var.u.locat.word = LC_HY * LCDKUAN + (LC_HX / 8);
    	var.u.len = (LC_KUAN / 4);
    	LCMRD = 1;
	    LCMWR = 1;
	    LCMDIR = 0xff;
    	for(i = 0;i < (LC_GAO / 8);i++){
    		if(var.u.shuxian3 == 0xff){
	    		ptrb.byte[0] = var.u.shuxian1;
	    		ptrb.byte[1] = var.u.shuxian2;
	    		ptrb.ptr += (LC_GAO / 8) - i - 1;
	    		for(j = 0;j < (LC_KUAN * 2);j++){
    				var.u.movea.byte[j] = *ptrb.ptr;
    				ptrb.ptr += (LC_GAO / 8);
    			}
	    	
                writeh2s8();
                
            }else if(var.u.shuxian3){
    			var.u.addrs3 = ADDR_AZ + (LC_KUAN / 8 * LC_GAO * (var.u.shuxian3 - 1));
    			var.u.addrs3 += (LC_GAO / 8) - i - 1;
    			if(var.u.shuxian1 == 0){
    				var.u.addrs1 = LC_ADDR;
    			}else if(var.u.shuxian1 < 12){
    				var.u.addrs1 = LC_ADDR + (LC_KUAN / 8 * LC_GAO * (var.u.shuxian1 - 1));
    			}else{
    				var.u.addrs1 = ADDR_AZ + (LC_KUAN / 8 * LC_GAO * (var.u.shuxian1 - 12));
    			}
    			var.u.addrs1 += (LC_GAO / 8) - i - 1;
    			if(var.u.shuxian2 == 0){
    				var.u.addrs2 = LC_ADDR;
    			}else if(var.u.shuxian2 < 12){
    				var.u.addrs2 = LC_ADDR + (LC_KUAN / 8 * LC_GAO * (var.u.shuxian2 - 1));
    			}else{
    				var.u.addrs2 = ADDR_AZ + (LC_KUAN / 8 * LC_GAO * (var.u.shuxian2 - 12));
    			}
    			var.u.addrs2 += (LC_GAO / 8) - i - 1;
    			n = 0;
    			for(j = 0;j < (LC_KUAN * 2);j++){
    				if(n < LC_KUAN){
    					if(n % 3 == 0){
    						n++;
    						var.u.addrs1 += (LC_GAO / 8);
    					}
    					var.u.movea.byte[j] = *var.u.addrs1;
    					n++;
    					var.u.addrs1 += (LC_GAO / 8);
    				}else if(n < LC_KUAN * 2){
    					if(n % 3 == 0){
    						n++;
    						var.u.addrs2 += (LC_GAO / 8);
    					}
    					var.u.movea.byte[j] = *var.u.addrs2;
    					n++;
    					var.u.addrs2 += (LC_GAO / 8);
    				}else{
    					if(n % 3 == 0){
    						n++;
    						var.u.addrs3 += (LC_GAO / 8);
    					}
    					var.u.movea.byte[j] = *var.u.addrs3;
    					n++;
    					var.u.addrs3 += (LC_GAO / 8);
    				}
    				
    				
    			}
    			writeh2s8();
    			    			
    		}else if(var.u.shuxian1){
    			if(var.u.shuxian1 < 12){
    				var.u.addrs1 = LC_ADDR + (LC_KUAN / 8 * LC_GAO * (var.u.shuxian1 - 1));
    			}else{
    				var.u.addrs1 = ADDR_AZ + (LC_KUAN / 8 * LC_GAO * (var.u.shuxian1 - 12));
    			}
    			var.u.addrs1 += (LC_GAO / 8) - i - 1;
    			if(var.u.shuxian2 =

⌨️ 快捷键说明

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