亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

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

QQ登錄

只需一步,快速開始

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

51單片機(jī)8X8鍵盤,紅外線收發(fā),串口收發(fā),1602顯示按鍵源程序+仿真圖

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
3個(gè)89C52
8x8鍵盤
U3單片機(jī)檢測(cè)8X8鍵盤,對(duì)按鍵紅外線編碼發(fā)出。
U2單片機(jī)接收,U3單片機(jī)發(fā)出的紅外信號(hào),解碼后由串口發(fā)出。
U1接收U2單片機(jī)發(fā)出的串口數(shù)據(jù)。



單片機(jī)源程序如下:
  1. #include <STC89C5xRC.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. bit overflag, datafinish;                //開始接收數(shù)據(jù),數(shù)據(jù)處理完畢
  5. bit Updata = 0;
  6. uchar times;                                                                 //定時(shí)器T0溢出次數(shù)
  7. uchar orders[33];                                                //接收輸入的代碼序列(times組成的33字節(jié)級(jí)數(shù))
  8. uchar IRCODE[4];                                                //地址碼,地址反碼,數(shù)據(jù)碼,數(shù)據(jù)反碼

  9. void initial()                                                        //初始化
  10. {

  11.         SCON=0X50;                        //設(shè)置為工作方式1
  12.         TMOD=0X21;                        //設(shè)置計(jì)數(shù)器工作方式2
  13.         PCON=0X80;                        //波特率加倍
  14.         TH0=0xfe;                                                                        //晶振頻率為12MHz
  15.         TL0=0x0c;                                                                        //T0定時(shí)間隔為0.5ms
  16.         TH1=0XF3;                                //計(jì)數(shù)器初始值設(shè)置,注意波特率是4800的
  17.         TL1=0XF3;
  18.         TR1=1;                                        //打開計(jì)數(shù)器
  19.         IT0=1;                                                                                //外部中斷INT1下降沿觸發(fā)
  20.         EX0=1;                                                                                //允許外部中斷INT1
  21.         ET0=1;                                                                                //允許定時(shí)器T0中斷
  22.         TR0=1;                                                                                //啟動(dòng)定時(shí)器T0
  23.         EA=1;                                                                                        //打開總中斷
  24. }

  25. /*******************************************************************************
  26. * 函數(shù)名         :UsartInit()
  27. * 函數(shù)功能                   :設(shè)置串口
  28. * 輸入           : 無(wú)
  29. * 輸出                  : 無(wú)
  30. *******************************************************************************/
  31. void UsartInit()
  32. {
  33.         SCON=0X50;                        //設(shè)置為工作方式1
  34.         TMOD=0X20;                        //設(shè)置計(jì)數(shù)器工作方式2
  35.         PCON=0X80;                        //波特率加倍
  36.         TH1=0XF3;                                //計(jì)數(shù)器初始值設(shè)置,注意波特率是4800的
  37.         TL1=0XF3;
  38.         TR1=1;                                        //打開計(jì)數(shù)器
  39. }
  40. void time0() interrupt 1    //T0中斷,每0.5ms計(jì)數(shù)一次
  41. {
  42.         TH0=0xfe;                                                                        //重新載入定時(shí)參數(shù)
  43.         TL0=0x0c;
  44.         times++;                                                                        //計(jì)算每位的寬度
  45. }

  46. void infrared()interrupt 0                //外部中斷,接收一個(gè)數(shù)據(jù)位
  47. {                                                                                                                //每接收到一個(gè)下降沿,中斷發(fā)生一次
  48.         static bit startflag;                        //定義“開始接收”標(biāo)志
  49.         static uchar i;
  50.         if(startflag)                                                        //開始接收標(biāo)志
  51.         {
  52.                 if(times<32 && times>=16)
  53.                         i=0;                                                                        //記下引導(dǎo)碼長(zhǎng)度(正常為9ms)
  54.                 orders[i]=times;                                //記錄一個(gè)數(shù)據(jù)位的長(zhǎng)度
  55.                 times=0;                                                                //下次中斷發(fā)生重新計(jì)數(shù)
  56.                 i++;                                                                                //數(shù)組指針指向下個(gè)存儲(chǔ)單元
  57.                 if(i==33)                                                                //如果記滿了32字節(jié)數(shù)據(jù)和引導(dǎo)碼
  58.                 {
  59.                         overflag=1;                                                //建立“已記滿”標(biāo)志
  60.                         i=0;                                                                        //數(shù)組指針指向開頭
  61.                 }
  62.         }
  63.         else                                                                                        //如果尚未開始接收數(shù)據(jù)
  64.         {
  65.                 startflag=1;                                                //建立“開始接收”標(biāo)志
  66.                 times=0;
  67.         }
  68. }

  69. void process()                                                                //把接收33字節(jié)序列信息轉(zhuǎn)換成地址和數(shù)據(jù)代碼
  70. {
  71.         uchar i,j,k=1;                                                //指向33字節(jié)數(shù)組,跳過(guò)引導(dǎo)段計(jì)數(shù)
  72.         for(i=0;i<4;i++)                                        //處理四組數(shù)據(jù)
  73.         {
  74.                 for(j=1;j<=8;j++)                                //處理一組數(shù)據(jù)8字節(jié)
  75.                 {
  76.                         IRCODE[i]>>=1;                                //先假定當(dāng)前位為“0”
  77.                         if(orders[k]>3)
  78.                                 IRCODE[i]|=0x80;                //大于1.5ms為“1”
  79.                         k++;
  80.                 }
  81.         }
  82.         datafinish=1;
  83. }

  84. void main()
  85. {
  86.         uchar i;
  87.         initial();                                                        //初始化
  88.         while(1)                                                                //等待中斷發(fā)生
  89.         {
  90.                 if(Updata ==1)
  91.                 {
  92.                         Updata = 0;
  93.                         for(i=0;i<4;i++)
  94.                         {
  95.                                 SBUF=IRCODE[i];     //將接收到的數(shù)據(jù)放入到發(fā)送寄存器
  96.                                 while(!TI);                         //等待發(fā)送數(shù)據(jù)完成
  97.                                 TI=0;                                                 //清除發(fā)送完成標(biāo)志位
  98.                         }
  99.                 }
  100.                 if(overflag)                                        //數(shù)據(jù)接收完畢
  101.                 {
  102.                         process();                                        //處理數(shù)據(jù),完成標(biāo)志datafinish
  103.                         overflag=0;
  104.                 }
  105.                 if(datafinish)
  106.                 {
  107.                         datafinish=0;
  108.                         Updata = 1;
  109.                 }
  110.                
  111.         }
  112. }
  113. ……………………

  114. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
