dzzz-001 发表于 2007-12-14 07:56:41

下载中,多谢分享

liangxliao 发表于 2007-12-14 08:27:07

好东东!感谢!

dong7758 发表于 2007-12-14 08:32:11

谢谢马老师..

jackiegao 发表于 2007-12-14 15:59:47

十分感谢。辛苦了。

flyan.oo 发表于 2007-12-15 21:55:46

谢谢马老师了呵!!!

jwn9 发表于 2007-12-18 12:46:07

谢谢马老师了

ym2008 发表于 2007-12-22 21:16:06

十分谢谢翻译的这帮子人,你们辛苦了!
谢谢你们!
谢谢马老师!

jaky80000 发表于 2007-12-23 10:41:27

谢谢,可是下载不到,没有下载!

abcdezh 发表于 2007-12-25 09:38:27

谢谢中。。。。。

wqlalala 发表于 2007-12-28 08:25:06

多谢马老师!!!

wangtao_y 发表于 2007-12-28 08:54:37

马老师,你们辛苦了。谢谢!

dfzcx 发表于 2008-1-3 19:04:30

谢谢!

mfm123 发表于 2008-1-5 09:09:04

谢谢马老师

JasonVIP 发表于 2008-1-7 18:42:15

谢谢马老师!

cnshyl 发表于 2008-1-11 18:56:04

正在下载中,谢谢马老师.

哈哈...

252177861 发表于 2008-1-14 11:02:08

谢谢老师和学长的辛苦工作

liulizong 发表于 2008-1-16 19:59:35

非常感谢

shute0000 发表于 2008-1-17 21:56:00

谢谢老师和学长的辛苦工作

Artang 发表于 2008-1-18 16:29:13

多谢!

sml008 发表于 2008-1-18 17:48:26

辛苦了

zgx2008 发表于 2008-1-19 23:12:07

多谢!

zgx2008 发表于 2008-1-19 23:12:08

多谢!

niemeng 发表于 2008-1-24 19:16:23

XIEXIE

baoxuefei771 发表于 2008-1-31 01:26:33

感谢,学习了!!

ddwl99 发表于 2008-1-31 09:06:40

8错8错

aaroncy79 发表于 2008-2-15 15:57:53

太辛苦了

xuhai777 发表于 2008-2-16 11:27:40

感谢!

XXHF 发表于 2008-2-16 13:35:22

谢了

kdtcf 发表于 2008-2-25 23:59:57

收下,感激!

282090409 发表于 2008-3-1 13:59:55

感谢您了马老师~~

macchange 发表于 2008-3-1 21:17:58

太感谢了

HiEnd 发表于 2008-3-2 15:04:59

资料收下,正在学习中.感谢马老师的辛勤工作.

29472803 发表于 2008-3-3 22:41:26

收下了!!!!!!!谢谢LZ分享啊!

reg777 发表于 2008-3-4 18:28:14

正在学习中.感谢马老师的辛勤工作.

373965956 发表于 2008-3-4 19:11:38

谢谢,辛苦了

wsnpy88 发表于 2008-3-4 19:52:32

谢谢啦

arain 发表于 2008-3-4 23:14:14

谢谢马老师

xyang18 发表于 2008-3-6 16:09:52

我推荐马老师为AVR的武林帮主!!!!!!!!!!!!!!!!!!!

machao 发表于 2008-3-6 16:30:48

不敢当.

武林帮主配合狗头军师.....我们在拍电影那:)

fenglang68 发表于 2008-3-6 17:45:27

对您的景仰犹如滔滔江水 连绵不绝 此帖不顶不是人!^_^

Xearo 发表于 2008-3-7 22:06:34

442楼好毒!上次下了我就忘了顶了

这次新装系统,又想起来搞一哈

jo3101698 发表于 2008-3-8 19:29:08

才看到这份宝典,无论如何也要感谢一下

liuyuema09 发表于 2008-3-9 13:02:48

感谢辛勤劳动!

asd_lkj 发表于 2008-3-10 16:04:51

.

fyq2004 发表于 2008-3-11 22:30:59

感谢ing

zjhzxx 发表于 2008-3-12 23:38:24

好久没来了,OURAVR真是一个好网站,谢谢马老师!!!

avruser 发表于 2008-3-13 00:25:54

啥时候升级到最新版啊?

