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

正文內容

基于at89s51單片機的電子時鐘帶溫度顯示-資料下載頁

2024-12-06 02:29本頁面

【導讀】本文介紹了一款基于AT89S51單片機控制的帶有溫度顯示的電子鐘的設計,通過多功能數字鐘帶有溫度的設計思路,詳細敘述了系統(tǒng)硬件、軟件的具體實現過程。論文重點闡述了數字鐘硬件中MCU模塊、溫度模塊、時鐘模塊、顯示模塊和相關控制模塊等的模塊化設計與制作;軟件同樣采用模塊化的設計,包括中斷模塊、溫度模塊、時間調整模塊設計,并采用簡單流通性強的C語言編寫實現。本設計實現了時間的修改功能和年、月、日和星期的顯示和溫度顯示功能。隨著人們生活水平的日益提高,人們對生活的要求越來越高,原有的事物已經不能滿足人們的生活需求了,一些帶有新功能的事物已經在慢慢的取代舊事物。帶有溫度的的電子鐘可以使人們隨時都可以了解溫度的變化。DS18B20內部的比較器以四舍五入的量化方式確定溫度寄存器的最低有效位。DS18B20測量溫度時使用特有的溫度測量技術。DS18B20內部的低溫度系數振蕩器能產生穩(wěn)定的頻率信號;同樣的,高溫度系數振蕩器則將被測溫度轉換成頻

  

【正文】 2(0x8e,0x00)。 //允許寫,禁止寫保護 Write1302(DS1302_SECOND,temp/10*16+temp%10)。 Write1302(0x8e,0x80)。 //打開寫保護 write_(0x80+0x40+7)。 } if(keynum==2) { temp=BCD_DEC(Read1302(DS1302_MINUTE))。 temp。 if(temp=1) temp=59。 Write1302(0x8e,0x00)。 //允許寫,禁止寫保護 Write1302(DS1302_MINUTE,temp/10*16+temp%10)。 Write1302(0x8e,0x80)。 //打開寫保護 write_(0x80+0x40+5)。 } if(keynum==3) { temp=BCD_DEC(Read1302(DS1302_HOUR))。 temp。 if(temp=1) temp=23。 Write1302(0x8e,0x00)。 //允許寫,禁止寫保護 Write1302(DS1302_HOUR,temp/10*16+temp%10)。 Write1302(0x8e,0x80)。 //打開寫保護 write_(0x80+0x40+3)。 } if(keynum==4) { temp=BCD_DEC(Read1302(DS1302_DAY))。 temp。 if(temp=0) temp=31。 Write1302(0x8e,0x00)。 //允許寫,禁止寫保護 Write1302(DS1302_DAY,temp/10*16+temp%10)。 Write1302(0x8e,0x80)。 //打開寫保護 write_(0x80+9)。 } if(keynum==5) { temp=BCD_DEC(Read1302(DS1302_MONTH))。 temp。 if(temp=0) temp=12。 Write1302(0x8e,0x00)。 //允許寫,禁止寫保護 Write1302(DS1302_MONTH,temp/10*16+temp%10)。 Write1302(0x8e,0x80)。 //打開寫保護 write_(0x80+7)。 } if(keynum==6) { temp=BCD_DEC(Read1302(DS1302_YEAR))。 temp。 if(temp=0) temp=99。 Write1302(0x8e,0x00)。 //允許寫,禁止寫保護 Write1302(DS1302_YEAR,temp/10*16+temp%10)。 Write1302(0x8e,0x80)。 //打開寫保護 write_(0x80+5)。 } } } }} sbit DQ = P3^6 。 //定義DS18B20端口DQbit presence 。//uchar code cdis2[ ] = { C} 。uchar code cdis[ ] = {ERR0R} 。unsigned char data temp_data[2] = {0x00,0x00} 。unsigned char display[5]。unsigned char code ditab[16] = {0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04, 0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09} 。///*小數位表,四舍五入*//*us級延時函數 *//*******************************************************************/void Delay(unsigned int num){ while( num ) 。}/*初始化ds1820 *//*******************************************************************/Init_DS18B20(void){ DQ = 1 。 //DQ復位 Delay(8) 。 //稍做延時 DQ = 0 。 //單片機將DQ拉低 Delay(90) 。 //精確延時 大于 480us DQ = 1 。 //拉高總線 Delay(8) 。 presence = DQ 。 //如果=0則初始化成功 =1則初始化失敗 Delay(100) 。 DQ = 1 。 return(presence) 。 //返回信號,0=presence,1= no presence}/* 讀一個字節(jié) *//*******************************************************************/ ReadOneChar(void){uchar i = 0 。uchar dat = 0 。for (i = 8 。 i 0 。 i) { DQ = 0 。 // 給脈沖信號 dat = 1 。 DQ = 1 。 // 給脈沖信號 if(DQ) dat |= 0x80 。 Delay(4) 。 } return (dat) 。}/* 寫一個字節(jié) *//*******************************************************************/WriteOneChar(unsigned char dat){ unsigned char i = 0 。 for (i = 8 。 i 0 。 i) { DQ = 0 。 DQ = datamp。0x01 。 Delay(5) 。 DQ = 1 。 dat=1 。 }}/* 讀取溫度 *//*******************************************************************/ Read_Temperature(void){ Init_DS18B20() 。 WriteOneChar(0xCC) 。 // 跳過讀序號列號的操作 WriteOneChar(0x44) 。 // 啟動溫度轉換 Init_DS18B20() 。 WriteOneChar(0xCC) 。 //跳過讀序號列號的操作 WriteOneChar(0xBE) 。 //讀取溫度寄存器 temp_data[0] = ReadOneChar() 。 //溫度低8位 temp_data[1] = ReadOneChar() 。 //溫度高8位}/* 數據轉換與溫度顯示 *//*******************************************************************/ Disp_Temperature(){ display[4]=temp_data[0]amp。0x0f 。 display[0]=ditab[display[4]]+0x30 。 //查表得小數位的值 display[4]=((temp_data[0]amp。0xf0)4)|((temp_data[1]amp。0x0f)4) 。 display[3]=display[4]/100+0x30 。 display[1]=display[4]%100 。 display[2]=display[1]/10+0x30 。 display[1]=display[1]%10+0x30 。 if(display[3]==0x30) //高位為0,不顯示 { display[3]=0x20 。 if(display[2]==0x30) //次高位為0,不顯示 display[2]=0x20 。 } display_char(9,1,display[3])。 //百位數顯示 display_char(10,1,display[2])。 //十位數顯示 display_char(11,1,display[1])。 //個位數顯示 display_char(12,1,39。.39。)。 //小數點顯示 display_char(13,1,display[0])。 //小數位數顯示 display_char(14,1,0xdf)。 display_char(15,1,39。C39。)。 }/* DS18B20 ERROR 顯示菜單 *//*******************************************************************/void Error_Menu (){ lcd_init() 。 //初始化LCD display_string(10,1,cdis)。}include include include include include main(){ lcd_init()。 Initial_DS1302()。 Init_DS18B20()。 while(1) { key_scan()。 DS1302_GetTime()。 DateToStr()。 TimeToStr()。 display_xy(1,0)。 display_string(3,0,DateString)。 display_xy(1,1)。 display_string(1,1,TimeString)。 /*display_char(3,1,0x3a)。 display_char(6,1,0x3a)。 delayms(500)。 display_char(3,1,0x20)。 display_char(6,1,0x20)。 delayms(500)。*/ Read_Temperature()。 Disp_Temperature()。 }}
點擊復制文檔內容
研究報告相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1