两个吃奶一个添下面视频_人妻第一页香蕉网_欧美xxxx少妇_妺妺窝人体色www婷婷

1.題目要求

這一次我們將上一講的代碼作為基礎(chǔ),要實現(xiàn)的任務(wù)就是電腦端發(fā)送過來的字符串單片機把它們顯示在液晶屏上,由于液晶屏只能顯示ASCII碼的字符,無法顯示漢字,所以電腦端發(fā)送過來的字符串也必須是英文輸入法下打出的字符。

當單片機接收完字符串之后液晶屏顯示“Reception  Complete!”表示接收完成,持續(xù)一秒之后,蜂鳴器響一下,然后把接收到的字符串顯示在液晶屏上,發(fā)送過來的字符串的字符數(shù)不能超過32個,因為液晶屏的顯示范圍只有32個格。

2.main.c測試代碼

#include <reg52.h> 
#include <function.h> //詳見第六章第8講
#include <lcd.h>      //詳見第十一章第3講
#include <uart.h>     //詳見第十章第4講
 
u8 uart_i=0;
u8 pdata RXDBUF[64];
void COUNT_TIMES()
{
    TMOD&=0xF0;   //清0低四位
    TMOD|=0x01;   //設(shè)置定時器0為工作模式1
}
 
void main()
{  
    u8 x;  
    u16 n,j;          //用來實現(xiàn)蜂鳴器鳴叫定義的變量
    EA = 1;           //閉合總中斷開關(guān)
    COUNT_TIMES();    //初始化計數(shù)器
    ConfigUART(9600);
    InitLcd1602();    //初始化液晶屏 
  
    while(1)
    {      
        if(TH0>=200)  //判斷是否把數(shù)據(jù)接收完畢
        {
            TR0=0;    //關(guān)閉定時器,停止計時
    
            LcdFullClear();                 //整屏清除
            LcdShowStr(3, 0, "Reception");  //顯示“接收完成”的英文字幕  
            LcdShowStr(3, 1, "Complete!");
    
            while(uart_i<32)                //液晶屏能顯示的有32個字符,盡管接收到的字符串沒有32個字節(jié)也要把RXDBUF數(shù)組的前32個元素補充空格字符的字節(jié),避免液晶屏顯示亂碼
            {
                RXDBUF[uart_i]=' ';         //增加空格
                uart_i++;
            }
    
            TH0=0;                          //清零定時器的寄存器,下次再從0開始計時  
            TL0=0;
    
            delay_ms(1000);                 //停頓1秒
    
            for(j=0;j<1000;j++)             //蜂鳴器鳴叫一下
            {
                BEEP=!BEEP;
                for(n=0;n<25;n++);          //延時接近0.125ms,給P1.6保持了0.125ms高電平時間
            } 
    
            LcdFullClear();                      //整屏清除
            LcdShowStr_len(0, 0,RXDBUF, 16);     //顯示前16個字符
            LcdShowStr_len(0, 1,RXDBUF+16, 16);  //顯示后16個字符
            uart_i=0;                            //uart_i歸0是為了下次接收新的字符串是從RXDBUF[0]開始存取數(shù)據(jù)
    
            for(x=0;x<32;x++)RXDBUF[x]=0x00;     //內(nèi)存區(qū)全部清除數(shù)據(jù),統(tǒng)一改為0x00以便下次接收新的字符串
        }
    } 
}
 
void InterruptUART() interrupt 4
{  
    if (RI)   //接收到字節(jié)
    {
        RI = 0;
   
        TH0=0;//每接收到一個字節(jié)數(shù)據(jù)就清0寄存器的值,定時時間又是從0開始計時,直到TH0大于等于200的時候,
        TL0=0;//時間超過50ms,也就是沒有再接收到數(shù)據(jù),因為接收到數(shù)據(jù)都會進入“if (RI)”把TH0和TL0清0,TH0大于等于200,
              //超出了等待時間,證明后面沒有數(shù)據(jù)發(fā)送過來了   
        TR0=1;//接收到第一個數(shù)據(jù)就打開定時器開始計時,后面接收到第二,第三個數(shù)據(jù)照樣打開定時器計時,直到在主函數(shù)里面被關(guān)閉為止
   
        RXDBUF[uart_i]=SBUF; //接收一個字節(jié)數(shù)據(jù)
        uart_i++;            //RXDBUF從0號元素不停往下存取數(shù)據(jù)   
    }
}

下載完程序進去時會有蜂鳴器響一下,大家復(fù)位一下開發(fā)板就可以了,這是因為我們下載程序進去也是通過串口下進去的,所以會觸發(fā)程序里的接收完成部分的代碼而使蜂鳴器鳴叫一聲。

我們試著發(fā)送一下這個字符串“LcdShowStr_len(0, 0,RXDBUF, 16);”給單片機,看看液晶屏有什么顯示

串口6

點贊(0)

C語言網(wǎng)提供由在職研發(fā)工程師或ACM藍橋杯競賽優(yōu)秀選手錄制的視頻教程,并配有習(xí)題和答疑,點擊了解:

一點編程也不會寫的:零基礎(chǔ)C語言學(xué)練課程

解決困擾你多年的C語言疑難雜癥特性的C語言進階課程

從零到寫出一個爬蟲的Python編程課程

只會語法寫不出代碼?手把手帶你寫100個編程真題的編程百練課程

信息學(xué)奧賽或C++選手的 必學(xué)C++課程

藍橋杯ACM、信息學(xué)奧賽的必學(xué)課程:算法競賽課入門課程

手把手講解近五年真題的藍橋杯輔導(dǎo)課程

Dotcpp在線編譯      (登錄可減少運行等待時間)