sxw951 发表于 2008-3-15 16:21:34

下了,怎么打不开。

xiaoshizi504 发表于 2008-3-16 13:24:17

谢谢 谢谢 谢谢

feng_matrix 发表于 2008-3-17 12:24:36

好同志啊,谢谢

dabi 发表于 2008-3-17 13:16:31

不错。。。。下了。。

pengbenjian 发表于 2008-3-18 23:01:07

十分感激,收到。

power51 发表于 2008-3-20 23:15:03

谢谢马老师!

jinbu 发表于 2008-3-21 10:47:55

多谢!开始学习了

kinggao 发表于 2008-3-21 12:32:33

多谢!开始学习了

hbmyhuwei 发表于 2008-3-23 13:51:54

好东西,好网站!好人!顶!

jy00504445 发表于 2008-3-25 01:23:26

谢谢了!!这对每个用该软件的人都是福音啊~

w_zheng 发表于 2008-3-25 08:35:24

感谢ing!

luanmen 发表于 2008-3-25 15:53:52

谢谢马老师!!!

sam113 发表于 2008-3-25 19:54:21

多谢马老师!

david198421 发表于 2008-3-25 22:19:18

多谢多谢 顶一下

david198421 发表于 2008-3-25 22:24:00

多谢马老师了 狂顶

avrviv 发表于 2008-3-31 13:25:33

下了...
支持!~
谢谢!~

TrueOrFalse 发表于 2008-4-1 22:53:34

谢谢

yvictoryavr 发表于 2008-4-4 15:53:14

谢谢,现在买了马老师的书在学习。

dragon045 发表于 2008-4-6 16:08:42

正在下载中,谢谢马老师

pxm7326397 发表于 2008-4-7 17:14:05

多谢分享

adcr 发表于 2008-4-8 16:14:14

./bbs_upload197134/files_9/ourdev_246722.jpg
(原文件名:596618.jpg) 

ghosthd 发表于 2008-4-8 16:46:59

还是要顶以下.

pxm7326397 发表于 2008-4-10 17:40:00

谢谢马老师,我用AVR STDIO 编译程序产生的文件是不是会占很大的空间啊,我只要500行的程序,4K 的flash去写不下.
下面是我的程序却占6k还是我什么地方没有设置好啊?
请指点下



#include <avr/io.h>
#include <avr/interrupt.h>
//#include <avr/signal.h>
//#include <intrins.h> //Keil library (is used for _nop()_ operation)   
#include <math.h>    //Keil library   
#include <stdio.h>   //Keil library
void calc_sth11(float *p_humidity ,float *p_temperature);
//#include <avr/iomxx.h>
unsigned int OCR0A_v1,OCR0B_v2,OCR1A_v3;
typedef union   
{ unsigned int i;
float f;
} value;
enum {TEMP,HUMI};
#define noACK 0
#define ACK   1   
#define      SETDATA( )   PORTC|=1<<PC0
#define      CLRDATA( )   PORTC&=~(1<<PC0)
#define      SETSCK( )    PORTC|=1<<PC1
#define      CLRSCK( )    PORTC&=~(1<<PC1)

                            //adrcommandr/w
#define STATUS_REG_W 0x06   //000   0011    0
#define STATUS_REG_R 0x07   //000   0011    1
#define MEASURE_TEMP 0x03   //000   0001    1
#define MEASURE_HUMI 0x05   //000   0010    1
#define RESET      0x1e   //000   1111    0

//sck接PC1,DATA接PC0

char s_write_byte(unsigned char value)
{                                                 //PC0,PC1为输出
unsigned char i,error=0;
   DDRC|=0X03;
for(i=0x80;i>0;i/=2)             //shift bit for masking
{ if (i & value)
   SETDATA( );          //masking value with i , write to SENSI-BUS
    elseCLRDATA( );
// _nop_();
    ;                        
    SETSCK();                        //clk for SENSI-BUS
;;;       //pulswith approx. 5 us            
    CLRSCK();
}
SETDATA();                           //release DATA-line
DDRC|=0X02;
DDRC&=0XFE;
SETSCK( );                            //clk #9 for ack   
;
error=((PINC>>1)&0x01);   //check ack (DATA will be pulled down by SHT11)            
;
   CLRSCK();
         
return error;                     //error=1 in case of no acknowledge
}

