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

正文內(nèi)容

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

2024-09-01 10:53本頁面
  

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