找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 1702|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

51單片機(jī)移植到STM32數(shù)碼管滾動(dòng)顯示錯(cuò)誤

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:979469 發(fā)表于 2022-8-23 19:10 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
求看看哪里有問(wèn)題111是51程序可以正常運(yùn)行
改成32不知道哪里有問(wèn)題不顯示

單片機(jī)源程序如下:
#include <STC89C5xRC.H>
#include "intrins.h"
#define uchar unsigned char
#define uint unsigned int


sbit duan=P2^6;
sbit wei=P2^7;
uchar code tab[18]={0x06,0x6f,0x7f,0x06,0x06,0x06,0x6d,0x66,0x5b,0x06,0x5b,0x6f,0x00,0x00,0x00,0x00,0x00,0x00};
//共陰極數(shù)碼管段碼表
uchar idata dis_buf[6]={17,17,17,17,17,17};
//顯示緩沖區(qū)數(shù)據(jù)(十進(jìn)制)
void delayms(uint i) //延時(shí)1ms函數(shù)
{
                uint j;
        for(;i>0;i--)
for(j=120;j>0;j--)
{;}
}




void main() //主函數(shù)
{
        uchar k,m,n,bitcode,segcode;
        while(1)
                {
                        for(n=0;n<17;n++)
                        {
                                dis_buf[0]=dis_buf[1]; //數(shù)據(jù)移動(dòng)
                                dis_buf[1]=dis_buf[2];
                                dis_buf[2]=dis_buf[3];
                                dis_buf[3]=dis_buf[4];
                                dis_buf[4]=dis_buf[5];
                                dis_buf[5]=n;
                                for(m=0;m<100;m++) //100次掃描,大約600ms
                                {
                                        bitcode=0xfe; //起始位碼
                                        for(k=0;k<6;k++)
                                        {
                                                P0=0xff; //消影
                                                wei=1;
                                                wei=0;
                                                segcode=dis_buf[k]; //取數(shù)據(jù)
                                                P0=tab[segcode]; //送段碼
                                                duan=1;
                                                duan=0;
                                                P0=bitcode; //送位碼
                                                wei=1;
                                                wei=0;
                                                delayms(1);
                                                bitcode=_crol_(bitcode,1); //更新位碼,準(zhǔn)備顯示下一位
                                        }
        }
     }
  }
}


下面是所改不顯示仿真圖就換個(gè)主控端口


#include "stm32f10x.h"
#include "smg.h"
#include "Delay.h"
//uint16_t table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
//uint16_t wei[]={0x0fe,0x0fd,0x0fb,0x0f7,0x0ef,0x0df};

u8 tab[18]={0x06,0x6f,0x7f,0x06,0x06,0x06,0x6d,0x66,0x5b,0x06,0x5b,0x6f,0x00,0x00,0x00,0x00,0x00,0x00};
//共陰極數(shù)碼管段碼表
u8 dis_buf[6]={17,17,17,17,17,17};
//顯示緩沖區(qū)數(shù)據(jù)(十進(jìn)制)
uint8_t i;
int main(void)
{
        u8 k,m,n,bitcode,segcode;
SMG_Init();
while(1)
{
         for(n=0;n<17;n++)
                        {
                                dis_buf[0]=dis_buf[1]; //數(shù)據(jù)移動(dòng)
                                dis_buf[1]=dis_buf[2];
                                dis_buf[2]=dis_buf[3];
                                dis_buf[3]=dis_buf[4];
                                dis_buf[4]=dis_buf[5];
                                dis_buf[5]=n;
        for(m=0;m<100;m++) //100次掃描,大約600ms
                {
                        bitcode=0x0fe; //起始位碼
  for(i=0;i<6;i++)
   {
                 GPIO_Write(GPIOC,0x0ff);
                 
                 GPIO_SetBits(GPIOB,GPIO_Pin_1);
                  Delay(100);
                 GPIO_ResetBits(GPIOB,GPIO_Pin_1);
                 
                 segcode=dis_buf[ i];
                  
                 GPIO_Write(GPIOC,tab[segcode]); //送段碼
                 
                 GPIO_SetBits(GPIOB,GPIO_Pin_0);
                  Delay(100);
                 GPIO_ResetBits(GPIOB,GPIO_Pin_0);
                 
                 
                 GPIO_Write(GPIOC,bitcode); //送位碼
                 GPIO_SetBits(GPIOB,GPIO_Pin_1);
                 Delay(100);
                 GPIO_ResetBits(GPIOB,GPIO_Pin_1);
//    GPIO_Write(GPIOB,wei[i-1]);
//    GPIO_Write(GPIOC,table[ i]);
      Delay(100);


                         bitcode=My_crol_(bitcode,1); //更新位碼,準(zhǔn)備顯示下一位
                  Delay(50);
    }
         
   }
  }
}
}


#include"stm32f10x.h"
#include"smg.h"
void SMG_Init(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC,ENABLE);
        GPIO_InitStructure.GPIO_Pin = 0x00ff;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOC,&GPIO_InitStructure);
        GPIO_InitStructure.GPIO_Pin = 0x0003;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOB,&GPIO_InitStructure);
}
u32 My_crol_(u32 data,u8 num)
{
        u8 i=0;
        u32 temp1=0;
        u32 temp2=0;
        u32 rtn_data;
        
        temp1=data;
        
        for(i=0;i<num;i++)
        {
                temp1=temp1<<1;
                temp2=temp2<<1;        
    if(temp1>0x0fffffff)
          {
          temp2+=1;
          }
        
         
        }
  rtn_data=temp1+temp2;
        return rtn_data;

}

111.zip

306.23 KB, 下載次數(shù): 7

51單片機(jī)程序

管動(dòng)態(tài)掃描.7z

299.25 KB, 下載次數(shù): 11

32單片機(jī)

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:301191 發(fā)表于 2022-9-1 13:42 | 只看該作者
頂一下
回復(fù)

使用道具 舉報(bào)

板凳
ID:824490 發(fā)表于 2022-9-1 16:47 | 只看該作者
把仿真工程和代碼一起發(fā)上來(lái),將會(huì)有更多來(lái)幫你。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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