char s_read_byte(unsigned char ack)
// reads a byte form the Sensibus and gives an acknowledge in case of "ack=1"   
{                     
unsigned char i,val=0;
   DDRC=0X03;
   SETDATA();                           //release DATA-line
for (i=0x80;i>0;i/=2)            //shift bit for masking
{ SETSCK();                        //clk for SENSI-BUS
;;;
DDRC|=0X02;
DDRC&=0XFE;
if ((PINC>>1)&0x01) val=(val | i);      //read bit   
    CLRSCK();
      ;;;                                             
}
DDRC=0X03;                              //输出
if(!ack)
SETDATA();
else CLRDATA();                      //in case of "ack==1" pull down DATA-Line
SETSCK();                            //clk #9 for ack
   ;;;          //pulswith approx. 5 us   
CLRSCK();                                                      
SETDATA();                           //release DATA-line
return val;
}

void s_transstart(void)
//----------------------------------------------------------------------------------
// generates a transmission start   
//       _____         ________
// DATA:      |_______|
//         ___   ___
// SCK : ___|   |___|   |______
{DDRC=0X03;
   SETDATA(); CLRSCK();                   //Initial state
;
   SETSCK();
;
   CLRDATA();
   ;
   CLRSCK();   
   ;;;
   CLRSCK();
   ;
   SETDATA();                     
   ;
   CLRSCK();                     
}

void s_connectionreset(void)
//----------------------------------------------------------------------------------
// communication reset: DATA-line=1 and at least 9 SCK cycles followed by transstart
//       _____________________________________________________         ________
// DATA:                                                      |_______|
//          _    _    _    _    _    _    _    _    _      ___   ___
// SCK : __| |__| |__| |__| |__| |__| |__| |__| |__| |______|   |___|   |______
{   
unsigned char i;
DDRC=0X03;
SETDATA(); CLRSCK();                  //Initial state
for(i=0;i<9;i++)                  //9 SCK cycles
{SETSCK();
;;
   CLRSCK();
   ;;
}
s_transstart();                   //transmission start
}

//----------------------------------------------------------------------------------
char s_softreset(void)
//----------------------------------------------------------------------------------
// resets the sensor by a softreset   
{   
unsigned char error=0;   
s_connectionreset();            //reset communication
error+=s_write_byte(RESET);       //send RESET-command to sensor
return error;                     //error=1 in case of no response form the sensor
}

//----------------------------------------------------------------------------------
char s_read_statusreg(unsigned char *p_value, unsigned char *p_checksum)
//----------------------------------------------------------------------------------
// reads the status register with checksum (8-bit)
{   
unsigned char error=0;
s_transstart();                   //transmission start
error=s_write_byte(STATUS_REG_R); //send command to sensor
*p_value=s_read_byte(ACK);      //read status register (8-bit)
*p_checksum=s_read_byte(noACK);   //read checksum (8-bit)   
return error;                     //error=1 in case of no response form the sensor
}

//----------------------------------------------------------------------------------
char s_write_statusreg(unsigned char *p_value)
//----------------------------------------------------------------------------------
// writes the status register with checksum (8-bit)
{   
unsigned char error=0;
s_transstart();                   //transmission start
error+=s_write_byte(STATUS_REG_W);//send command to sensor
error+=s_write_byte(*p_value);    //send value of status register
return error;                     //error>=1 in case of no response form the sensor
}
                                                            
//----------------------------------------------------------------------------------
char s_measure(unsigned char *p_value, unsigned char *p_checksum, unsigned char mode)
//----------------------------------------------------------------------------------
// makes a measurement (humidity/temperature) with checksum
{   
unsigned error=0;
unsigned int i;

s_transstart();                   //transmission start
switch(mode){                     //send command to sensor
    case TEMP      : error+=s_write_byte(MEASURE_TEMP); break;
    case HUMI      : error+=s_write_byte(MEASURE_HUMI); break;
    default   : break;         
}
DDRC|=0X02;
DDRC&=0XFE;
for (i=0;i<65535;i++) if(((PINC>>1)&0x01)==0) break; //wait until sensor has finished the measurement
if((PINC>>1)&0x01) error+=1;                // or timeout (~2 sec.) is reached
*(p_value)=s_read_byte(ACK);    //read the first byte (MSB)
*(p_value+1)=s_read_byte(ACK);    //read the second byte (LSB)
*p_checksum =s_read_byte(noACK);//read checksum
return error;
}

