FMUSER Wirless Transmit Video And Audio More Easier !
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org ->Afrikaans
sq.fmuser.org ->Albanian
ar.fmuser.org ->Arabic
hy.fmuser.org ->Armenian
az.fmuser.org ->Azerbaijani
eu.fmuser.org ->Basque
be.fmuser.org ->Belarusian
bg.fmuser.org ->Bulgarian
ca.fmuser.org ->Catalan
zh-CN.fmuser.org ->Chinese (Simplified)
zh-TW.fmuser.org ->Chinese (Traditional)
hr.fmuser.org ->Croatian
cs.fmuser.org ->Czech
da.fmuser.org ->Danish
nl.fmuser.org ->Dutch
et.fmuser.org ->Estonian
tl.fmuser.org ->Filipino
fi.fmuser.org ->Finnish
fr.fmuser.org ->French
gl.fmuser.org ->Galician
ka.fmuser.org ->Georgian
de.fmuser.org ->German
el.fmuser.org ->Greek
ht.fmuser.org ->Haitian Creole
iw.fmuser.org ->Hebrew
hi.fmuser.org ->Hindi
hu.fmuser.org ->Hungarian
is.fmuser.org ->Icelandic
id.fmuser.org ->Indonesian
ga.fmuser.org ->Irish
it.fmuser.org ->Italian
ja.fmuser.org ->Japanese
ko.fmuser.org ->Korean
lv.fmuser.org ->Latvian
lt.fmuser.org ->Lithuanian
mk.fmuser.org ->Macedonian
ms.fmuser.org ->Malay
mt.fmuser.org ->Maltese
no.fmuser.org ->Norwegian
fa.fmuser.org ->Persian
pl.fmuser.org ->Polish
pt.fmuser.org ->Portuguese
ro.fmuser.org ->Romanian
ru.fmuser.org ->Russian
sr.fmuser.org ->Serbian
sk.fmuser.org ->Slovak
sl.fmuser.org ->Slovenian
es.fmuser.org ->Spanish
sw.fmuser.org ->Swahili
sv.fmuser.org ->Swedish
th.fmuser.org ->Thai
tr.fmuser.org ->Turkish
uk.fmuser.org ->Ukrainian
ur.fmuser.org ->Urdu
vi.fmuser.org ->Vietnamese
cy.fmuser.org ->Welsh
yi.fmuser.org ->Yiddish
Name :: RF transmitter BH1415F
 
     Time :06 -07-06
     Functions: control BH1415F FM transmitter frequency range (88 ~ 108Hz) MCU: ATMEGA8
     Write: LCJ
************************************************** ************ /
/ * ___________________________________________________
  CE ___ |
| __________
           ________________
  CK _____ | | __ | | __ | | __ | | __ | | _ ---- _ | | __ | | __ |
| __________
         __________
  DA____ | D0 | __ | D1 | __ | D2 | __ | D3 | __ | D4 | __
       ______
----- _ | PD | __ | T1 | __ | T2 | __________
* /
/ **********************************
   Digital FM transmitter program
