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

標(biāo)題: 虛擬串口通信實(shí)驗(yàn),lcd怎么清除上次輸入的數(shù)據(jù) [打印本頁(yè)]

作者: 陶小陶    時(shí)間: 2024-12-13 11:04
標(biāo)題: 虛擬串口通信實(shí)驗(yàn),lcd怎么清除上次輸入的數(shù)據(jù)
再次輸入的時(shí)候,lcd怎么清掉之前的數(shù)據(jù)

#include <REGX51.H>
#define uchar unsigned char
#define uint unsigned int
// 定義LCD控制引腳
sbit RS = P1^0;
sbit RW = P1^1;
sbit E = P1^2;
// 定義按鍵引腳
sbit KEY = P1^6;

// 定義數(shù)據(jù)數(shù)組
uchar data_to_send[8];
uchar received_data;

// 延時(shí)函數(shù)
void delayms(uint ms)
{
    uchar i;
    while (ms--)
        for (i = 0; i < 123; i++);
}

// 向LCD寫(xiě)指令函數(shù)
void w_com(uchar com)
{
    RS = 0;
    RW = 0;
    E = 1;
    P0 = com;
    E = 0;
    delayms(1);
}

// 向LCD寫(xiě)數(shù)據(jù)函數(shù)
void w_dat(uchar dat)
{
    RS = 1;
    RW = 0;
    E = 1;
    P0 = dat;
    E = 0;
    delayms(1);
}

// LCD初始化函數(shù)
void lcd_ini(void)
{
    delayms(10);
    w_com(0x38);
    delayms(10);
    w_com(0x0c);
    delayms(10);
    w_com(0x06);
    delayms(10);
    w_com(0x01);
    delayms(10);
    w_com(0x80);
    delayms(10);
}

// 通過(guò)串口發(fā)送一個(gè)字節(jié)數(shù)據(jù)
void send_data(uchar data_to_send)
{
    SBUF = data_to_send;
    while (TI == 0);
    TI = 0;
}

// 串口初始化函數(shù)
void uart_init()
{
    // 9600bps 11.0592MHz
    SCON = 0x50;        // 8位數(shù)據(jù),可變波特率
    TMOD &= 0x0F;      // 清除定時(shí)器1模式位
    TMOD |= 0x20;      // 設(shè)定定時(shí)器1為8位自動(dòng)重裝方式
    TL1 = 0xFD;        // 設(shè)定定時(shí)初值
    TH1 = 0xFD;        // 設(shè)定定時(shí)器重裝值
    ET1 = 0;           // 禁止定時(shí)器1中斷
    TR1 = 1;           // 啟動(dòng)定時(shí)器1
    EA = 1;            // 開(kāi)啟總中斷
    ES = 1;            // 開(kāi)啟串口中斷
}

// 主函數(shù)
void main()
{
    uchar i;
    lcd_ini();
    uart_init();
    while (1)
    {
        if (KEY == 0)
        {
            delayms(20);
            if (KEY == 0)
            {
                for (i = 0; i < 8; i++)
                {
                    send_data(data_to_send[ i]);
                }
                while (KEY == 0);
            }
        }
    }
}

// 串口中斷服務(wù)函數(shù)
void uart_interrupt() interrupt 4
{
    if (RI == 1)
    {
        RI = 0;
        received_data = SBUF;                 
        w_dat(received_data);
    }
}

51hei.png (240.57 KB, 下載次數(shù): 0)

51hei.png

作者: lkc8210    時(shí)間: 2024-12-13 11:43
  1. void uart_interrupt() interrupt 4
  2. {
  3.         static char POS = 0;
  4.     if (RI == 1)
  5.     {
  6.         RI = 0;
  7.         received_data = SBUF;               
  8.         w_dat(received_data);
  9.                 POS++;
  10.                 if(POS>=32){
  11.                         POS = 0;
  12.                         w_com(0x80);                       
  13.                         w_com(0x01);
  14.                 }
  15.     }
  16. }
復(fù)制代碼

作者: 陶小陶    時(shí)間: 2024-12-13 16:30
lkc8210 發(fā)表于 2024-12-13 11:43

