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

📄 lcd demon.c

📁 基于单片机的串口摄像头模块的读写C语言源程序
💻 C
📖 第 1 页 / 共 2 页
字号:
 
#define uint  unsigned int 
#define uchar unsigned char 
#define x     0x80 
#define y     0x80 
#define comm  0 
#define dat   1 
 
sbit cs   = P3^6; 
sbit std  = P3^5; 
sbit sclk = P3^2; 
sbit psb  = P3^3;   //H=2¢?ú; L=′??ú; 
sbit rst  = P3^4;   //Reset Signal μíμ???óDD§ 
sbit TMDAT= P2^6; 
 
bit tsign; 
bit flag; 
 
void wr_lcd (uchar dat_comm,uchar content); 
void delay (uint us); 
 
uchar code tab1[]={ 
"  ?D1úêˉóí′ó?§  "}; 
 
uchar code tab2[]={ 
"3??têí  05?ê10?? " 
}; 
 
uchar code tab3[]={ 
"  μ±?°???è?a    " 
}; 
 
uchar code tab4[]={ 
"??ììá?  ìì??o?èè"}; 
 
uchar code tab5[]={ 
"òa×¢òa·àê??μ??°?"}; 
 
uchar code tab6[]={ 
"  ??ìì???èêêò?  "}; 
 
uchar code tab7[]={ 
"??3?è¥???ˉò???°é"}; 
 
uchar code tab8[]={ 
"  ??ìììì??o?à?  "}; 
 
uchar code tab9[]={ 
"D?D?éíì?±e?D?°°?"}; 
 
uchar code tab10[]={ 
/*--  μ÷è?á?ò?·ùí???£oF:\áo\?-í?\HOCO12832.bmp  --*/ 
/*--  ?í?èx???è=128x32  --*/ 
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 
0x00,0x1E,0x00,0x00,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 
0x00,0x7F,0x80,0x00,0x00,0x00,0x00,0x18,0x0C,0x00,0x00,0x01,0x00,0x00,0x00,0x00, 
0x01,0xFF,0x80,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x13,0x10,0x03,0xFE,0x00, 
0x03,0xFF,0xC0,0x00,0x00,0x00,0x00,0x58,0x00,0x00,0x00,0x3F,0x30,0x1F,0xFF,0xC0, 
0x03,0xFF,0xE0,0x00,0x00,0x00,0x00,0x8C,0x03,0xF0,0x00,0x7F,0xE0,0x7C,0x01,0xE0, 
0x03,0xFF,0xF0,0x00,0x00,0x00,0x01,0x36,0x06,0xC0,0x00,0x5F,0xC0,0xFF,0xFC,0x60, 
0x01,0xFF,0xF0,0x00,0x00,0x00,0x02,0x1B,0x0F,0x80,0x00,0xFF,0x01,0xFE,0x0F,0x30, 
0x00,0xEF,0xF0,0x00,0x00,0x00,0x02,0x6D,0x9F,0x00,0x00,0x3E,0x03,0xFF,0xF1,0x90, 
0x00,0xFF,0xF8,0x00,0x00,0x00,0x04,0x36,0xFE,0x00,0x01,0xFF,0x07,0xFF,0xFC,0x90, 
0x00,0xEF,0xFF,0xFF,0x80,0x00,0x04,0xDB,0x7E,0x00,0x03,0xFF,0x87,0xFF,0xFC,0xD0, 
0x00,0x0F,0xFF,0xFF,0xC0,0x00,0x04,0x6D,0xFC,0x00,0x07,0xFF,0x8F,0xFF,0xFE,0x50, 
0x00,0x0F,0xFF,0xFF,0xE0,0x00,0x04,0x36,0xFC,0x10,0x07,0xFF,0x8F,0xFF,0xFE,0x90, 
0x00,0x0F,0xFF,0xFF,0xE0,0x00,0x04,0x1B,0xF8,0x10,0x07,0xFF,0xCF,0xFF,0xFE,0x80, 
0x00,0x0F,0xFF,0xFF,0xF0,0x00,0x04,0x0F,0xF8,0x10,0x07,0xFF,0xFF,0xFF,0xFA,0x00, 
0x00,0x07,0xFF,0xFF,0xF0,0x00,0x04,0x07,0xF0,0x10,0x07,0xFF,0xFF,0xFF,0xFA,0x00, 
0x00,0xFF,0xFF,0xFF,0xF8,0x00,0x02,0x03,0xF0,0x20,0x07,0xFF,0xFF,0xFF,0xBA,0x00, 
0x00,0xFD,0xFF,0xFF,0xFC,0x00,0x02,0x03,0xF0,0x20,0x03,0xFF,0xFF,0xDF,0xB8,0x00, 
0x00,0xC1,0xC0,0x3F,0xFC,0x00,0x01,0x01,0xE0,0x40,0x00,0xFF,0xFF,0xDF,0xB0,0x00, 
0x00,0x81,0xC0,0x3F,0xCE,0x00,0x00,0x81,0xE0,0x80,0x00,0x7F,0xFF,0xDF,0xA0,0x00, 
0x00,0x81,0x80,0x1D,0xCF,0x00,0x00,0x41,0xE1,0x00,0x00,0x3F,0xFF,0x9B,0x00,0x00, 
0x01,0x83,0x80,0x1F,0xC7,0x80,0x00,0x21,0xE2,0x00,0x00,0x1F,0xFD,0xB6,0x00,0x00, 
0x01,0xC3,0x00,0x0E,0xE6,0x80,0x00,0x19,0xEC,0x00,0x00,0x07,0xFE,0x20,0x00,0x00, 
0x00,0xC3,0x00,0x07,0x67,0x40,0x00,0x07,0xF0,0x00,0x00,0x03,0x3E,0x00,0x00,0x00, 
0x00,0x02,0x00,0x03,0xE7,0xA0,0x00,0x00,0x00,0x00,0x00,0x02,0x8E,0x00,0x00,0x00, 
0x00,0x06,0x00,0x03,0x83,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x03,0x00,0x00,0x00, 
0x00,0x06,0x00,0x07,0x03,0x00,0x77,0x46,0x74,0x24,0x80,0x06,0x04,0x00,0x00,0x00, 
0x00,0x1C,0x00,0x06,0x00,0x00,0x55,0x45,0x54,0x57,0x80,0x00,0x00,0x00,0x00,0x00, 
0x00,0x1C,0x00,0x0E,0x00,0x00,0x45,0x45,0x74,0x57,0x80,0x08,0x00,0x00,0x00,0x00, 
0x00,0x00,0x00,0x1C,0x00,0x00,0x55,0x45,0x44,0x74,0x80,0xF0,0x00,0x00,0x00,0x00, 
0x00,0x00,0x00,0x38,0x00,0x00,0x77,0x76,0x47,0x54,0x80,0x00,0x00,0x00,0x00,0x00, 
0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 
}; 
 
 
 
 
 
 
 
