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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

關(guān)于紅外遙控控制數(shù)碼管移位顯示數(shù)字實(shí)驗(yàn)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:356940 發(fā)表于 2018-7-24 10:51 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
想做一個(gè)紅外遙控控制數(shù)碼管移位顯示,第一次按遙控按鈕顯示第一位數(shù)碼管,第二次按顯示第二個(gè)(第一個(gè)仍然是第一次按下遙控按鈕時(shí)的數(shù)字),以此類推,直到顯示8位數(shù)字,該怎么寫?我自己寫的程序結(jié)果全都是要么顯示第一位停住了,要么8位數(shù)碼管全部都顯示我第一次按下的遙控器上的數(shù)字
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

來自 5#
ID:375003 發(fā)表于 2018-7-28 01:36 | 只看該作者
我大概看了看,你把遙控接收寫到中斷里面,第二,盡量和外界通訊的時(shí)侯別用while要用if;這樣程序就不會因?yàn)槟惆l(fā)的碼長碼短,或者是連續(xù)碼,受到干擾.我做接收做了很多年.這是經(jīng)驗(yàn).舍不得貼出來.這是以前做的成熟的產(chǎn)品.用量特別大,沒有任何BUG.不存在靈不靈的問題.用的是6222的芯片,單片機(jī)用STC的.

irto232.zip

1.93 KB, 下載次數(shù): 23

評分

參與人數(shù) 2黑幣 +105 收起 理由
angmall + 35 回帖助人的獎(jiǎng)勵(lì)!
admin + 70 回帖助人的獎(jiǎng)勵(lì)!

查看全部評分

回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:375003 發(fā)表于 2018-7-24 12:56 來自手機(jī) | 只看該作者
你代碼帖上來,我?guī)湍愀?/td>
回復(fù)

使用道具 舉報(bào)

板凳
ID:356940 發(fā)表于 2018-7-25 09:26 | 只看該作者
guangshi_wq 發(fā)表于 2018-7-24 12:56
你代碼帖上來,我?guī)湍愀?/blockquote>

