第七屆藍(lán)橋杯大賽模擬題.docx_第1頁
第七屆藍(lán)橋杯大賽模擬題.docx_第2頁
第七屆藍(lán)橋杯大賽模擬題.docx_第3頁
第七屆藍(lán)橋杯大賽模擬題.docx_第4頁
第七屆藍(lán)橋杯大賽模擬題.docx_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

main.c#include#include#includehead.h#define uchar unsigned char#define uint unsigned int#define ulong unsigned longsbit LSA=P10;sbit LSB=P11;sbit LSC=P12;sbit L1=P13;uint i,j,k,t,s,cs;uchar KeyValue;uchar code DATA17=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;uint code ts=1,5,30,60;uchar code jump=0x40,0x00;uchar displaydata8;uint Tempdata10=0,0,0,0,0,0,0,0,0,0;void KeyDown();void main()float tp;TMOD=0x10;TH1=(65536-50000)/256;TL1=(65536-50000)%256;EA=1;ET1=1;TR1=0;L1=0;Ds18b20ReadTemp();one:i=0;j=0;t=1;T1:displaydata0=0x00;displaydata1=0x00;displaydata2=0x00;displaydata3=0x00;displaydata4=0x00;displaydata5=0x40;displaydata6=DATAtsj/10;displaydata7=DATAtsj%10;t=tsj;while(1)TR1=1;for(i=0;i8;i+)switch(i)case(0):LSC=0;LSB=0;LSA=0; break;case(1):LSC=0;LSB=0;LSA=1; break;case(2):LSC=0;LSB=1;LSA=0; break;case(3):LSC=0;LSB=1;LSA=1; break;case(4):LSC=1;LSB=0;LSA=0; break;case(5):LSC=1;LSB=0;LSA=1; break;case(6):LSC=1;LSB=1;LSA=0; break;case(7):LSC=1;LSB=1;LSA=1; break;P0=displaydatai;Delay1ms(1);P0=0x00;if(KeyValue=4)KeyValue=0;j+;if(j=4)j=0;goto T1;if(KeyValue=5) goto two;two:i=0;j=0;k=0;s=0;cs=0;TR1=0;Ds1302Init();while(1)Ds1302ReadTime();displaydata0=DATATime2/16;displaydata1=DATATime2%16;displaydata2=jumps;displaydata3=DATATime1/16;displaydata4=DATATime1%16;displaydata5=jumps;displaydata6=DATATime0/16;displaydata7=DATATime0%16;if(j!=displaydata7)j=displaydata7;if(k=t)k=0;Tempdatacs=Ds18b20ReadTemp();cs+;if(cs=10) goto three;k+;s+;if(s=2)s=0;for(i=0;i8;i+)switch(i)case(0):LSA=0;LSB=0;LSC=0; break;case(1):LSA=1;LSB=0;LSC=0; break;case(2):LSA=0;LSB=1;LSC=0; break;case(3):LSA=1;LSB=1;LSC=0; break;case(4):LSA=0;LSB=0;LSC=1; break;case(5):LSA=1;LSB=0;LSC=1; break;case(6):LSA=0;LSB=1;LSC=1; break;case(7):LSA=1;LSB=1;LSC=1; break;P0=displaydatai;Delay1ms(1);P0=0x00;three:i=0;j=0;k=0;t=0;TR1=1;while(1)TH0=(65536-5000)/256; TL0=(65536-5000)%256;ET0=1;TR0=1;for(j=0;j10;j+)if(Tempdataj 0)Tempdataj=Tempdataj-1;Tempdataj=Tempdataj;tp=Tempdataj;Tempdataj=tp*0.0625*100+0.5;elsetp=Tempdataj;Tempdataj=tp*0.0625*100+0.5;T2:displaydata0=0x40;displaydata1=DATA0;displaydata2=DATAi;displaydata3=0x00;displaydata4=0x00;displaydata5=0x40;displaydata6=DATATempdatai % 10000 / 1000;displaydata7=DATATempdatai % 1000 / 100;while(1)for(j=0;j8;j+)switch(j)case(0):LSA=0;LSB=0;LSC=0; break;case(1):LSA=1;LSB=0;LSC=0; break;case(2):LSA=0;LSB=1;LSC=0; break;case(3):LSA=1;LSB=1;LSC=0; break;case(4):LSA=0;LSB=0;LSC=1; break;case(5):LSA=1;LSB=0;LSC=1; break;case(6):LSA=0;LSB=1;LSC=1; break;case(7):LSA=1;LSB=1;LSC=1; break;P0=displaydataj;Delay1ms(1);P0=0x00;if(KeyValue=6)TR0=0;L1=0;i+;if(i=10) i=0;KeyValue=0;goto T2;if(KeyValue=7) TR0=0;L1=0;goto one;void Time1() interrupt 3TH1=(65536-50000)/256;TL1=(65536-50000)%256;P2=0x0f;if(P2!=0x0f)P0=0x00;Delay1ms(10);if(P2!=0x0f)P2=0X0F;switch(P2)case(0X07):KeyValue=0;break;case(0X0b):KeyValue=4;break;case(0X0d): KeyValue=8;break;case(0X0e):KeyValue=12;break;P2=0XF0;switch(P2)case(0X70):KeyValue=KeyValue+3;break;case(0Xb0):KeyValue=KeyValue+2;break;case(0Xd0): KeyValue=KeyValue+1;break;case(0Xe0):KeyValue=KeyValue;break;while(P2!=0xf0)Delay1ms(10);void Time0() interrupt 1TH0=(65536-5000)/256;TL0=(65536-5000)%256;t+;if(t=100)L1=L1;t=0;void.c#includehead.h/-DS1302讀取數(shù)據(jù)的地址命令-秒分時(shí)日月年-/uchar code READ_RTC_ADDR7 = 0x81, 0x83, 0x85, 0x87, 0x89, 0x8b, 0x8d; /-DS1302寫入數(shù)據(jù)的地址命令-秒分時(shí)日月年-/uchar code WRITE_RTC_ADDR7 = 0x80, 0x82, 0x84, 0x86, 0x88, 0x8a, 0x8c;/-DS1302時(shí)鐘初始化2013年1月1日星期二12點(diǎn)00分00秒,存儲順序是秒分時(shí)日月周年,存儲格式是用BCD碼-/uchar code WRITE_RTC_TIME7 = 0x50, 0x59, 0x23, 0x29, 0x11, 0x02, 0x16;uchar Time7;/* 函 數(shù) 名 : Ds1302Write* 函數(shù)功能 : 向DS1302命令(地址+數(shù)據(jù))* 輸 入 : addr,dat* 輸 出 : 無*/void Ds1302Write(uchar addr, uchar dat)uchar n;RST = 0;_nop_();SCLK = 0;/先將SCLK置低電平。_nop_();RST = 1; /然后將RST(CE)置高電平。_nop_();for (n=0; n= 1;SCLK = 1;/數(shù)據(jù)在上升沿時(shí),DS1302讀取數(shù)據(jù)_nop_();SCLK = 0;_nop_();for (n=0; n= 1;SCLK = 1;/數(shù)據(jù)在上升沿時(shí),DS1302讀取數(shù)據(jù)_nop_();SCLK = 0;_nop_(); RST = 0;/傳送數(shù)據(jù)結(jié)束_nop_();/* 函 數(shù) 名 : Ds1302Read* 函數(shù)功能 : 讀取一個(gè)地址的數(shù)據(jù)* 輸 入 : addr* 輸 出 : dat*/uchar Ds1302Read(uchar addr)uchar n,dat,dat1;RST = 0;_nop_();SCLK = 0;/先將SCLK置低電平。_nop_();RST = 1;/然后將RST(CE)置高電平。_nop_();for(n=0; n= 1;SCLK = 1;/數(shù)據(jù)在上升沿時(shí),DS1302讀取數(shù)據(jù)_nop_();SCLK = 0;/DS1302下降沿時(shí),放置數(shù)據(jù)_nop_();_nop_();for(n=0; n1) | (dat17);SCLK = 1;_nop_();SCLK = 0;/DS1302下降沿時(shí),放置數(shù)據(jù)_nop_();RST = 0;_nop_();/以下為DS1302復(fù)位的穩(wěn)定時(shí)間,必須的。SCLK = 1;_nop_();DSIO = 0;_nop_();DSIO = 1;_nop_();return dat;/* 函 數(shù) 名 : Ds1302Init* 函數(shù)功能 : 初始化DS1302.* 輸 入 : 無* 輸 出 : 無*/void Ds1302Init()uchar n;Ds1302Write(0x8E,0X00); /禁止寫保護(hù),就是關(guān)閉寫保護(hù)功能for (n=0; n7; n+)/寫入7個(gè)字節(jié)的時(shí)鐘信號:分秒時(shí)日月周年Ds1302Write(WRITE_RTC_ADDRn,WRITE_RTC_TIMEn);Ds1302Write(0x8E,0x80); /打開寫保護(hù)功能/* 函 數(shù) 名 : Ds1302ReadTime* 函數(shù)功能 : 讀取時(shí)鐘信息* 輸 入 : 無* 輸 出 : 無*/void Ds1302ReadTime()uchar n;for (n=0; n0; y-)for(x=110; x0; x-);/* 函 數(shù) 名 : Ds18b20Init* 函數(shù)功能 : 初始化* 輸 入 : 無* 輸 出 : 初始化成功返回1,失敗返回0*/uchar Ds18b20Init()uchar i;DSPORT = 0; /將總線拉低480us960usi = 70;while(i-);/延時(shí)642usDSPORT = 1;/然后拉高總線,如果DS18B20做出反應(yīng)會將在15us60us后總線拉低i = 0;Delay1ms(1); /等待DS18B20拉低總線while(DSPORT)return 0;/初始化失敗return 1;/初始化成功/* 函 數(shù) 名 : Ds18b20WriteByte* 函數(shù)功能 : 向18B20寫入一個(gè)字節(jié)* 輸 入 : com* 輸 出 : 無*/void Ds18b20WriteByte(uchar dat)uint i, j;for(j=0; j= 1;/* 函 數(shù) 名 : Ds18b20ReadByte* 函數(shù)功能 : 讀取一個(gè)字節(jié)* 輸 入 : com* 輸 出 : 無*/uchar Ds18b20ReadByte()uchar byte, bi;uint i, j;for(j=8; j0; j-)DSPORT = 0;/先將總線拉低1usi+;DSPORT = 1;/然后釋放總線i+;i+;/延時(shí)6us等待數(shù)據(jù)穩(wěn)定bi = DSPORT; /讀取數(shù)據(jù),從最低位開始讀取/*將byte左移一位,然后與上右移7位后的bi,注意移動(dòng)之后移掉那位補(bǔ)0。*/byte = (byte 1) | (bi 7); i = 4;/讀取完之后等待48us再接著讀取下一個(gè)數(shù)while(i-);return byte;/* 函 數(shù) 名 : Ds18b20ChangTemp* 函數(shù)功能 : 讓18b20開始轉(zhuǎn)換溫度* 輸 入 : com* 輸 出 : 無*/void Ds18b20ChangTemp()Ds18b20Init();Delay1ms(1);Ds18b20WriteByte(0xcc);/跳過ROM操作命令 Ds18b20WriteByte(0x44); /溫度轉(zhuǎn)換命令Delay1ms(1);/* 函 數(shù) 名 : Ds18b20ReadTempCom* 函數(shù)功能 : 發(fā)送讀取溫度命令* 輸 入 : com* 輸 出 : 無*/void Ds18b20ReadTempCom()Ds18b20Init();Delay1ms(1);Ds18b20WriteByte(0xcc); /跳過ROM操作命令Ds18b20WriteByte(0xbe); /發(fā)送讀取溫度命令/* 函 數(shù) 名 : Ds18b20ReadTemp* 函數(shù)功能 : 讀取溫度* 輸 入 : com* 輸 出 : 無*/int Ds18b20ReadTemp()int temp = 0;uchar tmh, tml;Ds18b20ChangTemp(); /先寫入轉(zhuǎn)換命令Ds18b20ReadTempCom();/然后等待轉(zhuǎn)換完后發(fā)送讀取溫度命令tml = Ds18b20ReadByte(

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論