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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機(jī)+TM1638顯示閃爍,求助 附程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:149451 發(fā)表于 2020-4-5 10:51 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
近日,“嫁接”了個(gè)VFD和TM1638的程序,想驅(qū)動(dòng)4位(加冒號)的數(shù)碼管,顯示個(gè)時(shí)鐘,結(jié)果功能正常(暫時(shí)未加冒號顯示部分),可看到走時(shí),但顯示有時(shí)關(guān)閉(沒顯示),有時(shí)顯示中不停、無規(guī)律閃爍。求助走過路過的給看看,是何原因?
單片機(jī)程序如下:
/************************************
20200405  嫁接了個(gè)原來顯示正常的VFD程序,結(jié)果走時(shí)正常,但無規(guī)律閃爍
*******************************/
#include "REG52.H"
#include "intrins.h"
#define uchar unsigned char   
#define uint unsigned int
#define T100us (256-134)
unsigned char day,hour, minute, second;
unsigned int c100us;
#define const_time_05s 6880   //0.5秒鐘的時(shí)間需要的定時(shí)中斷次數(shù) 6881,15小時(shí)慢3秒
#define DATA_COMMAND 0X40
#define DISP_COMMAND 0x80
#define ADDR_COMMAND 0XC0
//TM1638模塊引腳定義
sbit DIO=P0^0;
sbit CLK=P0^1;
sbit STB=P0^2;
void initial_myself();        //三區(qū)之:一區(qū) 系統(tǒng)自身變量;
void delay_long(unsigned int uiDelaylong); //一線
void T0_time();  //定時(shí)中斷函數(shù)

//共陰數(shù)碼管顯示代碼
unsigned char code shuzi[]={0x7b,0x18,0x6d,0x3d,0x1e,0x37,0x77,0x19,0x7b,0x3f}; //0-9
                        
void TM1638_Write(unsigned char DATA)   //寫數(shù)據(jù)函數(shù)
{
unsigned char i;
for(i=0;i<8;i++)
{
  CLK=0;
  if(DATA&0X01)
   DIO=1;
  else
   DIO=0;
  DATA>>=1;
  CLK=1;
}
}
unsigned char TM1638_Read(void)     //讀數(shù)據(jù)函數(shù)
{
unsigned char i;
unsigned char temp=0;
DIO=1; //設(shè)置為輸入
for(i=0;i<8;i++)
{
  temp>>=1;
  CLK=0;
  if(DIO)
   temp|=0x80;
  CLK=1;
}
return temp;
}
void Write_COM(unsigned char cmd)  //發(fā)送命令字
{
STB=0;
TM1638_Write(cmd);
STB=1;
}

void Write_DATA(unsigned char add,unsigned char DATA)  //指定地址寫入數(shù)據(jù)
{
Write_COM(0x44);
STB=0;
TM1638_Write(0xc0|add);
TM1638_Write(DATA);
STB=1;
}
//20200405
void write_TM1638(uchar w,uchar dat)    //(Wλ:0-7 ,dat????)   
{   
    uchar wei[]={0x00,0x02,0x04,0x06,};   //0x08,0x0a,0x0c,0x0e,這是原程序8個(gè)數(shù)碼管的
    Write_DATA(wei[w],dat);   
}
/**************
//清TM1638   
//
void clr_tm1638()      
{   
    uchar i;   
    Write_COM(0x40);   
    STB=0;   
    TM1638_Write(0xc0);   
    for(i=0;i<16;i++)TM1638_Write(0x00);   
    STB=1;   
}
**************/  
//TM1638初始化函數(shù)
void init_TM1638(void)
{
unsigned char i;
Write_COM(0x8b);       //亮度 (0x88-0x8f)8級亮度可調(diào)
Write_COM(0x40);       //采用地址自動(dòng)加1
STB=0;             //
TM1638_Write(0xc0);    //設(shè)置起始地址
for(i=0;i<16;i++)    //傳送16個(gè)字節(jié)的數(shù)據(jù)
  TM1638_Write(0x00);
STB=1;
}
                           
void main()
{
  initial_myself();  
   delay_long(100);   
  while(1)
   {
      write_TM1638(3,shuzi[minute%10]);
   write_TM1638(0,shuzi[minute/10]);
   
   write_TM1638(1,shuzi[hour%10]);
   write_TM1638(2,shuzi[hour/10]);
   }
  
}

void T0_time() interrupt 1
{
  c100us--;     //c100us;主程序void  main()里有此句,減一后if判斷是否為“0”
               //不為零繼續(xù)減一
if(c100us==0)  //為零執(zhí)行下面{}
{
  c100us=const_time_05s;  //因?yàn)橐呀?jīng)見到零,所以進(jìn)來先重裝數(shù)tick=7554
  second++;     //秒加一
  if(second==60) //判斷加一后second=60不,若不等跳出執(zhí)行前面c100us--;若等于60了,進(jìn)入下面{}
  {
   second=0;    //因?yàn)橐呀?jīng)見到60,所以清零
   minute++;    //到了60秒,就分加一
   if(minute==60) //判斷加一后minute=60不,若不等跳出執(zhí)行前面c100us--;若等于60了,進(jìn)入下面{}
   {
    minute=0;
    hour++;
    if(hour==24)
    {
    hour=0;
     day++;
     if(day==8)
     {
     day=1;
     }
    }
   }
  }
}

}

void delay_long(unsigned int uiDelayLong)
{
   unsigned int i;
   unsigned int j;
   for(i=0;i<uiDelayLong;i++)
   {
      for(j=0;j<500;j++)  //內(nèi)嵌循環(huán)的空指令數(shù)量
          {
             ; //一個(gè)分號相當(dāng)于執(zhí)行一條空語句
          }
   }
}

void initial_myself()
{
  
TMOD=0x02;  //設(shè)置定時(shí)器0為工作方式2
TH0=T100us;
TL0=T100us;

init_TM1638(); //ET16311_Init();
init_TM1638(); //ET16311_Init();

day=4;
hour=10;
minute=50;
second=0;
c100us=const_time_05s;

EA=1;     //開總中斷
  ET0=1;    //允許定時(shí)中斷
  TR0=1;    //啟動(dòng)定時(shí)中斷
}

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

使用道具 舉報(bào)

沙發(fā)
ID:149451 發(fā)表于 2020-4-7 11:25 | 只看該作者
程序沒問題,是杜邦線接觸不好,產(chǎn)生干擾
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

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