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