这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 企业专区 » Renesas » campozeng的进程帖★基于RL78/G13的双向信息监测传送系统项目总结

共36条 1/4 1 2 3 4 跳转至

campozeng的进程帖★基于RL78/G13的双向信息监测传送系统项目总结

工程师
2012-08-14 09:12:50     打赏
最新更新:

 【10月23日】基于RL78/G13的双向信息监测传送系统项目总结

 【10月8日】雙向無線信息監控系統上位機程序功能展示(圖)

**********開發前準備區****************
【8月2日】 在論壇申請開發板

1楼

 

【8月10日】

收到電話說將郵寄開發板給我    

【8月11日】

資料下載,學習中    

【8月14日】

項目簡單介紹

4樓

 

【8月14日】

收到開發板,上圖

9樓

 


*********開發前學習過程及內容展示區*********

【8月23日】

定時器中斷做的呼吸燈,給用PWM控制亮度的朋友參考(可提供代碼) 11楼 视频

 【8月27日】

 AD+溫度傳感器+串口+上位機軟件實現溫度監控(可提供代碼)  18樓  視頻

 【8月28日】

 配合RFP通過串口進行程序燒錄(配圖,一看就會)  20樓  

 【8月28日】

 Applilet3生成蜂鳴器驅動代碼并成功驅動(So easy)  22樓  

 【8月30日】

 超炫幻彩跑马灯,可隨意調整模式、顏色、速度、亮度(可提供代碼)  24樓  视频

 【8月31日】

 GPIO INIT KeyBoard中斷測試(easy)  29樓  

  【9月3日】

 外部Nand Flash 讀寫操作(附底層代碼下載)  36楼  視頻

   【9月5日】

 RTC和LCD2004做的超強萬年歷,設定年月日,就可算出農歷和星期(可提供星期和農歷計算代碼)  43樓 視頻 

  【9月6日】

 RL78 /G13 開發板EEPROM仿真(即學即會,包學會)  47樓  教程

 【9月7日】

 DMA數據傳送(AD/ADCR和UART2/RXD2)(即學即會,即會即用,即用即成功)  54樓 教程 

 【9月10日】

 使用IICA0 讀寫EEPROM(附代碼下載)  57樓 圖文
代碼

 【9月10日】

 IO摸拟IIC读写EEPROM(附代碼下載)  58樓 代碼

 【9月12日】

 上位机控制PWM和H橋中的直流电机,正反轉,加減速(附代碼、視頻及教程下載)  59樓 代碼
教程
視頻
 【9月13日】  我的RTOS - uCOS-II  60樓  
  【9月17日】  低功耗模式運行測試(HALT & STOP)(附代碼下載)  64樓  代碼

 【10月17日】

SD卡讀寫操作手記1  73樓  手記
【10月18日】 SD卡讀寫操作手記2 74樓 手記
  SD卡讀寫操作(FAT文件系統)    
  ADPCM库驅動蜂鳴器    
  在線升級程序設計(bootloader)    
       
       
       

*********開發過程及成果展示區************

【8月14日】

由於還沒收到開發板,先做上位機程序見 5楼  圖

 【9月20日】

 雙向無線信息監控系統項目正式啟動(上圖)  67樓  圖
 【10月8日】  雙向無線信息監控系統上位機程序功能展示(圖)  69樓  圖
 【10月23日】  基于RL78/G13的双向信息监测传送系统项目总结    
       

本貼中所有代碼及參考資料可免費提供,有需要的可回貼留下email并注明需要什麽代碼及資料,我會發給大家。

有的代碼我沒有提供下載,并不是因為我不給大家,是因為我們使用的硬件不同,拿到了代碼也運行不了,所以就沒有提供了,但只要參考給出的核心代碼,同樣可以實現同樣功能的。


本貼將不斷更新,為大家帶來驚喜,請多多關注,謝謝。


基于RF2.4G的雙向溫度監測及信息傳送(聊天)系統簡介

利用公司現有的2.4G RF模塊進行通訊,傳送數據

由于要有收和發兩塊板才可以完成,而我手上只有一塊Renesas的開發板,所以我將用Renesas開發板做一個收發終端,再用我手上另外的一個開發板做另一個終端。

將會用VB寫一個簡單的介面程序,PC發出的數據傳送到Renesas開發板,Renesas開發板再通過RF 模塊將數據傳送到另一個終端。

完成后,就會像QQ一樣,擁有此終端的用戶可以進行聊天,并且可以共享溫度/濕度/氣壓等數據。

與QQ不同的是,傳送數據用的是無線電波,不是互聯網,并且距離有限,只能在信號范圍內進行通信。

Renesas開發板將作為主控制終端,不僅可以向各終端收發信息,還將對各附屬終端進行控制。Renesas開發板將主動收集各終端上報的數據,并進行分析,以便后續實現擴展功能。