*********************************** /
/ / Header file
# Include <iom8v.h> / / SCM Model Options
# Include <macros.h> / / bit definitions
# Include <eeprom.h> / / EEPROM memory
/ / Crystal frequency
# Define fosc 6000000 / / crystal 6MHZ
# Define baud 9600 / / baud rate
# Define open_radio (PINB & 0B00000100) / / boot
# Define function_open (PORTB | = (1 << 4)) / / control boot
# Define function_close (PORTB & = ~ (1 << 4)) / / control shutdown
# Define open_save (PINB & 0B00000100) / / open storage station
# Define save_ensure (PINB & 0B00000100) / / storage station determines
# Define adjust_station (PINB & 0B00000100) / / regulation kept good radio
# Define F_ADD (PINB & 0B00001000) / / frequency plus
# Define F_REDUCE (PINB & 0B00010000) / / frequency less reduce
/ / Unsigned char F_DATA_H, F_DATA_L ;/ / frequency of high and low bit
unsigned char open_radio_flag ;/ / boot flag
/ / Unsigned char F_flag_H ;/ / frequency storage of high
/ / Unsigned char F_flag_L ;/ / low frequency storage
unsigned char LCD_display_H ;/ / LCD high
unsigned char LCD_display_L ;/ / LCD low
unsigned char function_flag ;/ / save Taiwan flag
unsigned char save_dais_flag ;/ / deposit determined logo
# Define save1_H (PORTC | = (1 << 4)) / / status indication to defend Taiwan
# Define save2_H (PORTC | = (1 << 5)) / / Paul station indicating success
# Define save1_L (PORTC & = ~ (1 << 4))
# Define save2_L (PORTC & = ~ (1 << 5))
# Define LED_H (PORTD | = (1 << 7))
# Define CE_H (PORTB | = (1 << 0)) / / 15 CE
# Define CE_L (PORTB & = ~ (1 << 0))
# Define CK_H (PORTB | = (1 << 1)) / / 16 CLOCK
# Define CK_L (PORTB & = ~ (1 << 1))
# Define DA_H (PORTB | = (1 << 5)) / / 17 DATA
# Define DA_L (PORTB & = ~ (1 << 5))
/ / # Define LCD_display_OUT PORTB
/ / # Define LCD_display_control PORTC
/ / Unsigned char LCD_display_data [8] [4];
unsigned char display_character [10] = {0x3f, 0X06, 0X5B, 0X4F,
0X66, 0X6D, 0X7D, 0X07, 0X7F, 0X6F} ;/ / matrix 1, 2, 3, 4, 5, 6, 7, 8, 9
unsigned char EEPROM_READ_DATA ;/ / read the saved data
unsigned char EEPROM_READ_NUMBER ;/ / read the saved address
/ ************************************************* ******* /
unsigned char display_one ;/ / display bits
unsigned char display_ten ;/ / display ten
unsigned char display_hundred ;/ / display one hundred
unsigned char display_thousand ;/ / display one thousand
/ ************************************************* *******
                  Display data buffer
************************************************** ****** /
unsigned char temp_display_one;
unsigned char temp_display_ten;
unsigned char temp_display_hundred;
unsigned char temp_display_thousand;
/ ************************************************* ******
               To control BH1415 data buffer
************************************************** * /
unsigned char temp_BH1415_one;
unsigned char temp_BH1415_ten;
unsigned char temp_BH1415_hundred;
unsigned char temp_BH1415_thousand;
/ ************************************************* * /
unsigned char BH1415_one ;/ / BH1415 control bits
unsigned char BH1415_ten ;/ / BH1415 control ten
unsigned char BH1415_hundred ;/ / BH1415 control one hundred
/ ************************************************* * /
unsigned char adjust_PS8889_OUT ;/ / output control number
unsigned char adjust_PS8889_control [9] ;/ / control array
/ / Unsigned char adjust_station_number ;/ / check the number of bits of the array
unsigned char adjust_save_address ;/ / save address
unsigned char adjust_save_function ;/ / save function
/ ************************************************* ******* /
unsigned char temp_BH1415_L ;/ / control the BH1415 low 8
unsigned char temp_BH1415_H ;/ / control BH1415 8
/ **************************************** /
void delay_ms (void);
void delay_xs (unsigned char x);
void adjust_station_OUT (void);
void station_save_IN (void);
void EEPROM_rite (unsigned int uAddr, unsigned char uData);
void EEPROM_read (unsigned int uAddr);
void F_ADD_function (void);
void F_REDUCE_function (void);
void control_BH1415_and_display (void);
void LCD_display (unsigned char display_data, unsigned char
function_number);
void control_BH1415 (void);
void BH1415_OUT (unsigned char control_F_DATA, unsigned char
control_number);
/ ************************************************* ****** /
/ / Delay subroutine
void delay_xs (unsigned char x)
{
   unsigned char a;
   for (a = 0; a <x; a + +)
   {
     delay_ms ();
  }
}
void delay_ms (void)
{
  unsigned char aa, bb;
  for (aa = 0; aa <50; aa + +)
  {
     for (bb = 0; bb <100; bb + +);
  }
}
/ *********************************
        Following is a reading desk function