IrSend_UartSend_UartReceive.rar (150.92 KB, 下載次數(shù): 64)



評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:516922 發(fā)表于 2019-4-20 09:48 | 只看該作者
謝謝分享
回復(fù)

使用道具 舉報(bào)

板凳
ID:516953 發(fā)表于 2019-4-20 10:21 | 只看該作者
謝謝分享
回復(fù)

使用道具 舉報(bào)

地板
ID:45306 發(fā)表于 2019-4-20 11:47 | 只看該作者

謝謝分享
回復(fù)

使用道具 舉報(bào)

5#
ID:417092 發(fā)表于 2019-4-26 11:45 | 只看該作者
回復(fù)

使用道具 舉報(bào)

6#
ID:417092 發(fā)表于 2019-4-26 11:46 | 只看該作者
回復(fù)

使用道具 舉報(bào)

7#
ID:333678 發(fā)表于 2019-4-27 05:52 | 只看該作者
謝謝分享。
回復(fù)

使用道具 舉報(bào)

8#
ID:561971 發(fā)表于 2019-8-25 10:52 | 只看該作者
謝謝分享
回復(fù)

使用道具 舉報(bào)

9#
ID:384562 發(fā)表于 2019-8-28 13:01 | 只看該作者
樓主能不能分享一下你的仿真
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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