void calc_sth11(float *p_humidity ,float *p_temperature)
//----------------------------------------------------------------------------------------
// calculates temperature [癈] and humidity [%RH]   
// input :humi (12 bit)   
//          temp (14 bit)
// output:humi [%RH]
//          temp [癈]
{ const float C1=-4.0;            // for 12 Bit
const float C2=+0.0405;         // for 12 Bit
const float C3=-0.0000028;      // for 12 Bit
const float T1=+0.01;             // for 14 Bit @ 5V
const float T2=+0.00008;         // for 14 Bit @ 5V         

float rh=*p_humidity;             // rh:      Humidity 12 Bit   
float t=*p_temperature;         // t:       Temperature 14 Bit
float rh_lin;                     // rh_lin:Humidity linear
float rh_true;                  // rh_true: Temperature compensated humidity
float t_C;                        // t_C   :Temperature [癈]

t_C=t*0.01 - 40;                  //calc. temperature from ticks to [癈]
rh_lin=C3*rh*rh + C2*rh + C1;   //calc. humidity from ticks to [%RH]
rh_true=(t_C-25)*(T1+T2*rh)+rh_lin;   //calc. temperature compensated humidity [%RH]
if(rh_true>100)rh_true=100;       //cut if the value is outside of
if(rh_true<0.1)rh_true=0.1;       //the physical possible range

*p_temperature=t_C;               //return temperature [癈]
*p_humidity=rh_true;            //return humidity[%RH]
}

//--------------------------------------------------------------------
float calc_dewpoint(float h,float t)
//--------------------------------------------------------------------
// calculates dew point
// input:   humidity [%RH], temperature [癈]
// output:dew point [癈]
{ float logEx,dew_point;
// logEx=0.66077+7.5*t/(237.3+t)+(log10(h)-2);   //???
dew_point = (logEx - 0.66077)*237.3/(0.66077+7.5-logEx);
return dew_point;
}

void time0_init()
{
TCCR0B=0X00;
//OCR0A=0X7F;
// OCR0B=0X7F;
TIMSK0=0X01;   
TCCR0A=0XB3;//1分频快速PWM模式
TCCR0B=0X01;
}

/*time1_init()
{TCCR1B=0X00;
//OCR1AH=0X00;
// OCR1AL=0XFF;
TCCR1A=0X82;//8分频,8位精度快速PWM模式
TCCR1B=0X12;
TCCR1C=0X00;
}
port_init()
{DDRD&=0XF3;   //PD3 DP2 为按键输入
DDRD|=0XC0;
DDRB|=0X06;
}
*/

//----------------------------------------------------------------------------------
int main()
//----------------------------------------------------------------------------------
// sample program that shows how to use SHT11 functions
// 1. connection reset   
// 2. measure humidity (12 bit) and temperature (14 bit)
// 3. calculate humidity [%RH] and temperature [癈]
// 4. calculate dew point [癈]
// 5. print temperature, humidity, dew point   

