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

正文內(nèi)容

單片機(jī)多功能數(shù)字電子時鐘設(shè)計畢業(yè)設(shè)計論文-在線瀏覽

2024-08-07 13:25本頁面
  

【正文】 RAM1602液晶控制器芯片內(nèi)部帶有80個8位的RAM緩沖區(qū)其地址和屏幕的對應(yīng)關(guān)系如圖29示圖29 1602字符液晶字庫表3 1602字符液晶字庫1602液晶模塊內(nèi)部的字符發(fā)生存儲器,CGROM)已經(jīng)存儲了160個不同的點陣字符圖形,如下表所示,這些字符有,阿拉伯?dāng)?shù)字、英文字母的大小寫、常用的符號、和日文假名等,每一個字符都有一個固定的代碼,比如大寫的英文字母“A”的代碼是01000001B(41H),顯示時模塊把地址41H中的點陣字符圖形顯示出來,我們就能看到字母“A” 。時鐘電路由高精度低功耗的DS1302提供,采用三線接口與CPU進(jìn)行同步通信,輸入部分采用四個獨立式按鍵SSSS4。具體線路連接,詳見附錄1 溫度采集模塊設(shè)計如圖32所示。①、獨特的單線接口方式,DS18B20在與微處理器連接時僅需要一條口線即可實現(xiàn)微處理器與DS18B20的雙向通訊。③、支持多點組網(wǎng)功能,多個DS18B20可以并聯(lián)在唯一的三線上,最多只能并聯(lián)8個,實現(xiàn)多點測溫,如果數(shù)量過多,會使供電電源電壓過低,從而造成信號傳輸?shù)牟环€(wěn)定。⑤ 、在使用中不需要任何外圍元件。圖32 DS18B20溫度采集模塊 鍵盤輸入模塊設(shè)計 圖33 鍵盤模塊原理圖本系統(tǒng)四個按鍵占用了四個I/O口, 。根據(jù)多功能數(shù)字鐘設(shè)置鍵,加一鍵,減一鍵,確定鍵,通過鍵盤可以隨時手動設(shè)置日期、時間、鬧鐘、溫度上限和下限數(shù)值報警功能.該系統(tǒng)采用一個普通的發(fā)光二極管和一個蜂鳴器組成來實現(xiàn)鬧鐘、當(dāng)時間到達(dá)設(shè)定值,蜂鳴器響,蜂鳴器占用了1個I/,當(dāng)溫度超過設(shè)定溫度上下限值時,二極管導(dǎo)通,二極管和蜂鳴器發(fā)出光聲報警。實時時鐘/日歷電路提供秒分時、日、日期、月、年的信息,每月的天數(shù)和閏年的天數(shù)可自動調(diào)整,時鐘操作可通過AM/PM指示決定采用24或12小時格式。 時鐘/RAM的讀/寫數(shù)據(jù)以一個字節(jié)或多達(dá)31個字節(jié)的字符組方式通信。圖35 DS1302時鐘電路602是指顯示的內(nèi)容為16*2,能同時顯示兩行,每行16個字符。 圖36 顯示模塊電路 圖37 總電路圖第四章 系統(tǒng)的軟件設(shè)計 程序流程框圖和程序概述DS1302時鐘芯片具有通電自動計時的功能。采用DS1302時鐘芯片的單片機(jī)時鐘,其實質(zhì)就是讀取時鐘芯片內(nèi)的時鐘信息并把它顯示出來。調(diào)整時間日期,實質(zhì)就是向DS1302時鐘芯片重新寫入初值。開始初始化 讀寫日期、時間和溫度分離日期、時間和溫度顯示值值 顯示子程序 時間修改子程序 日期修改子程序顯示結(jié)果返回 開關(guān)控制子程序圖41主程序流程圖圖42 時間調(diào)整程序流程圖,圖43 溫度鬧鐘設(shè)置報警流程圖圖44 日期設(shè)置流程圖void delay(uint z){uint x,y。x0。y0。}由for循環(huán)構(gòu)成的延時函數(shù),z的取值為這個函數(shù)的延時ms數(shù),如delay(200)。大約延時500ms。 對DS1302讀寫操作函數(shù)。DS1302采用串行方式與單片機(jī)進(jìn)行通信,一個機(jī)器周期只能讀寫一個字節(jié)的一位,因此在單片機(jī)與DS1302芯片間傳輸一字節(jié),8位數(shù)據(jù)要分8次進(jìn)行且先從低位開始傳輸。for(i=0。i++)//循環(huán)8次 寫入數(shù)據(jù){sck=0。0x01。//右移一位sck=1。 _nop_()。_nop_()。_nop_()。//發(fā)送地址write_1302_byte(dat)。} 從DS1302讀數(shù)據(jù)/***************************讀DS1302數(shù)據(jù)函數(shù)*************************/uchar read_1302(uchar add)//輸入地址add,返回讀取的數(shù)據(jù){uchar i,temp=0x00。sck=0。write_1302_byte(add)。i8。//每次傳輸?shù)妥止?jié)等價于temp=temp|0x80sck=0。//右移一位sck=1。//以下為DS1302復(fù)位的穩(wěn)定時間sck=0。sda=0。return(temp)。如果想在1602液晶的某一個位置顯示一個內(nèi)容,要先對其寫入一個指令,在什么地方顯示。對1602的液晶初使化,需要用寫入指令的方式完成。 //lcdwr為讀寫控制端lcdwr=0,這里可不寫lcdrs=0。 //將要寫的指令賦給P0口delay(5)。 端lcden置高再延時一段時間然后將lcden置低這樣指令delay(5)。}void write_data(uchar date)與寫指令類似這里lcdrs設(shè)為1{lcdrs=1。delay(5)。delay(5)。}此函數(shù)首先對液晶進(jìn)行初使化,使其處于待命狀態(tài),然后將時鐘框架顯示出來:年、月、日、之間的“—”時分秒之間的“:”,還有世紀(jì)年的高兩位。lcdwr=0。write_(0x38)。//開顯示、不顯示光標(biāo)write_(0x06)。//顯示清0write_(0x80)。num14。write_(0x80+0x40+4)。num8。} 如何在液晶上顯示時間、日期及周DS1302中的時間、日期等信息是以BCD碼的形式存放的,要先將從1302中讀取的數(shù)據(jù)轉(zhuǎn)化成10進(jìn)制,然后顯示在液晶上相應(yīng)的位置。{ Add為顯示位置time為要顯示的內(nèi)容uchar shi,ge。 //將從DS1302中讀取的BCD碼數(shù)據(jù)轉(zhuǎn)化成10進(jìn)制個位和10ge=time%16。//定義顯示在液晶的什么位置write_data(0x30+shi)。 //初使化中設(shè)定了寫一個字符后地址指針加1因此這里} 不用重新光標(biāo)定位/**************************顯示周子函數(shù)*******************************/void write_zhou(uchar time1)用于在1602上顯示周信息與顯示{ 時間日期子函數(shù)類似uchar ge。//一周七天因此只需個位write_(0x80+13)。}此電子時鐘共有4個按鍵SSS3與調(diào)時有關(guān)圖按鍵程序如圖11S4為12小時切換鍵S1功能鍵:在24小時顯示模式下該鍵被第一次按下后進(jìn)入秒調(diào)整液晶顯示器上的時間停止走動。第一次按下切換鍵把瞬時時間轉(zhuǎn)化成12小時制令flag1=1。第二次按下切換鍵即返回24小時顯示模式,令flag1=0,把瞬時時間轉(zhuǎn)化成24小時模式并寫入DS1302芯片。如24小時模式下的22:00,存放的形式為00100010。需要注意的是,12小時模式下,只用到后5位來表示時間,第6位用來表示AM或PM信息,如果真接用24小時模式下的顯示方法是會出錯的,這里我們需要對時進(jìn)行轉(zhuǎn)化。然后提取其后5位時間,顯示時間。12轉(zhuǎn)24小進(jìn)模式與其類似,不再贅述。amp。if(s4==0){s2num++。if(s2num==1)//24小時切換成12小時{int ge,shi。hour=read_1302(0x85)。shi=hour/16。amp。amp。else{hour=houramp。 hour=hour+0x80。amp。hour=hour+0x20。amp。amp。hour=hour+0x80。}if(shi==2amp。ge==0)//20點{hour=0xa8。amp。if(shi==2amp。ge==2){hour=0xb0。amp。write_1302(0x8e,0x00)。write_1302(0x8e,0x80)。hour=read_1302(0x85)。0x20。0x1f。amp。0x1f。amp。}if(ap1!=0amp。ap2==0x08)//下午8點轉(zhuǎn)化成20點hour=0x20。amp。if(ap1!=0amp。ap2!=0x08amp。ap2!=0x09)//PM,且不是8點或9點{hour=hour0xa0。}if(ap1!=0amp。ap2==0x12)//12點PM也就是24小時模式下的12點hour=hour0xa0。//把轉(zhuǎn)化成24小進(jìn)模式后的時寫入DS1302write_1302(0x84,hour)。flag1=0。//按鍵次數(shù)清0}}} 功能鍵函數(shù)if(s1==0amp。s2num==0)//如果S1被按下 當(dāng)在12小時模式下顯示時按此鍵無效{delay(5)。//時鐘暫停標(biāo)志位flag=1時液晶時鐘計時暫停s1num++。//松手后繼續(xù)執(zhí)行后面指令if(s1num==1)//如果S1按下一次秒的個位位置閃爍光標(biāo){write_(0x80+0x40+11)。}if(s1num==2)//如果S1按下兩次先將設(shè)置后的秒寫到DS1302再在分的個位位置閃爍光標(biāo){write_1302(0x8e,0x00)。//寫入秒信息write_1302(0x8e,0x80)。//指針指到分鐘顯示的位置write_(0x0f)。write_1302(0x82,fen)。write_(0x80+0x40+5)。}if(s1num==4){write_1302(0x8e,0x00)。write_1302(0x8e,0x80)。write_(0x0f)。write_1302(0x8c,nian)write_1302(0x8e,0x80)。write_(0x0f)。write_1302(0x88,yue)。write_(0x80+10)。}if(s1num==7){write_1302(0x8e,0x00)。write_1302(0x8e,0x80)。write_(0x0f)。write_1302(0x8a,zhou)。flag=0。//不顯示光標(biāo)s1num=0。但是在調(diào)秒狀態(tài)下按10次 S2鍵我們希望秒變成00010000,實際上其值為00001010。在調(diào)節(jié)日期的過程中,我們引入了防錯機(jī)制,平年2月,你不可能調(diào)到29日,4月,你不可能調(diào)到31日。首先判斷是平年還是閏年。在這一區(qū)間內(nèi)凡是能被4整除的年都是閏年否則為平年。正
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1