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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

單片機串中通訊問題

查看數(shù): 2242 | 評論數(shù): 5 | 收藏 0
關(guān)燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發(fā)布時間: 2019-2-18 08:52

正文摘要:

大神們真心請教,搞不明白,,按健按了,1或2或3,在把這數(shù)值發(fā)給電腦串口,,串口接收顯示的是01 00或  01 00,為什么呀,他發(fā)了幾次? #include <reg51.h> #define led P2 #define shumaguan P0 # ...

回復(fù)

ID:477863 發(fā)表于 2019-2-18 19:49
串口工具接收選ASCII
ID:338762 發(fā)表于 2019-2-18 18:15
這個程序不是你自己寫的吧?你定義的是什么
ID:213173 發(fā)表于 2019-2-18 13:55
改這樣試試

#include <reg51.h>
#define led P2
#define shumaguan P0
#define anjian P1
sbit ls138A= P3^2;
sbit ls138B= P3^3;
sbit ls138C= P3^4;
unsigned char code shuzu[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};// 0--9數(shù)字
unsigned char key;//
bit biaozhi=0;

void chuankou()        //4800bps@12.000MHz
{
        PCON=0X80;//波特率加倍
        SCON=0X50;//設(shè)置為工作方式1
        TMOD=0X20;//設(shè)置計數(shù)器工作方式2
        TH1=0XF3; //計數(shù)器初始值設(shè)置,注意波特率是4800的
        TL1=0XF3;
//        ES=1;     //打開接收中斷
//        EA=1;     //打開總中斷
        TR1=1;
}

void ls138shuju()   //數(shù)碼管動態(tài)顯示函數(shù)   
{
        static unsigned char i=0;
        static unsigned int count=0;
        if(++count>=100)
        {
                count=0;
                shumaguan=0x00;//消隱
                switch(i)
                {
                        case 0: ls138A=0;ls138B=0;ls138C=0;shumaguan=shuzu[key/10];i++;break;
                        case 1: ls138A=1;ls138B=0;ls138C=0;shumaguan=shuzu[key%10];i=0;break;
        /*
                        case 2: ls138A=0;ls138B=1;ls138C=0;shumaguan=shuzu[];i++;break;
                        case 3: ls138A=1;ls138B=1;ls138C=0;shumaguan=shuzu[];i++;break;
                        case 4: ls138A=0;ls138B=0;ls138C=1;shumaguan=shuzu[];i++;break;
                        case 5: ls138A=1;ls138B=0;ls138C=1;shumaguan=shuzu[];i++;break;
                        case 6: ls138A=0;ls138B=1;ls138C=1;shumaguan=shuzu[];i++;break;
                        case 7: ls138A=1;ls138B=1;ls138C=1;shumaguan=shuzu[];i=0;break;
        */
                }
        }
}
/*
void yanshi (unsigned int u)
{
        while(u--);
}
*/
void keyscan()                                        //按鍵掃描程序
{
        static bit sign=0;                        //按鍵自鎖標志
        static unsigned int count=0;        //消抖計數(shù)變量                       
        unsigned char num=0;                                //臨時變量
        anjian=0xf0;                                        //賦值anjian 1111 0000
        if(anjian!=0xf0)                                //檢測有按鍵按下
        {
                count++;                                //消抖計數(shù)
                if((count>=500)&&(sign==0))//100~1000,根據(jù)主循環(huán)周期調(diào)整約10~20ms
                {                       
                        sign=1;                                //按鍵自鎖標志置1
                        num=anjian;                                //保存anjian值xxxx 0000,x為0或1
                        num|=0x0f;                        //保存num按位或0x0f值xxxx 1111
                        anjian=num;                                //賦值anjian xxxx 1111
                        num=anjian;                                //保存anjian值xxxx xxxx
                        switch(num)
                        {
                                case 0xee: key= 1; break;
                                case 0xde: key= 2; break;
                                case 0xbe: key= 3; break;
                                case 0x7e: key= 4; break;
                                case 0xed: key= 5; break;
                                case 0xdd: key= 6; break;
                                case 0xbd: key= 7; break;
                                case 0x7d: key= 8; break;
                                case 0xeb: key= 9; break;
                                case 0xdb: key=10; break;
                                case 0xbb: key=11; break;
                                case 0x7b: key=12; break;
                                case 0xe7: key=13; break;
                                case 0xd7: key=14; break;
                                case 0xb7: key=15; break;
                                case 0x77: key=16; break;
                        }
                        biaozhi=1;
                }
        }
        else                                                //鍵抬起
        {
                sign=0;                                //按鍵自鎖標志清0
                count=0;                                //消抖計數(shù)清0
        }
}
void main()
{
        chuankou();        //初始化串口
        while(1)
        {
                keyscan();//按鍵掃描
                ls138shuju();//2位數(shù)碼管顯示鍵值
                led=~key;                //8個LED顯示鍵值
                if(biaozhi==1)//鍵值通過串口發(fā)送給電腦
                {
                        biaozhi=0;
                        SBUF=key;  
                        while(!TI);
                        TI=0;
                }
        }
}
/*
void RX() interrupt 4
{
        RI=0;
        c=SBUF;  //單片機接收電腦發(fā)來的值,
        biaozhi=1;
}*/
ID:64817 發(fā)表于 2019-2-18 13:21
iofree 發(fā)表于 2019-2-18 11:33
圖片上12345,串口不是把鍵值都發(fā)出給PC了嗎?看起來工作挺正常

我是這里不明白,,按1 按健,把1發(fā)給電腦串口,電腦收到是01 00,,不知道 這個如何理解,,,再比如兩個單片機學(xué)習(xí)板直接通訊,一個板子發(fā)按鍵1值,那么另一個板子收01,,還是收01 00.,,,,謝
ID:474677 發(fā)表于 2019-2-18 11:33
圖片上12345,串口不是把鍵值都發(fā)出給PC了嗎?看起來工作挺正常

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

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

快速回復(fù) 返回頂部 返回列表