久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1562|回復: 0
打印 上一主題 下一主題
收起左側

msp430f149 DHT11程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:203361 發表于 2017-5-22 09:44 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include "12864.h"


//uchar key;

//*************************************************************************
//放到主函數里初始化,在Display(); 里寫入12864畫面上不動的漢字或字符
//1.顯示字符或漢字調用這個函數 DisplayCgrom(uchar addr,uchar *hz);
//舉例 DisplayCgrom(0x81,"工頻參數測量");
//     DisplayCgrom(0x90,"U=");
//2.顯示數字調用這些函數,特殊的沒有再自己添加
//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();                                   //液晶參數初始化設置
        LCD_clear();                                  //清屏      
        Display();                                    //默認不動的參數顯示
**************************************************************************/







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;
}
//***********************************************************************
//        顯示屏命令寫入函數
//***********************************************************************


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

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]);

}




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

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

}
//****************************************************************
//函數名稱:Display()顯示測試結果
//****************************************************************
void Display(void)
{        

       DisplayCgrom(0x81,"生產環境監測");
       DisplayCgrom(0x90,"溫濕度實時顯示");



}

//***********************************************************************
//        顯示屏初始化函數
//***********************************************************************

void LCD_init(void)
{

  Port_init();

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

}







//***********************************************************************
//以下是繪圖功能函數的定義
//***********************************************************************


//***********************************************************************
//清整個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一個字節信息
//***********************************************************************
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;



}
//***********************************************************************
//畫點函數mode=0,清除點;mode=1,點亮指定點;mode=2,當前點的狀態取反;
//***********************************************************************
void Draw_point(uchar x,uchar y,uchar mode)
{

uchar ReadOldH,ReadOldL;  
LCD_write_com(0x34);  //擴充指令集  
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);   
}

*/

//***********************************************************************
//顯示正弦函數圖像
//***********************************************************************
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 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 每日更新av| 在线视频成人 | 黑色丝袜三级在线播放 | 五月婷六月丁香 | 国产精品国产三级国产aⅴ中文 | 日韩中文字幕在线 | 久久天堂 | 国产精品视频在线播放 | 成人影院网站ww555久久精品 | 欧美激情在线精品一区二区三区 | 日韩一级电影免费观看 | 精品久久久久久久人人人人传媒 | 午夜视频在线免费观看 | 狠狠av| 一区二区不卡视频 | 欧美激情精品久久久久 | 国产精品99久久免费观看 | 91porn国产成人福利 | 亚洲自拍偷拍免费视频 | 超碰最新在线 | 人人干人人看 | 狠狠躁夜夜躁人人爽天天高潮 | 日本在线视频一区二区 | 天天操天天操 | 8x国产精品视频一区二区 | 毛片网站在线观看视频 | 国产丝袜人妖cd露出 | 亚洲综合电影 | 久久久久久国 | 欧美成人一区二区三区片免费 | 福利av在线 | 国产一区二区三区免费 | 亚洲电影第三页 | 久久av一区| 亚洲精品久久久一区二区三区 | 亚洲网站在线观看 | 四虎永久在线精品免费一区二 | 欧美在线成人影院 | 国产福利在线 | 久久国产婷婷国产香蕉 | 亚洲精品区 |