找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 1554|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

msp430f149 DHT11程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:203361 發(fā)表于 2017-5-22 09:44 | 只看該作者 回帖獎(jiǎng)勵(lì) |正序?yàn)g覽 |閱讀模式
#include "12864.h"


//uchar key;

//*************************************************************************
//放到主函數(shù)里初始化,在Display(); 里寫入12864畫面上不動(dòng)的漢字或字符
//1.顯示字符或漢字調(diào)用這個(gè)函數(shù) DisplayCgrom(uchar addr,uchar *hz);
//舉例 DisplayCgrom(0x81,"工頻參數(shù)測(cè)量");
//     DisplayCgrom(0x90,"U=");
//2.顯示數(shù)字調(diào)用這些函數(shù),特殊的沒有再自己添加
//Dispaly_three_point1_number(uchar addr,uint num_display);    //        1.25格式
//Dispaly_four_point1_number(uchar addr,uint num_display);     //        2.345格式
//Dispaly_three_point2_number(uchar addr,uint num_display);    //        32.5格式
//Dispaly_four_point2_number(uchar addr,uint num_display);     //       17.56格式
//Dispaly_four_point3_number(uchar addr,uint num_display);     //       234.5格式

//Dispaly_six_point2_number(uchar addr,uint num_display);  

//Display_two_number(uchar addr,uint num_display);                //       435
//Display_three_number(uchar addr,uint num_display);              //       435
//Display_four_number(uchar addr,uint num_display);               //       4356
//Display_five_number(uchar addr,uint num_display);               //       7445
//舉例 Dispaly_four_point1_number(0x8a,result[0]);
/*************************************************************************
        LCD_init();                                   //液晶參數(shù)初始化設(shè)置
        LCD_clear();                                  //清屏      
        Display();                                    //默認(rèn)不動(dòng)的參數(shù)顯示
**************************************************************************/







uchar num[]={"0123456789 :.-"};



//*************************************************************************
//                        初始化IO口子程序
//*************************************************************************
void Port_init()
{

        
  P5DIR = 0xFF;     
  P3DIR|=  BIT0 + BIT1 + BIT2;

}


/*------------------檢查忙位-----------------------------*/
void chk_busy()
{  RS_CLR;
   RW_SET;
   EN_SET;
   P5DIR=0x00;
   while(P5IN&0x80);
   EN_CLR;
   P5DIR=0xff;
}
//***********************************************************************
//        顯示屏命令寫入函數(shù)
//***********************************************************************


void LCD_write_com(unsigned char com)
{        chk_busy();
        RS_CLR;
        RW_CLR;
        EN_SET;
        DataPort = com;
        EN_CLR;
}
//***********************************************************************
//        顯示屏數(shù)據(jù)寫入函數(shù)
//***********************************************************************

void LCD_write_data(unsigned char data)
{       chk_busy();
        RS_SET;
        RW_CLR;
        EN_SET;
        DataPort = data;        
        EN_CLR;
}
//***********************************************************************
//        顯示屏清空顯示
//***********************************************************************

void LCD_clear(void)
{
        LCD_write_com(0x01);
        
}

void Dispaly_three_point1_number(uchar addr,uint num_display)         //        1.25格式
{        

   LCD_write_com(addr);        //顯示位置

   LCD_write_data(num[num_display/100%10]);
   LCD_write_data(num[12]);                              //"."
   LCD_write_data(num[num_display/10%10]);
   LCD_write_data(num[num_display%10]);

}

void Dispaly_four_point1_number(uchar addr,uint num_display)         //        2.345格式
{        

   LCD_write_com(addr);        //顯示位置

   LCD_write_data(num[num_display/1000%10]);                                    
   LCD_write_data(num[12]);                              //"."
   LCD_write_data(num[num_display/100%10]);  
   LCD_write_data(num[num_display/10%10]);
   LCD_write_data(num[num_display%10]);


}
void Dispaly_three_point2_number(uchar addr,uint num_display)         //        32.5格式
{        

   LCD_write_com(addr);        //顯示位置

   LCD_write_data(num[num_display/100%10]);
   LCD_write_data(num[num_display/10%10]);
   LCD_write_data(num[12]);                              //"."
   LCD_write_data(num[num_display%10]);


}

