除了正常的保存之外,在編譯無誤后,選擇另存為相同名稱的.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
推薦閱讀
史海拾趣
隨著科技的不斷進步,電子行業也在快速變革。為了應對這一挑戰,Esico-Triton不斷加強研發投入,特別是在人工智能和物聯網領域。公司推出了一系列智能家居和工業自動化產品,以適應市場的需求。同時,Esico-Triton還與多所知名大學和研究機構合作,共同研發新技術,確保公司在行業中的領先地位。
在電子行業的初期,BVLED公司只是眾多初創企業之一,面臨著資金短缺、技術不成熟和市場認可度低等問題。然而,公司的創始人憑借對LED技術的深刻理解和市場需求的敏銳洞察,決定專注于研發高效、節能的LED產品。經過數月的努力,公司成功開發出了一款具有競爭力的LED照明產品,并成功獲得了第一批訂單。這一突破為公司的發展奠定了堅實的基礎。
在追求經濟效益的同時,BVLED公司也積極履行社會責任,致力于推動可持續發展。公司注重環保和節能技術的研發和應用,推出了一系列環保型LED產品;同時,公司還積極參與公益事業和慈善活動,為社會做出貢獻。這些舉措不僅提升了公司的社會形象,也為公司的長遠發展奠定了堅實的基礎。
請注意,以上僅為一個框架性的描述,并未涉及具體的公司名稱、時間、地點等細節。你可以根據這個框架進行進一步的創作和補充,以形成完整的故事。同時,由于每個公司的發展軌跡都有其獨特之處,你也可以結合你對電子行業LED公司的了解和觀察,來創作出更具真實感和說服力的故事。
隨著市場的不斷發展,華宇創意識到單一產品無法滿足日益增長的市場需求。于是,公司加大了對研發的投入,積極引進高端人才,與國內外知名科研機構建立合作關系。經過不懈努力,華宇創成功研發出一系列智能電子設備,包括智能手表、智能眼鏡、智能家居控制器等。這些新產品的推出不僅豐富了公司的產品線,也進一步提升了華宇創的市場競爭力。
除了技術創新外,創都公司還以其精準的市場策略著稱。在電子產品更新換代日益加快的背景下,公司市場部門深入分析了消費者的需求和市場趨勢,成功預測了未來一段時間內的產品走向。基于這些分析,創都公司提前布局,推出了多款符合市場趨勢的新產品。這些產品不僅滿足了消費者的需求,還引領了市場潮流,為公司帶來了豐厚的利潤。此外,創都公司還積極開展品牌推廣活動,通過線上線下多種渠道提升品牌知名度,進一步鞏固了市場地位。
隨著技術的不斷進步,Atlanta Micro不斷推出創新產品,其中最為引人注目的是其開發的一款高性能RF模塊。這款產品采用了先進的材料和技術,具有更高的頻率穩定性、更低的噪聲和更長的使用壽命。這一創新不僅提升了產品的性能,也滿足了客戶對更高品質產品的需求,進一步鞏固了Atlanta Micro在市場上的地位。
一.設計要求: 要求用一片fpga ,vga 顯示器和實驗箱中的vga接口共同實現多種彩色的顯示。 其功能如下: (1) 根據vga工業標準,產生正確的行場掃描信號; (2) 有顯示控制鍵,每按動一次按鍵,輸出全屏改變一種顏色,循環顯示顏色分別為: ...… 查看全部問答∨ |
單位要我搞個改進,,思路有了,,哪個有好辦法,,近來交流下,,,十萬著急 現在生產線測試產品的工具又落后又不好看,,要升級,,我負責硬件和軟件。。。 要測試 1. 編碼 2. 總線電流 3. 24V電源電流 4. 故障報警等等參數,,,有沒有朋友有好建議。。我方法有 ...… 查看全部問答∨ |
我是個新手。。。想在WIN CE下用WIN 32顯示BMP圖片!。。。不用MFC。。。 這個應該要怎么實現啊!!! 能不能給個例子看看。。。先謝謝啦 … 查看全部問答∨ |
|
UDP效驗碼的格式是每16為進行反碼求和運算,有進位則結果再加上1,最后得到一個16位的效驗碼。我的問題是這16位求和的具體方向是怎樣的,最后按什么順序放在16的效驗碼字段里? 比如:設cr為16效驗碼初值為0(類型unsigned int),數據包中的16位 ...… 查看全部問答∨ |
友善之臂 mini2440 + 3.5"LCD 套餐 300轉讓! 本帖最后由 ddllxxrr 于 2016-1-7 17:10 編輯 自降100哈,遇到高興的事了,嘿嘿 300元轉讓友善之臂 mini2440 + 3.5"LCD 套餐 全新的,買來后就沒有怎么用過,詳細介紹請看: 有意的請聯系我,賣價300元,東西絕對全新的 QQ 653338192 另 ...… 查看全部問答∨ |
智能車飛思卡爾MC9S12DG128開發板 個人閑置 本人為在校學生,曾參加過2009年、2010年飛思卡爾智能車競賽。由于現在正在備戰考研。決定出售全套 智能車飛思卡 ...… 查看全部問答∨ |
MC9S12XS128MAA,編寫兩路速度測試,在液晶屏上同時顯示這倆路速度值 程序整體思路 K1鍵按下,一只led燈開始閃爍,同時啟動測試速度程序,能夠在液晶屏上顯示所測速度,如果速度在20km/h-60km/h之間,則從相應口輸出10hz方波脈沖,在檢測脈沖儀上顯示 測試速度具體思路(兩路速度測試,兩路速度顯示) 由V=(2∏R*f) ...… 查看全部問答∨ |
設計資源 培訓 開發板 精華推薦
- 特斯拉:美國交付的Model Y/3電池包已實現100%美國生產
- 地平線與博世深化合作,攜手為多家車企提供輔助駕駛產品
- 強化中國市場戰略布局,德州儀器正靈活應對全球關稅挑戰
- Molex莫仕通過本地合作和創新加強支持中國汽車行業
- 貿澤開售Texas Instruments適用于高分辨率AR HUD的 全新DLP4620S-Q1 0.46"汽車數字微鏡器件
- ROHM推出高功率密度的新型SiC模塊,將實現車載充電器小型化!
- 用上車規級UFS 4.0,讓出行變得高效且可靠
- 車載測試技術解析:聚焦高帶寬、多通道同步采集與協議分析
- 傳統晶體管的極限!臺積電3nm N3P已量產
- 分析師稱H20出口管制毫無意義:對中國AI發展影響不大