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

📄 410.c

📁 一个用keil写的,动行在c8051f410上的软件vf的驱动程序,在protes下仿真过.希望对初学者能有用.
💻 C
📖 第 1 页 / 共 2 页
字号:
#include <c8051f410.H>
#include<intrins.h>

#define uchar unsigned char
#define uint  unsigned int 
#define LCD_PORT P2                      
#define Left  2                                     
#define Right 1
////////////////////12864
sbit  LCD_Busy=P2^7;   
sbit  LCD_EN = P1^7;
sbit  LCD_RW = P1^6;
sbit  LCD_RS = P1^5;
sbit  LCD_CS1= P1^4;
sbit  LCD_CS2= P1^3;
sbit  LCD_RST= P1^0;
///////////////////dis1302
uchar Page_Num,Clm_Num,tempdata,page,clum,pagestart,clmstart,clmsum,pageend,i,j,k,dataout,digih2,digih,digil2,digil,digitalin,clockrecog;
uchar year,month,day,hour,minute,second,rinh,swd,symbolin,symbolout,con,ab,keysetsymbol,keyud,keylr,keyset,keysetin,dir,enterkeynumber=0,keyclr,x,y;
uint  rin,rout;uchar count,dafig=0;
uchar serial,accidentrecog=0;
uchar dt[7];
uchar datacenter[3][9];
							 
code uchar fl[512]={0x08,0x08,0xE8,0xFF,0x48,0x80,0x08,0xC8,0x49,0x4E,0x48,0xC8,0x08,0x08,0x08,0x00,
                   0x00,0xE0,0x00,0x00,0xFF,0x20,0xC0,0x00,0xFE,0x10,0x60,0x80,0x00,0xFF,0x00,0x00,
                   0x00,0x00,0xFC,0x04,0x04,0x04,0x04,0x05,0x06,0x04,0x04,0x04,0x04,0x04,0x04,0x00,
                   0x10,0x92,0x54,0x38,0xFF,0x38,0x54,0x52,0x80,0xF0,0x1F,0x12,0x10,0xF0,0x10,0x00,//page=b8  lift

                   0x04,0x03,0x00,0xFF,0x00,0x40,0x30,0x0F,0x00,0x00,0x00,0x3F,0x40,0x40,0x78,0x00,
                   0x01,0x80,0x60,0x18,0x07,0x00,0x00,0x00,0x7F,0x00,0x00,0x01,0x00,0xFF,0x00,0x00,
                   0x40,0x30,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
                   0x42,0x42,0x2A,0x2E,0x13,0x1A,0x26,0x02,0x40,0x20,0x13,0x0C,0x33,0x60,0x20,0x00,//gage=b9   lift

                   0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x80,0x98,0x98,0x00,0x00,0x00,0x00,//gage=ba   lift
                   0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x80,0x80,0x00,0x00,0x00,0x80,0x80,0x00,
                   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,  
                   0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,

				   
                   0x00,0x33,0x24,0x24,0x24,0x24,0x19,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//gage=bb   lift
                   0x20,0x3F,0x20,0x00,0x3F,0x20,0x00,0x3F,0x00,0x1F,0x20,0x20,0x20,0x10,0x3F,0x20,
                   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x24,0x24,0x24,0x24,0x19,0x00,
                   0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,0x00,0x0E,0x11,0x20,0x20,0x20,0x11,0x00,

                   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//gage=bc   lift
                   0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,
                   0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,
                   0x00,0x80,0x98,0x98,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,
				   
                   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//gage=bd   lift
                   0x00,0x01,0x0E,0x30,0x08,0x06,0x01,0x00,0x00,0x1F,0x22,0x22,0x22,0x22,0x13,0x00,
                   0x20,0x20,0x3F,0x21,0x20,0x00,0x01,0x00,0x00,0x33,0x24,0x24,0x24,0x24,0x19,0x00,
                   0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,

                   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//gage=be   lift
                   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
                   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
                   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

                   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//gage=bf   lift
                   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
                   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
                   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};

