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

正文內(nèi)容

基于單片機(jī)的萬年歷的設(shè)計(jì)與制作畢業(yè)論文(參考版)

2025-03-02 10:24本頁面
  

【正文】 039。039。:39。039。039。:39。039。039。\039。039。039。39。039。039。39。039。039。0x0f)。 TimeYear = ((ReadValueamp。0x0f)。 TimeMonth = ((ReadValueamp。0x0f)。 TimeWeek = ((ReadValueamp。0x0f)。 TimeDay = ((ReadValueamp。0x0f)。 TimeHour = ((ReadValueamp。0x0f)。 TimeMinute = ((ReadValueamp。0x0f)。 TimeSecond = ((ReadValueamp。 } /**/ //讀出時(shí)間 void DS1302_GetTime(SYSTEMTIME *Time) { unchar ReadValue。 Write1302(Address,((Value/10)4|(Value%10)))。 //0x8e 控制字節(jié)地址 ,bit7=WP WP=1 禁止數(shù)據(jù)寫入 DS1302 else Write1302(0x8E,0x00)。 return (Data)。 DS1302_CLK = 1。 //RST 拉高 ,啟動(dòng)數(shù)據(jù)傳送 DS1302_InputByte(Address|0x01)。 DS1302_CLK = 0。 } /**/ //讀取 1302 指定地址中的數(shù)據(jù) unchar Read1302(unchar Address) { unchar Data。 DS1302_CLK = 1。 DS1302_InputByte(Address)。 DS1302_CLK = 0。 } return (ACC)。 //讀出由低到高位 ,只能移 7次有效位 !!! ACC7 = DS1302_IO。 i) { DS1302_CLK = 0。 for(i=8。 //上升沿寫入數(shù)據(jù) ACC = 1。 DS1302_IO = ACC0。 i0。 ACC = Data。 //時(shí)間轉(zhuǎn)化成字符 void DS1302_Initial (void)。 //讀出時(shí)間 void DateToStr(SYSTEMTIME *Time)。 //DS1302 是否寫入保護(hù) void DS1302_SetTime(unchar Address, unchar Value)。 //在指定地址寫入指定的數(shù)據(jù) unchar Read1302(unchar Address)。 //寫入一個(gè)字節(jié) (內(nèi)部函數(shù) ) unchar DS1302_OutputByte(void)。 sbit ACC7 = ACC^7。 //數(shù)據(jù)引腳 sbit DS1302_RST = P1^5。 //讀取溫度寄存器 ,前兩個(gè)分別是溫度的低位和高位 } DS1302 時(shí) 鐘 子程序 include /**/ //ifndef __DS1302_A_H__ //define __DS1302_A_H__ /**/ //引腳及位的定義 sbit DS1302_CLK = P1^6。 //將 DS18B20 初始化 WriteOneChar(0xCC)。 // 啟動(dòng)溫度轉(zhuǎn)換 delaynms(200)。 //將 DS18B20 初始化 WriteOneChar(0xCC)。time++) 。 //將 dat 中的各二進(jìn)制位數(shù) 據(jù)右移 1位 } for(time=0。time++) 。 //釋放數(shù)據(jù)線 for(time=0。time++) 。 //利用與運(yùn)算取出要寫的某位二進(jìn)制數(shù)據(jù) , //并將其送到數(shù)據(jù)線上等待 DS18B20 采樣 for(time=0。 //將數(shù)據(jù)線從高拉低時(shí)即啟動(dòng)寫時(shí)序 DQ=datamp。 // 先將數(shù)據(jù)線拉高 _nop_()。 i8。 //返回讀出的十六進(jìn)制數(shù)據(jù) } /***************************************************** 函數(shù)功能:向 DS18B20 寫入一個(gè)字節(jié)數(shù)據(jù) 入口參數(shù): dat ***************************************************/ WriteOneChar(unsigned char dat) { unsigned char i=0。time++)。//如果讀到的數(shù)據(jù)是 0,則將 0存入 dat //將單片機(jī)檢測到的電平信號(hào) DQ 存入 r[i] for(time=0。 if(DQ==1) dat|=0x80。time++)。 //將數(shù)據(jù)線 人為 拉高 ,為單片機(jī)檢測 DS18B20 的輸出電平作準(zhǔn)備 for(time=0。 //單片機(jī)從 DS18B20 讀書據(jù)時(shí) ,將數(shù)據(jù)線從高拉低即啟動(dòng)讀時(shí)序 _nop_()。 // 先將數(shù)據(jù)線拉高 _nop_()。i8。 unsigned char dat。 //延時(shí)足夠長時(shí)間,等待存在脈沖輸出完畢 return (flag)。time200。 //延時(shí)約 30us(釋放總線后需等待 15~60us 讓 DS18B20 輸出存在脈沖) flag=DQ。time10。 //以向 DS18B20 發(fā)出一持續(xù) 480~960us 的低電平復(fù)位脈沖 DQ = 1。time200。 //略微延時(shí)約 6微秒 DQ = 0。time2。 //儲(chǔ)存 DS18B20 是否存在的標(biāo)志, flag=0,表示存在;flag=1,表示不存在 DQ = 1。 unsigned char time。 return temp。 //在和低八位相或,整合取得的數(shù)據(jù) tt=temp*。 temp=8。//讀低八位 b=read_byte()。 //直接向 18b20 發(fā)送溫度變換命令 write_byte(0xbe)。 reset()。 //啟動(dòng) 18b20 進(jìn)行溫度轉(zhuǎn)換 } uint tmp() //獲取溫度 { float tt。 write_byte(0xcc)。 } mand=_cror_(mand,1)。 DS=1。 } else //否則產(chǎn)生一上升沿 { DS=0。 DS=1。 0x01)==0) //取出最低位為零時(shí), DS 要產(chǎn)生一個(gè)負(fù)脈沖脈沖 { DS=0。i8。 //返回字節(jié)數(shù) } void write_byte(uchar mand) //寫一字節(jié)到 18b20 { uchar i。 //當(dāng) j=0 時(shí),即讀取一字節(jié)數(shù)完畢,取出次字節(jié)數(shù) else byte=byte|0x80。 //將 byte 數(shù)據(jù)向右循環(huán)一位,每次都取出最高位 j=read_bit()。i8。 bit j。 return temp。 temp=DS。 DS=1。 DS=0。 delay1(200)。 DS=1。 } void reset(void) //送初值和初 始命令 { DS=0。i++) delay1ms()。 for(i=0。j++) 。i++) for(j=0。 for(i=0。 sbit DS=P1^0。 調(diào) 用 年 份 轉(zhuǎn) 換 成 可 供 l c d 顯 示 的 字 段 子 程 序 D a t e T o S t r 時(shí) 間 轉(zhuǎn) 換 成 可 供 l c d 顯 示 的 字 段 子 程 序 T i m e T o S t r結(jié) 束 圖 按鍵掃描子程序流程圖 否 是 M o d e 鍵 是 否 按 下將 m o d e 按 鍵 次 數(shù) 存 放于 變 量 m o d e _ n u m 中 m o d e _ n u m = 3 ? m o d e _ n u m = 2 ? m o d e _ n u m = 1 ? m o d e _ n u m = 4 ? m o d e _ n u m = 5 ? m o d e _ n u m = 7 ? m o d e _ n u m = 6 ?移 動(dòng) 光 標(biāo) , 并 返 回 圖 加減鍵處理子程序流程圖 判 斷 是 否 為 修 改 模 式 判 斷 是 否 為 加 一 鍵 判 斷 n u m = 1 ?轉(zhuǎn) 減 一 鍵 程 序 判 斷 n u m = 2 ? 判 斷 n u m = 3 ?修 改 y e a r 值 , 并 返 回 修 改 m o u t h 值 , 并 返 回 修 改 d a y 值 , 并 返 回 判 斷 n u m = 6 ? 判 斷 n u m = 5 ? 判 斷 n u m = 4 ? 修 改 秒 值 , 并 返 回 修 改 分 值 , 并 返 回 修 改 小 時(shí) 值 , 并 返 回 否 是是否否 否是 是 是是 是 是否否否 圖 是 否 是 是 是 是 否 否 否 否 是 是 否 否 子程序的設(shè)計(jì) DS18B20 溫度子程序 include //include //include define uchar unsigned char define uint unsigned int uint temp。 1602 液晶模塊內(nèi)部的字符發(fā)生存儲(chǔ)器( ROM)已經(jīng)存儲(chǔ)了 160 個(gè)不同的點(diǎn)陣字符圖形,如圖 1058 所示,這些字符有:阿拉伯?dāng)?shù)字、英文字母的大小寫、常用的符號(hào)、和日文假名等,每一個(gè)字符都有一個(gè)固定的代碼,比如大寫的英文字母 “A” 的代碼是 01000001B( 41H),顯示時(shí)模塊把地址 41H 中的點(diǎn)陣字符圖形顯示出來,我們就能看到字母 “A” 。 在對(duì)液晶模塊的初始化中要先設(shè)置其 顯示模式,在液晶模塊顯示字符時(shí)光標(biāo)是自動(dòng)右移的,無需人工干預(yù)。要顯示字符時(shí)要先輸入顯示字符地址,也就是告訴模塊在,哪里顯示字符,圖 16 是 LCD1602 的內(nèi)部顯示地址。 表 9 LCD1602 的控制命令 序號(hào) 指令 RS R/W D7 D6 D5 D4 D3 D2 D1 D0 1 清顯示 0 0 0 0 0 0 0 0 0 1 2 光標(biāo)返回 0 0 0 0 0 0 0 0 1 * 3 置輸入模式 0 0 0 0 0 0 0 1 I/D S 4 顯示開 /關(guān)控制 0 0 0 0 0 0 1 D C B 5 光標(biāo)或字符移位 0 0 0 0 0 1 S/C R/L * * 6 置功能 0 0 0 0 1 DL N F * * 7 置字符發(fā)生存儲(chǔ)器地址 0 0 0 1 字符發(fā)生存貯器地址 8 置數(shù)據(jù)存儲(chǔ)器地址 0 0 1 顯示數(shù)據(jù)存貯器地址 9 讀忙標(biāo)志或地址 0 1 BF 計(jì)數(shù)器地址 10 寫數(shù)到 RAM 1 0 要寫的數(shù)據(jù)內(nèi)容 11 從 RAM 讀數(shù) 1 1 讀出的數(shù)據(jù)內(nèi)容 ② LCD1602 的讀寫時(shí)序 如圖 15( a)( b)分別為 LCD1602 的讀時(shí)序和寫時(shí)序。 指令 8: DDRAM地址設(shè)置。 指令 5:光標(biāo)或顯示移位 S/C :高電平時(shí)顯示移動(dòng)的文字,低電平時(shí)移動(dòng)光標(biāo) 指令 6:功能設(shè)置命令 DL:高電平時(shí)為 4位總線,低電平時(shí)為 8位總線 N:低電平時(shí)為單行顯示,高電平時(shí)為雙行顯示, F:低電平時(shí)顯示 5X7的點(diǎn)陣字符,高電平時(shí)顯示 5X10的顯示字符。 D:控制整體的顯示開與關(guān),高電平表示開顯示,低電平表示關(guān)顯示。 指令 1:清顯示,指令碼 01H,光標(biāo)復(fù)位到地址 00H位置 指令 2:光標(biāo)復(fù)位,光標(biāo)返回到地址 00H 指令 3:光標(biāo)
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1