欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2746|回復: 3
收起左側

單片機諧振式水位傳感器顯示亂碼

[復制鏈接]
ID:722265 發表于 2020-5-8 12:53 | 顯示全部樓層 |閱讀模式
1588912902917.jpg 0%7SFHBFTMRWAGQJCC@YZ$G.png
用的是洗衣機里面的諧振式水位傳感器,STC89C52單片機,具體代碼如下:
#include    <reg51.h>
#include <intrins.h>
#include <lcd.h>

sfr AUXR = 0x8E;
sfr BRT   = 0x9C;

typedef unsigned char BYTE;
unsigned int    uart0_wr=0;     //寫指針
unsigned char   uart0_rd;       //讀指針
unsigned char   RX0_Buffer[20]={'0'};   //接收緩沖
bit     B_TI;
bit display_flag=0;

void    uart0_init(void);



/*************** 用戶定義參數 *****************************/

#define MAIN_Fosc       11059200UL  //define main clock
#define Baudrate0       9600UL      //define the baudrate,

/**********************************************************/


/****************** 編譯器自動生成,用戶請勿修改 ************************************/

#define BRT_Reload          (256 - MAIN_Fosc / 16 / Baudrate0)      //Calculate the timer1 reload value ar 1T mode


/**********************************************************/
/*----------------------------
Send a byte data to UART
Input: dat (data to be sent)
Output:None
----------------------------*/
void SendData(BYTE dat)
{
    SBUF = dat;             //Send data to UART buffer
      while(TI==0);
         TI=0;
}

/*----------------------------
Send a string to UART
Input: s (address of string)
Output:None
----------------------------*/
void SendString(char *s)
{
    while (*s)              //Check the end of the string
    {
        SendData(*s++);     //Send current char and increment string ptr
    }
}

void    main(void)
{        P1=0xf0;
    LCDInit();                              //顯示屏初始化
    uart0_init();
    RX0_Buffer[1]='0';
    DisplayString(0x0,0,"F:      Hz");
    DisplayString(0x0,1,"H:      mm");

    while(1)
    {
        if(display_flag==1)
        {
            DisplaySingleChar(0x03,0,RX0_Buffer[1]);
            DisplaySingleChar(0x04,0,RX0_Buffer[2]);
            DisplaySingleChar(0x05,0,RX0_Buffer[3]);
            DisplaySingleChar(0x06,0,RX0_Buffer[4]);
            DisplaySingleChar(0x07,0,RX0_Buffer[5]);

            DisplaySingleChar(0x03,1,RX0_Buffer[7]);
            DisplaySingleChar(0x04,1,RX0_Buffer[8]);
            DisplaySingleChar(0x05,1,RX0_Buffer[9]);
            DisplaySingleChar(0x06,1,RX0_Buffer[10]);
            display_flag=0;
        }

    }
}

void    uart0_init(void)
{
//  PCON |= 0x80;       //UART0 Double Rate Enable
//  SCON = 0x50;        //UART0 set as 10bit , UART0 RX enable
//  AUXR |=  0x01;      //UART0 使用BRT
//  AUXR |=  0x04;      //BRT set as 1T mode
//  BRT = BRT_Reload;
//  AUXR |=  0x10;      //start BRT

//  #if (PARITYBIT == NONE_PARITY)
    SCON = 0x50;            //8-bit variable UART
//#elif (PARITYBIT == ODD_PARITY) || (PARITYBIT == EVEN_PARITY) || (PARITYBIT == MARK_PARITY)
//    SCON = 0xda;            //9-bit variable UART, parity bit initial to 1
//#elif (PARITYBIT == SPACE_PARITY)
//    SCON = 0xd2;            //9-bit variable UART, parity bit initial to 0
//#endif

    TMOD = 0x20;            //Set Timer1 as 8-bit auto reload mode
    TH1 = TL1 = -(MAIN_Fosc/12/32/Baudrate0); //Set auto-reload vaule
    TR1 = 1;                //Timer1 start run
    ES = 1;                 //Enable UART interrupt
    EA = 1;                 //Open master interrupt switch

//  ES  = 1;
//  EA = 1;
}


/**********************************************/
void UART0_RCV (void) interrupt 4
{
    if(RI)
    {
        RI = 0;
        RX0_Buffer[uart0_wr] = SBUF;
        if(++uart0_wr >= 13)    uart0_wr = 0;
    display_flag=1;
    }

    if(TI)
    {
        TI = 0;
        B_TI = 1;
    }
}




串口更改了,但是lcd顯示的不是數值,有psxy。psxx,不知道是亂碼還是什么,請大佬幫幫忙。用的是這個傳感器
回復

使用道具 舉報

ID:584814 發表于 2020-5-8 14:58 | 顯示全部樓層
顯示沒問題也不是亂碼,是讀出的數據有問題。
回復

使用道具 舉報

ID:420836 發表于 2020-5-8 22:42 | 顯示全部樓層
1602顯示正常,只是頻率和高度對應的數字不正確。 需要檢查數據是否正確解碼。
回復

使用道具 舉報

ID:282850 發表于 2020-5-9 14:22 | 顯示全部樓層
顯示前先給RX0_Buffer賦數值,看LCD顯示是否為此數值,如果正常,則是從水位傳感器讀出的RX0_Buffer錯誤。
串口來讀水位頻率是否可行,這個很怪,是否改成定時器則頻率的方式原理較清楚
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表