code uchar fr[512]={0x00,0x00,0xF8,0x48,0x48,0x48,0x48,0xFF,0x48,0x48,0x48,0x48,0xF8,0x00,0x00,0x00, //page=b8  right
                   0x08,0x08,0xC8,0xFF,0x48,0x88,0x08,0x00,0xFE,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,
                   0x00,0x00,0x80,0x40,0x30,0x0E,0x84,0x00,0x00,0x0E,0x10,0x60,0xC0,0x80,0x80,0x00,
                   0x00,0x10,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x12,0x02,0x02,0xFE,0x00,0x00,

                   0x00,0x00,0x0F,0x04,0x04,0x04,0x04,0x3F,0x44,0x44,0x44,0x44,0x4F,0x40,0x70,0x00, //gage=b9   right
                   0x04,0x03,0x00,0xFF,0x00,0x41,0x30,0x0C,0x03,0x00,0x00,0x00,0x3F,0x40,0x78,0x00,
                   0x00,0x01,0x20,0x70,0x28,0x24,0x23,0x31,0x10,0x10,0x14,0x78,0x30,0x01,0x00,0x00,
                   0x00,0x00,0x1F,0x04,0x04,0x04,0x04,0x04,0x04,0x0F,0x00,0x20,0x40,0x3F,0x00,0x00,

                   0x08,0xF8,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//gage=ba   right
                   0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,  
                   0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x80,0x80,0xE0,0x80,0x80,0x00,0x00, 
                   0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,

                   0x20,0x3F,0x24,0x02,0x2D,0x30,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//gage=bb   right
                   0x00,0x33,0x24,0x24,0x24,0x24,0x19,0x00,0x80,0x81,0x8E,0x70,0x18,0x06,0x01,0x00,
                   0x00,0x33,0x24,0x24,0x24,0x24,0x19,0x00,0x00,0x00,0x00,0x1F,0x20,0x20,0x00,0x00,
                   0x00,0x1F,0x22,0x22,0x22,0x22,0x13,0x00,0x20,0x3F,0x20,0x00,0x3F,0x20,0x00,0x3F,

                   0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//gage=bc   right
                   0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,
                   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,
                   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

                   0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//gage=bd   right
                   0x00,0x01,0x0E,0x30,0x08,0x06,0x01,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,
                   0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,
                   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

                   0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,//gage=be   right
                   0x00,0x80,0x80,0xE0,0x80,0x80,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,
                   0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
                   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

                   0x00,0x1F,0x22,0x22,0x22,0x22,0x13,0x00,0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,//gage=bf   right
                   0x00,0x00,0x00,0x1F,0x20,0x20,0x00,0x00,0x00,0x1F,0x22,0x22,0x22,0x22,0x13,0x00,
                   0x20,0x20,0x3F,0x21,0x20,0x00,0x01,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,
                   0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};