void Dispaly_four_point2_number(uchar addr,uint num_display)         //        17.56格式
{        

   LCD_write_com(addr);        //顯示位置

   LCD_write_data(num[num_display/1000%10]);
   LCD_write_data(num[num_display/100%10]);
   LCD_write_data(num[12]);                              //"."
   LCD_write_data(num[num_display/10%10]);
   LCD_write_data(num[num_display%10]);


}

void Dispaly_four_point3_number(uchar addr,uint num_display)         //        234.5格式
{        

   LCD_write_com(addr);        //顯示位置

   LCD_write_data(num[num_display/1000%10]);
   LCD_write_data(num[num_display/100%10]);   
   LCD_write_data(num[num_display/10%10]);
   LCD_write_data(num[12]);                              //"."  
   LCD_write_data(num[num_display%10]);


}
void Dispaly_six_point2_number(uchar addr,ulong num_display)         //        234.5格式
{        

   LCD_write_com(addr);        //顯示位置


   LCD_write_data(num[num_display/100000%10]);
   LCD_write_data(num[num_display/10000%10]);  
   LCD_write_data(num[12]);                              //"."  
   LCD_write_data(num[num_display/1000%10]);
   LCD_write_data(num[num_display/100%10]);   
   LCD_write_data(num[num_display/10%10]);   
   LCD_write_data(num[num_display%10]);


}
void Display_two_number(uchar addr,uint num_display)
{

  LCD_write_com(addr);        //顯示位置

  LCD_write_data(num[num_display/10%10]);
  LCD_write_data(num[num_display%10]);

}
void Display_three_number(uchar addr,uint num_display)
{

  LCD_write_com(addr);        //顯示位置

  LCD_write_data(num[num_display/100%10]);
  LCD_write_data(num[num_display/10%10]);
  LCD_write_data(num[num_display%10]);

}

void Display_four_number(uchar addr,uint num_display)
{

  LCD_write_com(addr);        //顯示位置

  LCD_write_data(num[num_display/1000%10]);
  LCD_write_data(num[num_display/100%10]);  
  LCD_write_data(num[num_display/10%10]);
  LCD_write_data(num[num_display%10]);

}

void Display_five_number(uchar addr,uint num_display)
{

  LCD_write_com(addr);        //顯示位置

  LCD_write_data(num[num_display/10000%10]);
  LCD_write_data(num[num_display/1000%10]);  
  LCD_write_data(num[num_display/100%10]);
  LCD_write_data(num[num_display/10%10]);
  LCD_write_data(num[num_display%10]);

}




//***********************************************************************
//函數(shù)名稱:DisplayCgrom(uchar hz)顯示CGROM里的漢字
//***********************************************************************
void DisplayCgrom(uchar addr,uchar *hz)
{
        LCD_write_com(addr);

        while(*hz != '\0')
        {
                LCD_write_data(*hz);
                hz++;
        }

}
//****************************************************************
//函數(shù)名稱:Display()顯示測(cè)試結(jié)果
//****************************************************************
void Display(void)
{        

       DisplayCgrom(0x81,"生產(chǎn)環(huán)境監(jiān)測(cè)");
       DisplayCgrom(0x90,"溫濕度實(shí)時(shí)顯示");



}

//***********************************************************************
//        顯示屏初始化函數(shù)
//***********************************************************************

void LCD_init(void)
{

  Port_init();

  LCD_write_com(FUN_MODE);                        //顯示模式設(shè)置
  LCD_write_com(FUN_MODE);                        //顯示模式設(shè)置
  LCD_write_com(DISPLAY_ON);                        //顯示開
  LCD_write_com(CLEAR_SCREEN);                        //清屏
  LCD_write_com(CURSE_ADD);

}







//***********************************************************************
//以下是繪圖功能函數(shù)的定義
//***********************************************************************


//***********************************************************************
//清整個(gè)GDRAM空間
//***********************************************************************

void clrgdram()
{
  unsigned char x,y;
  for(y=0;y<64;y++)
   for(x=0;x<16;x++)
   {  LCD_write_com(0x34);
      LCD_write_com(y+0x80);        //行地址
      LCD_write_com(x+0x80);     //列地址
      LCD_write_com(0x30);
      LCD_write_data(0x00);
      LCD_write_data(0x00);
   }
}

