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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1827|回復: 13
收起左側

51單片機用串口向6位數碼管發送文本18.46.23,數碼管顯示不了,求大佬們指點

[復制鏈接]
ID:1116661 發表于 2024-4-15 09:45 | 顯示全部樓層 |閱讀模式
#include <REGX52.H>

unsigned char Nixie_Buffer[9];
unsigned char count, count1;

void UART_Init(void)                //4800bps@11.0592MHz
{
        PCON &= 0x7F;                //波特率不倍速
        SCON = 0x50;                //8位數據,可變波特率,與串口發送的區別是這里打開了接收控制位REN
        TMOD &= 0x0F;                //清除定時器1模式位
        TMOD |= 0x20;                //設定定時器1為8位自動重裝方式
        TL1 = 0xFA;                //設定定時初值
        TH1 = 0xFA;                //設定定時器重裝值
        ET1 = 0;                //禁止定時器1中斷
        TR1 = 1;                //啟動定時器1
        EA = 1;
        ES = 1;
}

unsigned char NixieTable[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x7f};//0~F,還有小數點

sbit DP1 = P0^0;
sbit DP2 = P0^1;
sbit DP3 = P0^2;
sbit DP4 = P0^3;
sbit DP5 = P0^4;
sbit DP6 = P0^5;

void Delay(unsigned int xms)
{
        unsigned char i, j;
        while(xms)
        {
                i = 2;
                j = 199;
                do
                {
                while (--j);
                } while (--i);
                xms--;
        }
}

void Nixie(unsigned char Location,Number)
{
        switch(Location)
        {
                case 1:DP1 = 0;break;
                case 2:DP2 = 0;break;
                case 3:DP3 = 0;break;
                case 4:DP4 = 0;break;
                case 5:DP5 = 0;break;
                case 6:DP6 = 0;break;
        }
        P1 = NixieTable[Number];
        Delay(1);//先延時1毫米,為避免過早清零讓數碼管太暗
        //P1 = 0x00;//將上一位段選清零,避免上一位段選的數據進入下一位的位選,且讓清零的數據進入位選,就沒影響,不過這里好像沒啥用
        //計算機進行:位選 段選 位選 段選.......
        P0 = 0xff;
}

void Nixie_showentitle(unsigned char *str)
{
        while(*str != '\0')
        {
                        if (*str >= '0' && *str <= '9')
                        {
                                Nixie(count1, *str++ - 48);//顯示數字
                                count1++;
                        }
                        else if(*str == '.')
                        {
                                Nixie(count1 - 1, 16);//顯示小數點
                                *str++;
                        }
        }
}//數碼管為6位共陽極

void main()
{
        UART_Init();
        while(1)
        {
                Nixie_showentitle(Nixie_Buffer);
        }
}

void UART_Routine() interrupt 4
{
        if(RI)
        {
                Nixie_Buffer[count] = SBUF;//從發送緩沖區發送文本,例如18.46.23
                RI = 0;
                count++;
                count %= 9;
        }
        else
        {
                TI = 0;
        }
}
回復

使用道具 舉報

ID:883242 發表于 2024-4-15 11:50 | 顯示全部樓層
那么請問發送什么可以顯示呢?
回復

使用道具 舉報

ID:1116661 發表于 2024-4-15 12:52 | 顯示全部樓層
Hephaestus 發表于 2024-4-15 11:50
那么請問發送什么可以顯示呢?

發送什么都不能顯示(捂臉)
回復

使用道具 舉報

ID:161164 發表于 2024-4-15 13:18 | 顯示全部樓層
  1. void Nixie(unsigned char Location,Number)
  2. {
  3.         P1 = NixieTable[Number];
  4.         switch(Location)
  5.         {
  6.                 case 1:DP1 = 0;break;
  7.                 case 2:DP2 = 0;break;
  8.                 case 3:DP3 = 0;break;
  9.                 case 4:DP4 = 0;break;
  10.                 case 5:DP5 = 0;break;
  11.                 case 6:DP6 = 0;break;
  12.         }
  13.         Delay(1);//先延時1毫米,為避免過早清零讓數碼管太暗
  14.         P0 = 0xff;
  15. }
復制代碼
回復

使用道具 舉報

ID:1109793 發表于 2024-4-15 13:20 | 顯示全部樓層
不懂,用電腦的串口嗎?接收的電路啥樣?
回復

使用道具 舉報