code uchar digital[17][14]={{0xF0,0x08,0x04,0x04,0x08,0xF0,0x00,0x03,0x04,0x08,0x08,0x04,0x03,0x00},/*"0",0*/
                           {0x00,0x08,0x08,0xFC,0x00,0x00,0x00,0x00,0x08,0x08,0x0F,0x08,0x08,0x00},/*"1",1*/
                           {0x00,0x18,0x04,0x04,0xC4,0x38,0x00,0x00,0x0C,0x0A,0x09,0x08,0x0C,0x00},/*"2",2*/
                           {0x00,0x18,0x04,0x44,0x44,0xB8,0x00,0x00,0x06,0x08,0x08,0x08,0x07,0x00},/*"3",3*/
                           {0x80,0x40,0x30,0x08,0xFC,0x00,0x00,0x01,0x01,0x01,0x09,0x0F,0x09,0x01},/*"4",4*/
                           {0x00,0x7C,0x24,0x24,0x64,0xC4,0x00,0x00,0x06,0x08,0x08,0x0C,0x07,0x00},/*"5",5*/
                           {0xF0,0x88,0x44,0x44,0x44,0x8C,0x00,0x07,0x08,0x08,0x08,0x08,0x07,0x00},/*"6",6*/
                           {0x00,0x1C,0x04,0xC4,0x34,0x0C,0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x00},/*"7",7*/
                           {0x38,0xE4,0x44,0x44,0xC4,0x38,0x00,0x07,0x08,0x08,0x08,0x08,0x07,0x00},/*"8",8*/
                           {0x78,0x84,0x84,0x84,0x4C,0xF0,0x00,0x0C,0x08,0x08,0x0C,0x06,0x01,0x00},/*"9",0*/
                           {0x20,0xE0,0x40,0x20,0x20,0xC0,0x00,0x20,0x3F,0x28,0x08,0x0C,0x07,0x00},/*"p",2*/
                           {0x00,0x40,0x20,0xA0,0xA0,0xC0,0x00,0x00,0x06,0x09,0x08,0x08,0x0F,0x08},/*"a",0*/
                           {0x00,0x00,0x60,0x60,0x00,0x00,0x00,0x00,0x00,0x0C,0x0C,0x00,0x00,0x00},//:		   
                           {0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"-",0*/
                           {0x80,0x80,0x80,0xF0,0x80,0x80,0x80,0x00,0x00,0x00,0x07,0x00,0x00,0x00},/*"+",1*/
                           {0x00,0x38,0x44,0xFE,0x84,0x18,0x00,0x00,0x06,0x08,0x3F,0x08,0x07,0x00},/*"$",0*/
						   {0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x00}};/*"=",0*/
code uchar ro[12][28]={{0x20,0x20,0xE0,0x40,0x20,0x60,0x00,0x00,0x80,0x40,0x20,0x40,0x80,0x00,0x00,0x00,0x60,0x60,0x00,0x00,0x00},
                      {0x08,0x08,0x0F,0x08,0x08,0x00,0x00,0x00,0x03,0x04,0x08,0x04,0x03,0x00,0x00,0x00,0x0C,0x0C,0x00,0x00,0x00},//r0:ablift

                      {0x20,0x20,0xE0,0x40,0x20,0x60,0x00,0x00,0x20,0x20,0xEC,0x00,0x00,0x00,0x00,0x00,0x60,0x60,0x00,0x00,0x00},//ri:abright
                      {0x08,0x08,0x0F,0x08,0x08,0x00,0x00,0x00,0x08,0x08,0x0F,0x08,0x08,0x00,0x00,0x00,0x0C,0x0C,0x00,0x00,0x00},
                      
					  {0x00,0x40,0x20,0xA0,0xA0,0xC0,0x00,0x80,0x80,0x80,0xF0,0x80,0x80,0x80,0x04,0xFC,0x40,0x20,0x20,0xC0,0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00},//a+b:cdlift
                      {0x00,0x06,0x09,0x08,0x08,0x0F,0x08,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x0F,0x08,0x08,0x08,0x07,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00},

					  {0x00,0x80,0xC0,0x40,0x40,0xC0,0x00,0x00,0x00,0x80,0x40,0x80,0x00,0x00,0x40,0xC0,0x80,0x40,0x40,0xC0,0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00},
					  {0x00,0x0F,0x18,0x10,0x10,0x08,0x00,0x00,0x07,0x08,0x10,0x08,0x07,0x00,0x10,0x1F,0x10,0x00,0x10,0x1F,0x10,0x00,0x00,0x18,0x18,0x00,0x00,0x00},//con:cdright
  					  
                      {0x20,0x20,0xE0,0x40,0x20,0x60,0x00,0x20,0xE0,0x00,0x00,0x20,0xE0,0x00,0x20,0xE0,0x40,0x20,0x20,0xE0,0x00},//run
                      {0x08,0x08,0x0F,0x08,0x08,0x00,0x00,0x00,0x0F,0x08,0x08,0x08,0x0F,0x08,0x08,0x0F,0x08,0x00,0x08,0x0F,0x08},

					  {0x00,0x80,0x40,0x20,0x40,0x80,0x00,0x40,0x40,0xF0,0x48,0x48,0x18,0x00,0x40,0x40,0xF0,0x48,0x48,0x18,0x00},//off
                      {0x00,0x03,0x04,0x08,0x04,0x03,0x00,0x00,0x10,0x1F,0x10,0x10,0x00,0x00,0x00,0x10,0x1F,0x10,0x10,0x00,0x00}};
  
code uchar numberbuffe[4][8]={{0x40,0x47,0x4e,0x55,0x63,0x6a,0x71,0x78},
                              {0x47,0x4e,0x5c,0x63,0x71,0x78},
							  {0x55,0x5c,0x63,0x6a,0x71},
							  {0x55,0x5c,0x63,0x6a,0x71}};
				

void Delay_us(unsigned int DelayTime)
 {
   while(DelayTime) DelayTime--;
  }

void Delay_x10ms(unsigned char DelayTime)   //***************10ms延时**********//
   {
       unsigned char iq,jq,kq;
       for(iq=0;iq<DelayTime;iq++)
          for(jq=0;jq<50;jq++)
             for(kq=0;kq<120;kq++) {;}
    }	   


/*---------------------------------------------------------------------------- 
下面这个函数用于液晶模块的忙信号检测。 
----------------------------------------------------------------------------*/ 
void LCD_Check_Busy(void)
  {
   while(1)
	{
	  LCD_EN = 0;
      Delay_us(10);
	  LCD_RS = 0;
	  Delay_us(10);
	  LCD_RW = 1;
      Delay_us(10);
	  LCD_PORT = 0xff;
      Delay_us(10);
	  LCD_EN = 1;
      Delay_us(10);
	  if(!LCD_Busy) break;
     }
   LCD_EN = 0;
  }
/*---------------------------------------------------------------------------- 
下面这个函数用于向液晶模块写入控制指令代码。 
函数入口参数:Command ------ 向液晶模块写入的控制指令代码 。 
              CS_Num  ------ 左右半屏的选数值 
----------------------------------------------------------------------------*/ 
void LCD_WriteCommand(uchar Command, uchar CS_Num) 
{  
  if(CS_Num==1)			/*选择左半屏*/
   {
     LCD_CS1 = 0;
     Delay_us(10);
	 LCD_CS2 = 1;
	}
  else if(CS_Num==2)	/*选择右半屏*/
   {
     LCD_CS1 = 1;
     Delay_us(10);
	 LCD_CS2 = 0;
	}
  LCD_Check_Busy();
  Delay_us(10);
  LCD_EN = 0;           /* 使能信号为L */ 
 Delay_us(10);
  LCD_RS = 0;           /* 置寄存器选择为L */ 
Delay_us(10);
  LCD_RW = 0;           /* 置读/写选择为L */ 
Delay_us(10);
  LCD_PORT = Command;   /* 将控制指令代码输出到的数据端口 */ 
Delay_us(10);
  LCD_EN = 1;           /* 使能信号为H */ 
  Delay_us(10);          /* 延时2us */ 
  LCD_EN = 0;           /* 使能信号为L */ 
Delay_us(10);
  LCD_CS1 = 1;          /* 置片选1为L */ 
Delay_us(10);
  LCD_CS2 = 1;          /* 置片选2为L */ 
Delay_us(10);

} 


/*---------------------------------------------------------------------------- 
下面这个函数用于向液晶模块写入显示数据。 
函数入口参数:Data------ 向液晶模块写入的显示数据 。 
            CS_Num-------左右半屏的选数值 
----------------------------------------------------------------------------*/ 
void LCD_WriteData(uchar Data,uchar CS_Num) 
{  
if(CS_Num==1)		 /*选择左半屏*/
   {
     LCD_CS1 = 0;
Delay_us(10);
	 LCD_CS2 = 1;
	}
  else if(CS_Num==2)  /*选择右半屏*/
   {
     LCD_CS1 = 1;
Delay_us(10);
	 LCD_CS2 = 0;
	}
  LCD_Check_Busy();
Delay_us(10);
  LCD_EN = 0;
Delay_us(10);
  LCD_RS = 1;  /* 置寄存器选择为H */ 
Delay_us(10);
  LCD_RW = 0;       /* 置读/写选择为L */  
Delay_us(10);
  LCD_PORT = Data;  /* 将显示数据输出到的数据端口 */ 
Delay_us(10);
  LCD_EN = 1;       /* 使能信号为H */ 
  Delay_us(10);      /* 延时2us */ 
  LCD_EN = 0;       /* 使能信号为L */ 
Delay_us(10);
  LCD_CS1= 1;       /* 置片选1为L */ 
Delay_us(10);
  LCD_CS2= 1;       /* 置片选2为L */ 
}    

/*---------------------------------------------------------------------------
下面这个函数用于液晶模块的清屏。
---------------------------------------------------------------------------*/
void LCD_keyclr(uchar Side_Num)
 {
   uchar i,k,COM;
   
   for(i=0;i<8;i++)				  
   {
	 COM=0xB8+i;
     LCD_WriteCommand(COM,Side_Num);    
	 COM=0x40;
	 LCD_WriteCommand(COM,Side_Num);  
	 	 
     for(k=0;k<64;k++)
      {
	    LCD_WriteData(0x00,Side_Num);
	   }
	}
	 Delay_us(2);
  }


/*---------------------------------------------------------------------------
下面这个函数用于向液晶模块初始化。

⌨️ 快捷键说明

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