********************************** /
void adjust_station_OUT (void)
{/ / Store a good radio regulation
   EEPROM_read (EEPROM_READ_NUMBER);
   temp_display_one = EEPROM_READ_DATA;
   EEPROM_READ_NUMBER + +;
 
   EEPROM_read (EEPROM_READ_NUMBER);
   temp_display_ten = EEPROM_READ_DATA;
   EEPROM_READ_NUMBER + +;
 
   EEPROM_read (EEPROM_READ_NUMBER);
   temp_display_hundred = EEPROM_READ_DATA;
   EEPROM_READ_NUMBER + +;
 
   EEPROM_read (EEPROM_READ_NUMBER);
   temp_display_thousand = EEPROM_READ_DATA;
   EEPROM_READ_NUMBER + +;
  
}
void station_save_IN (void)
{/ / Store radio function
  EEPROMwrite (adjust_save_address, temp_display_one);
  adjust_save_address + +;
 
  EEPROMwrite (adjust_save_address, temp_display_ten);
  adjust_save_address + +;
 
  EEPROMwrite (adjust_save_address, temp_display_hundred);
  adjust_save_address + +;
 
  EEPROMwrite (adjust_save_address, temp_display_thousand);
  adjust_save_address + +;
}
/ *********************************
     EEPROM read function
********************************** /
void EEPROM_read (unsigned int uAddr)
{/ / Read EEPROM function
  while (EECR & (1 << EEWE));
  EEAR = uAddr;
  EECR | = (1 << EERE);
  EEPROM_READ_DATA = EEDR;
}
/ ************************************
        Here is the frequency gradually add function
************************************* /
void F_ADD_function (void)
{/ / Frequency gradually increased function, / / frequency decreasing function initialization F_DATA_H = 0X03, F_DATA_L = 0X66
    if (temp_display_thousand> = 0x01)
   {
     if (temp_display_ten> = 0x08)
  {/ / Limit the maximum frequency 108.0MHZ
     temp_display_one = 0x00;
  temp_display_ten = 0x08;
  temp_display_hundred = 0x00;
  temp_display_thousand = 0x01;
  }
  else
  goto ADD;
  }
  else
  {
ADD: temp_display_one + +;
 if (temp_display_one> = 0x0a)
 {
     temp_display_one = 0x00;
     temp_display_ten + +;
     if (temp_display_ten> = 0x0a)
        {
          temp_display_ten = 0x00;
       temp_display_hundred + +;
       if (temp_display_hundred> = 0x0a)
       {
           temp_display_hundred = 0x00;
     temp_display_thousand + +;
     if (temp_display_thousand> = 0x01)
          {
      if (temp_display_ten> = 0x08)
      {
         temp_display_one = 0x00;
         temp_display_ten = 0x08;
         temp_display_hundred = 0x00;
      temp_display_thousand = 0x01;
         }
           }
     
        }
  
       }
      }
  
 }
   control_BH1415_and_display () ;/ / output control BH1415 launch
 
}
/ ****************************************
   Here is the frequency decreasing function
