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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6809|回復(fù): 12
收起左側(cè)

想通過串口輸入數(shù)字 在數(shù)碼管上顯示出來,不知道為什么數(shù)碼管顯示的是各種筆畫而不...

[復(fù)制鏈接]
ID:399491 發(fā)表于 2018-10-21 15:37 | 顯示全部樓層 |閱讀模式
#include "reg52.h"                         //此文件中定義了單片機的一些特殊功能寄存器
/*******************************************************************************
* 函數(shù)名         :UsartInit()
* 函數(shù)功能                   :設(shè)置串口
* 輸入           : 無
* 輸出                  : 無
*******************************************************************************/
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
void UsartInit()
{
        SCON=0X50;                        //設(shè)置為工作方式1
        TMOD=0X20;                        //設(shè)置計數(shù)器工作方式2
        PCON=0X80;                        //波特率加倍
        TH1=0XF3;                                //計數(shù)器初始值設(shè)置,注意波特率是4800的
        TL1=0XF3;
        ES=1;                                                //打開接收中斷
        EA=1;                                                //打開總中斷
        TR1=1;                                        //打開計數(shù)器
}

/*******************************************************************************
* 函 數(shù) 名       : main
* 函數(shù)功能                 : 主函數(shù)
* 輸    入       : 無
* 輸    出             : 無
*******************************************************************************/
void main()
{       
        UsartInit();  //        串口初始化
        while(1);               
}

/*******************************************************************************
* 函數(shù)名         : Usart() interrupt 4
* 函數(shù)功能                  : 串口通信中斷函數(shù)
* 輸入           : 無
* 輸出                  : 無
*******************************************************************************/
unsigned char receiveData;
void Usart() interrupt 4
{
        P0=SBUF;//出去接收到的數(shù)據(jù)
        RI = 0;//清除接收中斷標志位
        LSA=0;LSB=0;LSC=0;
    while(!TI);                         //等待發(fā)送數(shù)據(jù)完成
        P0=0x00;//消隱
        TI=0;                                                 //清除發(fā)送完成標志位
}

回復(fù)

使用道具 舉報

ID:94031 發(fā)表于 2018-10-21 17:37 | 顯示全部樓層
得到要顯示的數(shù),還要譯碼成數(shù)碼管相應(yīng)的碼值,才能送到段碼P0口。

評分

參與人數(shù) 1黑幣 +5 收起 理由
873119779 + 5 贊一個!

查看全部評分

回復(fù)

使用道具 舉報

ID:413214 發(fā)表于 2018-10-21 18:44 | 顯示全部樓層
74LS245
回復(fù)

使用道具 舉報

ID:213173 發(fā)表于 2018-10-21 18:52 | 顯示全部樓層
要譯碼成數(shù)碼管相應(yīng)的碼值,稍微改動簡單示例一下。
#include "reg52.h"  
/*******************************************************************************
* 函數(shù)名         :UsartInit()
* 函數(shù)功能                   :設(shè)置串口
* 輸入           : 無
* 輸出                  : 無
*******************************************************************************/
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
unsigned char receiveData;
unsigned char code table[]={
        0x3f,0x06,0x5b,0x4f,
        0x66,0x6d,0x7d,0x07,
        0x7f,0x6f,0x77,0x7c,
        0x39,0x5e,0x79,0x71};
void UsartInit()
{
        SCON=0X50;                        //設(shè)置為工作方式1
        TMOD=0X20;                        //設(shè)置計數(shù)器工作方式2
        PCON=0X80;                        //波特率加倍
        TH1=0XF3;                                //計數(shù)器初始值設(shè)置,注意波特率是4800的
        TL1=0XF3;
        ES=1;                                                //打開接收中斷
        EA=1;                                                //打開總中斷
        TR1=1;                                        //打開計數(shù)器
}

/*******************************************************************************
* 函 數(shù) 名       : main
* 函數(shù)功能                 : 主函數(shù)
* 輸    入       : 無
* 輸    出             : 無
*******************************************************************************/
void main()
{        
        UsartInit();  //        串口初始化
        LSA=0;LSB=0;LSC=0;
        P0=0x00;
        while(1);               
}

/*******************************************************************************
* 函數(shù)名         : Usart() interrupt 4
* 函數(shù)功能                  : 串口通信中斷函數(shù)
* 輸入           : 無
* 輸出                  : 無
*******************************************************************************/
void Usart() interrupt 4
{
        RI = 0;//清除接收中斷標志位
        receiveData=SBUF;//保存收到的數(shù)據(jù)
        P0=table[receiveData%10];//顯示收到的個位數(shù)
        SBUF=receiveData;//發(fā)送收到的數(shù)據(jù)
        while(!TI);   //等待發(fā)送數(shù)據(jù)完成
        TI=0;          //清除發(fā)送完成標志位
}

評分

參與人數(shù) 1黑幣 +8 收起 理由
873119779 + 8 很給力!

查看全部評分

回復(fù)

使用道具 舉報

ID:413292 發(fā)表于 2018-10-21 21:13 | 顯示全部樓層
想寫點單片機程序不知道怎么寫
回復(fù)

使用道具 舉報

ID:213173 發(fā)表于 2018-10-26 07:32 | 顯示全部樓層
#include "reg52.h"  //此文件中定義了單片機的一些特殊功能寄存器
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
unsigned char code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
                                0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x80};//顯示0~F.的值