ID:1057978 發表于 2024-4-15 17:22 | 顯示全部樓層
你先固定顯示個“123456”,正常顯示的話說明顯示程序沒問題,再檢查串口收發
回復

使用道具 舉報

ID:213173 發表于 2024-4-15 17:41 | 顯示全部樓層
b1325583446 發表于 2024-4-15 12:52
發送什么都不能顯示(捂臉)

串口驅動數碼管?你這個數碼管應該是個模塊,這個模塊的硬件電路你不提供,大家怎么幫你?
回復

使用道具 舉報

ID:1116661 發表于 2024-4-15 19:23 | 顯示全部樓層
不好意思大家,這是開發板,是電腦向單片機發送:

燒錄界面

燒錄界面

通信工程學院2023級開發板.pdf

1.33 MB, 下載次數: 2

回復

使用道具 舉報

ID:1116661 發表于 2024-4-15 19:29 | 顯示全部樓層

好的,我去試試
回復

使用道具 舉報

ID:1116661 發表于 2024-4-15 19:30 | 顯示全部樓層
wangxiangtan 發表于 2024-4-15 17:22
你先固定顯示個“123456”,正常顯示的話說明顯示程序沒問題,再檢查串口收發

謝謝,我去試試
回復

使用道具 舉報

ID:1116661 發表于 2024-4-15 19:45 | 顯示全部樓層
pdf文件沒發起
屏幕截圖 2024-04-15 194248.png
回復

使用道具 舉報

ID:213173 發表于 2024-4-15 21:47 | 顯示全部樓層

串口收到的文本數字字符需要減0x30轉換成十進制數,文本小數點也是一個字節,需要轉換成0并插入數碼管段碼的最高位才能在共陽數碼管上顯示正確數字。
回復

使用道具 舉報

ID:213173 發表于 2024-4-15 22:14 | 顯示全部樓層
uchar data dis_buf[8];
uchar data dis_buf1[6];
串口收到的8個字節文本保存在緩存
dis_buf[0]='1';
dis_buf[1]='8';
dis_buf[2]='.';
dis_buf[3]='4';
dis_buf[4]='6';
dis_buf[5]='.';
dis_buf[6]='2';
dis_buf[7]='3';

轉換成6位數碼管段碼
dis_buf1[0]=NixieTable[dis_buf[0]-0x30];
dis_buf1[1]=NixieTable[(dis_buf[1]-0x30)]&0x7f;//加小數點
dis_buf1[2]=NixieTable[dis_buf[3]-0x30];
dis_buf1[3]=NixieTable[(dis_buf[4]-0x30)]&0x7f;//加小數點
dis_buf1[4]=NixieTable[dis_buf[6]-0x30];
dis_buf1[5]=NixieTable[dis_buf[7]-0x30];
回復

使用道具 舉報

ID:883242 發表于 2024-4-16 10:31 | 顯示全部樓層
b1325583446 發表于 2024-4-15 12:52
發送什么都不能顯示(捂臉)

那么顯示部分做到什么程度了?能顯示什么?
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 麻豆久久久久久久 | 天天躁人人躁人人躁狂躁 | 日韩成人av在线播放 | 日本免费一区二区三区 | 天天看天天爽 | 91精品国产综合久久久久久丝袜 | 成人免费xxxxx在线视频 | 成人黄色在线观看 | 久久国产精品偷 | caoporn国产 | 国产在线看片 | 欧美a级成人淫片免费看 | 欧美国产亚洲一区二区 | 在线亚洲欧美 | 亚洲精品一 | 玖玖国产精品视频 | 亚洲综合久久精品 | 一级黄色片在线免费观看 | 日韩视频在线一区 | 99福利视频 | 久久久久久国产精品免费免费男同 | 精品91av| 欧美日韩一区在线播放 | 成人免费视频网站在线看 | 欧美日韩在线观看视频网站 | 久久精品国产一区老色匹 | 天天精品在线 | 精品日韩一区二区 | 欧日韩不卡在线视频 | 婷婷福利 | 一级片在线观看 | 91精品国产91久久综合桃花 | 日韩一区二区三区av | 91九色porny首页最多播放 | 精品在线99 | 欧美日韩成人在线观看 | 国产一在线观看 | 国产欧美视频一区二区 | 亚洲精品中文字幕 | 精品国产一区二区三区久久久久久 | 日韩精品在线一区 |