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

正文內(nèi)容

畢業(yè)設(shè)計(jì)論文-基于單片機(jī)的數(shù)字電子時(shí)鐘的設(shè)計(jì)與制作(編輯修改稿)

2024-12-05 10:33 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 K16LCD1LCD1602VCCVCC8R310KR1Q11122Speaker1KR6VCC+12BT1Battery1 2PowerHeader工作模式模式輔助1 2 36 5 4PowerSWVCC+5VCC10KR5VCCKEY1KEY2KEY1KEY2RSR/WENRSR/WENRestSWRestSWRestSW 圖 461 13 系統(tǒng) 的軟件設(shè)計(jì) 系統(tǒng) 軟件設(shè)計(jì) 系統(tǒng)軟件包含四個(gè)部分:主程序,定時(shí)器掃描程序, 按鍵掃描程序, 按鍵處理程序 ;通過這四個(gè)部分可以實(shí)現(xiàn) 數(shù)字電子鐘 的功能設(shè)計(jì)。 主程序設(shè)計(jì) 程序設(shè)計(jì)主要是通過 單片機(jī)內(nèi)部 TIMER0 和 TIMER1 產(chǎn)生 系統(tǒng)時(shí)鐘信號(hào) , 經(jīng)過單片機(jī)的運(yùn)算分別得到 時(shí)間的 年 月 日 時(shí) 分 秒 和秒表的 時(shí) 分 秒 毫秒, 單片機(jī)在主程序中循環(huán)掃描按鍵端口 ,根據(jù)返回的鍵值分別將這些數(shù)據(jù) 傳給 LCD1602 對(duì)應(yīng) 顯示出來 。 實(shí)現(xiàn)功能 程序?qū)崿F(xiàn)的功能是: 正常顯示 年 月 日 和 時(shí) 分 秒 以及鬧鐘的 時(shí) 分 。 若單片機(jī)檢測(cè)到 key1 第一次 按下并釋放則 LCD 切換到顯示秒表模式 00:00:00:00, 第二次按下 key2 并釋放則返回到時(shí)鐘顯示模式 。在時(shí)鐘正常顯示模式下若前 5 按下 key2 按鍵并釋放則一次選中鬧鐘的 時(shí) 分和時(shí)鐘的 分 時(shí) 年 月 日 ,選中位會(huì)出現(xiàn)光標(biāo)閃爍并且時(shí)鐘不自動(dòng)走動(dòng) , 第 6次按下 key2 并釋放之后則正常顯示時(shí)鐘 , 6 次為一個(gè)循環(huán)。 在光標(biāo)閃爍的時(shí)候若按下 key1并且釋放則可以對(duì)相應(yīng)位進(jìn)行校正 。 若在 秒表 顯示模式下 第一次 按下 key2 并釋放則啟動(dòng)秒表計(jì)時(shí) ,第二次按下 key2 釋放后則暫停秒表 ,第三次按下 key2 釋放后則秒表清零 , 三 次為一個(gè)循環(huán) 。 工作流程圖 通過以上分析可得圖 52 系統(tǒng)工作流程圖: 是是 否 model_flag = 0 amp。amp。 time_change_flag = 0 amp。amp。 shift_flag =0否結(jié) 束Shift_flag清 零寫 入 顯 示 時(shí) 間 代 碼到 液 晶是 否 model_flag = 1 amp。amp。 time_change_flag = 0 amp。amp。 shift_flag =1Shift_flag置 1寫 入 顯 秒 表 代 碼 到液 晶否 圖 521 14 實(shí)現(xiàn)功能 當(dāng)系統(tǒng)檢測(cè)到有按鍵按下時(shí)返回相應(yīng)非零的鍵值,否則返回零 。 按鍵掃描流程圖 (如圖 531) t 1 清 零 , 讀 取 當(dāng) 前按 鍵 端 口 值 并 保存 ,是是 否 有 鍵 按 下否t 1 是 否 d e n 與 k e y _ s h a k e _ t i m e并 且 是 否 有 鍵 按 下否是否按 鍵 是 否 釋 放處 理 保 存 的 鍵 值是返 回 零返 回 處 理 后 的 鍵 值 圖 531 15 按鍵掃描部分代碼 unsigned char key_scan(void) { static unsigned char value。 //鍵值 static unsigned char do_key。 //執(zhí)行相應(yīng)命令標(biāo)識(shí) static unsigned char key_scan_step。 //鍵盤掃描步驟 if(key_scan_step==0) { key_value = 0。 if(do_key==0) { if(KEY amp。 0x03 != 0x03) { t1=0。 do_key=1。 } } if((t1=key_shake_time)amp。amp。((KEY amp。 0x03) != 0x03)) { value = KEY amp。 0x03。 do_key = 0。 key_scan_step = 1。 } } if((key_scan_step==1)amp。amp。((KEY amp。 0x03) == 0x03)) { key_scan_step = 0。 switch(value) { case 0x02 : value = 1。break。 case 0x01 : value = 2。break。 16 case 0x03 : value = 0。break。 default : value = 0。break。 } return(value)。 } else return(0)。 } 時(shí)間更新函數(shù)處理程序 實(shí)現(xiàn)功能 通過對(duì) t0 值的判斷來得到 秒 分 時(shí) 日 月 年 的計(jì)算 工作流程圖 (如圖 521) 是是t0是 否 等 于 20否否否分 是 否 大 于 59結(jié) 束時(shí) 間 的 秒 加 1將 秒 寫 入 液 晶秒 是 否 大 于 59秒 清 零 , 分 加 1將 分 寫 入 液 晶分 清 零 , 時(shí) 加 1將 時(shí) 寫 入 液 晶是時(shí) 是 否 大 于 23否時(shí) 清 零 , 將 時(shí) 寫 入液 晶是 圖 521 17 時(shí)間更新函數(shù)部分代碼 void update_time(void) { if(t0=20) { t0=0。 ++。 if(59) { =0。 ++。 if(59) { =0。 ++。 if(23) { =0。 ++。 switch() { case 1: case 3: case 5: case 7: case 8: case 10: case 12:if(31) { =1。 ++。 18 if(12) { =1。 ++。 if( 2060) { = 2020。 } } }break。 case 4: case 6: case 9: case 11:if(30) { =1。 ++。 if(12) { =1。 ++。 if( 2060) { = 2020。 } } }break。 case2:if((()amp。amp。(!=0)||(ear/400==0))amp。amp。(29)) { 19 =1。 ++。 if(12) { =1。 ++。 if( MAX_YEAR) { = MIN_YEAR。 } } } else if(28) { =1。 ++。 if(12) { =1。 ++。 if( 2060) { = 2020。 } } }break。 default:break。 } if(model_flag == 0) { write_lcd(0x8C,WCMD)。 20 write_lcd(%10+39。039。,WDATA)。 write_lcd(0x8B,WCMD)。 write_lcd(+39。039。,WDATA)。 write_lcd(0x89,WCMD)。 write_lcd(%10+39。039。,WDATA)。 write_lcd(0x88,WCMD)。 write_lcd(+39。039。,WDATA)。 write_lcd(0x83,WCMD)。 write_lcd(()+39。039。,WDATA)。 write_lcd(0x84,WCMD)。 write_lcd((%1000/100)+39。039。,WDATA)。 write_lcd(0x85,WCMD)。 write_lcd((%1000%100/10)+39。039。,WDATA)。 write_lcd(0x86,WCMD)。 write_lcd(%10+39。039。,WDATA)。 } } if(model_flag == 0) { write_lcd(0xC1,WCMD)。 write_lcd(%10+39。039。,WDATA)。 write_lcd(0xC0,WCMD)。 write_lcd(+39。039。,WDATA)。 } } if(model_flag == 0) { write_lcd(0xC4,WCMD)。 write_lcd(%10+39。039。,WDATA)。 write_lcd(0xC3,WCMD)。 write_lcd(+39。039。,WDATA)。 21 } } if(model_flag == 0) { write_lcd(0xC7,WCMD)。 write_lcd(%10+39。039。,WDATA)。 write_lcd(0xC6,WCMD)。 write_lcd(+39。039。,WDATA)。 } } } 秒表 更新函數(shù)處理程序 實(shí)現(xiàn)功能 通過對(duì) t1 值的判斷來得到 秒表的毫秒 秒 分 時(shí) 的計(jì)算 工作流程圖 (如圖 551) 是是sw_t1是 否 等 于 1否否否秒 是 否 大 于 59結(jié) 束秒 表 的 毫 秒 秒 加 1將 毫 秒 寫 入 液 晶秒 是 否 大 于 99毫 秒 清 零 , 秒 加 1將 秒 寫 入 液 晶秒 清 零 , 分 加 1將 分 寫 入 液 晶是分 是 否 大 于 59否分 清 零 , 時(shí) 加 1將 時(shí) 寫 入 液 晶是時(shí) 是 否 大 于 23時(shí) 清 零將 時(shí) 寫 入 液 晶是否 圖 551 22 函數(shù)部分代碼 void update_stop_watch(void) { if(sw_t1=1) { sw_t1=0。 ++。 if(99) { =0。 ++。 if(59) { =0。 ++。 if(59) { =0。 ++。 if(23) { =0。 } if(model_flag == 1) { w
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1