痞酷網_PIGOO

 找回密碼
 立即註冊
!!! [系統偵測到廣告阻擋軟體] !!!

如果您覺得痞酷網對您有些許幫助,或者您認同痞酷網的理想,

那麼希望您將痞酷網設定為白名單.

並請在上論壇的時候,動動您的手指,用行動支持我們.

謝謝!
查看: 4265|回復: 12

左岸用STM32F103RBT6開發版做的 电感表

[複製鏈接]
發表於 2011-11-1 21:36:40 | 顯示全部樓層 |閱讀模式
對ARM有興趣可以參考看看

/******************************************************************************************
STM32F103RBT6 电感表 源程序 IAR5.3
作者:杨春亮  
2010-05-02  无锡新纺
******************************************************************************************/

#include "main.h"

extern u16 IC2Value ;
extern u32 Frequency ;
extern u32 L_UH ;
unsigned char p4[6]={'0','0','0','0','0','0'} ;

/*定义LCD1602--HC595--STM32的接口  
HC595_DS------PB7
HC595_CLK-----PB6
HC595_STCP----PB8
LCD1602_RS----PB9
LCD1602_EN----PD2
LCD1602_R/W---GND  
HC595_Q0------LCD1602_D7
HC595_Q1------LCD1602_D6
HC595_Q2------LCD1602_D5
HC595_Q3------LCD1602_D4
HC595_Q4------LCD1602_D3
HC595_Q5------LCD1602_D2
HC595_Q6------LCD1602_D1
HC595_Q7------LCD1602_D0
*/
#define DS_H       GPIO_SetBits(GPIOB, GPIO_Pin_7)
#define DS_L       GPIO_ResetBits(GPIOB, GPIO_Pin_7)
#define CLK_H      GPIO_SetBits(GPIOB, GPIO_Pin_6)
#define CLK_L      GPIO_ResetBits(GPIOB, GPIO_Pin_6)
#define STCP_H     GPIO_SetBits(GPIOB, GPIO_Pin_8)
#define STCP_L     GPIO_ResetBits(GPIOB, GPIO_Pin_8)
#define RS_H       GPIO_SetBits(GPIOB, GPIO_Pin_9)
#define RS_L       GPIO_ResetBits(GPIOB, GPIO_Pin_9)
#define EN_H       GPIO_SetBits(GPIOD, GPIO_Pin_2)
#define EN_L       GPIO_ResetBits(GPIOD, GPIO_Pin_2)

void LCD1602_init     (void);  
void LCD1602_clear    (void);  
void LCD1602_write_char  (unsigned char command,unsigned char data);  
void LCD1602_set_xy    (unsigned char x, unsigned char y);  
void LCD1602_write_string (unsigned char X,unsigned char Y,unsigned char *s);  
void WriteSIOByte     (unsigned char lcd );  

void GPIO_Configuration(void)
{  
  //定义一个GPIO结构体
  GPIO_InitTypeDef  GPIO_InitStructure;
  GPIO_ResetBits(GPIOB, GPIO_Pin_6);
  GPIO_ResetBits(GPIOB, GPIO_Pin_7);
  GPIO_ResetBits(GPIOB, GPIO_Pin_8);
  GPIO_ResetBits(GPIOB, GPIO_Pin_9);
  GPIO_ResetBits(GPIOD, GPIO_Pin_2);
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;
  GPIO_Init(GPIOB, &GPIO_InitStructure);
  
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;
  GPIO_Init(GPIOD, &GPIO_InitStructure);
   /* TIM2 channel 2 pin (PA.01) configuration */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

  GPIO_Init(GPIOA, &GPIO_InitStructure);
}
void delay_ms(u16 t)
{
  u16 i,j;
  for (i=0;i<t;i++)
  {
    for (j=0;j<6000;j++) {;}
  }
}
void itoa( u32 n,unsigned char *str)  
{  
int i;  
unsigned char j,p;  
i=1000000;  
p=0;  

do  
  {  
  j=(unsigned char) (n/i);  
  if (j || p || (i==1))  
     {  
     *str++=j+'0';  
     p=1;  
     }  
  n%=i;  
  i/=10;  
  }  
while (i!=0);  
*str=0;  
}  