关键词: campozeng     进程     基于     双向     信息     监测         

工程师
2012-08-14 13:47:35     打赏
2楼
基于RF2.4G的雙向溫度監測及信息傳送(聊天)系統簡介

利用公司現有的2.4G RF模塊進行通訊,傳送數據

由于要有收和發兩塊板才可以完成,而我手上只有一塊Renesas的開發板,所以我將用Renesas開發板做一個收發終端,再用我手上另外的一個開發板做另一個終端。

將會用VB寫一個簡單的介面程序,PC發出的數據傳送到Renesas開發板,Renesas開發板再通過RF 模塊將數據傳送到另一個終端。

完成后,就會像QQ一樣,擁有此終端的用戶可以進行聊天,并且可以共享溫度/濕度/氣壓等數據。

與QQ不同的是,傳送數據用的是無線電波,不是互聯網,并且距離有限,只能在信號范圍內進行通信。

Renesas開發板將作為主控制終端,不僅可以向各終端收發信息,還將對各附屬終端進行控制。Renesas開發板將主動收集各終端上報的數據,并進行分析,以便后續實現擴展功能。

工程师
2012-08-14 15:21:23     打赏
3楼
開發板還沒有收到,先做上位介面



工程师
2012-08-15 11:04:24     打赏
4楼




開發板收到,展示一下給大家看看,公司電腦沒有光盤,還沒裝上驅動,暫時還沒有試用

稍候一段時間內,我將把我的開發過程及成果展示給大家



工程师
2012-08-23 15:19:10     打赏
5楼
用定時器中斷做的呼吸燈,給要用PWM控制亮度的朋友一個參考

視頻請參考
http://v.eepw.com.cn/video/play/id/1917


PWM調光原理:通過對LED的開關控制實現不同的亮度,當開關的頻率超過了100 HZ,人的肉眼就感覺不到閃了。

呼吸燈原理:PWM的占空比由5%變為6%,7%。。。。。。100%然后再變小99%,98%,97%。。。。。。5%。。。。。。不斷循环。




代碼如下:

定義寄存器如下:

unsigned char LedTimerCount;    //
unsigned char LedOnCount;
unsigned int LedStepCount;
unsigned char Direction;

用定時器產生一個4K的中斷,中斷代碼如下:
#pragma vector = INTTM00_vect
__interrupt void MD_INTTM00(void)
{
    TMIF00 = 0U;                              //clear int flag
    LedStepCount++;
    if(LedStepCount>300)         
   {
      LedStepCount=0; 
      if(Direction==0) 
        {
          LedOnCount++;
          if(LedOnCount>98)
          {
            Direction=1;
          }
        }
        else
        {
          LedOnCount--;
          if(LedOnCount<2)
          {
            Direction=0;
          }
        }
    }
    LedTimerCount++;
    if(LedTimerCount>100)
    {
        LedTimerCount=0;
    }
    if(LedTimerCount>LedOnCount)
    {
        P7_bit.no7=1;                                        //led off
    }
    else
    {
        P7_bit.no7=0;                                       //led on
    }   
}

工程师
2012-08-24 13:03:09     打赏
6楼

贊就置頂啊,,,,呵呵


工程师
2012-08-27 21:18:15     打赏
7楼

內部溫度傳感器+串口(UART2)+上位機軟件實現溫度監控

視頻:http://v.eepw.com.cn/video/play/id/1920

測溫度用了平均值濾波法,下面介紹幾種常用的軟件濾波方法

1.平均值濾波法:連繼讀到幾個數值,求平均數。
       缺點:需要連續多次進行AD轉換,占用CPU資源
       技巧:讀8次,和右移3位就得到平均值,可省去除法運算

2.移動平均值濾波法:建立一個數組記錄數據,每進行一次AD  轉換后,把最新數據移入數組,把最舊的數據移出數組。再求平均值
       優點:節省CPU資源

3.去頭去尾求平均值:就像奧運比賽一樣,把最大最小的數據去除了,再求平均數。
       優點:把最大最小值去掉了,結果將更精確
   






下面是一些代碼,給大家參考一下,為了省時間,有很多代碼是系統生成的:


