freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

畢業(yè)論文_基于stc89c52單片機的家用紅外遙控系統(tǒng)(文件)

2024-09-21 10:53 上一頁面

下一頁面
 

【正文】 要包括讀取內(nèi)部時間值和修改時間值兩部分, DS1302模塊 總體操作如圖 33 所示。 /********************************************************** /向 DS1302 寫地址和數(shù)據(jù), Addr 地址, Dat 數(shù)據(jù) **********************************************************/ void Write1302_Cmd_Dat(unsigned char Addr, unsigned char Dat) { DS1302_RST = 0。 // 地址,命令 DS1302_WriteByte(Dat)。 開始 結(jié)束 設(shè)置 CE 為高 上升沿,按位傳輸?shù)刂? 讀取或?qū)懭胂鄳?yīng)地址的數(shù)據(jù) 設(shè) 置 C E 為 低 泰山學(xué)院本科畢業(yè)論文(設(shè)計) 19 DS1302_RST = 0。 // 以寫數(shù)據(jù)時的地址為參考,讀時應(yīng)加 1 Dat = DS1302_ReadByte()。 } 讀取時間數(shù)據(jù)并轉(zhuǎn)化成字符串 由于時間數(shù)據(jù)包含年、月、日、時、分、秒、周,為了方便可以定義一個時間類型結(jié)構(gòu)體,把轉(zhuǎn)換前后的數(shù)據(jù)都作為這個結(jié)構(gòu)體的成員。 unsigned char Minute。 unsigned char Year。 unsigned char Str_Day[3]。0x70)4)*10 + (temp amp。//十 位 TimeStr_Time[1] = TimeSecond%10 + 39。 圖 35 12864 液晶初始化 LCD12864 液晶屏 使用前先要進行初始化,已設(shè)定不同的功能和模式,本設(shè)計中 液晶初始化為基本指令集,開顯示關(guān)閉游標(biāo), 光標(biāo)從 左 向 右 加 1 移動 ,初始化通過 Init_12864()函數(shù)完成。 Write12864_Cmd_Dat(addr_12864,0)。 } } //在地址 addr,寫一個字符到 LCD void writedat(uchar addr ,uchar dat) { Write12864_Cmd_Dat(addr,0)。具體的編碼方式為脈寬調(diào)制的串行碼,用 的高電平和 的低電平表示二進制 0,以 的高電平和 的低電平表示二進制 1,編碼形式如圖 37所示。由于中斷函數(shù)盡量要短,進行解碼的工作盡量不要在中斷函數(shù)中進行。 **********************************************************/ void int0() interrupt 0 { if(startflag) { if( timer45) //9+ 的引導(dǎo)碼 { ir_num=0。 if(ir_num==33) { Ir_num=0。 } } 另外,根據(jù)通過實際應(yīng)用發(fā)現(xiàn),外部光源特別是太陽光對紅外通信干擾較大,為了避免光源干擾可能帶來的麻煩,這里采用了軟件解決的方式。 具體功能代碼 ?? } 這樣就保證了即使干擾數(shù)據(jù)能進入第一層,但進不了第二層,由于進入第一層后數(shù)據(jù)被清除,下一次連第一層也進不去了,從而避免了由于干擾出現(xiàn)隨機數(shù)對系統(tǒng)功能的影響。 4 系統(tǒng)調(diào)試及 設(shè)計 總結(jié) 系統(tǒng)調(diào)試 最小系統(tǒng)調(diào)試 本 設(shè)計 的電路圖由 Protel99SE 繪制,各功能模塊的實際電路由萬用板人工焊接。 通過以上實驗?zāi)軌蜃C明單片機最小系統(tǒng)已經(jīng)正常運行,下面就可以焊接其他功能模塊了。紅外模塊的調(diào)試是通過遙控繼電器開關(guān)來返回 修改項切換 增減修改 設(shè)置模式 泰山學(xué)院本科畢業(yè)論文(設(shè)計) 25 完成的 ,焊接好紅外和繼電器模塊后,通過編程使遙控器某按鍵每次鍵按下時 電平高低翻轉(zhuǎn),把繼電器連接在 引腳,上電復(fù)位后按下遙控器,繼電器發(fā)出啪啪的響聲,調(diào)試通過。 各個模塊調(diào)試通過后就可以把各模塊程序加以組合,實現(xiàn)整體功能了,由于采用了多文件編程要注意聲明全局變量。整個系統(tǒng)實現(xiàn)的功能有: (1) 實時溫度的測量和顯示。 本 設(shè)計 還有以下有待升級之處: (1) 可以加裝移動電源,而不是通過電源適配器供電,這樣可以使產(chǎn)品移動更方便,使用更加靈活。 **老師 在我 著手做這個設(shè)計之初就給我分析了可能遇到的困難,這使我在做設(shè)計和撰寫論文時更加有針對性,少走了不少彎路。 //uchar ircode[4]。 uchar code Week[]={周 }。 char hide_sec,hide_min,hide_hour,hide_day, hide_week,hide_month,hide_year。 for(i=8。 DS1302_CLK = 0。 i0。 DS1302_CLK = 0。 DS1302_RST = 1。 DS1302_RST = 0。 泰山學(xué)院本科畢業(yè)論文(設(shè)計) 35 DS1302_RST = 1。 DS1302_RST = 0。 TimeSecond = ((ReadValueamp。 TimeMinute = ((ReadValueamp。 TimeHour = ((ReadValueamp。 TimeDay = ((ReadValueamp。 TimeWeek = ((ReadValueamp。 TimeMonth = ((ReadValueamp。 TimeYear = ((ReadValueamp。 //定義了外部變量,用于向定時函數(shù)傳遞比較值 Minute_out=TimeMinute。039。039。 39。 39。039。 39。\039。039。 39。039。\039。039。 39。:39。039。 39。039。 39。\039。 down_flag=0。 //寫入允許 Write1302(0x8c,0x13)。 //周六 Write1302(0x84,0x00)。 //禁止寫入 } } void Delay1ms(unsigned int count) { uint i,j。j120。 if (ircode[3]==0xba) { count=0。 //寫入允許 Write1302(0x80,Secondamp。 ircode[3]=0x00。 Write1302(0x8E,0x80)。 Second=Read1302(DS1302_SECOND)。 } /********************************************************** //跳出調(diào)整模式 ,返回默認(rèn)顯示 **********************************************************/ void outkey() { uchar Second。icount。 Write1302(0x80,0x00)。 //4 月 Write1302(0x86,0x27)。 //進入默認(rèn)液晶顯示 if(Secondamp。 flag=1。 39。039。:39。 39。039。 39。039。\039。 39。\039。 39。039。 39。039。\039。 39。 39。039。239。0x0F)。0x0F)。0x0F)。0x0F)。0x0F)。0x0F)。0x0F)。 } /********************************************************** 獲取時鐘芯片的時鐘數(shù)據(jù)到自定義的結(jié)構(gòu)型數(shù)組 **********************************************************/ void DS1302_GetTime(struct_TIM *Time) { uchar ReadValue。 // 地址,命令 ucData = DS1302OutputByte()。 DS1302_RST = 0。 // 地址,命令 DS1302InputByte(ucDa)。 } /********************************************************** //ucAddr: DS1302 地址 , ucData: 要寫的數(shù)據(jù) **********************************************************/ void Write1302(unsigned char ucAddr, unsigned char ucDa) { DS1302_RST = 0。 //相當(dāng)于匯編中的 RRC ACC7 = DS1302_IO。 } } /********************************************************** 實時時鐘讀取一字節(jié) **********************************************************/ unsigned char DS1302OutputByte(void) { uchar i。 i) { DS1302_IO = ACC0。 //定義的時間類型 define DS1302_SECOND 0x80 //時鐘芯片的寄存器位置 ,存放時間 define DS1302_MINUTE 0x82 define DS1302_HOUR 0x84 define DS1302_WEEK 0x8A define DS1302_DAY 0x86 define DS1302_MONTH 0x88 define DS1302_YEAR 0x8C /********************************************************** 實時時鐘寫入一字節(jié) **********************************************************/ void DS1302InputByte(unsigned char d) { uchar i。 unsigned char Minute_out。 uchar code Month[]={月 }。另外,在這里還要感謝一下從事編輯工作的我的舍友王坤同學(xué),在論文編寫過程中他教會了我不少使用 Office 軟件的小技巧,帶著這些意外的收獲對他表 示衷心的感謝。 (3) 可以利用液晶的繪圖功能為時鐘模塊增加一個圖形時鐘界面,這樣可以使設(shè)計更加人性化。 (3) 通過定時功能控制繼電器開關(guān)燈,也可以隨時遙控開關(guān)燈。 圖 41 實物電路及顯示效果 總結(jié) 綜合上面的介紹,本 設(shè)計 的硬件共有,電源模塊,最小系統(tǒng),紅外模塊,溫度模塊,時鐘模塊,液晶模塊和繼電器模塊組成。經(jīng)過多次對電路的檢查懷疑是由于 DS1302 的 I/O 口驅(qū)動能力不足造成的,而且在焊接的電路中從DS1302 到單片機之間的連線又很長,于是在 DS1302 的 I/O 口和 VCC 之間加了一個 10K 的上拉電阻,問題得到圓滿解決。焊接好液晶模塊后,通過上面的方式下載程序使液晶顯示出幾個漢字和字符,液晶調(diào)試通過。焊接完成最小系統(tǒng)后,首先用軟件平臺編寫一個能使 口一秒間隔高低電平變化的 C 程序,然后 把編譯生成的二進制文件通過串口下載到單片機。該流程可以通過圖 38 表示。下面是一段示例代碼: if(ircode[2]==0x09) { ircode[2]=0x00。 //一組接收完成 } } else { startflag=1。 泰山學(xué)院本科畢業(yè)論文(設(shè)計) 23 timer=0。 /********************************************************** 晶振 12M,一個機械周期為 12/12020000 為 1 微秒,則每一次中斷 256*= **********************************************************/ void timer0() interrupt 1 { timer++。 為了保證精度,定時器初始化為工作方式 2 即 8 位自動重裝模式。 } HS0038 紅外解碼程序模塊 紅外遙控器編碼介紹 在進行紅外解碼之前首先要對本 設(shè)計 采用的紅外遙控器編碼方式進行簡要介紹。\039。下面是相應(yīng)的實現(xiàn)代碼。//個位 至此,所得數(shù)據(jù)便可以方便的顯示在液晶屏上了。 接著就可以把數(shù)值轉(zhuǎn)換成字符串了,仍以秒值為例轉(zhuǎn)換語句如下: TimeStr_Time[0] = TimeSecond/10 + 39。 然后,通過 Read1302()
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1