昨天那個(gè)問題解決了,今天又有一個(gè)一個(gè)關(guān)于遙控的問題,請問一下,我想實(shí)現(xiàn)紅外遙控控制點(diǎn)陣每按一個(gè)按鈕它就顯示一個(gè)字,但是實(shí)際上開始的時(shí)候要按很多次才能按出字來,這是怎么回事?代碼如下:
#include<reg51.h>
#include<intrins.h>
sbit SIGNAL=P3^2;                                           //控制遙控接收數(shù)據(jù)信號
sbit SRCLK=P3^6;                                           //74HC595模擬SRCLK管腳
sbit RCLK=P3^5;                                                   //74HC595模擬RCK管腳
sbit SER=P3^4;                                                   //74HC595模擬SER管腳
#define uchar unsigned char
#define uint unsigned int
uchar p=0;                                                           //先把p賦值為0
uchar value[6];                                                   //用以紅外接收用戶碼數(shù)據(jù)碼數(shù)組
uchar time;                                                           //時(shí)間變量用以紅外接收
void delay10us(void)   // 10us
{
    unsigned char a,b;
    for(b=1;b>0;b--)
        for(a=2;a>0;a--);
}
void delay100us(void)   // 100us
{
    unsigned char a,b;
    for(b=1;b>0;b--)
        for(a=47;a>0;a--);
}
void delay7ms(void)   // 7ms
{
    unsigned char a,b,c;
    for(c=1;c>0;c--)
        for(b=26;b>0;b--)
            for(a=133;a>0;a--);
}
void delay(uchar i)
{
        while(i--);       
}
uchar code tablewei[]=                                  //16×16點(diǎn)陣位選
{
  0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80
};
uchar code tableduan1[]={                          //16×16點(diǎn)陣段選
/*--  文字:  祝  --*/
/*--  宋體12;  此字體下對應(yīng)的點(diǎn)陣為:寬x高=16x16   --*/
0x08,0x08,0x89,0xEE,0x98,0x00,0x7E,0x42,0xC2,0x42,0x42,0xC2,0x42,0x7E,0x00,0x00,
0x02,0x01,0x00,0xFF,0x80,0x43,0x20,0x18,0x07,0x00,0x00,0x3F,0x40,0x40,0x78,0x00,


};
uchar code tableduan2[]={
/*--  文字:  你  --*/
/*--  宋體12;  此字體下對應(yīng)的點(diǎn)陣為:寬x高=16x16   --*/
0x00,0x80,0x60,0xF8,0x07,0x40,0x20,0x18,0x0F,0x08,0xC8,0x08,0x08,0x28,0x18,0x00,
0x01,0x00,0x00,0xFF,0x00,0x10,0x0C,0x03,0x40,0x80,0x7F,0x00,0x01,0x06,0x18,0x00,



};
uchar code tableduan3[]={
/*--  文字:  生  --*/
/*--  宋體12;  此字體下對應(yīng)的點(diǎn)陣為:寬x高=16x16   --*/
0x80,0x40,0x30,0x1E,0x10,0x10,0x10,0xFF,0x10,0x10,0x10,0x10,0x10,0x10,0x00,0x00,
0x40,0x40,0x42,0x42,0x42,0x42,0x42,0x7F,0x42,0x42,0x42,0x42,0x42,0x40,0x40,0x00,



};
uchar code tableduan4[]={
/*--  文字:  日  --*/
/*--  宋體12;  此字體下對應(yīng)的點(diǎn)陣為:寬x高=16x16   --*/
0x00,0x00,0x00,0xFE,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0xFF,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0xFF,0x00,0x00,0x00,0x00,


};
uchar code tableduan5[]={
/*--  文字:  快  --*/
/*--  宋體12;  此字體下對應(yīng)的點(diǎn)陣為:寬x高=16x16   --*/
0x00,0xE0,0x00,0xFF,0x10,0x20,0x08,0x08,0x08,0xFF,0x08,0x08,0xF8,0x00,0x00,0x00,
0x01,0x00,0x00,0xFF,0x00,0x81,0x41,0x31,0x0D,0x03,0x0D,0x31,0x41,0x81,0x81,0x00,

};
uchar code tableduan6[]={
/*--  文字:  樂  --*/
/*--  宋體12;  此字體下對應(yīng)的點(diǎn)陣為:寬x高=16x16   --*/
0x00,0x00,0xE0,0x9C,0x84,0x84,0x84,0xF4,0x82,0x82,0x83,0x82,0x80,0x80,0x00,0x00,
0x00,0x20,0x10,0x08,0x06,0x40,0x80,0x7F,0x00,0x00,0x02,0x04,0x08,0x30,0x00,0x00,


};

void Hc595SendByte(uchar dat1,uchar dat2,uchar dat3,uchar dat4)                        //74HC595芯片擴(kuò)展顯示漢字函數(shù)
{
        uchar a;

        SRCLK = 1;
        RCLK = 1;

        for(a=0;a<8;a++)                 //發(fā)送8位數(shù)
        {
                SER = dat1 >> 7;                 //從最高位開始發(fā)送
                dat1 <<= 1;

                SRCLK = 0;                         //發(fā)送時(shí)序
                _nop_();
                _nop_();
                SRCLK = 1;       
        }

        for(a=0;a<8;a++)                 //發(fā)送8位數(shù)
        {
                SER = dat2 >> 7;                 //從最高位開始發(fā)送
                dat2 <<= 1;

                SRCLK = 0;                         //發(fā)送時(shí)序
                _nop_();
                _nop_();
                SRCLK = 1;       
        }


        for(a=0;a<8;a++)                 //發(fā)送8位數(shù)
        {
                SER = dat3 >> 7;                 //從最高位開始發(fā)送
                dat3 <<= 1;

                SRCLK = 0;                         //發(fā)送時(shí)序
                _nop_();
                _nop_();
                SRCLK = 1;       
        }

        for(a=0;a<8;a++)                 //發(fā)送8位數(shù)
        {
                SER = dat4 >> 7;                 //從最高位開始發(fā)送
                dat4 <<= 1;

                SRCLK = 0;                         //發(fā)送時(shí)序
                _nop_();
                _nop_();
                SRCLK = 1;       
        }


        RCLK = 0;
        _nop_();
        _nop_();
        RCLK = 1;
}


void init()                         //為紅外遙控初始化
{
  IT0=1;
  EX0=1;
  EA=1;

  SIGNAL=1;
}

