求助CH375b讀寫數(shù)據(jù)

本人單片機(jī)菜鳥,我只用STC89C52和DS18B20還有CH375,LCD1602做多路溫度數(shù)據(jù)采集設(shè)計(jì),還要把采集的溫度數(shù)據(jù)存到U盤里,這樣設(shè)計(jì)可不可以?怎么把采集的溫度數(shù)據(jù)傳到U盤?求幫助。還有我用keil編譯了一下你們提供的讀寫程序老是出現(xiàn) 這是編譯結(jié)果: Build target 'Target 1' assembling STARTUP.A51... compiling 0209.c... CH375.H(21): warning C318: can't open file '..\CH375HF6.H' CH375.H(46): error C141: syntax error near 'delay', expected ')' CH375.H(47): error C129: missing ';' before 'IsKeyPress' 0209.c(87): warning C322: unknown identifier 0209.c(115): warning C322: unknown identifier

有添加CH375HF6.H文件,請問為什么?我哪里錯(cuò)了.

(1)這個(gè)設(shè)計(jì)是可以實(shí)現(xiàn)的,難點(diǎn)在你如何將采集到的數(shù)據(jù)傳給CH375,這樣CH375才能對U盤進(jìn)行操作。 (2)編譯的警告看你沒包含CH375HF6.H文件。


謝謝啊,剛才我試了下那個(gè)180行超精簡程序可以編譯通過,以前那個(gè)主機(jī)方式不懂什么問題CH375HF6.子程序庫有添加的就是不行,如果我想用那個(gè)180行程序和1602顯示程序結(jié)合起來,請問要在那里加?是否用中斷程序把采集到的數(shù)據(jù)傳給CH375b,可是顯示程序好長的運(yùn)行時(shí)間也不短:本人以前用的是匯編,C語言不太會,求幫助,怎么把下面的程序結(jié)合到CH375中去,我用的是P0口與375連接怎么將數(shù)據(jù)傳到375: 這個(gè)是顯示程序 #include #include #define uchar unsigned char #define uint unsigned int sbit RS=P3^0; sbit RW=P3^1; sbit EN=P3^2; sbit DQ=P3^7; uchar code str1[]={0x28,0x08,0xA7,0xBA,0x02,0x00,0x00,0x18}; //ROM 1 uchar code str2[]={0x28,0x0C,0xBA,0xBA,0x02,0x00,0x00,0x54}; //ROM2 uchar code table[8]={0x0c,0x12,0x12,0x0c,0x00,0x00,0x00,0x00}; // 攝氏溫度符號 uchar data disdata[5]; uint tvalue;//溫度值 uchar tflag;//溫度正負(fù)標(biāo)志

/*************************lcd1602程序**************************/ void delay1ms(uint ms)//延時(shí)1毫秒(不夠精確的) { uint i,j; for(i=0;i for(j=0;j<100;j++); }

void wr_com(uchar com)//寫指令// { delay1ms(1); RS=0; RW=0; EN=0; P2=com; delay1ms(1); EN=1; delay1ms(1); EN=0; }

void wr_dat(uchar dat)//寫數(shù)據(jù)// { delay1ms(1);; RS=1; RW=0; EN=0; P2=dat; delay1ms(1); EN=1; delay1ms(1); EN=0; } void wr_new() 、//寫新字符 { uchar i; wr_com(0x40); for(i=0;i<8;i++) { wr_dat(table[i]); } } void lcd_init()//初始化設(shè)置// { delay1ms(15); wr_com(0x38);delay1ms(5); wr_com(0x08);delay1ms(5); wr_com(0x01);delay1ms(5); wr_com(0x06);delay1ms(5); wr_com(0x0c);delay1ms(5); wr_new(); wr_com(0x80); wr_dat('A'); wr_com(0x81); wr_dat(':'); wr_com(0x89); wr_dat(0x00); wr_com(0x8a); wr_dat('C'); wr_com(0xc9); wr_dat(0x00); 、、//攝氏溫度字符 wr_com(0xca); wr_dat('C'); wr_com(0xc0); wr_dat('B'); wr_com(0xc1); wr_dat(':'); }

/******************************ds1820程序***************************************/ void delay_18B20(uint i)//延時(shí)1微秒 { while(i--); }