**************************************** /
void F_REDUCE_function (void)
{/ / Frequency gradually increased function, / / frequency decreasing function initialization F_DATA_H = 0X03, F_DATA_L = 0X66
   if (temp_display_thousand <= 0x00)
   {/ / Limit minimum frequency 87.0MHZ
     if (temp_display_hundred <= 0x08)
  {
    if (temp_display_ten <= 0x07)
    {
      if (temp_display_one <= 0x00)
      {
          temp_display_one = 0x00;
       temp_display_ten = 0x07;
       temp_display_hundred = 0x08;
       }
      else
   goto REDUCE;
     }
  else
  goto REDUCE;
  }
  else
  goto REDUCE;
  }
  else
  {
REDUCE: if (temp_display_one <= 0x00)
 {/ / Decreasing Start
     temp_display_one = 0x0a;
     if (temp_display_ten <= 0x00)
        {
          temp_display_ten = 0x0a;
       if (temp_display_hundred <= 0x00)
       {
          temp_display_hundred = 0x0a;
    temp_display_thousand = 0x00;
       }
   temp_display_hundred -;
     }
  temp_display_ten -;
      }
    temp_display_one -;
  
 }
 control_BH1415_and_display ();
}
void control_BH1415_and_display (void)
{/ / Control BH1415 and display output
    unsigned char temp_one, temp_ten, temp_hundred, temp_one_L;
 unsigned int temp_BH1415_data1,
temp_BH1415_data2, temp_BH1415_data3;
 / ************************************************ /
 / / Convert control BH1415 computing.
 temp_BH1415_data1 = temp_display_thousand * 1000
+ Temp_display_hundred * 100 + temp_display_ten * 10 + temp_display_one;
 temp_BH1415_data2 = temp_BH1415_data1;
 temp_BH1415_data3 = temp_BH1415_data2 >> 8;
 temp_ten = temp_BH1415_data3;
 temp_BH1415_L = temp_BH1415_data1;
 temp_BH1415_one = temp_BH1415_L & 0x0f;
 temp_BH1415_ten = temp_BH1415_L >> 4 & 0x0f;
 temp_BH1415_hundred = temp_ten & 0x0f;
 temp_BH1415_H = temp_ten | 0x48
 
 / * Temp_ten = temp_BH1415_ten << 4;
 temp_ten = temp_ten &0xf0;
 temp_BH1415_L = temp_ten + temp_BH1415_one;
 temp_BH1415_H = temp_BH1415_hundred | 0x48 * /
 / / Temp_BH1415_L = temp_ten + temp_BH1415_one
 
 / **************************************** /
 / / Output 16-bit serial data control BH1415
 CE_L;
 CK_L;
 DA_L;
 NOP ();
 NOP ();
 NOP ();
 CE_H;
    BH1415_OUT (temp_BH1415_L, 0x08);
 CK_L;
 BH1415_OUT (temp_BH1415_H, 0x08);
 CE_L;
 CK_L;
 DA_L;
}
/ *******************************************
    Here is the output function
******************************************* /
void LCD_display (unsigned char display_data, unsigned char
function_number)
{/ / LCD output
   delay_ms ();
   PORTC = function_number;
   PORTD = display_character [display_data];
}
/ ********************************************
   Here is the control BH1415 ~ ~ ~ 8-bit transmit serial data function
********************************************* /
void BH1415_OUT (unsigned char control_F_DATA, unsigned char
control_number)
{/ / Control BH1415
    unsigned char i;
    for (i = 0; i <8; i + +)
    {
      if (control_F_DATA & 0x01 == 0x01)
        DA_H;
      else
       DA_L;
    NOP ();
    NOP ();
       CK_H;
       delay_ms ();
       NOP ();
       NOP ();
       CK_L;
       NOP ();
       NOP ();
      control_F_DATA >> = 1;
   delay_ms ();
   }
}
/ ***************************************
    Below is kept Desk function