還是和之前一樣
作者: MCU2023    時(shí)間: 2024-12-13 19:52
要清除LCD1602上顯示的上次發(fā)送的字符,你需要在程序中加入清除顯示的代碼。LCD1602提供了一個(gè)清除顯示的指令,即指令碼0x01。你可以定義一個(gè)函數(shù)來(lái)發(fā)送這個(gè)指令,從而清除LCD上的顯示。  以下是你可以添加到程序中的代碼:void main() {     uchar i;     lcd_ini();     uart_init();     while (1)     {         if (KEY == 0)         {             delayms(20);             if (KEY == 0)             {                 w_com(0x01); // 發(fā)送清除顯示指令                  delayms(10); // 等待指令執(zhí)行完成                  for (i = 0; i < 8; i++)                 {                     send_data(data_to_send[i]); // 假設(shè)data_to_send數(shù)組中存儲(chǔ)了要發(fā)送的數(shù)據(jù)                 }                 while (KEY == 0);             }         }     } }
作者: MCU2023    時(shí)間: 2024-12-13 19:53
請(qǐng)注意,這里的data_to_send數(shù)組應(yīng)該是之前存儲(chǔ)了要發(fā)送的數(shù)據(jù),并且在發(fā)送新數(shù)據(jù)之前,你需要確保數(shù)組中的數(shù)據(jù)是最新的。此外,lcd_clear函數(shù)中的延遲是為了確保LCD有足夠的時(shí)間來(lái)執(zhí)行清除操作。根據(jù)你的LCD響應(yīng)速度,這個(gè)延遲時(shí)間可能需要調(diào)整。
作者: 陶小陶    時(shí)間: 2024-12-14 20:55
MCU2023 發(fā)表于 2024-12-13 19:52
要清除LCD1602上顯示的上次發(fā)送的字符,你需要在程序中加入清除顯示的代碼。LCD1602提供了一個(gè)清除顯示的指 ...

不太行
作者: lkc8210    時(shí)間: 2024-12-16 09:11
陶小陶 發(fā)表于 2024-12-13 16:30
還是和之前一樣


  1. // 串口中斷服務(wù)函數(shù)
  2. void uart_interrupt() interrupt 4
  3. {
  4.     static char POS = 0;
  5.     if (RI == 1)
  6.     {
  7.         RI = 0;
  8.         received_data = SBUF;
  9.         if(POS==16)
  10.         {
  11.             w_com(0xC0);
  12.         }
  13.         if(POS>=32)
  14.         {
  15.             POS = 0;
  16.             w_com(0x80);
  17.             w_com(0x01);
  18.                         delayms(2);
  19.         }
  20.         w_dat(received_data);
  21.         POS++;
  22.     }
  23. }
復(fù)制代碼








歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 久久6| 精品久久中文 | 成人免费视频 | 免费激情 | 美国黄色一级片 | 亚洲视频 欧美视频 | 久久久91精品国产一区二区三区 | 国产精品久久久久久婷婷天堂 | 免费视频二区 | 欧美一级二级视频 | 精品国产乱码久久久久久影片 | 在线成人一区 | 国产 日韩 欧美 在线 | 97人人澡人人爽91综合色 | 精品国产一区一区二区三亚瑟 | 日韩在线观看一区 | 午夜影院在线观看版 | 欧洲尺码日本国产精品 | av电影一区二区 | 日韩一级二级片 | 少妇一级淫片aaaaaaaaa | 视频一区二区在线 | av一区二区三区四区 | 日韩欧美在线一区 | 狠狠婷婷综合久久久久久妖精 | 在线观看免费av网站 | 免费国产黄| 久久99精品国产自在现线小黄鸭 | av小说在线| 成人午夜免费网站 | 亚洲高清视频一区二区 | 中文字幕日韩在线观看 | 国产黄色大片 | 美女爽到呻吟久久久久 | 一区二区手机在线 | 国产精品视频不卡 | 91精品免费视频 | 国产中文字幕网 | av日韩高清 | 欧美一区二不卡视频 | 国产中文字幕在线 |