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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2614|回復: 3
打印 上一主題 下一主題
收起左側(cè)

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

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:722265 發(fā)表于 2020-5-8 12:53 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式

用的是洗衣機里面的諧振式水位傳感器,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);



/*************** 用戶定義參數(shù) *****************************/

#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顯示的不是數(shù)值,有psxy。psxx,不知道是亂碼還是什么,請大佬幫幫忙。用的是這個傳感器
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:584814 發(fā)表于 2020-5-8 14:58 | 只看該作者
顯示沒問題也不是亂碼,是讀出的數(shù)據(jù)有問題。
回復

使用道具 舉報

板凳
ID:420836 發(fā)表于 2020-5-8 22:42 | 只看該作者
1602顯示正常,只是頻率和高度對應的數(shù)字不正確。 需要檢查數(shù)據(jù)是否正確解碼。
回復

使用道具 舉報

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

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 免费一级欧美在线观看视频 | 国产一区二区三区在线看 | 新av在线| 精品国产91乱码一区二区三区 | 免费h视频 | 亚洲高清视频一区二区 | 中文字幕高清 | 伊人春色成人网 | 久久精品美女 | 香蕉91| 人人人人爽 | 国产一区二区影院 | 在线午夜 | 天堂在线一区 | 国产成人区| 操操操日日日 | 一区二区三区不卡视频 | 国产一区在线免费观看视频 | 日韩一区二区在线观看视频 | 亚洲视频第一页 | 欧美 日韩 中文 | 颜色网站在线观看 | 亚洲精品视频一区二区三区 | 韩日在线视频 | 午夜一区二区三区在线观看 | 中文字幕视频免费 | 日韩电影中文字幕 | 久久久久久成人 | 亚洲精品一区二区三区在线 | 久久神马 | 欧美视频在线看 | 午夜噜噜噜 | 99re在线 | 99精品热视频| 免费毛片网站 | 欧美国产精品久久久 | 请别相信他免费喜剧电影在线观看 | 精品视频一区二区三区在线观看 | 久久久国产网站 | 国产成人精品在线 | 99精品视频一区二区三区 |