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

正文內(nèi)容

基于at89s52單片機(jī)的數(shù)字電子鐘設(shè)計(jì)-文庫吧資料

2025-06-12 21:28本頁面
  

【正文】 數(shù)字+30H等于所對應(yīng)ASCII碼) Write_Data((Year_tmp%1000)/100+0x30)。 //顯示右三角符號 else Write_Data(0x04)。 //使用過渡數(shù)據(jù)}void Setting_Display(unsigned char c) //時(shí)間設(shè)定模式,被選到的數(shù)據(jù)前出現(xiàn)右方向三角{ if(c8) { Set_Position(0,0)。 A_Hour_tmp=A_Hour。Min_tmp=Min。Day_tmp=Day。 Year_tmp=Year。 Set_Position(1,0)。 //顯示攝氏度符號}void Setting_Menu(){ Set_Position(0,0)。 //顯示小數(shù)點(diǎn) Write_Data(decile+0x30)。 //顯示溫度的十位數(shù) Write_Data(units+0x30)。 //顯示空格 Write_Data(0x04)。 //顯示秒的個(gè)位數(shù) if(Alarm_F) //如果鬧鐘開啟 Write_Data(0x01)。 //顯示: Write_Data(Sec/10+0x30)。:39。 //顯示分的十位數(shù) Write_Data(Min%10+0x30)。) 。 //顯示時(shí)的個(gè)位數(shù) Write_Data(39。 //顯示空格 Write_Data(Hour/10+0x30)。 } Set_Position(1,0)。break。n39。)。Write_Data(39。S39。break。t39。)。Write_Data(39。S39。break。i39。)。Write_Data(39。F39。break。u39。)。Write_Data(39。T39。break。d39。)。Write_Data(39。W39。break。e39。)。Write_Data(39。T39。break。n39。)。Write_Data(39。M39。//顯示一個(gè)心形圖案 Week=Week_Calculate(Year,Month,Day)。 //顯示日的個(gè)位數(shù) Write_Data(0x04)。 //顯示 Write_Data(Day/10+0x30)。39。 //顯示月的十位數(shù) Write_Data(Month%10+0x30)。) 。 //顯示年的個(gè)位數(shù) Write_Data(39。 //顯示年的百位數(shù) Write_Data(((Year%1000)%100)/10+0x30)。 //顯示空格 Write_Data(Year/1000+0x30)。 } } } } } }}void Normal_Display() // 正常顯示狀態(tài){ Set_Position(0,0)。 if(Month12) //滿一年 { Month=1。 if(DayDay_Max(Month)) //滿一個(gè)月(先判斷當(dāng)月最大天數(shù)) { Day=1。 if(Hour==24) //滿一天 { Hour=0。 if(Min==60) //滿一小時(shí) { Min=0。 if(Sec==60) //滿一分鐘 { Sec=0。 if(count0==20) //滿一秒 { count0=0。 //補(bǔ)償時(shí)間誤差,此補(bǔ)償值是通過調(diào)試得知 TR0=1。 TH0+=0x3c。 //啟動(dòng)定時(shí)器0}void Timer0Int(void) interrupt 1 using 3 //定時(shí)器0中斷服務(wù)程序{ static unsigned char count0=0。 //計(jì)數(shù)初值為6553650000=15536 ,即3cb0H. TL0=0xb0。 //開定時(shí)器0中斷 TMOD=0x11。{ EA=1。 //由K1_t的值設(shè)定響應(yīng)鍵盤輸入的變量 if(K1_t==0) //如果K1_t等于0 Normal_Display()。 //進(jìn)入設(shè)定菜單 if(K1_t1) //如果K1_t大于1 Setting_Display(K1_t)。 //用K1_t記錄K1按下的次數(shù) if(K1_t==10) //如果按下次數(shù)滿10次,重新賦值為2 K1_t=2。 User_Defined_Char()。 //掃描鍵盤 if(key==K2) //如果按下K2,則打開或關(guān)閉鬧鐘功能 Alarm_F=~Alarm_F。 //判斷鬧鈴是否啟動(dòng) Readtemperature()。 //顯示器LCD602初始化 User_Defined_Char()。 //定時(shí)器0初始化 DS18B20_init()。 //函數(shù)聲明,響應(yīng)鍵盤輸入void Alarm()。 //函數(shù)聲明,進(jìn)入設(shè)定菜單void Setting_Display(unsigned char c)。 //函數(shù)聲明,正常顯示模式void Alarm_Judge()。//函數(shù)聲明,計(jì)算星期void Timer0_Init()。 //函數(shù)聲明,判斷是否閏年unsigned char Day_Max(unsigned char m)。bit Alarm_F=1。unsigned char A_Hour_tmp,A_Min_tmp。 //復(fù)位的時(shí)間初值unsigned char A_Hour=9,A_Min=1。 //十個(gè)空格unsigned int Year=2008,Year_tmp。unsigned char code Hint3[]=Alarm setting: 。unsigned char code Hint1[]=Press K1 to set 。 //定義蜂鳴器的接口unsigned char K1_t=0。為了條理清晰和方便程序移植,在工程中按照功能模塊化分為如下幾個(gè)文件:、。在進(jìn)入設(shè)定模式后,所有時(shí)間變量被過渡變量代替,如果確認(rèn)設(shè)置,則過渡變量賦給時(shí)間變量,如果取消設(shè)置,則還使用原時(shí)間變量。4. 讀相應(yīng)變量的值,送入LCD顯示時(shí)間和溫度等信息。這樣可以得到初始化定時(shí)器的控制字:TMOD=0x01,計(jì)數(shù)初值6553650000=15536即 0x3cb0,這樣就可以設(shè)計(jì)一個(gè)計(jì)數(shù)一秒的函數(shù)。2. 因?yàn)榫д耦l率為12MHz,所以計(jì)數(shù)頻率為12MHz/12=1MHz,這就需要計(jì)數(shù)器0計(jì)數(shù)1000000次才可以達(dá)到一秒鐘。1602LCD的數(shù)據(jù)位D0~~ 。 接線方式按鍵K1~~。2. 時(shí)間調(diào)整部分:暫存狀態(tài)的年(Year_tmp)、月(Month_tmp)、日(Day_tmp)、時(shí)(Hour_tmp)、分(Min_tmp)、秒(Sec_tmp)、鬧鐘所設(shè)定的時(shí)(A_Hour_tmp)、分(A_Min_tmp)。4. 如果LCD1602出現(xiàn)顯示異常,可以在正常顯示狀態(tài)下按K3,重新初始化LCD。也可以隨時(shí)按下按鍵K6退出設(shè)定狀態(tài),不保存設(shè)定內(nèi)容。如果長按K3或K4按鍵,則當(dāng)前數(shù)據(jù)保持加(減)1,直到按鍵被松開。1602LCD第二行第一列開始顯示“時(shí):分:秒、鬧鐘開關(guān)標(biāo)志、溫度”。復(fù)位時(shí)間是2008年6月10日08:59:55。具備鬧鐘功能,鬧鈴方式為蜂鳴器持續(xù)響10秒鐘,或者用按鍵手動(dòng)關(guān)閉響鈴。ⅰ數(shù)據(jù)指針設(shè)置 ⅱ其它設(shè)置 ①讀操作時(shí)序圖圖29 LCD1602讀操作時(shí)序圖②寫操作時(shí)序圖 圖210 LCD1602寫操作時(shí)序圖 3 軟件設(shè)計(jì) 軟件設(shè)計(jì)思路 實(shí)現(xiàn)功能用AT89S52單片機(jī),在1602LCD上顯示年月日、星期、時(shí)分秒、當(dāng)前溫度。 輸出:無 注:對控制器每次進(jìn)行讀寫操作之前,都必須進(jìn)行忙狀態(tài)檢測,確保STA7=0 控制器內(nèi)部帶有808位(80字節(jié))的RAM緩沖區(qū),如圖28。 輸出:無③讀數(shù)據(jù):輸入:RS=H,RW=H,E=H。三、LCD1602操作說明本設(shè)計(jì)采用的LCD1602是以常見的HD44780為控制模塊,它的主要操作說明如下:⒈基本操作時(shí)序①讀狀態(tài):輸入:RS=L,RW=H,E=H。第16腳:BLK背光電源負(fù)極,接GND(本圖未顯示)。第7~14腳:D0~D7為8位雙向數(shù)據(jù)線。當(dāng)RS和RW共同為低電平時(shí)可以寫入指令或者顯示地址,當(dāng)RS為低電平RW為高電平時(shí)可以讀忙信號,當(dāng)RS為高電平RW為低電平時(shí)可以寫入數(shù)據(jù)。第4腳:RS為寄存器選擇,高電平時(shí)選擇數(shù)據(jù)寄存器、低電平時(shí)選擇指令寄存器。第2腳:VDD接5V正電源。本設(shè)計(jì)所采用的LCD1602即為最常用的2行16個(gè)字。③常用存儲器操作命令有:啟動(dòng)溫度變換(44h)、讀暫存存儲器(BEh)、寫暫存存儲器(4Eh)。所有ROM操作命令均為8位長。五、讀寫協(xié)議經(jīng)過單線接口訪問DS1820的協(xié)議protocol如下:l 初始化l ROM操作命令l 存儲器操作命令l 處理/數(shù)據(jù)①初始化:單線總線上的所有處理均從初始化序列開始,初始化序列包括總線主機(jī)發(fā)出一復(fù)位脈沖,接著由從屬器件送出存在脈沖。如果不滿足這一點(diǎn),且總線保持在低電平時(shí)間大于480us,那么總線上所有器件均被復(fù)位。單線總線的空閑狀態(tài)是高電平。多站(multidrop)總線由單線總線和多個(gè)與之相連的從屬器件組成。該總線為了做到這一點(diǎn),第一個(gè)連接到單線總線上的器件必須具有漏極開路或三態(tài)輸出。四、單總線系統(tǒng)硬件接法單線總線是一種具有一個(gè)總線主機(jī)和一個(gè)或若干個(gè)從機(jī)從屬器件的系統(tǒng),DS18B20起從機(jī)的作用。數(shù)據(jù)在單線接口上串行發(fā)送,℃的增量值,℃至+125℃的范圍內(nèi)測量溫度。℃的分辯率。通過改變溫度每升高一度,計(jì)數(shù)器必須經(jīng)歷的計(jì)數(shù)個(gè)數(shù)來實(shí)行補(bǔ)償。如果門開通時(shí)間仍未結(jié)束,那么此過程再次重復(fù)。為了對遵循拋物線規(guī)律的振蕩器溫度特性進(jìn)行補(bǔ)償,這種電路是必需的。計(jì)數(shù)器予置對應(yīng)于55℃的基數(shù),如果在門開通期結(jié)束前計(jì)數(shù)器達(dá)到零,那么溫度寄存器—它也被予置到55℃的數(shù)值—將增量,指示溫度高于55℃。二、引腳圖及說明DS18B20引腳圖如圖26所示,引腳說明如表24所示。繼“一線總線”的早期產(chǎn)品后,DS18B20開辟了溫度傳感器技術(shù)的新概念。省略了存儲用戶定義報(bào)警溫度、分辨率參數(shù)的EEPROM,精度降低為177。分辨率設(shè)定,及用戶設(shè)定的報(bào)警溫度存儲在EEPROM中,掉電后依然保存?!?。而且新一代產(chǎn)品更便宜,體積更小?,F(xiàn)場溫度直接以“一線總線”的數(shù)字方式傳輸,大大提高了系統(tǒng)的抗干擾性。DS1822的精度較差為177。 數(shù)字式溫度傳感器DS18B20一、DS18B20的特性DS18B20 “一線總線”數(shù)字化溫度傳感器是DAAS最新單線數(shù)字溫度傳感器,同DS1820一樣,DS18B20也支持“一線總線”接口,測量溫度范圍為55℃~+125℃,在10~+85℃范圍內(nèi),精度為177??梢詫@四個(gè)寄存器尋址,但不能把T0、T1當(dāng)作一個(gè)16位寄存器來尋址。8.定時(shí)器/計(jì)數(shù)器MCS51系列中有兩個(gè)16位定時(shí)器/計(jì)數(shù)器T0和T1。7.串行數(shù)據(jù)緩沖器數(shù)據(jù)緩沖器SBUF用于存放欲發(fā)送或已接收的數(shù)據(jù),它實(shí)際上由兩個(gè)獨(dú)立的寄存器組成,一個(gè)是發(fā)送緩沖器,另一個(gè)是接收緩沖器。6.端口P0~P3專用寄存器P0、PP2和P3分別是I/O端口P0~P3的鎖存器。5.?dāng)?shù)據(jù)指針 數(shù)據(jù)指針DPTR是一個(gè)16位專用寄存器,其高位字節(jié)寄存器用DPH表示,低位字節(jié)寄存器用DPL表示。堆棧指針的值可由軟件改變,因此堆棧在內(nèi)部RAM值的位置比較活躍。考慮到08H~1FH單元分屬于工作寄存器區(qū)1~3,若程序設(shè)計(jì)中要用到這些區(qū),則最好把SP值改置為1FH或更大的值。它指示出堆棧頂部在內(nèi)部RAM中的位置。若通信協(xié)議中規(guī)定用奇效驗(yàn)的辦法,則P=0時(shí),應(yīng)對數(shù)據(jù)的奇偶位置位,否則就清零。在串行通信中常用奇偶效驗(yàn)的辦法來檢驗(yàn)數(shù)據(jù)傳輸?shù)目煽啃浴H?的位數(shù)為奇數(shù),則P置位,否則清零。表23 RSRS0與寄存器區(qū)的對應(yīng)關(guān)系RS1 RS0 對應(yīng)寄存器區(qū)0 0 區(qū)0 (00H~07H)0 1 區(qū)1 (08H~0FH)1 0 區(qū)2 (10H~17H)1 1 區(qū)3 (18H~1FH)(5)OV()溢出標(biāo)志當(dāng)執(zhí)行算術(shù)指令時(shí),由硬件置位或清零,以指示溢出狀態(tài)。(4)RSRS0(、)寄存器區(qū)選擇控制位1和0可以用軟件來置位或清零以確定工作寄存器區(qū)。AC被用于十進(jìn)制調(diào)整。在布爾處理機(jī)中它被認(rèn)為是位累加器,其重要性相當(dāng)于一般中央處理機(jī)中的累加器A。3.程序狀態(tài)字PSW 程序狀態(tài)字是一個(gè)8位寄存器,它包含了程序狀態(tài)信息。除法指令中,被除數(shù)取自A,除數(shù)取自B,商數(shù)存放于A,余數(shù)存放于B。2.B寄存器:在乘除指令中,用到了B寄存器。加、減、乘、除算術(shù)運(yùn)算指令的運(yùn)算結(jié)果都存放在累加器A或AB寄存器對中。大部分單操作數(shù)指令的操作取自累加器。以下對這些專用寄存器作簡單的介紹。FLASH存儲器編程時(shí),該引腳加上+12V的編程允許電源VPP,當(dāng)然這必須是該器件是使用12V編程電壓VPP。欲使CPU僅訪問外部程序存儲器,端必須保持低電平。當(dāng)振蕩器工作時(shí),RST引腳出現(xiàn)兩個(gè)機(jī)器周期以上高電平將使單片機(jī)復(fù)位。這個(gè)ALE使能標(biāo)志位(地址為8EH的SFR的第0位)的設(shè)置對微控制器處于外部執(zhí)行
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1