int main(void)
{
  TIM_ICInitTypeDef  TIM_ICInitStructure;
u32 timer;

#ifdef DEBUG
  debug();
#endif
//初始参数设置
  
/********************配置函数功能*******************************/  
  RCC_Configuration();    //配置系统时钟
  NVIC_Configuration();   //配置  NVIC 和 Vector Table  
  GPIO_Configuration();   //使用的GPIO口
  u8 p1[]="---L-METER---";   
  u8 p2[]="yarp888@126.com";  
  u8 p3[]="  Lx= ";  
  u8 p5[]="uH";
  u8 p6[]="-OVER-";
   for ( timer =50000;timer >0;timer--)
  {
  }
  GPIO_ResetBits(GPIOB, GPIO_Pin_6);
  GPIO_ResetBits(GPIOB, GPIO_Pin_7);
  GPIO_ResetBits(GPIOB, GPIO_Pin_8);
  GPIO_ResetBits(GPIOB, GPIO_Pin_9);
  GPIO_ResetBits(GPIOD, GPIO_Pin_2);
  WriteSIOByte(0);  
  LCD1602_init();  
  LCD1602_clear();           //显示清屏  
   
  //-------------------------------------------------------------
   /* TIM2 configuration: PWM Input mode ------------------------
     The external signal is connected to TIM2 CH2 pin (PA.01),  
     The Rising edge is used as active edge,
     The TIM2 CCR2 is used to compute the frequency value  
   
  ------------------------------------------------------------ */

  TIM_ICInitStructure.TIM_Channel = TIM_Channel_2;
  TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;
  TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;
  TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;
  TIM_ICInitStructure.TIM_ICFilter = 0x0;

  TIM_PWMIConfig(TIM2, &TIM_ICInitStructure);
   /* Select the TIM2 Input Trigger: TI2FP2 */
  TIM_SelectInputTrigger(TIM2, TIM_TS_TI2FP2);

  /* Select the slave Mode: Reset Mode */
  TIM_SelectSlaveMode(TIM2, TIM_SlaveMode_Reset);

  /* Enable the Master/Slave Mode */
  TIM_SelectMasterSlaveMode(TIM2, TIM_MasterSlaveMode_Enable);


  
     LCD1602_clear();           //显示清屏  
     LCD1602_write_string(2,0,p1);  
     LCD1602_write_string(1,1,p2);  
     delay_ms(1000);  
      
      
  /* TIM enable counter */
  TIM_Cmd(TIM2, ENABLE);

  /* Enable the CC2 Interrupt Request */
  TIM_ITConfig(TIM2, TIM_IT_CC2, ENABLE);
   

  while(1)  
  {   
       /* Frequency computation */
     Frequency=72000000/IC2Value ;
     L_UH = 25330338000000/Frequency/Frequency;
     if (L_UH <=999999) itoa(L_UH,p4);
  
     TIM_ClearITPendingBit(TIM2, TIM_IT_CC2);
      
     LCD1602_clear();           //显示清屏  
     LCD1602_write_string(2,0,p1);  
     LCD1602_write_string(0,1,p3);  
     if (L_UH <=999999)
     {
       LCD1602_write_string(6,1,p4);  
       LCD1602_write_string(13,1,p5);  
     }
     else  
     {
       LCD1602_write_string(6,1,p6);  
     }
     
     delay_ms(1000);      
  }  
}
/**********************************************************  
下列連結為原資料來源,如有侵權,或不妥,請連絡管理員或本人,將會盡速處理
http://218.16.124.207/bbs/bbs_co ... ang&bbs_id=9999
ourdev_551115.jpg
ourdev_551116.jpg
ourdev_551117.jpg
發表於 2011-11-1 23:15:36 | 顯示全部樓層
不錯的東西!
不過要我做可能困難XD
發表於 2011-11-2 01:01:14 | 顯示全部樓層
雄爸:
   搜尋一下 網路有人用 89C2051做LC meter 我做過但是不太準,裡面有附程式,我照這做!!有點問題!! 還沒有時間去重寫程式,因為 還沒學到那裏...
發表於 2011-11-6 20:59:51 | 顯示全部樓層
本帖最後由 er230059 於 2011-11-6 09:00 PM 編輯
antlu 發表於 2011-11-2 01:01 AM static/image/common/back.gif
雄爸:
   搜尋一下 網路有人用 89C2051做LC meter 我做過但是不太準,裡面有附程式,我照這做!!有點問題!! 還 ...


http://goods.ruten.com.tw/item/show?21109283446954

這個就是用89C2051做的阿 我自己有一組
_______________________________________
(剛剛看錯『網路有人用』看成『網路沒有人用』
發表於 2011-11-17 22:01:53 | 顯示全部樓層

我是 ~菜鳥~
無法在您的個人頁面上
寫 ~留言~
指得來此 回覆~~
.
啊!!
~寶山~
自古以來 ~寶物~
都在很遙遠的地方
小弟住北縣 永和
這裡好像沒有您稱的
"資源回收場"
殘念~~
.
原來 雄大 是新竹人士
很高興 認識您這位 電子高手
以後有許多問題
可請教於你
.
真羨慕你們
都懂得 ~編寫程式~
.
祝 順利
BX2AW 上
發表於 2011-11-17 22:08:01 | 顯示全部樓層
bx2aw 發表於 2011-11-17 10:01 PM static/image/common/back.gif

我是 ~菜鳥~
無法在您的個人頁面上

老大你怎麼也來了, 請教你 77,5KHZ的郵件有收到嗎..
 樓主| 發表於 2011-11-17 23:38:00 | 顯示全部樓層
bx2aw 發表於 2011-11-17 10:01 PM static/image/common/back.gif

我是 ~菜鳥~
無法在您的個人頁面上

呵呵呵呵
您真是客氣了
在這裡,每個人都各有所長
小弟我只是喜歡胡搞些小玩具而已
對於程式也是一竅不通

看到你的呼號,我可無法與您相提並論
因為我只是"香腸"  您是"火腿"
在這方面還要稱呼你"前輩"的勒
這個論壇有你加入,必當新增繽紛色彩
發表於 2011-11-18 22:48:47 | 顯示全部樓層
回 xiaolaba 大
請問目前 77.5Khz 有否發射訊號
若有 : 是 電碼 或 其它訊號
假使有發射訊號
其涵蓋範圍 有哪些區域?
發表於 2011-11-18 22:57:15 | 顯示全部樓層
回 雄大
前輩之稱
承受不起
每個人 各有專精
小弟知識有限
還有很多需要學習的
真好 認識您 是懂寫程式的
請教一下
C 語言
寫好的程式
是否
可 燒錄至 各類型的 單晶片
如 8051 or PIC
謝謝~~
發表於 2011-11-18 23:04:35 | 顯示全部樓層
正好路過 沒想到還能在這看到bx2aw這位大哥
 樓主| 發表於 2011-11-18 23:41:17 | 顯示全部樓層
bx2aw 發表於 2011-11-18 10:57 PM static/image/common/back.gif
回 雄大
前輩之稱
承受不起

真是誤會大了
我是吃硬不吃軟的啦
軟體程式你要找其他酷友
yse & antlu  對C都很在行的
發表於 2011-11-20 22:32:21 | 顯示全部樓層
回 er230059大 您好
小弟是酷網的新手
請關照
感謝~~
發表於 2011-11-20 22:37:42 | 顯示全部樓層
回 雄大
只吃硬 ( 那牙齒一定很強壯 )
.
感謝提供 兩位 C 高手 yse & antlu 大
有機會定向 兩大 求教
您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

關閉

站長小叮嚀上一條 /1 下一條

禁閉室|手機版|連繫我們|痞酷網電子技術論壇

GMT+8, 2024-11-23 06:30 PM , Processed in 0.232488 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.