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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2203|回復: 2
收起左側

單片機頻率計與計算機實現串口通信程序有錯誤

[復制鏈接]
ID:837970 發表于 2021-5-11 21:55 | 顯示全部樓層 |閱讀模式
功能描述:可測8KHZ以內的頻率,并能通過串口實現將頻率值發送到電腦上顯示
問題:請教串口通信函數怎么可以在主函數中調用,也請指出原函數的錯誤之處

實驗程序及仿真如下

#include <reg51.h>

//四位一體數碼管位選
sbit Awei = P1^0;
sbit Bwei = P1^1;
sbit Cwei = P1^2;
sbit Dwei = P1^3;

void jisuan();
void delay(int x);
int change(int x);

unsigned int shu;
void yanchi();
void chuankou();
void INIT();

//字形編碼定義
#define SHU_0 0X3F;
#define SHU_1 0X06;
#define SHU_2 0X5B;
#define SHU_3 0X4F;
#define SHU_4 0X66;
#define SHU_5 0X6D;
#define SHU_6 0X7D;
#define SHU_7 0X07;
#define SHU_8 0X7F;
#define SHU_9 0X6F;

int ge=0, shi=0, bai=0, qian=0;
int count = 0, i = 0;
int freq = 0;
int main()
{         
        ge = 0; shi = 0; bai = 0; qian = 0;
        //
        TMOD        = 0X15;
        //
        TH0 = 0;
        TL0 = 0;
        TH1 = (65535 - 50000)/256;
        TL1 = (65535 - 50000)%256;
        //
        IT0 = 1;
        EX0 = 1;
        //
        EA = 1;
        ET0 = 1;
        ET1 = 1;
        //
        TR0 = 1;
        TR1 = 1;
        while(1)
        {
        //動態顯示
        jisuan();
                Awei = 1; Bwei = 1; Cwei = 1; Dwei = 0;
                P2 =  change(ge);
                delay(10);
                P2 = 0X00;
                Awei = 1; Bwei = 1; Cwei = 0; Dwei = 1;
                P2 =  change(shi);
                delay(10);
                P2 = 0X00;
                Awei = 1; Bwei = 0; Cwei = 1; Dwei = 1;
                P2 =  change(bai);
                delay(10);
                P2 = 0X00;
                Awei = 0; Bwei = 1; Cwei = 1; Dwei = 1;
                P2 =  change(qian);
                delay(10);
                P2 = 0X00;
        
        }
}
void service_timer0() interrupt 1 using 1
{
    TH0 = 0;
    TL0 = 0;
}
void service_timer1() interrupt 3 using 3
{
            TH1 = (65535 - 50000)/256;
        TL1 = (65535 - 50000)%256;
        i++;
        if (i == 20)
        {
                freq =TL0 + TH0*256;
                i = 0;
                TH0 = 0;
                    TL0 = 0;        
        }
}

void jisuan()
{
        qian = freq /1000;
        bai = (freq%1000)/100;
        shi = (freq%100)/10;
        ge = freq%10;
}
void delay(int x)
{
        int i, j;
        for(i = 0; i < x; i++)
                for(j = 0; j < 100; j++);
}
int change(int x)
{
        int shu;
        switch(x)
        {
                case 0: shu = SHU_0; break;
                case 1: shu = SHU_1; break;
                case 2: shu = SHU_2; break;
                case 3: shu = SHU_3; break;
                case 4: shu = SHU_4; break;
                case 5: shu = SHU_5; break;
                case 6: shu = SHU_6; break;
                case 7: shu = SHU_7; break;
                case 8: shu = SHU_8; break;
                case 9: shu = SHU_9; break;
        }
        return shu;
}

void yanchi(unsigned int a)
{
while(a--);
}
void INIT()
{
  TMOD=0X20;
        TR1=1;
        TH1=0Xfd;
        TL1=0Xfd;
        SCON=0X40;
        ES=1;
        EA=1;
}
void chuankou()
{
        unsigned char i;  
  INIT();
        while(1)
        {
         for(i=0;i<4;i++)
         {
           SBUF=shu;
                 delay(1000);
         }
         while(1);
        }
}
void Serial() interrupt 4
{
TI=0;
}


51hei截圖20210511213042.png


回復

使用道具 舉報

ID:889094 發表于 2021-5-12 01:21 來自觸屏版 | 顯示全部樓層
change函數參數和返回值最好用uchar,一是節約ram一是給P口賦值用
回復

使用道具 舉報

ID:390416 發表于 2021-5-12 08:01 | 顯示全部樓層
串口1打印程序 可以打印3個十六位的變量 波特率9600 http://m.raoushi.com/bbs/dpj-201660-1.html
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表