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

📄 lcd demon.c

📁 基于单片机的串口摄像头模块的读写C语言源程序
💻 C
📖 第 1 页 / 共 2 页
字号:
#include <REG51.H>//ó?DS18B20?ì2a???è£?2¢ó?OCMJ2X8C′?DD??ê?3ìDò£?    
   
#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);   
  }   
}   

#include //ó?DS18B20?ì2a???è£?2¢ó?OCMJ2X8C′?DD??ê?3ìDò£? 

⌨️ 快捷键说明

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