**************************************** /
void check_save_dais (void)
{/ / Save table function
    display_one = 0x01;
 display_ten = 0x00;
    display_hundred = 0x00;
 display_thousand = 0x00;
 adjust_save_address = 0x00 ;/ / initialized memory table address
    while (save_dais_flag <= 5)
 {
     if (open_radio == 0)
     {/ / Save the station determines
       delay_xs (20);
    if (open_radio == 0)
    {
       station_save_IN () ;/ / EEPRAM save Taiwan and function
    save_dais_flag = 6;
    delay_xs (20);
      }
      }
    else if (F_ADD == 0X00)
    {/ / Save the station plus
       delay_xs (20);
       if (F_ADD == 0X00)
    {
       display_one + +;
       adjust_save_address + = 4; / / save address plus four
       if (display_one> = 9)
    {/ / Limit memory station number 9
       adjust_save_address = 36;
    display_one = 9;
    }
         }
       }
      else if (F_REDUCE == 0)
      {/ / Save desk Less
         delay_xs (20);
         if (F_REDUCE == 0)
         {
      display_one -;
      adjust_save_address - =
4 ;/ / temp_adjust_save_address-4 ;/ / memory address minus four
         if (display_one <= 0x01)
      {
         adjust_save_address = 0x00;
      display_one = 0x01;
      }
          }
    
        }
   / *********************************
    Output displays the deposit station location
    ********************************* /
      LCD_display (display_one, 0xFE);
      LCD_display (display_ten, 0xFD);
      LED_H;
      LCD_display (display_hundred, 0xFB);
      LCD_display (display_thousand, 0xF7);
         }
         save_dais_flag = 0x00 ;/ / memory table to determine the flag is cleared
   function_flag = 0x00 ;/ / save Taiwan flag is cleared
  }
