找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2766|回复: 0
打印 上一主题 下一主题
收起左侧

红外发射程序+电路(N76E003)

[复制链接]
跳转到指定楼层
楼主
用于红外检测加聚光罩距离可达100米左右


单片机源程序如下:
  1. /*---------------------------------------------------------------------------------------------------------*/
  2. /*                                                                                                         */
  3. /* Copyright(c) 2016 Nuvoton Technology Corp. All rights reserved.                                         */
  4. /*                                                                                                         */
  5. /*---------------------------------------------------------------------------------------------------------*/

  6. //***********************************************************************************************************
  7. //  Nuvoton Technoledge Corp.
  8. //  Website: http://www.nuvoton.com
  9. //  E-Mail : MicroC-8bit@nuvoton.com
  10. //  Date   : Apr/21/2016
  11. //***********************************************************************************************************

  12. #include "N76E003.h"
  13. #include "Common.h"
  14. #include "Delay.h"
  15. #include "SFR_Macro.h"
  16. #include "Function_define.h"

  17. //----------------------------------------------------------------------------------
  18. // UART0 baud rate initial setting
  19. //----------------------------------------------------------------------------------
  20. void InitialUART0_Timer1(UINT32 u32Baudrate)    //T1M = 1, SMOD = 1
  21. {
  22.                 P06_Quasi_Mode;                //Setting UART pin as Quasi mode for transmit
  23.                 P07_Quasi_Mode;                //Setting UART pin as Quasi mode for transmit
  24.        
  25.     SCON = 0x50;             //UART0 Mode1,REN=1,TI=1
  26.     TMOD |= 0x20;            //Timer1 Mode1
  27.    
  28.     set_SMOD;                //UART0 Double Rate Enable
  29.     set_T1M;
  30.     clr_BRCK;                //Serial port 0 baud rate clock source = Timer1

  31. #ifdef FOSC_160000
  32.     TH1 = 256 - (1000000/u32Baudrate+1);               /*16 MHz */
  33. #endif           
  34. #ifdef FOSC_166000
  35.     TH1 = 256 - (1037500/u32Baudrate);                              /*16.6 MHz */
  36. #endif
  37.     set_TR1;
  38.                 set_TI;                                                //For printf function must setting TI = 1
  39. }
  40. //---------------------------------------------------------------
  41. void InitialUART0_Timer3(UINT32 u32Baudrate) //use timer3 as Baudrate generator
  42. {
  43.                 P06_Quasi_Mode;                //Setting UART pin as Quasi mode for transmit
  44.                 P07_Quasi_Mode;                //Setting UART pin as Quasi mode for transmit       
  45.        
  46.     SCON = 0x50;     //UART0 Mode1,REN=1,TI=1
  47.     set_SMOD;        //UART0 Double Rate Enable
  48.     T3CON &= 0xF8;   //T3PS2=0,T3PS1=0,T3PS0=0(Prescale=1)
  49.     set_BRCK;        //UART0 baud rate clock source = Timer3

  50. #ifdef FOSC_160000
  51.                 RH3    = HIBYTE(65536 - (1000000/u32Baudrate)-1);                  /*16 MHz */
  52.                 RL3    = LOBYTE(65536 - (1000000/u32Baudrate)-1);                        /*16 MHz */
  53. #endif
  54. #ifdef FOSC_166000
  55.     RH3    = HIBYTE(65536 - (1037500/u32Baudrate));                         /*16.6 MHz */
  56.     RL3    = LOBYTE(65536 - (1037500/u32Baudrate));                         /*16.6 MHz */
  57. #endif
  58.     set_TR3;         //Trigger Timer3
  59.                 set_TI;                                         //For printf function must setting TI = 1
  60. }

  61. UINT8 Receive_Data_From_UART0(void)
  62. {
  63.     UINT8 c;
  64.     while (!RI);
  65.     c = SBUF;
  66.     RI = 0;
  67.     return (c);
  68. }

  69. void Send_Data_To_UART0 (UINT8 c)
  70. {
  71.     TI = 0;
  72.     SBUF = c;
  73.     while(TI==0);
  74. }


  75. //----------------------------------------------------------------------------------
  76. // UART1 baud rate initial setting
  77. //----------------------------------------------------------------------------------
  78. void InitialUART1_Timer3(UINT32 u32Baudrate) //use timer3 as Baudrate generator
  79. {
  80.                 P02_Quasi_Mode;                //Setting UART pin as Quasi mode for transmit
  81.                 P16_Quasi_Mode;                //Setting UART pin as Quasi mode for transmit
  82.        
  83.           SCON_1 = 0x50;           //UART1 Mode1,REN_1=1,TI_1=1
  84.     T3CON = 0x08;           //T3PS2=0,T3PS1=0,T3PS0=0(Prescale=1), UART1 in MODE 1
  85.                 clr_BRCK;
  86.        
  87. #ifdef FOSC_160000
  88.                 RH3    = HIBYTE(65536 - (1000000/u32Baudrate)-1);                  /*16 MHz */
  89.                 RL3    = LOBYTE(65536 - (1000000/u32Baudrate)-1);                        /*16 MHz */
  90. #endif
  91. #ifdef FOSC_166000
  92.                 RH3    = HIBYTE(65536 - (1037500/u32Baudrate));                          /*16.6 MHz */
  93.                 RL3    = LOBYTE(65536 - (1037500/u32Baudrate));                                /*16.6 MHz */
  94. #endif
  95.     set_TR3;         //Trigger Timer3
  96. }

  97. UINT8 Receive_Data_From_UART1(void)
  98. {
  99.     UINT8 c;
  100.    
  101.     while (!RI_1);
  102.     c = SBUF_1;
  103.     RI_1 = 0;
  104.     return (c);
  105. }

  106. void Send_Data_To_UART1 (UINT8 c)
  107. {
  108.     TI_1 = 0;
  109.     SBUF_1 = c;
  110.     while(TI_1==0);
  111. }


  112. /*==========================================================================*/
  113. #ifdef SW_Reset
  114. void SW_Reset(void)
  115. {
  116.     TA = 0xAA;
  117.     TA = 0x55;
  118.     set_SWRST;
  119. }
  120. #endif
  121. /*==========================================================================*/
复制代码

所有资料51hei提供下载:
红外发射程序(N76E003)原始.rar (191.04 KB, 下载次数: 43)


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表