void ds1820rst()/*ds1820復(fù)位*/ { uchar x=0; DQ = 1; //DQ復(fù)位 delay_18B20(4); //延時(shí) DQ = 0; //DQ拉低 delay_18B20(100); //精確延時(shí)大于480us DQ = 1; //拉高 delay_18B20(40); }

uchar ds1820rd()/*讀數(shù)據(jù)*/ { uchar i=0; uchar dat = 0; for (i=0;i<8;i++) { DQ = 0; //給脈沖信號 dat>>=1; DQ = 1; //給脈沖信號 if(DQ) dat|=0x80; delay_18B20(10); } return(dat); } void ds1820wr(uchar dat)/*寫數(shù)據(jù)*/ { uchar i=0; for (i=0; i<8; i++) { DQ = 0; DQ = dat&0x01; delay_18B20(10); DQ = 1; dat>>=1; } } void b20_Matchrom(uchar a) //匹配ROM { char j; ds1820wr(0x55); //發(fā)送匹配ROM命令 if(a==1) { for(j=0;j<8;j++) ds1820wr(str1[j]); //發(fā)送18B20的序列號,先發(fā)送低字節(jié) } if(a==2) { for(j=0;j<8;j++) ds1820wr(str2[j]); //發(fā)送18B20的序列號,先發(fā)送低字節(jié) }

} read_temp(uchar z)/*讀取溫度值并轉(zhuǎn)換*/ { uchar a,b; float tt; ds1820rst(); ds1820wr(0xcc); 、//讀序列號 ds1820rst(); if(z==1) { b20_Matchrom(1); //匹配ROM 1 } if(z==2) { b20_Matchrom(2); //匹配ROM 2 } ds1820wr(0x44);//*啟動(dòng)溫度轉(zhuǎn)換*/ delay1ms(5); ds1820rst(); ds1820wr(0xcc); //讀序列號 ds1820rst(); if(z==1) { b20_Matchrom(1); //匹配ROM 1 } if(z==2) { b20_Matchrom(2); //匹配ROM 2 } ds1820wr(0xbe);//*讀取溫度*/ a=ds1820rd(); b=ds1820rd(); tvalue=b; tvalue<<=8; tvalue=tvalue|a; if(tvalue<0x0fff) tflag=0; else { tvalue=~tvalue+1; tflag=1; } tt=tvalue*0.0625; tvalue=tt*10; return(tvalue); }

/*****************顯示函數(shù)******************************/ void ds1820disp(uchar z)//溫度值顯示 { uchar flagdat; disdata[0]=tvalue/1000+0x30;//百位數(shù) disdata[1]=tvalue%1000/100+0x30;//十位數(shù) disdata[2]=tvalue%100/10+0x30;//個(gè)位數(shù) disdata[3]=tvalue%10+0x30;//小數(shù)位 if(tflag==0) flagdat=0x20;//正溫度不顯示符號 else flagdat=0x2d;//負(fù)溫度顯示負(fù)號:-

if(disdata[0]==0x30) {disdata[0]=0x20;//如果百位為0,不顯示 if(disdata[1]==0x30) {disdata[1]=0x20;//如果百位為0,十位為0也不顯示 } } if(z==1) { wr_com(0x82); wr_dat(flagdat);//顯示符號位 wr_com(0x83); wr_dat(disdata[0]);//顯示百位 wr_com(0x84); wr_dat(disdata[1]);//顯示十位 wr_com(0x85); wr_dat(disdata[2]);//顯示個(gè)位 wr_com(0x86); wr_dat(0x2e);//顯示小數(shù)點(diǎn) wr_com(0x87); wr_dat(disdata[3]);//顯示小數(shù)位 } if(z==2) { wr_com(0xc2); wr_dat(flagdat);//顯示符號位 wr_com(0xc3); wr_dat(disdata[0]);//顯示百位 wr_com(0xc4); wr_dat(disdata[1]);//顯示十位 wr_com(0xc5); wr_dat(disdata[2]);//顯示個(gè)位 wr_com(0xc6); wr_dat(0x2e);//顯示小數(shù)點(diǎn) wr_com(0xc7); wr_dat(disdata[3]);//顯示小數(shù)位 } } /********************主程序***********************************/ void main() { lcd_init();//初始化顯示 while(1) { read_temp(1);//讀取溫度 ds1820disp(1);//顯示 read_temp(2);//讀取溫度 ds1820disp(2);//顯示 // delay1ms(10000); } }


180行超精簡程序?qū)崿F(xiàn)的只是讀出根目錄下的文件名,并可顯示首文件內(nèi)容。你寫U盤的話還需自己添加寫函數(shù)。建議你最好使用我們的庫,里面讀寫函數(shù)都已經(jīng)做好,只要你將采集到的數(shù)據(jù)通過寫函數(shù)寫到U盤里。另外,下載CH375EVT.ZIP,PUB\MCS51C\FILELIB4\EXAM5這個(gè)文件是用匯編來編程的,你可以參考。


能不能給我你的私人郵箱???崩潰??!


郵箱的話見簽名。


只有登錄才能回復(fù),可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频