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

📄 mcg-12864.txt

📁 C编的单片机控制信利的:MCG12864A2-3液晶
💻 TXT
字号:
//显示汉字,字符串,变量值
/**********************************
 CPU:stc89c52,液晶msc-g12864dyrn-2n,信利的MCG12864A2-3

**********************************/
#include "reg52.h" 
#include "ziku.h"  
#include <stdlib.h>
uint8 m[6]; 
char *str1,*str2;
uint8  xp;                    
void Delay(uint16 count) 
  { 
   uint8 i;                
   while(--count != 0)        
    { 
    for(i = 0; i < 125; i++);                // ";" 表示空语句,CPU空转。 
    }                                // i 从0加到125,在12M晶体下CPU大概耗时1毫秒 
  }
/*****************************************
  液晶部分
******************************************/ 
void Busy(void) 
    { 
     RW = 1;  RS = 0; 
     E = 1; 
     while(DATAPORT&BUSY); 
   } 
void WriteCMD(uint8 command) 
   { 
    RW = 0; RS = 0; 
    DATAPORT= command; 
    E = 1; 
    E = 0; 
    Busy(); 
   } 

void WriteData(uint8 Data) 
   { 
    RW = 0; RS = 1; 
    DATAPORT = Data; 
    E = 1; 
    E = 0; 
    Busy(); 
   } 
void Fill_Screen(uint8 FillData)  //填充数据
   { 
    uint8 x,y; 
    CS1 = 1;CS2 = 1;                  // 选中左半屏及右半屏 
    WriteCMD(START_ROW+0);            // 设置显示起始行为0 
    for(x=0;x<8;x++) 
      { 
        WriteCMD(PAGE_START_ADDR+x);  // 设置页地址 
         WriteCMD(COL_START_ADDR);//   设置列地址 
        for(y=0;y<64;y++)WriteData(FillData); 
      } 
     CS2 = 0;        // 不选中右半屏 
    } 
void Clear_Screen(void) //清屏
    { 
     Fill_Screen(0x00); 
    } 
uint8 GetIndex(unsigned char szText)
  {
   uint8 code TAB[]={' ','0','1','2','3','4','5','6','7','8','9','-','.',':'};
   uint8 i;
   for(i=0;i<14;i++)if(szText==TAB[i]) return i;
   return 0x00;
 }
void selpage(uint8 bitt) //换页
    {
     if(bitt<64)
              {CS1 =1; CS2 =0;xp=bitt;}
             else 
               {CS1 =0; 
                CS2 =1;
                xp=bitt-64;
               }//页面换转?
    }
//页地址(0~7) 列地址(0~128) 16*16点阵汉字字模(纵向取模,字节倒序) 
void ShowHZ(uint8 page,uint8 col, uint8 code *show) 
  { 
   uint8 j=0,i=0; 
   selpage(col);
   for(j=0;j<2;j++) 
      { 
        WriteCMD(PAGE_START_ADDR+page+j); 
        WriteCMD(COL_START_ADDR+xp); 
        for(i=0;i<16;i++) WriteData(show[16*j+i]); 
      } 
   } 
//页地址(0~7) 列地址(0~128) 
//8*16点阵字符或数字字模(纵向取模,字节倒序) 
void ShowChar(uint8 page,uint8 col, uint8 code Char) 
   { 
     uint8 j=0,i=0;  
     for(j=0;j<2;j++) 
       { 
        WriteCMD(PAGE_START_ADDR+page+j); 
        WriteCMD(COL_START_ADDR+col); 
        for(i=0;i<8;i++)WriteData(CharText[GetIndex(Char)][8*j+i]); 
       } 
    }
//显示字符串
void shou(uint8 page,uint8 col, uint8 *s)
     {uint8  da;      
       while(*s)
          {da=*s++;
            selpage(col);
            ShowChar(page,xp,da); 
            col+=8;
          }
     }
void Init(void) 
  { 
    CS1 = 1; CS2 = 1; 
    WriteCMD(DISP_OFF); 
    WriteCMD(PAGE_START_ADDR+0); 
    WriteCMD(START_ROW+0); 
    WriteCMD(COL_START_ADDR+0); 
    WriteCMD(DISP_ON); 
  } 
/****************************************
   温度部分
*****************************************/ 
void change(fp32 dataa)
  { uint8 j=0;
      fp32 ndata;
       ndata=dataa;
       if(dataa<0)dataa=-dataa;          
    m[0]=dataa/100;  //bai
    m[1]=(dataa-m[0]*100)/10;//shi 
    m[2]=(dataa-m[0]*100-m[1]*10); //ge 
    if(m[0]==0)
         {m[0]=' ';
           j=1;
         }
       else m[0]+=0x30;
    if(m[1]==0)
      {if(j==1)m[1]=' ';}
     else m[1]+=0x30;
    m[2]+=0x30;
    m[3]='.';
    if((0>ndata)&(ndata>(-10)))m[1]='-';
    if(ndata<=(-10))m[0]='-';
    m[4]=(int)(dataa*10)%10+0x30;//xiaoshu 
    m[5]='\0';
    j=0;
  }
void main (void)                
{  fp32  biao=0.0;
    fp32 bian=0.0;
   Init();                        // LCM12864初始化 
   Clear_Screen();  
   
  while(1) 
    { 
      if(biao==1)
         { ShowHZ(1,32,huan);
          ShowHZ(1,48,ying);
          ShowHZ(1,64,shi);
          ShowHZ(1,80,yong);
          
          shou(6,0,"    1235-5678");
         }
        else
         {change(bian); 
          str1=m;
          ShowHZ(0,48,wen);   
          ShowHZ(0,64,du); 
          
          shou(6,64,"16:58:02"); 
          bian+=0.1;
         }   
        Delay(3500);
        biao^=1;
        
        if(bian>26)bian=24.9;
       Clear_Screen(); 
     } 
   }
 

⌨️ 快捷键说明

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