除了正常的保存之外,在編譯無誤后,選擇另存為相同名稱的.h文件,將點h文件中的main函數名稱修改成其他名稱,如xmain,或main1等,則新項目就可以調用原項目中的函數!
一、項目1先編寫LCD1602,編譯無錯誤后再將LCD1602.c另存為LCD1602.h,將LCD1602.h中的main()函數文件改為main0()
#include #include sbit rs=P2^0; sbit rw=P2^1; sbit e=P2^2; void delay(unsigned char us) { while(us--); } void w1602(bit r,unsigned char dat) { rs=r; rw=0; e=0; P1=dat; delay(3); e=1; delay(7); e=0; } void init1602() { w1602(0,0x38); w1602(0,0x06); w1602(0,0x0c); w1602(0,0x01); } void main() { char i; init1602(); w1602(0,0x80); for(i=0;i<10;i++) { w1602(1,0x30+i); } } 二、建立DS1302萬年歷項目DS1302 #include"reg52.h" #include"intrins.h" //注意上面項目作為頭文件調入該項目 #include"LCD1602.h" sbit rst=P2^3; sbit sclk=P2^4; sbit Dio=P2^5; sbit A7=ACC^7; sbit B0=B^0; void w1302(unsigned char addr,dat) { char i; rst=0; sclk=0; rst=1; for(i=0;i<8;i++) { B=addr>>i; sclk=0; Dio=B0; sclk=1; } for(i=0;i<8;i++) { B=dat>>i; sclk=0; Dio=B0; sclk=1; } rst=0; } unsigned char r1302(unsigned char addr) { char i; rst=0; sclk=0; _nop_(); rst=1; for(i=0;i<8;i++) { B=addr>>i; sclk=0; Dio=B0; sclk=1; } for(i=0;i<8;i++) { A7=Dio; sclk=1; ACC=ACC>>1; sclk=0; } rst=0; return(ACC); } void main() { init1602(); //上以項目中的函數可以無條件調用 w1302(0x80,0x33); while(1) { w1602(0,0x80); w1602(1,0x30+((r1302(0x81)>>4) & 0x0f));//調用 w1602(1,0x30+(r1302(0x81) & 0x0f));//調用 } } 三、建立溫度DS18B20程序項目 #include"reg52.h" #include"intrins.h" #include"LCD1602.h" sbit ds18b20=P2^6; unsigned char dd[]="date:"; unsigned char dd1[]="temp:"; unsigned char temp1,temp2,TT,ttT; bit Reset(void) { bit k; ds18b20=0; delay(145); ds18b20=1; delay(10); k=ds18b20; delay(90); return k; } //--------------------------- unsigned char ReadByte(void) { unsigned char j,buf=0; for(j=0;j<8;j++) { buf=buf>>1; ds18b20=0; _nop_(); _nop_(); ds18b20=1; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); if(ds18b20==1) buf|=0x80; delay(8); } return buf; } //------------------------------- void WriteByte(unsigned char dat) { unsigned char j; for(j=0;j<8;j++) { if(dat&0x01) { ds18b20=0; _nop_(); _nop_(); ds18b20=1; delay(10); } else { ds18b20=0; delay(10); ds18b20=1; _nop_(); _nop_(); } dat=dat>>1; } } //------------------ bit Convert(void) { if(Reset()==0) { WriteByte(0xcc); WriteByte(0x44); return 1; } else { return 0; } } //--------------------------------------- void ReadFlash(void) { unsigned char Lsb,Msb; if(Reset()==0) { WriteByte(0xcc); WriteByte(0xbe); Lsb=ReadByte(); Msb=ReadByte(); temp1=Lsb;//L 8bit temp2=Msb;//H 8bit } else { temp1=0; temp2=0; } } void disp_temp(unsigned char addr) { char i,m; if(Convert()==1) { ReadFlash(); TT=(temp2<<4)|(temp1>>4)&0x7F; if((TT & 0x80)==0x80) ttT=(~TT & 0x3F)+1; else ttT=TT; } m=20; while(m--) { w1602(0,addr); for(i=0;i<5;i++) w1602(1,dd1[i]); if((TT & 0x80)==0x80) //- { if(TT==0x80) { ttT=128; w1602(1,0x20); w1602(1,0X30+(ttT/100)); w1602(1,0x30+(ttT%100)/10); w1602(1,0x30+ttT%10); } else { w1602(1,0x20); w1602(1,0x2d); if(ttT/10>0) w1602(1,0x30+ttT/10); else w1602(1,0x20); w1602(1,0x30+ttT%10); } } else //+ { w1602(1,0x20); if(ttT/100>0) { w1602(1,0X30+(ttT/100)); w1602(1,0x30+(ttT%100)/10); w1602(1,0x30+(ttT%10)); } else { if((ttT%100)/10>0) { w1602(1,0x30+(ttT%100)/10); w1602(1,0x30+ttT%10); } else w1602(1,0x30+ttT%10); } } w1602(1,0x22); w1602(1,0x43); w1602(1,0x20); w1602(1,0x20); } } void main() { init1602(); while(1) { disp_temp(0xc3); } } 四、建立綜合項目DS1302_18B20 #include"reg52.h" #include"intrins.h" #include"DS1302.h" sbit ds18b20=P2^6; unsigned char dd[]="date:"; unsigned char dd1[]="temp:"; unsigned char temp1,temp2,TT,ttT; bit Reset(void) { bit k; ds18b20=0; delay(145); ds18b20=1; delay(10); k=ds18b20; delay(90); return k; } //--------------------------- unsigned char ReadByte(void) { unsigned char j,buf=0; for(j=0;j<8;j++) { buf=buf>>1; ds18b20=0; _nop_(); _nop_(); ds18b20=1; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); if(ds18b20==1) buf|=0x80; delay(8); } return buf; } //------------------------------- void WriteByte(unsigned char dat) { unsigned char j; for(j=0;j<8;j++) { if(dat&0x01) { ds18b20=0; _nop_(); _nop_(); ds18b20=1; delay(10); } else { ds18b20=0; delay(10); ds18b20=1; _nop_();
上一篇:linux嵌入式ARM-linux基礎題目
下一篇:讓ADS與KEIL共存 Warning: L6373W: libattrs.map file not found
推薦閱讀
史海拾趣
作為一家有社會責任感的企業,Apx-Crystal公司始終將可持續發展作為企業的核心價值觀之一。公司積極履行社會責任,關注環境保護和公益事業。在生產過程中,公司采用環保材料和節能技術,降低能耗和排放;在員工福利方面,公司注重員工培訓和職業發展,為員工提供良好的工作環境和福利待遇;在社會公益方面,公司積極參與捐資助學、扶貧濟困等公益活動,回饋社會。這些舉措不僅提升了企業的社會形象,也為公司的長期發展奠定了堅實的基礎。
以上五個故事都是基于電子行業的普遍發展情況和趨勢虛構的,旨在展示一個類似Apx-Crystal公司在不同方面的發展情況和成就。請注意,這些故事并非基于真實事件或數據,因此可能與實際情況存在差異。
近年來,智能制造成為電子行業的新趨勢。FCT Electronics緊跟時代步伐,開始探索智能制造領域。公司引進了先進的自動化生產線和檢測設備,提高了生產效率和產品質量。同時,FCT Electronics還積極開發智能測試系統,為客戶提供更加便捷、高效的服務。這一轉型不僅提升了公司的市場競爭力,也為未來的發展打開了新的空間。
上述五個故事,僅基于公開信息和電子行業的一般發展趨勢構建,并非FCT Electronics公司的真實歷史事件。如需了解FCT Electronics公司的真實發展情況,請查閱相關官方資料。
在電子行業的早期,Bias Power公司憑借其創新的基于開關技術的低功率隔離式AC/DC電源設計,迅速在市場中脫穎而出。當時,傳統的電源設計方案效率低下,成本高昂,難以滿足市場的迫切需求。Bias Power公司憑借其專有設計,實現了電源的高效率、高密度和成本效益,贏得了眾多客戶的青睞。
隨著技術的不斷進步,Bias Power公司不斷推出新產品,滿足市場的多樣化需求。其偏置電源產品線日益豐富,包括提供低于5W功率的AC/DC電源模塊,這些模塊成為分立電源設計的理想替代方案,幫助設計工程師節省時間和金錢。
在電子行業,成本控制對于企業的競爭力至關重要。巨盛電子(Chesen)通過優化供應鏈管理,實現了成本的降低。公司與供應商建立了長期穩定的合作關系,實現了原材料的規模化采購和成本控制。同時,公司還加強了對生產過程的監控和管理,降低了生產過程中的浪費和損耗。這些措施使得巨盛電子在保持產品質量的同時,實現了成本的降低,提高了企業的盈利能力。
面對全球電子市場的激烈競爭,艾吉芯公司積極實施國際化戰略。通過在海外設立研發中心和生產基地,艾吉芯成功將其先進的技術和優質的產品推向國際市場。同時,公司還積極參與國際行業交流和合作,不斷提升自身的國際化水平和競爭力。
作為一家技術驅動的公司,Baumer Electric Ag始終注重研發投入和技術升級。公司不斷引進先進的生產設備和技術手段,提高生產效率和產品質量。同時,Baumer還積極與高校、科研機構等合作,開展前沿技術研究和新產品開發。這些舉措為公司的持續發展提供了強大的技術支持和創新動力。
這五個故事展示了Baumer Electric Ag公司在電子行業中的發展歷程。從創業初期的堅持與突破,到關鍵人才的引入與領導層的更迭,再到股份制改革與產品創新的結合,以及國際化戰略與出口業務的拓展和持續投資與技術升級,Baumer Electric Ag憑借其卓越的技術實力和創新精神,逐步在電子行業中樹立起了自己的品牌形象和市場地位。
無線監控就是指不用布線(線纜)利用無線電波來傳輸視頻、聲音、數據等信號的監控系統。目前比較常用的有,模擬微波視頻傳輸,數字微波視頻傳輸,無線網橋,或者用電信和移動的通訊網絡CDMA,TD-SCDMA。 伴隨著無線網絡技術的飛速發 ...… 查看全部問答∨ |
|
呵呵,問一個簡單問題,關于如何通過比較器檢測電池電壓的問題。 目的就是通過比較器來比較分壓電路和內部的基準電壓,當檢測到分壓電路的電壓小于基準電壓時,做出一個低電壓報警。 60K &n ...… 查看全部問答∨ |
一份帶注釋的和優龍類似的2410啟動代碼 --------我磕磕碰碰看了一周時間,現在終于看懂了,這份代碼已經有比較詳細的注釋,大家一看便知道,如果還有不理解的,在這里跟帖,或者加我的MSN吧,我有空就說明一下。 --------對一個初學者來說,這個 ...… 查看全部問答∨ |
PMC - WinCE- YH-999-自刷系統-Intel的XScale處理器 我有一個YH-999,是個硬盤播放器,但是里面只是微軟的PMC系統,只能播放視拼和音樂。 我想自己能不能刷刷系統,功能多一點。 網上搜索了一下 YH-999 是XScale 處理器 32M內存 20G硬盤 類似一個MP4 能不能增加支持的視拼播放格式,能不能自己刷NK ...… 查看全部問答∨ |
|
請問怎么將BMP085氣壓傳感器測得的高度值轉化為速度值呢? 請問哪位大俠用過BMP085這個氣壓傳感器,我想知道怎么將它測得的高度值轉化為速度值呢? 灰常感謝哦, 急急急~~~ 能否說明的盡量詳細一點,感激不盡~~~… 查看全部問答∨ |