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

正文內(nèi)容

多功能電子保姆機的設(shè)計與實現(xiàn)畢業(yè)論文(參考版)

2025-06-25 06:38本頁面
  

【正文】 039。0x0F)。TimYear =((Valueamp。0x0F)。 TimDay =((Valueamp。0x0F)。 TimMonth =((Valueamp。0x0F)。TimHour =((Valueamp。0x0F)。TimMinute =((Valueamp。0x0F)。TimSecond =((Valueamp。 //禁止寫入}void GetFromDS1302(TIME *Tim) //獲取時鐘芯片的時鐘數(shù)據(jù)到自定義的結(jié)構(gòu)體變量中{unsigned char Value。DS1302_Write(DS1302_SECOND,0x00)。DS1302_Write(DS1302_HOUR,0x21)。 //寫入初始化日期和時間DS1302_Write(DS1302_MONTH,0x05)。 //設(shè)置PB1為輸入} void Initial_DS1302(void) //時鐘芯片初始化{ DS1302_Write(DS1302_CONTROL,0x00)。 } CLR_RST()。 CLR_SCLK()。 else CLR_IO()。i) //寫數(shù)據(jù){ if(dataamp。 } for(i=8。 CLR_SCLK()。 else CLR_IO()。i) //寫控制字{ if(regamp。 //RST置1,啟動數(shù)據(jù)傳輸for(i=8。 //RST置0CLR_SCLK()。 SET_IO_DDR()。 return(data)。 CLR_SCLK()。=0x02) data|=0x80。i) { data=1。 //設(shè)置IO為輸入端口,接收數(shù)據(jù)for(i=8。 reg=1。 SET_SCLK()。0x01) SET_IO()。i0。 //SCLK=0 SET_RST()。 //設(shè)置PB1為輸出,往DS1302寫命令字CLR_RST()。 reg+=1。}}//從ds1302中讀出單字節(jié)數(shù)據(jù)unsigned char DS1302_Read(unsigned char reg) { unsigned char data=0。delay(1)。PORTE=position。 if(i==2) PORTAamp。break。m39。break。939。break。839。break。739。break。639。break。539。break。439。break。339。break。239。break。139。break。039。i4。 unsigned int i,c。}void display(unsigned char dis_buff[]) //顯示子程序{ unsigned int led[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xFF}。jn。i100。}void delay(unsigned int n){unsigned int i,j。 PORTG=0x1F。 PORTF=0xFF。 PORTE=0x00。 PORTD=0x00。 PORTC=0x00。 PORTB=0x00。void port_init (void) //端口初始化{ PORTA=0xFF。}。,39。,39。,39。 //溫度unsigned char Baoj_T[4]={39。039。 //鬧鐘時間unsigned int NaoLing_flag=0。 //家用電器開機時間unsigned char GuanJi_Time[4]。 //定義的時間類型TIME PresentTime。 unsigned char timestr[4]。 unsigned char yearstr[4]。unsigned char Month。unsigned char Hour。=~0x80define DS1302_SECOND 0x80 //秒寄存器define DS1302_MINUTE 0x82 //分寄存器define DS1302_HOUR 0x84 //小時寄存器define DS1302_MONTH 0x88 //月寄存器define DS1302_DAY 0x86 //日寄存器define DS1302_YEAR 0x8c //年寄存器define DS1302_CONTROL 0x8e //控制寄存器typedef struct //定義日期、時間結(jié)構(gòu)體{unsigned char Second。=~0x40define FM PC6 //蜂鳴器接PC6define SET_FM PORTC|=0x40define CLR_FM PORTCamp。=~0x08define Nao_LED PB4 //鬧鈴開標志燈接PB4define NaoLED_liang() PORTB|=0x10define NaoLED_mie() PORTBamp。=~0x04define DS18B20_IO PB3 //DS18B20數(shù)據(jù)線接PB3define SET_DS18B20_IO_DDR DDRE|=0x08define CLR_DS18B20_IO_DDR DDREamp。=~0x02define SET_IO() PORTB|=0x02define CLR_IO() PORTBamp。參考文獻1. [J],電子技術(shù)的研究,2. [J],應用科技,2001年1月第28卷(12)3.[J], 電子技術(shù)的研究,4. [D],華中科技大學,5. [J],電子技術(shù)應用,1996年(10)6. [J],大連輕工業(yè)學院學報,1998年3月第17卷(1)7. [J],國外電子元器件,2002年第7 期8. [J],計算機測量與控制,2004,12(3)9. [J],新余高專學報,2004年4月第9卷(2)10. [M],北京:清華大學出版社, 11. [M],西安:西安電子科技大學出版社,12. [M],上海:華東理工大學出版社,.13. (數(shù)字部分)[M],北京:高等教育出版社,14. 付家才. 單片機控制工程實踐技術(shù)[M],北京:化學工業(yè)出版社,15. 張迎新. 單片微型計算機原理、應用及接口技術(shù)(第二版)[M],北京:國防工業(yè)出版社,16. [M],北京:清華大學出版社,附錄 A程序includedefine DS1302_RST PB0 //RST引腳接PB0define DS1302_IO PB1 //IO引腳接PB1define DS1302_SCLK PB2 //SCLK引腳接PB2define SET_RST_DDR() DDRB|=0x01 //RST相關(guān)定義define SET_RST() PORTB|=0x01 define CLR_RST() PORTBamp。本文采用AVR單片機C語言進行編程,當然也可以應用匯編語言編程。并且市場上的實時時鐘日歷芯片品類繁多,IC化的傳感器各種各樣,顯示方式也愈趨于人性化。對于以后的生產(chǎn)生活中,電子保姆機在今后的應用也會越來越廣泛。在硬件調(diào)試部分,已經(jīng)將實時時鐘日歷子程序調(diào)試完畢了,源程序見附錄A,這里不再贅述。在本設(shè)計中,軟件調(diào)試主要分三大部分:實時時鐘日歷子程序調(diào)試、環(huán)境溫度采集子程序調(diào)試、繼電器控制子程序調(diào)試。證明程序正確。將程序燒錄單片機中,室溫超過程序中設(shè)定溫度。 調(diào)試DS18B20過程中,將數(shù)據(jù)輸入輸出端口與單片機PE4相連、將程序燒錄單片機中,顯示當前室溫。源程序見附錄A DS18B20電路調(diào)試 本電路板上無DS18B20,必須自己焊電路板,在自己制作電路板的過程中、要熟悉各個引腳。源程序見附錄A 繼電器控制電路調(diào)試由于本電路板繼電器外圍接口不是很明確,故先用萬用表測各個引腳,確定常開端,常閉端,及公共端之后,用電烙鐵將起驅(qū)動作用的三極管基極接出一根引線。上電后LED數(shù)碼管顯示“2100”,之后開始走時。檢查無誤后可以上電檢查。由于電路板沒有買到DS1302備用電池,故再重新接主電源時要重新調(diào)整時間(3)編寫DS1302的時鐘/日歷程序,只要求能夠正確顯示時間。本設(shè)計定義為:DS1302的SCLK連接PB2,I/O連接PB1,RST連接PB0。 //reenable interrupts //all peripherals are now initialised}void main(void){ init_devices();} DS1302電路調(diào)試該電路包含DS1302芯片、主電源、備用電源、晶振等部分。 //timer interrupt sources ETIMSK = 0x00。 //extended ext ints EIMSK = 0x00。 EICRA = 0x00。 timer0_init()。 //xtal divider XMCRA = 0x00。 }}//call this routine to initialise all peripheralsvoid init_devices(void){ //stop errant interrupts until set up CLI()。//顯示地址左移 if(i == 4)//如果顯示完4位后,返回到第一位 {addr = 1。//數(shù)據(jù)送如PD口 i++。 //地址送如PC口 jdata = kdata[i]。 //start timer}pragma interrupt_handler timer0_ovf_isr:17void timer0_ovf_isr(void){ TCNT0 = 0xB5。 //set count OCR0 = 0x4B。 //stop ASSR = 0x00。 DDRG = 0xFF。 DDRF = 0xFF。 DDRE = 0xFF。 DDRD = 0xFF。 DDRC = 0xFF。 DDRB = 0xFF。 DDRA = 0xFF。//定義幾個變量unsigned char kdata[] = {5,6,7,8}。程序代碼如下://該程序使用了定時器T0,采用循環(huán)掃描方式顯示4位數(shù)據(jù)include include //include unsigned char seg7[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}。檢查無誤后上電,檢查顯示電路是否正確。PA0PA7接筆端碼,PE0PE4接位選。 }} 顯示電路調(diào)試本設(shè)計的顯示電路使用了4位共陽LED數(shù)碼管,NPN三極管作為驅(qū)動。 if(PORTC0x10) PORTC=1。 while(1) { delay_nms(20)。 //定義D口為輸出 DDRC=0xff。}void main(void){ int i。jn。i1000。筆者編輯了一段數(shù)碼管顯示8888的程序,程序代碼如下:include //延時子程序 ms級void delay_nms(unsigned int n){unsigned int i,j。所以在上電以前必須先排查電路。調(diào)試過程需要注意以下幾點【15】:(1)檢查電源是否完好,供電是USB供電還是電源供電。然后,要準備好調(diào)試的工具。為了正確顯示時間,接下來還要確定顯示電路能否正常工作。在調(diào)試過程中,首先必須明確調(diào)試順序。而有時往往在icc中編譯、運行無錯,通過AVR FIGHTER燒錄單片機,但燒錄到單片機中運行起來就會出錯,很可能是編程時管腳、時序編輯得不對、數(shù)據(jù)線有問題或把時鐘芯片拔下來重新插到管腳上,都可以解決問題。通過編譯、運行,可以檢查程序錯誤。硬件調(diào)試比較費時,需要細心和耐心,也需要熟練掌握電路原理。源程序見附錄A 鬧鈴子程序流程圖 繼電器子程序設(shè)計繼電器子程序設(shè)計是根據(jù)設(shè)定家用電器開關(guān)時間與當前時間是否相同,如果時間相同,【13】。 鬧鈴控制子程序設(shè)計 鬧鈴子程序最主要的任務(wù)是當設(shè)定的鬧鈴時間和當前時間相同時,鬧鈴響。而且,單片機必須循環(huán)輪流控制PE0PE3中的一位輸出“1”,同時PA口要輸出該位相應的段碼值。,源程序見附錄A。源程序見附錄A。DS18B20僅在主機發(fā)出讀時隙時才向主機傳輸數(shù)據(jù),所以,當主機向DS18B20發(fā)出讀數(shù)據(jù)命令后,必須馬上產(chǎn)生讀時隙,以便DS18B20能傳輸數(shù)據(jù)。在寫時序中,主機將在拉低總線15μs內(nèi)釋放總線,并向DS18B20寫“1”。所有的讀時隙最短必須持續(xù)60μs,各個讀時隙之間必須保證最短1μs的恢復時間。因此,在此15μs內(nèi),主機必須停止將DQ引腳置低。當主機從DS18B20讀數(shù)據(jù)時,
點擊復制文檔內(nèi)容
教學教案相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1