void main (void)
{
   / / Port initialization
   unsigned char i, aaw, y, x, TEMP;
   DDRB = 0X00;
   PORTB = 0XFF;
   DDRC = 0XFF;
   PORTC = 0X0F;
   DDRD = 0XFF;
   PORTD = 0XFF;
    x = 0x00;
    y = 0x9d;
   PORTC = y;
   CE_L;
   CK_L;
   DA_L;
   
   / / Start frequency 87.0MHZ
   temp_display_one = 0x00;
   temp_display_ten = 0x07;
   temp_display_hundred = 0x08;
   temp_display_thousand = 0x00;
  / * Control the BH1415 data buffer * /
   temp_BH1415_one = 0x06;
   temp_BH1415_ten = 0x06;
   temp_BH1415_hundred = 0x03;
   temp_BH1415_thousand = 0x00;
   / / Variable initialization
   / / F_DATA_H = 0x00;
  / / F_DATA_L = 0x00; / / frequency of high and low bit
   
  / / F_flag_H = 0x00 ;/ / frequency storage high
  / / F_flag_L = 0x00 ;/ / store low frequency
  
  / / LCD_display_H = 0x00 ;/ / LCD high
  / / LCD_display_L = 0x00 ;/ / LCD low
  
   EEPROM_READ_DATA = 0x00 ;/ / read the saved data
   EEPROM_READ_NUMBER = 0x00 ;/ / read the saved address
  
   / / Adjust_PS8889_OUT = 0x00 ;/ / output control number
  
  / / Adjust_station_number = 0x00 ;/ / check the number of bits of the array
  
   adjust_save_address = 0x00 ;/ / memory address is cleared
   adjust_save_function = 0x00 ;/ / save function
  
/ ************************************************* ******* /
   temp_BH1415_L = 0x00 ;/ / control the BH1415 low 8
   temp_BH1415_H = 0x00 ;/ / control BH1415 8
 
   open_radio_flag = 0x00 ;/ / boot marked cleared
  
   function_flag = 0x00 ;/ / save Taiwan flag
  
   save_dais_flag = 0 ;/ / memory table to determine the flag is cleared
  
   while (1)
  {
     if (open_radio == 0)
     {/ / Key query boot
       delay_xs (10);
    if (open_radio == 0)
    {
      open_radio_flag = 1;
     }
 while (open_radio_flag == 1)
   {/ / Key query, the transfer station
     if (open_radio == 0)
     {
     delay_xs (10);
     if (open_radio == 0)
  {
     do
     {/ / Long press to save Taiwan and function
         delay_xs (10);
         function_flag + +;
      if (function_flag> = 50)
     {
         save1_L;
         delay_xs (250);
         save1_H;
      }
       
       }
      while (open_radio <= 0);
         if (function_flag> = 50)
         {
         check_save_dais (); / / jump to keep Taiwan functions
        function_flag = 0x00 ;/ / save Taiwan flag is cleared
     }
    else
     {
    if (EEPROM_READ_NUMBER> = 36)
     {/ / Read tune the station a limit to the number of cycles output: 0 to 9 units
         EEPROM_READ_NUMBER = 0;
    }
         adjust_station_OUT () ;/ / read the output of the transfer station
     function_flag = 0x00 ;/ / save Taiwan flag is cleared
    }
   }
      }
     else if (F_ADD == 0)
     {/ / Frequency plus
       delay_xs (10);
       if (F_ADD == 0X00)
       F_ADD_function () ;/ / frequency increases
      }
     else if (F_REDUCE == 0)
     {/ / Frequency reduction
       delay_xs (10);
       if (F_REDUCE == 0X00)
       F_REDUCE_function () ;/ / frequency reduction
      }
 / / Output display
 LCD_display (temp_display_one, 0xFE);
 LCD_display (temp_display_ten, 0xFD);
 LED_H;
 LCD_display (temp_display_hundred, 0xFB);
 LCD_display (temp_display_thousand, 0xF7);
Our other product:
![]()  | 
            ![]()  | 
        |
![]()  | 
            ![]()  | 
            ![]()  | 
        
Enter email to get a surprise
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org ->Afrikaans
sq.fmuser.org ->Albanian
ar.fmuser.org ->Arabic
hy.fmuser.org ->Armenian
az.fmuser.org ->Azerbaijani
eu.fmuser.org ->Basque
be.fmuser.org ->Belarusian
bg.fmuser.org ->Bulgarian
ca.fmuser.org ->Catalan
zh-CN.fmuser.org ->Chinese (Simplified)
zh-TW.fmuser.org ->Chinese (Traditional)
hr.fmuser.org ->Croatian
cs.fmuser.org ->Czech
da.fmuser.org ->Danish
nl.fmuser.org ->Dutch
et.fmuser.org ->Estonian
tl.fmuser.org ->Filipino
fi.fmuser.org ->Finnish
fr.fmuser.org ->French
gl.fmuser.org ->Galician
ka.fmuser.org ->Georgian
de.fmuser.org ->German
el.fmuser.org ->Greek
ht.fmuser.org ->Haitian Creole
iw.fmuser.org ->Hebrew
hi.fmuser.org ->Hindi
hu.fmuser.org ->Hungarian
is.fmuser.org ->Icelandic
id.fmuser.org ->Indonesian
ga.fmuser.org ->Irish
it.fmuser.org ->Italian
ja.fmuser.org ->Japanese
ko.fmuser.org ->Korean
lv.fmuser.org ->Latvian
lt.fmuser.org ->Lithuanian
mk.fmuser.org ->Macedonian
ms.fmuser.org ->Malay
mt.fmuser.org ->Maltese
no.fmuser.org ->Norwegian
fa.fmuser.org ->Persian
pl.fmuser.org ->Polish
pt.fmuser.org ->Portuguese
ro.fmuser.org ->Romanian
ru.fmuser.org ->Russian
sr.fmuser.org ->Serbian
sk.fmuser.org ->Slovak
sl.fmuser.org ->Slovenian
es.fmuser.org ->Spanish
sw.fmuser.org ->Swahili
sv.fmuser.org ->Swedish
th.fmuser.org ->Thai
tr.fmuser.org ->Turkish
uk.fmuser.org ->Ukrainian
ur.fmuser.org ->Urdu
vi.fmuser.org ->Vietnamese
cy.fmuser.org ->Welsh
yi.fmuser.org ->Yiddish

FMUSER Wirless Transmit Video And Audio More Easier !
Contact
Address:
No.305 Room HuiLan Building No.273 Huanpu Road Guangzhou China 510620
Categories
Newsletter
 
 