unsigned char x[17]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','.'};
unsigned char a[5];
unsigned char i,j;
//unsigned int i,m,j,l;
unsigned char SendByte;
bit flag=0;
/*******************************************************************************
* 函數(shù)名         :UsartInit()
* 函數(shù)功能       :設(shè)置串口
* 輸入           : 無
* 輸出           : 無
*******************************************************************************/
void UsartInit()                //9600bps@11.0592MHz
{
        SCON = 0x50;                //8位數(shù)據(jù),可變波特率
        TMOD = 0x20;                //設(shè)定定時器1為8位自動重裝方式
        TL1  = 0xFD;                //設(shè)定定時初值
        TH1  = 0xFD;                //設(shè)定定時器重裝值
        ET1  = 0;                   //禁止定時器1中斷
        TR1  = 1;                   //啟動定時器1
        EA=1;                                        //開總中斷
        ES=1;                                        //開串口中斷
}
void delay(unsigned int u)
{
   while(u--);
}
/*******************************************************************************
* 函 數(shù) 名       : main
* 函數(shù)功能       : 主函數(shù)
* 輸    入       : 無
* 輸    出       : 無
*******************************************************************************/
void main()
{        
        UsartInit();  //串口初始化
        while(1)
        {
                for(i=0;i<5;i++)
                {
                        switch(i)         //位選,選擇點亮的數(shù)碼管,
                        {
                                case(0):
                                LSA=0;LSB=0;LSC=0; break;//顯示第0位
                                case(1):
                                LSA=1;LSB=0;LSC=0; break;//顯示第1位
                                case(2):
                                LSA=0;LSB=1;LSC=0; break;//顯示第2位
                                case(3):
                                LSA=1;LSB=1;LSC=0; break;//顯示第3位
                                case(4):
                                LSA=0;LSB=0;LSC=1; break;//顯示第4位
                        }
                        P0=smgduan[a[i]];//送段碼顯示
                        delay(100); //間隔一段時間掃描        
                        P0=0x00;//消隱
                }               
        }               
}

/*******************************************************************************
* 函數(shù)名         : Usart() interrupt 4
* 函數(shù)功能       : 串口通信中斷函數(shù)
* 輸入           : 無
* 輸出           : 無
*******************************************************************************/
void Usart() interrupt 4
{        
        static unsigned char num=0;        //靜態(tài)計數(shù)變量
        RI=0;                                                //接收中斷請求標志位清0
        a[num]=SBUF;                        //接收到的數(shù)據(jù)串保存在緩存數(shù)組
        num++;
        if(num>=5)
        {
                flag=1;                                //接收完成標志置1
                num=0;                                //計數(shù)變量清0
        }
        if(flag==1)                //接收完成標志為1
        {
                flag=0;                //接收完成標志清0
                for(j=0;j<5;j++)
                {
                        SBUF=a[j];        //發(fā)送數(shù)據(jù)緩存中保存的數(shù)據(jù)
                        while(!TI);        //等待發(fā)送中斷請求標志位為1
                        TI=0;                //發(fā)送中斷請求標志位清0
                }
        }       
}
回復(fù)

使用道具 舉報

ID:319023 發(fā)表于 2018-10-26 13:59 | 顯示全部樓層
數(shù)碼管顯示的數(shù)和硬件連接、共陰還是共陽極都有關(guān)系,驅(qū)動代碼不能只簡單移植。 可以把7段顯示數(shù)碼管每段單獨點亮,再嘗試用數(shù)碼管顯示數(shù)據(jù),到時只要改變下發(fā)送數(shù)據(jù)緩存中保存的數(shù)據(jù)就可以正常顯示了。
回復(fù)

使用道具 舉報

ID:213173 發(fā)表于 2018-10-29 10:38 | 顯示全部樓層
無標題.jpg
IMG_20181029_102830_看圖王.jpg

回復(fù)

使用道具 舉報

ID:399491 發(fā)表于 2018-10-29 12:24 | 顯示全部樓層

那請問小數(shù)點該怎么發(fā)送呢? 發(fā)送數(shù)字可以做得到了
回復(fù)

使用道具 舉報

ID:213173 發(fā)表于 2018-10-29 14:55 | 顯示全部樓層
873119779 發(fā)表于 2018-10-29 12:24
那請問小數(shù)點該怎么發(fā)送呢? 發(fā)送數(shù)字可以做得到了

小數(shù)點在這里是文本,不是數(shù)字,不能與數(shù)字混在一起傳輸,只能用其代碼與數(shù)字混在一起傳輸。 無標題.jpg

IMG_20181029_144600_看圖王.jpg

回復(fù)

使用道具 舉報

ID:213173 發(fā)表于 2018-10-29 15:19 | 顯示全部樓層
873119779 發(fā)表于 2018-10-29 12:24
那請問小數(shù)點該怎么發(fā)送呢? 發(fā)送數(shù)字可以做得到了

如果非得用文本方式傳輸數(shù)據(jù)并用數(shù)碼管正確顯示就得創(chuàng)建一個二維數(shù)組來完成譯碼。這會導(dǎo)致編程復(fù)雜。LCD可以直接輸入ASCII碼顯示是其內(nèi)置有譯碼模塊。
回復(fù)

使用道具 舉報

ID:417405 發(fā)表于 2018-10-29 17:22 | 顯示全部樓層
學習了
回復(fù)

使用道具 舉報

ID:71883 發(fā)表于 2019-8-14 10:13 | 顯示全部樓層
大家說的非常有用
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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