/*------------------3?ê??ˉ-----------------*/ 
void init_lcd (void) 
{ 
  rst=1; 
  psb=0;                  //′?DD 
  wr_lcd (comm,0x30);  /*30---?ù±???á??ˉ×÷*/ 
  wr_lcd (comm,0x01);  /*???á£?μ??·???????ò00H*/ 
  delay (80); 
  wr_lcd (comm,0x06);  /*1a±êμ?ò??ˉ·??ò*/ 
  wr_lcd (comm,0x0c);  /*?a??ê?£?1?ó?±ê*/ 
} 
/*---------------??ê?oo×??ò×?·?----------------*/ 
void chn_disp1 (uchar code *chn)//?úμúò?DDD′×? 
{ 
  uchar i,j; 
  wr_lcd (comm,0x30); 
  wr_lcd (comm,0x80); 
  j=0; 
  for (i=0;i<16;i++) 
  wr_lcd (dat,chn[j*16+i]); 
} 
 
void chn_disp2 (uchar code *chn)//?úμú?tDDD′×? 
{ 
  uchar i,j; 
  wr_lcd (comm,0x30); 
  wr_lcd (comm,0x90); 
  j=0; 
  for (i=0;i<16;i++) 
  wr_lcd (dat,chn[j*16+i]); 
} 
 
/*----------------??ê?í?D?-----------------*/ 
void img_disp (uchar code *img) 
{ 
  uchar i,j; 
  for(j=0;j<32;j++) 
  { 
    for(i=0;i<8;i++) 
    { 
      wr_lcd(comm,0x34); 
      wr_lcd(comm,y+j); 
      wr_lcd(comm,x+i); 
      wr_lcd(comm,0x30); 
      wr_lcd(dat,img[j*16+i*2]); 
      wr_lcd(dat,img[j*16+i*2+1]); 
    } 
  } 
  wr_lcd(comm,0x36); 
} 
 
/*---------------------------------------*/ 
void wr_lcd (uchar dat_comm,uchar content) 
{ 
  uchar a,i,j; 
  delay (40); 
  a=content; 
  cs=1; 
  sclk=0; 
  std=1; 
  for(i=0;i<5;i++) 
  { 
    sclk=1; 
    sclk=0; 
  } 
  std=0; 
  sclk=1; 
  sclk=0; 
  if(dat_comm) 
    std=1;   //data 
  else 
    std=0;   //command 
  sclk=1; 
  sclk=0; 
  std=0; 
  sclk=1; 
  sclk=0; 
  for(j=0;j<2;j++) 
  { 
    for(i=0;i<4;i++) 
    { 
      a=a<<1; 
      std=CY; 
      sclk=1; 
      sclk=0; 
    } 
    std=0; 
    for(i=0;i<4;i++) 
    { 
      sclk=1; 
      sclk=0; 
    } 
  } 
} 
/*---------------------------------------*/ 
void delay (uint us)   //delay time 
{ 
  while(us--); 
} 
 
 
void dmsec(unsigned int count) 
{ 
  unsigned int i; 
  while(count--){ 
  for(i=0;i<125;i++){} 
      } 
} 
 