下面兩個子程序用于計算溫度:
/*
**-----------------------------------------------------------------------------
**
**  Abstract:
** This function stores the AD conversion results and calculates the temperature.
**
**  Parameters:
** None
**
**  Returns:
** None
**
**-----------------------------------------------------------------------------
*/
void ADC_Calculation_Temp(void)
{
    unsigned char i;
    unsigned short TempBuffer;
    g_temp_adcvalue=0x0000;
    for(i=0;i<8;i++)
    {
      ADS = _80_AD_INPUT_TEMPERSENSOR_0;
      AD_Start();
      /* Wait for the A/D conversion to complete */
      while(ADIF == 0);
      /* Clear ADC interrupt flag */
      ADIF = 0;
      AD_Read(&TempBuffer);                            // Store the conversion result in TempBuffer
      g_temp_adcvalue = + TempBuffer;
    }
    g_temp_adcvalue >>=3;                             // Get average
    temp = (float) 1.44 / g_ref_hexvalue;
    g_temperature = (float) (25 - ((((g_temp_adcvalue * temp) - 1) * 1000) / 3.6));      // Calculate the temperature value in 癈
    TempBuffer=(unsigned short)(g_temperature*10);    
    TXBuffer[0]=CMD_SETTING;       //command
    TXBuffer[1]=CMD_SEND_TEMPERATURE;      //command
    TXBuffer[2]=0x31;        //channel

    TXBuffer[3]=(unsigned char)(TempBuffer/100)+0x30;                           //Change the temperature to BCD
    TXBuffer[4]=(unsigned char)(TempBuffer%100/10)+0x30;
    TXBuffer[5]='.';
    TXBuffer[6]=(unsigned char)(TempBuffer%10)+0x30;
    TXBuffer[7]='C';
    TXBuffer[8]=CMD_END_DATA;
    UartTX(&TXBuffer[0]);                                                     //Send data to computer via UART2
    while(TXStatus!=TX_FINISH);
}


/*
**-----------------------------------------------------------------------------
**
**  Abstract:
** This function stores the AD conversion results and calculates the reference voltage.
**
**  Parameters:
** None
**
**  Returns:
** None
**
**-----------------------------------------------------------------------------
*/
void ADC_Calculation_Ref(void)
{
    unsigned char i;
    unsigned short TempBuffer;
    g_ref_hexvalue=0x0000;
    for(i=0;i<8;i++)
    {
      ADS = _81_AD_INPUT_TEMPERSENSOR_1;               //select internal temperature sensor
      AD_Start();
      /* Wait for the A/D conversion to complete */
      while(ADIF == 0);  
      /* Clear ADC interrupt flag */
      ADIF = 0;
      AD_Read(&TempBuffer);                            // Store the conversion result in TempBuffer
      g_ref_hexvalue = + TempBuffer;
    }
    g_ref_hexvalue >>=3;                               //get average
}


下面是串口發送數據及中斷程序:


void UartTX(unsigned char *p)
{
        TXStatus=TX_START;
        SRMK2 = 1U;   /* Disable Reception Interrupt */
        SREMK2 = 1U;         /* Disable Reception error Interrupt */
        TXPointer=p;
        STMK2 = 1U; /* disable INTST0 interrupt */
        TXD2=*TXPointer++;                  // Send System on msg to host computer
        TXCount=1;
        STIF2 = 0U; /* clear INTST2 interrupt flag */
        STMK2 = 0U; /* enable INTST0 interrupt */
}



/*
**-----------------------------------------------------------------------------
**
**  Abstract:
** This function is INTST2 interrupt service routine.
**
**  Parameters:
** None
**
**  Returns:
** None
**
**-----------------------------------------------------------------------------
*/
#pragma vector = INTST2_vect
__interrupt void MD_INTST2(void)
{
    TXD2 = * TXPointer;                 // TX next character
    TXCount++;
    if (* TXPointer == CMD_END_DATA || TXCount==MAX_PACKET_LEN)              // TX over?
    {
          TXStatus=TX_FINISH;
          SRIF2 = 0U; /* clear INTSR2 interrupt flag */
          SRMK2 = 0U; /* enable INTSR2 interrupt */
          SREIF2 = 0U; /* clear INTSRE2 interrupt flag */
          SREMK2 = 0U; /* enable INTSRE2 interrupt */
          STMK2 = 1U; /* disable INTST0 interrupt */
    }
    TXPointer++;
}


工程师
2012-08-28 13:17:40     打赏
8楼

配合RFP通過串口數錄程序

1.IAR中的設置如下,生成hex文件


2.打開RFP程序,設置如下,并進行程序燒錄


注意:J6/J7/J8/J9跳線冒設到1-2,燒完后設到2-3就可以正常運行了。


工程师
2012-08-28 16:45:22     打赏
9楼
用Applilet3生成蜂鳴器代碼并成功驅動

太方便了,都完全不用自己寫代碼。

1、设置系统时钟,注意WDT的设置,如果没有关闭,程序中要加入喂狗。



2、根据你要驱动的蜂鸣器的特性,设置输出频率


3、生成代码

工程师
2012-08-29 08:02:04     打赏
10楼
精彩不斷,精彩繼續,請大家多多支持

共36条 1/4 1 2 3 4 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]