|
求看看哪里有問題111是51程序可以正常運行
改成32不知道哪里有問題不顯示
單片機源程序如下:
#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};
//共陰極數碼管段碼表
uchar idata dis_buf[6]={17,17,17,17,17,17};
//顯示緩沖區數據(十進制)
void delayms(uint i) //延時1ms函數
{
uint j;
for(;i>0;i--)
for(j=120;j>0;j--)
{;}
}
void main() //主函數
{
uchar k,m,n,bitcode,segcode;
while(1)
{
for(n=0;n<17;n++)
{
dis_buf[0]=dis_buf[1]; //數據移動
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]; //取數據
P0=tab[segcode]; //送段碼
duan=1;
duan=0;
P0=bitcode; //送位碼
wei=1;
wei=0;
delayms(1);
bitcode=_crol_(bitcode,1); //更新位碼,準備顯示下一位
}
}
}
}
}
下面是所改不顯示仿真圖就換個主控端口
#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};
//共陰極數碼管段碼表
u8 dis_buf[6]={17,17,17,17,17,17};
//顯示緩沖區數據(十進制)
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]; //數據移動
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); //更新位碼,準備顯示下一位
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
2022-8-23 19:09 上傳
點擊文件名下載附件
306.23 KB, 下載次數: 7
51單片機程序
-
-
管動態掃描.7z
2022-8-31 15:05 上傳
點擊文件名下載附件
299.25 KB, 下載次數: 11
32單片機
|