void tmreset(void) 
{ 
  unsigned int i; 
  TMDAT=0; 
  i=103;while(i>0) i--; 
  TMDAT=1; 
  i=4;while(i>0) i--; 
} 
 
void tmpre(void) 
{ 
  unsigned int i; 
  flag=0; 
  while(TMDAT); 
  i=32; 
  while(i--) 
  { 
    if(TMDAT) {flag=1;break;} 
  } 
  i=4;while(i>0) i--; 
} 
 
bit tmrbit(void)  //read one bit 
{ 
  bit tdat; 
  unsigned int i; 
 
  TMDAT=1; 
  i++; 
  TMDAT=0;i++; 
  TMDAT=1;i++;i++;i++; 
  tdat=TMDAT; 
  i=8; 
  while(i>0) i--; 
  return(tdat); 
} 
 
unsigned char tmrbyte(void) //read one byte 
{ 
  unsigned char i,j; 
  unsigned char tdat=0; 
  for(i=1;i<=8;i++) 
  { 
    j=tmrbit(); 
    tdat=(j<<7)|(tdat>>1); 
  } 
  return(tdat);  
} 
 
void tmwbyte(unsigned char tdat) 
{ 
  unsigned int i; 
  unsigned char j; 
  bit testb; 
  TMDAT=1;i++;i++; 
  for(j=1;j<=8;j++) 
  { 
    testb=tdat&0x01; 
    tdat=tdat>>1; 
    if(testb) 
    { 
      TMDAT=0;  //write 1 
      i++;i++; 
      TMDAT=1; 
      i=8;while(i>0) i--; 
    } 
    else 
    { 
      TMDAT=0;   //write 0 
      i=8;while(i>0) i--; 
      TMDAT=1; 
      i++;i++; 
    }  
  }  
} 
 
void tmstart(void)  //ds18b20 start convert 
{ 
   do{ tmreset(); 
       tmpre(); 
	  }while(~flag); 
   dmsec(1); 
   tmwbyte(0xcc);   //skip rom 
   tmwbyte(0x44);   //convert 
} 
 
unsigned int tmrtemp(void)  //read temp 
{ 
   unsigned char a,b, y1,y2,y3; 
   unsigned int t1=0x0000; 
   float tt; 
   unsigned int t; 
   do{ tmreset(); 
       tmpre(); 
	 }while(~flag); 
   dmsec(1); 
   tmwbyte(0xcc); 
   tmwbyte(0xbe); 
   a=tmrbyte(); 
   b=tmrbyte(); 
   y1=a>>4; 
   y2=b<<4; 
   y3=y1|y2; 
   if((y3>>7)==0x01) tsign=1; 
   else tsign=0; 
   t1=((t1|b)<<8)|(a&0x00ff)&0x07ff; 
   tt=t1*0.0625; 
   t=tt*100; 
   return(t);  
} 
/*------------------?÷3ìDò--------------------*/ 
void main () 
{ 
  unsigned int last; 
  unsigned char hsb,msb,lsb,dsb,gsb; 
   
  SP=0x5f; 
  init_lcd (); 
  img_disp(tab10); 
  dmsec(400); 
  wr_lcd(comm,0x34); 
  chn_disp1(tab1); 
  chn_disp2(tab2); 
  dmsec(400); 
  while (1) 
  { 
    tmstart(); 
	dmsec(1000); 
	last=tmrtemp(); 
	hsb=last/10000+0x30; 
	msb=(last%10000)/1000+0x30; 
	lsb=(last%1000)/100+0x30; 
    dsb=(last%100)/10+0x30; 
    gsb=(last%10)+0x30; 
    chn_disp1(tab3); 
 
    wr_lcd (comm,0x30); 
    wr_lcd (comm,0x90); 
	wr_lcd(dat,' '); 
	 if(tsign)  wr_lcd(dat,'-'); 
	 else       wr_lcd(dat,'+'); 
	wr_lcd(dat,' '); 
	if(hsb=='0') wr_lcd(dat,' '); 
	else       wr_lcd(dat,'1'); 
    wr_lcd(dat,msb); 
 	wr_lcd(dat,lsb); 
    wr_lcd(dat,'.'); 
	wr_lcd(dat,dsb); 
   	wr_lcd(dat,gsb);  
 	wr_lcd(dat,' ');    
	wr_lcd(dat,'o'); 
	wr_lcd(dat,'C'); 
    wr_lcd(dat,' '); 
	wr_lcd(dat,' '); 
	wr_lcd(dat,' '); 
	wr_lcd(dat,' '); 
	dmsec(2000); 
    if(last>3000) 
	{ 
	chn_disp1(tab4); 
    chn_disp2(tab5); 
	} 
	else if(last>2000) 
	{ 
    chn_disp1(tab6); 
    chn_disp2(tab7); 
	} 
    else if(last<=2000) 
    { 
	chn_disp1(tab8); 
    chn_disp2(tab9); 
	} 
	dmsec(1700); 
  } 
} 


⌨️ 快捷键说明

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