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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1489|回復: 0
收起左側

52單片機驅動mlx90614代碼程序

[復制鏈接]
ID:620315 發表于 2020-9-28 16:20 | 顯示全部樓層 |閱讀模式
最近在做的一個比賽中有用到mlx90614紅外測溫模塊,經調試整合出一片代碼,放在下邊:
C 語言程序清單: 單片機 89S52、MLX90614、LCD1602 晶振:12M

#include"at89x52.h"
#include"intrins.h" //************************************
#define  uint  unsigned int
#define  uchar unsigned char
#define  Nack_counter  10 //**************端口定義************** //LCD 控制線接口
uchar flag1; sbit  RS=P2^7; sbit  RW=P2^6; sbit  LCDE=P2^5; //mlx90614 端口定義

sbit  SCL=P2^3;//時鐘線 sbit  SDA=P2^2;//數據線 //************數據定義**************** bdata uchar flag;//可位尋址數據 sbit bit_out=flag^7; sbit bit_in=flag^0; uchar DataH,DataL,Pecreg; //************函數聲明***************************************** void   start_bit();                 //MLX90614 發起始位子程序 void   stop_bit();                 //MLX90614 發結束位子程序 uchar  rx_byte(void);              //MLX90614 接收字節子程序 void   send_bit(void);             //MLX90614 發送位子程序 void   tx_byte(uchar dat_byte);     //MLX90614 接收字節子程序 void   receive_bit(void);           //MLX90614 接收位子程序 void   delay(uint N);              //延時程序 uint   memread(void);             //讀溫度數據 void   init1602(void);      //LCD 初始化子程序 void   chk_busy_flg(void);         //LCD 判斷忙子程序 void   dis_cmd_wrt(uchar cmd);     //LCD 寫命令子程序 void   dis_dat_wrt(uchar dat);       //LCD 寫數據子程序 void   display(uint Tem);           //顯示子程序 //*************主函數******************************************* void main() {  uint Tem;  //函數部分  SCL=1;SDA=1;_nop_();  _nop_();_nop_();_nop_();  SCL=0;  delay(1000);  SCL=1;  init1602();  while(1)  {    Tem=memread();    display(Tem);    delay(20);  } } //*********輸入轉換并顯示********* void display(uint Tem) {  uint T,a,b;  T=Tem*2;
dis_cmd_wrt(0x01);//清屏  if(T>=27315)  {    T=T-27315;    a=T/100;    b=T-a*100; //---------------------------    if(a>=100)    {     dis_dat_wrt(0x30+a/100);     a=a%100;     dis_dat_wrt(0x30+a/10);     a=a%10;     dis_dat_wrt(0x30+a);    }    else if(a>=10)    {     dis_dat_wrt(0x30+a/10);     a=a%10;     dis_dat_wrt(0x30+a);    }    else    {     dis_dat_wrt(0x30+a);    }    dis_dat_wrt(0x2e);//顯示點 //---------------------------   if(b>=10)   {     dis_dat_wrt(0x30+b/10); //    b=b%10; //    dis_dat_wrt(0x30+b);   }   else   {     dis_dat_wrt(0x30); //    dis_dat_wrt(0x30+b);   }  } //===========================  else  {   T=27315-T;   a=T/100;
  b=T-a*100;   dis_dat_wrt(0x2d); //--------------------------   if(a>=10)   {     dis_dat_wrt(0x30+a/10);     a=a%10;     dis_dat_wrt(0x30+a);   }   else   {     dis_dat_wrt(0x30+a);   }   dis_dat_wrt(0x2e);//顯示點 //--------------------------   if(b>=10)   {     dis_dat_wrt(0x30+b/10);     b=b%10;     dis_dat_wrt(0x30+b);   }   else   {     dis_dat_wrt(0x30);     dis_dat_wrt(0x30+b);   }  } } //************************************ void   start_bit(void) {    SDA=1;    _nop_();_nop_();_nop_();_nop_();_nop_();    SCL=1;    _nop_();_nop_();_nop_();_nop_();_nop_();    SDA=0;    _nop_();_nop_();_nop_();_nop_();_nop_();    SCL=0;    _nop_();_nop_();_nop_();_nop_();_nop_();

} //------------------------------ void   stop_bit(void) {
   SCL=0;    _nop_();_nop_();_nop_();_nop_();_nop_();    SDA=0;    _nop_();_nop_();_nop_();_nop_();_nop_();    SCL=1;    _nop_();_nop_();_nop_();_nop_();_nop_();    SDA=1; } //---------發送一個字節--------- void  tx_byte(uchar dat_byte) {    char i,n,dat;    n=Nack_counter; TX_again:    dat=dat_byte;    for(i=0;i<8;i++)    {      if(dat&0x80)       bit_out=1;      else       bit_out=0;      send_bit();      dat=dat<<1;    }    receive_bit();    if(bit_in==1)    {     stop_bit();     if(n!=0)     {n--;goto Repeat;}     else      goto exit;    }    else     goto exit; Repeat:     start_bit();     goto TX_again; exit: ; } //-----------發送一個位--------- void  send_bit(void) {   if(bit_out==0)
     SDA=0;   else      SDA=1;   _nop_();   SCL=1;   _nop_();_nop_();_nop_();_nop_();   _nop_();_nop_();_nop_();_nop_();   SCL=0;   _nop_();_nop_();_nop_();_nop_();   _nop_();_nop_();_nop_();_nop_(); } //----------接收一個字節-------- uchar rx_byte(void) {   uchar i,dat;   dat=0;   for(i=0;i<8;i++)   {     dat=dat<<1;     receive_bit();     if(bit_in==1)      dat=dat+1;   }   send_bit();   return dat; } //----------接收一個位---------- void receive_bit(void) {   SDA=1;bit_in=1;   SCL=1;   _nop_();_nop_();_nop_();_nop_();   _nop_();_nop_();_nop_();_nop_();   bit_in=SDA;   _nop_();   SCL=0;   _nop_();_nop_();_nop_();_nop_();   _nop_();_nop_();_nop_();_nop_(); } //------------延時-------------- void   delay(uint N) {   uint i;   for(i=0;i<N;i++)
   _nop_(); } //------------------------------ uint memread(void) {   start_bit();   tx_byte(0x00);  //Send SlaveAddress   tx_byte(0x07);  //Send Command   //------------   start_bit();   tx_byte(0x01);   bit_out=0;   DataL=rx_byte();   bit_out=0;   DataH=rx_byte();   bit_out=1;   Pecreg=rx_byte();   stop_bit();   return(DataH*256+DataL); } //******************LCD 顯示子函數*********************** void init1602(void)      //初始化 LCD {    dis_cmd_wrt(0x01);    dis_cmd_wrt(0x0c);    dis_cmd_wrt(0x06);    dis_cmd_wrt(0x38); }

