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

正文內(nèi)容

畢業(yè)設(shè)計-基于msp430單片機的無線led廣告屏設(shè)計-資料下載頁

2025-01-17 00:56本頁面
  

【正文】 d Write_Ds1302( unsigned char address,unsigned char dat )向寄存器寫數(shù)據(jù) { CLR_RST。 _NOP()。 CLR_SCK。 _NOP()。 SET_RST。 _NOP()。 //啟動 Write_Ds1302_Byte(address)。 //發(fā)送地址 Write_Ds1302_Byte(dat)。 //發(fā)送數(shù)據(jù) CLR_RST。 //恢復 } void Write_Ds1302_Byte(unsigned char temp) //寫一個字節(jié) { { unsigned char i。 for (i=0。i8。i++) //循環(huán) 8次 寫入數(shù)據(jù) 蘇州科技學院本科生畢業(yè)設(shè)計(論文) 24 { CLR_SCK。 if(tempamp。0x01){SET_SDA。}//每次傳輸?shù)妥止?jié) else CLR_SDA。 temp=1。 //右移一位 SET_SCK。 } } ? 讀操作 同樣地,根據(jù)上一節(jié)提到的讀操作的時序圖,可以進行如下的軟件操作: unsigned char Read_Ds1302 ( unsigned char address )//從寄存器讀取數(shù)據(jù) { unsigned char i,temp=0x00。 CLR_RST。 _NOP()。 CLR_SCK。 _NOP()。 SET_RST。 _NOP()。 Write_Ds1302_Byte(address)。 DDRDamp。=~(14)。 for (i=0。i8。i++) //循環(huán) 8 次 讀取數(shù)據(jù) { if(PINDamp。(1PD4)) temp|=0x80。 //每次傳輸?shù)妥止?jié) CLR_SCK。 temp=1。 //右移一位 SET_SCK。 } DDRD|=(14)。 CLR_RST。 _NOP()。 //以下為 DS1302 復位的穩(wěn)定時間 CLR_RST。 CLR_SCK。 _NOP()。 SET_SCK。 _NOP()。 CLR_SDA。 _NOP()。 SET_SDA。 _NOP()。 return (temp)。 //返回 } void Read_RTC(void) //讀取 日歷 { unsigned char i,*p。 p=read_rtc_address。 //讀的地址傳遞 for(i=0。i7。i++) //分 7 次讀取 秒分時日月周年 { l_tmpdate[i]=Read_Ds1302(*p)。 蘇州科技學院本科生畢業(yè)設(shè)計(論文) 25 p++。 } } void Set_RTC(void) //設(shè)定 日歷 { unsigned char i,*p,tmp。 for(i=0。i7。i++){ //BCD 處理,將十六進制轉(zhuǎn)換為十進制 tmp=l_tmpdate[i]/10。 l_tmpdate[i]=l_tmpdate[i]%10。 l_tmpdate[i]=l_tmpdate[i]+tmp*16。 } Write_Ds1302(0x8E,0X00)。 //關(guān)閉寫保護 p=write_rtc_address。 //傳要寫的寄存器地址 for(i=0。i7。i++) //7 次寫入 秒分時日月周年 { Write_Ds1302(*p,l_tmpdate[i])。 p++。 } Write_Ds1302(0x8E,0x80)。 //打開寫保護 } 溫度,光照信息采集模塊 溫度傳感器模塊的簡介 DS18B20數(shù)字溫度計是 DALLAS公司生產(chǎn)的 1- Wire,即單總線器件,具有線路簡單,體積小的特點。因此用它來組成一個測溫系統(tǒng),具有線路簡單,在一根通信線,可以掛很多這樣的數(shù)字溫度計,十分方便。 DS18B20產(chǎn)品的特點 ( 1)、只要求一個端口即可實現(xiàn)通信。 ( 2)、在 DS18B20中的每個器件上都有獨一無二的序列號。 ( 3)、實際應(yīng)用中不需要外部任何元器件即可實現(xiàn)測溫。 ( 4)、測量溫度范圍在- 55176。 C 到+ 125176。 C 之間。 ( 5)、數(shù)字溫度計的分辨率用戶可以從 9位到 12位選擇。 ( 6)、內(nèi)部有溫度上、下限告警設(shè)置。 蘇州科技學院本科生畢業(yè)設(shè)計(論文) 26 溫度傳感器模塊的時序圖 2. 初始化 . 主機總線在 T0時刻從電源降到 0并保持 400960uS時間,然后再上升到電源大約在1560uS后 , 18B20輸出低電平并保持 60uS240uS, 然后上升到電源,完成初始化 。 3. 寫 0 和 1 時序 寫 0時序 寫 1時序 當主機總線 T0時刻從高拉到低電平時,就產(chǎn)生寫時間時序 , 從 T0 時刻開始 15uS 之內(nèi)應(yīng)該將所需要的位送到總線上。 寫 0 時序,總線輸出 0 后 , 15uS 對總線采樣 , 若為低電平則寫入的位是 0, 若為高電平則寫入的位是 1, 連續(xù)寫 2 位的間隙應(yīng)該大于 1uS。 寫 1 時序時,單總線被拉低之后,在 15us 之內(nèi)就得釋放單總線。 4. 讀時序 對于 DS18B20 的讀時隙是從主機把單總線拉低之后 ,在 15 秒之內(nèi)就得釋放單總線,以讓 DS18B20 把數(shù)據(jù)傳輸?shù)絾慰偩€上。 DS18B20 在完成一個讀時序過程,至少需要 60us 才能完成。 模塊操作流程 蘇州科技學院本科生畢業(yè)設(shè)計(論文) 27 否 是 圖 模塊操作流程圖 模塊程序設(shè)計 由于 DS18B20 采用的是 1- Wire 總線協(xié)議方式,即在一根數(shù)據(jù)線實現(xiàn)數(shù)據(jù)的雙向傳輸,因此,對讀寫的數(shù)據(jù)位有著嚴格的時序要求,即編程時要嚴格按照上面的時序圖來進行。 DS18B20 有嚴格的通信協(xié)議來保證各位數(shù)據(jù)傳輸?shù)恼_性和完整性。該協(xié)議定義了幾種信號的時序,就是上面提到的初始化時序、讀時序、寫時序。所有時序都是將主機作為主設(shè)備,單總線器件作為從設(shè)備。而每一次命令和數(shù)據(jù)的傳輸都是從主機主動啟動寫時序開始,如果要求單總線器件回送數(shù)據(jù),在進行寫命令后,主機需啟動讀時序完成數(shù)據(jù)接收。數(shù)據(jù)和命令的傳輸都是低位在先。 下面就本設(shè) 計的程序做一下詳細的分析: (1)18b20 初始化函數(shù) void Init_DS18B20(void) { unsigned char x=0。 SET_DQ。 //DQ 復位 初始化 跳過 ROM 變換溫度 等待 1s 初始化 設(shè)置 18b20 個數(shù) B 匹配 ROM 讀存儲器 存在緩沖區(qū)指針增 1 初始化 B1=0? 蘇州科技學院本科生畢業(yè)設(shè)計(論文) 28 delay(8)。 //稍做延時 CLR_DQ。 //單片機將 DQ 拉低 delay(80)。 //精確延時 大于 480us SET_DQ。 //拉高總線 delay(10)。 DDRBamp。=~(17)。 x=(P2INamp。0X80)。 //稍做延時后,如果 x=0 則初始化成功; x=1 則初始化失敗 delay(5)。 DDRB|=(17)。 } (2)讀一個字節(jié) unsigned char ReadOneChar(void) { unsigned char i=0。 unsigned char dat = 0。 for (i=8。i0。i) { CLR_DQ。 // 給脈沖信號 dat=1。 SET_DQ。 //給脈沖信號 DDRBamp。=~(17)。 if(P2INamp。(17)) dat|=0x80。 delay(5)。DDRB|=(17)。 } return(dat)。 } (3)寫一個字節(jié) void WriteOneChar(unsigned char dat) { unsigned char i=0。 for (i=8。 i0。 i) { CLR_DQ。 if(datamp。0x01) SET_DQ。 蘇州科技學院本科生畢業(yè)設(shè)計(論文) 29 else CLR_DQ。 delay(5)。 SET_DQ。 dat=1。 } delay(5)。 } (4)讀取溫度 unsigned char ReadTemperature(void) { unsigned char a=0。 unsigned char b=0。 unsigned char t=0。 Init_DS18B20()。 WriteOneChar(0xCC)。 // 跳過讀序號列號的操作 WriteOneChar(0x44)。 // 啟動溫度轉(zhuǎn)換 delay(200)。 Init_DS18B20()。 WriteOneChar(0xCC)。 //跳過讀序號列號的操作 WriteOneChar(0xBE)。 //讀取溫度寄存器等(共可讀 9 個寄存器) 前兩個就是溫度 a=ReadOneChar()。 b=ReadOneChar()。 b=4。 b+=(aamp。0xf0)4。 t=b。 //tt=t*。 //t= tt*10+。 //放大 10 倍輸出并四舍五入 return(t)。 } 光敏傳感器模塊簡介 光敏傳感器的選擇 光敏傳感器有很多類型, 主要有:光電管、光電倍增管、光敏電阻、光敏三極管、太陽能電池、紅外線傳感器、紫外線傳感器、光纖式光電傳感器、色彩傳蘇州科技學院本科生畢業(yè)設(shè)計(論文) 30 感器等 ,由于 光 敏電阻靈敏度高,體積小,重量輕,性能穩(wěn)定,價格便宜 ,因為在本 次設(shè)計中不需要很精確地采集外圍環(huán)境的光照信息,故選用光敏電阻來比較合適。 光敏電阻可以作為程序的運行指令與終止指令。光敏電阻就是一個傳感器,有 ―有信號 ‖與 ―無信號 ‖兩種狀態(tài) ,所以軟件編程相對很容易。 因為設(shè)計中用到的光敏電阻實際上就相當于是一個電阻,所以,只需要讀取它上面的電壓值就知道有沒有光照了,在本設(shè)計中,由于時間顯示,又要是實驗結(jié)果盡量直觀,我們就將有光的時候在顯示屏上顯示“亮”,然后在用手遮住光敏電阻之后顯示“暗”,表示此時已經(jīng)沒有光照了。 以下是設(shè)計中用到的程序 (1)、端口初始化 PORTDamp。=~_BV(PD7)。//此口總保持低 DDRDamp。=~_BV(PD7)。 //初始化為輸入 ,用外部上拉電阻保持總線的高電平 因為光敏電阻是跟單片機上的 PD7 口相連的,而在執(zhí)行過程中要隨時讀取上面的電壓值,故將 PD7 口初始化為輸入。 (2)、顯示光照狀態(tài)的宏定義 const unsigned char bright[32]={/* 文字 : 亮 *//* 宋體 12。 此字體下對應(yīng)的點陣為:寬 x 高 =16x16 */ 0x01,0x00,0x7F,0xFC,0x00,0x00,0x0F,0xE0,0x08,0x20,0x0F,0xE0,0x00,0x04,0x7F,0xFE, 0x40,0x04,0x87,0xC8,0x04,0x40,0x04,0x40,0x08,0x42,0x10,0x42,0x60,0x3E,0x00,0x00}; //用來顯示有亮光時的漢字宏定義,即“亮” const unsigned char dark[32]={/* 文字 : 暗 *//* 宋體 12。 此字體下對應(yīng)的點陣為:寬 x 高 =16x16 */ 0x00,0x40,0x00,0x20,0x7B,0xFC,0x49,0x10,0x48,0x90,0x48,0xA0,0x7F,0xFE,0x48,0x00, 0x49,0xF8,0x49,0x08,0x79,0xF8,0x49,0x08,0x01,0x08,0x01,0xF8,0x01,0x08,0x00,0x00}; //用來顯示無亮光時的信息漢字宏定義,即“暗” (3)、讀取光敏電阻上的值點陣上顯示 if((P2INamp。0X80)==0X80) { for(i=0。i32。i++) lhj[i]=bright[i]。//將 漢字“ 亮”的編碼 復制到顯示緩存 用來顯示 display()。//
點擊復制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1