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

📄 st7920.c

📁 lcd12864f的程序范例
💻 C
字号:
#include "st7920.h"
#include "common.h"
#include <iom32v.h>
#include <macros.h>



#define set_cs PORTB|=0X20 ;PORTB|=0X20
#define clr_cs PORTB&=0XDF ;PORTB&=0XDF

#define set_sclk PORTB|=0X80;PORTB|=0X80
#define clr_sclk PORTB&=0X7F ;PORTB&=0X7f

#define set_std PORTB|=0X40 ;PORTB|=0X40
#define clr_std PORTB&=0XBf ;PORTB&=0XBf

#define set_reset PORTD|=0X08; PORTD|=0X08
#define clr_reset PORTD&=0XF7 ;PORTD&=0XF7




void start_ocm4x8c(void)
{
//DDRC=0XFF;
//DDRD=0XFF;


set_std;set_std;
clr_sclk;clr_sclk;
set_cs;set_cs;
	
set_sclk;set_sclk;
clr_sclk;clr_sclk;
set_sclk;set_sclk;
clr_sclk;clr_sclk;
set_sclk;set_sclk;
clr_sclk;clr_sclk;
set_sclk;set_sclk;
clr_sclk;clr_sclk;
set_sclk;set_sclk;
clr_sclk;clr_sclk;

clr_std;clr_std;
set_sclk;set_sclk;
clr_sclk;clr_sclk;	
}

void write_ocm4x8c(unsigned char dat)
{unsigned char i;
clr_std;clr_std;
set_sclk;set_sclk;
clr_sclk;clr_sclk;
if((dat&0x80)==0x80)
{set_std;set_std;}
else
{clr_std;clr_std;}
set_sclk;set_sclk;
clr_sclk;clr_sclk;
if((dat&0x40)==0x40)
{set_std;set_std;}
else
{clr_std;clr_std;}
set_sclk;set_sclk;
clr_sclk;clr_sclk;
if((dat&0x20)==0x20)
{set_std;set_std;}
else
{clr_std;clr_std;}
set_sclk;set_sclk;
clr_sclk;clr_sclk;
if((dat&0x10)==0x10)
{set_std;set_std;}
else
{clr_std;clr_std;}
set_sclk;set_sclk;
clr_sclk;clr_sclk;

clr_std;clr_std;
set_sclk;set_sclk;
clr_sclk;clr_sclk;
set_sclk;set_sclk;
clr_sclk;clr_sclk;
set_sclk;set_sclk;
clr_sclk;clr_sclk;
set_sclk;set_sclk;
clr_sclk;clr_sclk;

if((dat&0x08)==0x08)
{set_std;set_std;}
else
{clr_std;clr_std;}
set_sclk;set_sclk;
clr_sclk;clr_sclk;
if((dat&0x04)==0x04)
{set_std;set_std;}
else
{clr_std;clr_std;}
set_sclk;set_sclk;
clr_sclk;clr_sclk;
if((dat&0x02)==0x02)
{set_std;set_std;}
else
{clr_std;clr_std;}
set_sclk;set_sclk;
clr_sclk;clr_sclk;
if((dat&0x01)==0x01)
{set_std;set_std;}
else
{clr_std;clr_std;}
set_sclk;set_sclk;
clr_sclk;clr_sclk;

clr_std;clr_std;
set_sclk;set_sclk;
clr_sclk;clr_sclk;
set_sclk;set_sclk;
clr_sclk;clr_sclk;
set_sclk;set_sclk;
clr_sclk;clr_sclk;
set_sclk;set_sclk;
clr_sclk;clr_sclk;

clr_cs;clr_cs;
set_std;set_std;
}


void write_ocm4x16c(unsigned char dat)
{unsigned char i;
clr_std;clr_std;
set_sclk;set_sclk;
clr_sclk;clr_sclk;
if((dat&0x80)==0x80)
{set_std;set_std;}
else
{clr_std;clr_std;}
set_sclk;set_sclk;
clr_sclk;clr_sclk;
if((dat&0x40)==0x40)
{set_std;set_std;}
else
{clr_std;clr_std;}
set_sclk;set_sclk;
clr_sclk;clr_sclk;
if((dat&0x20)==0x20)
{set_std;set_std;}
else
{clr_std;clr_std;}
set_sclk;set_sclk;
clr_sclk;clr_sclk;
if((dat&0x10)==0x10)
{set_std;set_std;}
else
{clr_std;clr_std;}
set_sclk;set_sclk;
clr_sclk;clr_sclk;

if((dat&0x08)==0x08)
{set_std;set_std;}
else
{clr_std;clr_std;}
set_sclk;set_sclk;
clr_sclk;clr_sclk;
if((dat&0x04)==0x04)
{set_std;set_std;}
else
{clr_std;clr_std;}
set_sclk;set_sclk;
clr_sclk;clr_sclk;
if((dat&0x02)==0x02)
{set_std;set_std;}
else
{clr_std;clr_std;}
set_sclk;set_sclk;
clr_sclk;clr_sclk;
if((dat&0x01)==0x01)
{set_std;set_std;}
else
{clr_std;clr_std;}
set_sclk;set_sclk;
clr_sclk;clr_sclk;


clr_cs;clr_cs;
set_std;set_std;
}