void chk_busy_flg(void) //LCD 忙標志判斷 {    flag1=0x80;   while(flag1&0x80)  {    P0=0xff;    RS=0;    RW=1;    LCDE=1;    flag1=P0;    LCDE=0;  } }

void dis_cmd_wrt(uchar cmd)  //寫命令子函數
{    chk_busy_flg();    P0=cmd;    RS=0;    RW=0;    LCDE=1;    LCDE=0; }

void dis_dat_wrt(uchar dat) //寫數據子函數 {   chk_busy_flg();   if(flag1==16)   {    P0=0XC0;    RS=0;    RW=0;    LCDE=1;    LCDE=0;   }    P0=dat;    RS=1;    RW=0;    LCDE=1;    LCDE=0; }

回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 人人爽人人爽人人片av | 一本一道久久a久久精品综合蜜臀 | 可以免费观看的av | a国产一区二区免费入口 | 精品久久久久久久久久久下田 | 精品国产一区二区三区久久 | 亚洲一区在线观看视频 | 免费v片 | xxx国产精品视频 | 亚洲欧美一区二区三区国产精品 | 久久精品中文 | 欧美日韩综合精品 | 亚洲精品一区在线观看 | 一二区成人影院电影网 | 最新国产在线 | 欧美一级片在线观看 | 成人高清在线视频 | 亚洲高清在线观看 | 久久精品免费 | 国产日韩一区二区三免费 | 日韩免费网 | 欧美成视频 | 黄色亚洲网站 | 日韩欧美一区二区三区免费观看 | 日韩欧美三级 | 欧美激情免费在线 | www.色综合| 黄色av网站在线免费观看 | 午夜影视大全 | 伊人精品久久久久77777 | 日本久久福利 | 在线国产精品一区 | 亚洲一区二区久久 | 精品欧美一区二区三区久久久 | 黄色网络在线观看 | 精品粉嫩aⅴ一区二区三区四区 | 欧美激情久久久 | 国产精品免费看 | 香蕉久久a毛片 | 欧美中国少妇xxx性高请视频 | av手机在线播放 |