void main()
{
  uchar i;                        //動態(tài)顯示16×16點(diǎn)陣顯示漢字
  init();
  
  while(p==5)                //按下遙控按鈕觸發(fā)p+=5
  {
   for(i=0;i<16;i++)
   {
   Hc595SendByte(~tablewei[i+16],~tablewei,tableduan1[16+i],tableduan1);                   //顯示'祝'
   delay(10);
   }
  }
  while(p==10)
  {
   for(i=0;i<16;i++)
   {
   Hc595SendByte(~tablewei[i+16],~tablewei,tableduan2[16+i],tableduan2);
   delay(10);
   }
  }
  while(p==15)
  {
   for(i=0;i<16;i++)
   {
   Hc595SendByte(~tablewei[i+16],~tablewei,tableduan3[16+i],tableduan3);
   delay(10);
   }
  }
  while(p==20)
  {
   for(i=0;i<16;i++)
   {
   Hc595SendByte(~tablewei[i+16],~tablewei,tableduan4[16+i],tableduan4);
   delay(10);
   }
  }
  while(p==25)
  {
   for(i=0;i<16;i++)
   {
   Hc595SendByte(~tablewei[i+16],~tablewei,tableduan5[16+i],tableduan5);
   delay(10);
   }
  }
  while(p==30)
  {
   for(i=0;i<16;i++)
   {
   Hc595SendByte(~tablewei[i+16],~tablewei,tableduan6[16+i],tableduan6);
   delay(10);
   }
  }
  
  
  
}


void Read_Signal() interrupt 0                  //外部中斷函數(shù)用以接收遙控?cái)?shù)據(jù)
{
  uchar i,j;
  uint count;
  time=0;
  delay7ms();
  if(SIGNAL==0)
  {
   
    count =1000;
    while((SIGNAL==0)&&(count>0))         //>9ms
        {
          delay10us();
          count--;
        }
        if(SIGNAL==1)
        {
        count=500;
        while((SIGNAL==1)&&(count>0))          //>4.5ms
        {
          delay10us();
          count--;

        }
                  for(j=0;j<4;j++)
            {
             for(i=0;i<8;i++)
                 {
                   count=60;
                   while((SIGNAL==0)&&(count>0))
                   {
                     delay10us();
                         count--;
                   }


                   count=500;
                   while((SIGNAL==1)&&(count>0))
                   {
                   delay100us();
                   time++;
                   count--;
                   if(time>30)
                   {
                     return;
                   }
                   }
                   value[j]>>=1;
                   if(time>=8)
                   {
                   value[j]|=0x80;
                   }
                   time=0;
                  }

                 }

            }
       
        if(value[2]!=~value[3])
        {
         return;
        }

        p=p+5;                                                                         /*按一下遙控觸發(fā)p+5*/
  }
  
}
回復(fù)

使用道具 舉報(bào)

地板
ID:375003 發(fā)表于 2018-7-28 01:23 | 只看該作者
http://www.zg4o1577.cn/bbs/dpj-41485-1.html
這上面有我的回貼,這段時(shí)間好忙,沒空改了,你自己參考一下,我的回貼在最下面.

評分

參與人數(shù) 1黑幣 +60 收起 理由
admin + 60 回帖助人的獎(jiǎng)勵(lì)!

查看全部評分

回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美日韩亚洲一区 | 天天天天操 | 中文字幕一区二区三区乱码在线 | 亚洲国产精品久久人人爱 | 欧美 日韩 在线播放 | av一级久久| 中文字幕第十页 | 日本成人片在线观看 | 国产精品久久久久久久久久免费看 | 99热在线免费 | 一区二区精品视频 | 免费a在线 | 中文字幕成人在线 | av网站在线看 | 亚洲国产成人精品女人久久久 | 综合久| 56pao在线| 国产亚洲www | 成人高清在线视频 | 毛片大全 | hsck成人网| 日韩精品在线观看视频 | 免费黄色在线观看 | 婷婷免费视频 | avav在线看 | 黄色av网站在线免费观看 | 午夜视频免费网站 | 亚洲色图图片 | 日韩欧美国产不卡 | 精品亚洲永久免费精品 | 成人在线a | 1204国产成人精品视频 | 亚洲一区在线播放 | 久久99久久| 午夜久久久久久久久久一区二区 | 中文字幕加勒比 | 91精品国产综合久久久久久丝袜 | 亚洲精品一区在线 | 精品一区二区三区视频在线观看 | 欧美一级特黄aaa大片在线观看 | 一级黄色片在线免费观看 |