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

📄 killc.c

📁 用proteus仿真
💻 C
字号:
#include <reg51.h>
#include <intrins.h>
#include <absacc.h>
#include "hzcode.h"
#include "DS1302.h"
#define uchar unsigned char
#define  uint unsigned int

								   			
sbit	R_S=	P1^5;
sbit	RES=	P1^1;
sbit	W_R= 	P1^6;
sbit    C_S=    P1^0;


//sbit    key0=   P3^2;
sbit    key1=   P3^2;
sbit    key2=   P3^3;
sbit    CSRAM= P1^4;
sbit    key4=   P1^7;
uchar date_buf[8];
uchar time0_count; 
	
void LcdInit();	
void Clear();
void DispMnuea();
void DispMnued();
void PanduanFlage(uchar f);		
void Delayms(uint ms);	
void WrateC(uchar cmd);	
void WrateD(uchar dat);	

void Setadd(uchar xl,uchar yl);
void WriteEnglish(uchar col,uchar pag,uchar *ptr,bit Fx_flage);			




/**************************************************/

/*
void PanduanFlage0(uchar f)
{
	 if(ID0==f) Fx_flage=0;
	 else Fx_flage=1;
}


void Mnue0()
{
      PanduanFlage(0);
	  WriteEnglish(0,0,Menu0[0],Fx_flage);	 
      PanduanFlage(1);
	  WriteEnglish(0,2,Menu0[1],Fx_flage);
      PanduanFlage(2);	  
	  WriteEnglish(0,4,Menu0[2],Fx_flage);
      PanduanFlage(3);	 
	  WriteEnglish(0,6,Menu0[3],Fx_flage);
}
*/

void puts(uchar col,uchar pag,uchar ptr)
{
   uchar  i,j;
   ptr+=16;
   for(i=0;i<2;i++)   
      {
   	   Setadd(col,pag); 
	     for(j=0;j<8;j++) 
           WrateD(fontASCII8x16[ptr][i*8+j]);           
           pag++; 
      }


}

void ShowChina(uchar col,uchar pag,uchar ptr)
{
     uchar  j;
   	   Setadd(col,pag); 
	   for(j=0;j<16;j++) 
           WrateD(HZ16x16[ptr][j]);           
        pag++;
   	   Setadd(col,pag); 
	   for(j=0;j<16;j++) 
           WrateD(HZ16x16[ptr][j+16]);           
}




void Showhz(void)
{
	ShowChina(0,0,0);
	ShowChina(16,0,1);
	ShowChina(32,0,2);
	ShowChina(48,0,3);
	ShowChina(64,0,4);
	ShowChina(80,0,5);
	ShowChina(96,0,6);
	ShowChina(112,0,7);

	ShowChina(32,2,8);
	ShowChina(48,2,9);
	ShowChina(64,2,10);
	ShowChina(80,2,11);
}


Int1() interrupt 0
{ 
 EA=0;
 
    while(key1==0)
	     {;;}
EA=1;

} 


Int2() interrupt 2
{ 
 EA=0;
    while(key2==0)
	     {;;}
 EA=1;

} 


void show_date(void)
{
	uchar i,j;
	j = 16;
	//year
	i = date_buf[6]>>4;
	i &= 0x0f;
	puts(16+j,4,i);
	i = date_buf[6] & 0x0f;
	puts(24+j,4,i);
	
	//month
	i = date_buf[4]>>4;
	i &= 0x01;
	puts(48+j,4,i);
	i = date_buf[4] & 0x0f;
	puts(56+j,4,i);
	
	//day
	i = date_buf[3]>>4;
 	i &= 0x03;
	puts(80+j,4,i);
	i = date_buf[3] & 0x0f;
	puts(88+j,4,i);
	
}