{
DDRD&=0XF3;   //PD3 DP2为按键输入
DDRD|=0X60;      // PD5 PD6 为PWM输出
DDRB|=0X06;
unsigned int K;
float v1,v2,v3;
value humi_val,temp_val;
float dew_point;
unsigned char error,checksum;
unsigned int i;
SREG|=0X80;
time0_init();
// time1_init();
// init_uart();
s_connectionreset();
while(1)
{
    error=0;
    error+=s_measure((unsigned char*) &humi_val.i,&checksum,HUMI);//measure humidity
    error+=s_measure((unsigned char*) &temp_val.i,&checksum,TEMP);//measure temperature
    if(error!=0) s_connectionreset();               //in case of an error: connection reset
    else
    {
      humi_val.f=(float)humi_val.i;                   //converts integer to float
      temp_val.f=(float)temp_val.i;                   //converts integer to float
      calc_sth11(&humi_val.f,&temp_val.f);            //calculate humidity, temperature
      dew_point=calc_dewpoint(humi_val.f,temp_val.f); //calculate dew point
   // printf("temp:%5.1fC humi:%5.1f%% dew point:%5.1fC
//",temp_val.f,humi_val.f,dew_point);
    }
    //----------wait approx. 0.8s to avoid heating up SHTxx------------------------------      
    for (i=0;i<200;i++); //(be sure that the compiler doesn't eliminate this line!)
    //-----------------------------------------------------------------------------------
    if(++K==1) PORTB|=0X04;
         else {PORTB&=0XFB;K=0;}                     
    v1=0.02*(temp_val.f+30);
    v2=0.02* humi_val.f;
    v3=0.01* humi_val.f;
      OCR0A_v1=v1/3.3*0XFF;
      OCR0B_v2=v2/3.3*0XFF;
      OCR1A_v3=v3/3.3*0XFF;   

      if (!(PIND&0X04))
       { if(!(PIND&0X08))//00调0
                        { while((!(PIND&0X04))&(!(PIND&0X08))) {OCR0A_v1=0X00,OCR0B_v2=0X00,OCR1A_v3=0X00;}
                        }
          else {while((!(PIND&0X04))&(PIND&0X08))v1=2.0,v2=2.0,v3=1.0;
                         OCR0A_v1=v1/3.3*0XFF;//01满量程调节
                                 OCR0B_v2=v2/3.3*0XFF;
                                 OCR1A_v3=v3/3.3*0XFF;
                              }
      }
          else if((PIND&0X08)==0)         
                {while((!(PIND&0X08))&(PIND&0X04))
                            {OCR0A_v1=0X00,OCR0B_v2=0X00,OCR1A_v3=0X00;}
                         }
         
         

}
}   


interrupt (TIMER0_OVF)
{OCR0A=OCR0A_v1;
OCR0B=OCR0B_v2;
}

zhuo17 发表于 2008-4-10 22:12:36

下载中

congrh 发表于 2008-4-12 09:07:05

谢谢,好好学习。

chn0924 发表于 2008-4-14 13:47:06

谢谢了!新手学习正需要呢

hkap 发表于 2008-4-15 15:18:59

谢谢

liuzhijun 发表于 2008-4-19 20:43:23

谢谢!我已经买了你的书.

Ca_guo 发表于 2008-4-19 22:57:48

好资料,一定要看!!

yzk_82226 发表于 2008-4-21 11:05:49

谢谢

yzk_82226 发表于 2008-4-21 11:05:50

谢谢

dalian345 发表于 2008-4-22 00:58:46

新人。感谢

正在努力学习中

shawn_17 发表于 2008-4-23 18:43:07

好东西一定要顶起

cuhon 发表于 2008-5-3 11:14:36

太感谢了!!!!

enterout123 发表于 2008-5-4 16:12:04

太好了,如果我因为这收获了N元,我一定给马老师N*N元.

ljmdiy 发表于 2008-5-10 10:43:28

谢谢马老师

weiwgml 发表于 2008-5-10 12:44:33

收下了

wuesion 发表于 2008-5-19 15:34:37

对新手帮助很大!谢谢!

Ca_guo 发表于 2008-5-19 23:25:50

谢谢马老师!!

TroubleShooter 发表于 2008-5-25 16:29:53

多谢马潮 老师 您的书 本人买了。

shengsheng 发表于 2008-5-26 17:20:54

谢谢马老师.

lgylgy 发表于 2008-5-27 00:21:53

真是太好了,谢马老大了。

heroxue 发表于 2008-5-28 12:23:39

谢谢了

wanglituan 发表于 2008-6-1 23:47:00

在学习中……

mydows 发表于 2008-6-10 13:24:42

辛苦了!

Ca_guo 发表于 2008-6-11 15:04:50

多谢啦!!

superyongzhe 发表于 2008-6-11 15:49:31

谢谢

qqaw 发表于 2008-6-12 01:12:05

感谢了!

Peasant 发表于 2008-6-12 12:24:01

由衷的感谢!

ydyzzsk 发表于 2008-6-14 00:41:53

辛苦马老师了。。。

tinka 发表于 2008-6-16 13:30:47

谢谢!

dahai168 发表于 2008-6-19 17:44:27

我可能用不上,还是谢谢。

chenguang520 发表于 2008-6-20 21:21:33

谢谢马老师。将它设置成通告,这样所有的论坛都能看到。
页: 1 2 3 4 [5] 6 7 8 9 10 11 12 13 14
查看完整版本: 重量级资料:AVR Studio on-line 中文版 HELP