void write_ocm4x8_data(unsigned char dat)
{
unsigned char dd;
start_ocm4x8c();
set_std;set_std;
set_sclk;set_sclk;
clr_sclk;clr_sclk;
dd=dat;
write_ocm4x8c(dd);
}



/*
void write_ocm4x16_data(unsigned char dat)
{
unsigned char dd;
start_ocm4x8c();
set_std;set_std;
set_sclk;set_sclk;
clr_sclk;clr_sclk;
dd=dat;
write_ocm4x8c(dd);
}
*/

void write_ocm4x8_code(unsigned char dat)
{
unsigned char dd;
start_ocm4x8c();
clr_std;clr_std;
set_sclk;set_sclk;
clr_sclk;clr_sclk;
dd=dat;
write_ocm4x8c(dd);
}

 
 void ocm4x8_init(void)
 {
   clr_reset;clr_reset;
   
   set_reset;set_reset;
   
   write_ocm4x8_code(0x30); 
   delay_1ms(10);
  
   write_ocm4x8_code(0x01);
   delay_1ms(10);
   
   write_ocm4x8_code(0x02);
   delay_1ms(10);
  
   write_ocm4x8_code(0x06);
   delay_1ms(10);
   
   write_ocm4x8_code(0x0c);
   delay_1ms(10);

 }
 
void asc_tran_1(unsigned char y,unsigned char x,unsigned char *hz_p)
    {unsigned char i;
		
	 //while((*hz_p)!=0)
	    {
	       if(y==0)
		 i=x;
		if(y==1)
		i=x+0x10;
		if(y==2)
		i=x+0x08;
		if(y==3)
		i=x+0x18;
		
		 write_ocm4x8_code(0x80|i);
		// write_ocm4x16_data(*hz_p);
		
		 //for(i=0;i<16;i++)
		 while((*hz_p)!=0)
		 	{
			 write_ocm4x8_data(*hz_p);
			 hz_p++;
			 
		 	}
	 	
		// hz_p++; 
		/*
		 write_ocm4x8_data(*hz_p);
		 hz_p++;
		 x++;
		*/ 
		 }
	}	



void hz_tran1(unsigned char y,unsigned char x,unsigned char *hz_p)
    {unsigned char i;
		// write_ocm4x8_code(0x80);
		// write_ocm4x8_data(*hz_p);
		// hz_p++;
		// write_ocm4x8_data(*hz_p);
		 while((*hz_p)!=0)
	    {if(y==0)
		 i=x;
		if(y==1)
		i=x+0x10;
		if(y==2)
		i=x+0x08;
		if(y==3)
		i=x+0x18;
		 write_ocm4x8_code(0x80+i);
		 write_ocm4x8_data(*hz_p);
		 hz_p++;
		 write_ocm4x8_data(*hz_p);
		 hz_p++;
		 x++;
		 }
	}	


void lcd_init(void)
{

   hz_tran1(0,0,"状态  ");
      asc_tran_1(0,2,": ");
   hz_tran1(0,3,"待机");
      hz_tran1(0,6,"");  //半旗

//   hz_tran1(0,4,"新液位");
//  asc_tran_1(0,4,"W=??.?KG"); 
   

   
   
   hz_tran1(1,0,"高度");
   asc_tran_1(1,2,": 000cm");
 // asc_tran_1(1,7,"00");

   //asc_tran_1(2,0,"FH");
   hz_tran1(2,0,"时间");
   asc_tran_1(2,2,": 000 ");
   hz_tran1(2,5,"秒");

   
   //asc_tran_1(3,0,"FL");
   hz_tran1(3,0,"设置时间");   
/*
   asc_tran_1(3,4,"F1");
   hz_tran1(3,5,"关"); 
   asc_tran_1(3,6,"F2");
   hz_tran1(3,7,"关");
*/


}



void lcd_init_other(void)
{

   hz_tran1(0,0,"从机    ");
   asc_tran_1(0,2,"1 ");
   hz_tran1(0,4,"新液位");
   asc_tran_1(0,7,"??");
   

   
   
   hz_tran1(1,0,"设定液位");
   asc_tran_1(1,4,"??CM");
   //asc_tran_1(1,7,"00");

   //asc_tran_1(2,0,"FH");
   hz_tran1(2,0,"当前液位");
   asc_tran_1(2,4,"??.?CM");

   
   //asc_tran_1(3,0,"FL");
   hz_tran1(3,0,"  无报警");   
   hz_tran1(3,5,"新号");
   asc_tran_1(3,7,":?");
   
}



 void clr_lcd(void)
 	{
 	write_ocm4x8_code(0x01);
	delay_1ms(10);
 	}

⌨️ 快捷键说明

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