void show_time(void)
{
	uchar i,j;
	j = 32;
	//hour
	i = date_buf[2]>>4;
	i &= 0x03;
	puts(0+j,6,i);
	i = date_buf[2] & 0x0f;
	puts(8+j,6,i);
	
	//minute
	i = date_buf[1]>>4;
	i &= 0x07;
	puts(32+j,6,i);
	i = date_buf[1] & 0x0f;
	puts(40+j,6,i);
	
	//second
	i = date_buf[0]>>4;
 	i &= 0x07;
	puts(64+j,6,i);
	i = date_buf[0] & 0x0f;
	puts(72+j,6,i);
	
}



void time0_init(void)
{
	EA = 1;
	ET0 = 1;
	TMOD = 0x01;
	PT0 = 1;
	TH0 = 0x3C;
	TL0 = 0xB0;
	TR0 = 1;
}


void show_date_time(void)
{
//	uchar *j;
//	j = date_buf;
	read_serial(date_buf);
	show_date();
	show_time();
}

void time0_interrupt() interrupt 1
{
    EA=0;
	TH0 = 0x3c;
	TL0 = 0xb0;
	time0_count++;
	if(time0_count==20)
	  {	
	   time0_count=0;
	   show_date_time();
     
	  }

  EA=1;
}


void main()
{	
uchar j=16;
    time0_init();
    LcdInit();
    EA=1;  
	IT0=1;
	EX0=1;
	IT1=1;
	EX1=1;
	ShowChina(32+j,4,12);
	ShowChina(64+j,4,13);
	ShowChina(96+j,4,14);
    j=32;
	ShowChina(16+j,6,15);
	ShowChina(48+j,6,16);
	ShowChina(80+j,6,17);

	//DispMnuea();
   Showhz();
   while(1)
	{
	}
	
}



void Delayms(uint ms)
{	
	uchar j;
	while(ms--)
	  for(j=0;j<=20;j++);   
	                   
}		
	
void WrateC(uchar cmd)
{	C_S=0;						
	R_S=0;
	W_R=0;
    P0=cmd;
	W_R=1;	
    C_S=1;
}


void WrateD(uchar dat)	
{	C_S=0;						
	R_S=1;
	W_R=0;
	P0=dat;
	W_R=1;	
    C_S=1;
}

void Clear()
{
   unsigned char  i,j,m=0;
   for(i=0;i<8;i++)   
    {
     Setadd(0,i); 	  	  
     for(j=0;j<128;j++) 
          WrateD(0x00);
     }
}



void LcdInit()
{	
	RES=0;
	Delayms(50);
	RES=1;
	Delayms(20);
							
	WrateC(0xe2);
	WrateC(0xA2);
	WrateC(0xA1);
	WrateC(0xc0);
	WrateC(0x2c);
	WrateC(0x2e);
	WrateC(0x2F);
	WrateC(0x81);
	WrateC(0x16);
	WrateC(0x25);
	WrateC(0xAF);
	WrateC(0x40);
	Clear();
}
	

void Setadd(uchar xl,uchar yl)
{    uchar i;
     i=xl&0x0f;
     xl=(xl>>4)+0x10;

     WrateC(0xb0+yl); 	  
	 WrateC(xl);
 	 WrateC(i);	
}





void WriteEnglish(uchar col,uchar pag,uchar *ptr,bit t)
{
   uchar  i,j;
   uchar  c;
while(*ptr)
  {	  	
   c= *ptr;
   c -= 32;
   if(t)	  
   for(i=0;i<2;i++)   
      {
   	   Setadd(col,pag); 
	     for(j=0;j<8;j++) 
           WrateD(fontASCII8x16[c][i*8+j]);           
           pag++; 
      }
  else
   for(i=0;i<2;i++)   
      {
   	   Setadd(col,pag); 
	     for(j=0;j<8;j++) 
           WrateD(~fontASCII8x16[c][i*8+j]);           
           pag++; 
      }
	  col+=8;             
      if(col>0x7f)        
	    { 
           col=0;
		   pag+=2;
	     }
	  ptr++;
	  pag-=2;
   }

}



⌨️ 快捷键说明

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