//***********************************************************************
//讀GDRAM一個(gè)字節(jié)信息
//***********************************************************************
uchar LCD_ReadByte(void)
{

  uchar value;
  chk_busy();
   RS_SET;
   RW_SET;
   EN_CLR;
   EN_SET;
   P5DIR=0x00;
   value=P5IN;
   EN_CLR;
   P5DIR=0xff;

  return value;



}
//***********************************************************************
//畫點(diǎn)函數(shù)mode=0,清除點(diǎn);mode=1,點(diǎn)亮指定點(diǎn);mode=2,當(dāng)前點(diǎn)的狀態(tài)取反;
//***********************************************************************
void Draw_point(uchar x,uchar y,uchar mode)
{

uchar ReadOldH,ReadOldL;  
LCD_write_com(0x34);  //擴(kuò)充指令集  
LCD_write_com(0x36); //繪圖顯示開

LCD_write_com(y-(y/32)*32+0x80);       //列地址   
LCD_write_com(x/16+(y/32)*8+0x80);     //行地址  
LCD_ReadByte();  
ReadOldH=LCD_ReadByte();
ReadOldL=LCD_ReadByte();



LCD_write_com(y-(y/32)*32+0x80);        //列地址
LCD_write_com(x/16+(y/32)*8+0x80);      //行地址  



switch(x%16/8%2)
{

case 0:

  switch(mode)
  {
  case 0: ReadOldH&=~(0x80>>(x%16%8));break;
  case 1: ReadOldH|=0x80>>(x%16%8);break;   
  case 2: ReadOldH^=0x80>>(x%16%8);break;   
  }


LCD_write_data(ReadOldH);
LCD_write_data(ReadOldL);  

break;

case 1:


   switch(mode)
  {
  case 0: ReadOldL&=~(0x80>>(x%16%8));break;
  case 1: ReadOldL|=0x80>>(x%16%8);break;   
  case 2: ReadOldL^=0x80>>(x%16%8);break;   
  }

LCD_write_data(ReadOldH);
LCD_write_data(ReadOldL);   

break;




}





LCD_write_com(0x30);
}


/*

void point(uchar X,uchar Y,uchar Color)
{
  uchar Tier,Tier_bit;
  uchar ReadOldH,ReadOldL;
  uchar Row;
  LCD_write_com(0x34);
  LCD_write_com(0x36);
  Tier=X>>4;            //Tier/=16;
  Tier_bit=X&0x0f;       //Tier%=16;
  if(Y<32)
   Row=Y;


  else
  {
     Row=Y-32;
     Tier+=8;
  }


     LCD_write_com(Row+0x80);    //行地址
     LCD_write_com(Tier+0x80);     //列地址
     LCD_ReadByte();
      ReadOldH=LCD_ReadByte();
      ReadOldL=LCD_ReadByte();
      LCD_write_com(Row+0x80);
      LCD_write_com(Tier+0x80);


if(Tier_bit<8)
{
   switch(Color)
   {

   case 0:ReadOldH&=(~(0x01<<(7-Tier_bit)));break;
   case 1:ReadOldH|=(0x01<<(7-Tier_bit));break;  
   case 2:ReadOldH^=(0x01<<(7-Tier_bit));break;  
   default:break;

   }

   LCD_write_data(ReadOldH);
   LCD_write_data(ReadOldL);

}

  else
  {
switch(Color)
   {

   case 0:ReadOldL&=(~(0x01<<(15-Tier_bit)));break;
   case 1:ReadOldL|=(0x01<<(15-Tier_bit));break;  
   case 2:ReadOldL^=(0x01<<(15-Tier_bit));break;  
   default:break;

   }

   LCD_write_data(ReadOldH);
   LCD_write_data(ReadOldL);


  }   



   LCD_write_com(0x30);   
}

*/

//***********************************************************************
//顯示正弦函數(shù)圖像
//***********************************************************************
void Display_sin_function(float T,uchar A)
{

  float x,y;
  uchar x1,y1;
  float k;
  k=2*10/T;
  for(x=0;x<127;x+=1)
  {
    delay_ms(50);
    y=sin(0.314*x*k);
    x1=(uchar)(x);
    y1=(uchar)(31-(A*y+0.5));
    Draw_point(x1,y1,1);


  }
}

void Display_coordinate(uchar x,uchar y)    //set coordinate origin
{

   uchar i,j;


   for(j=0;j<64;j++)      
   Draw_point(x,j,1);

   for(i=0;i<128;i++)      
   { Draw_point(i,y,1);}         

}




分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表