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

正文內(nèi)容

電子萬年歷的仿真與設(shè)計方案-文庫吧

2025-04-10 13:39 本頁面


【正文】 。軟件系統(tǒng)的主要特點是整個過程完全在鍵盤的控制之下,實現(xiàn)了完全的友好的人機交互功能。程序框圖如下:初始化DS1302,1602從DS1302讀取信息1602液晶顯示相關(guān)信息判斷是否有按鍵按下時間、日期、溫度、鬧鐘和倒計時設(shè)置模塊沒有按鍵按下溫度檢測模塊四、調(diào)試結(jié)果及分析電路設(shè)計中單片機采用AT89C52,編譯環(huán)境為keil,程序使用C語言進行編寫,使用proteus仿真軟件進行仿真調(diào)試,設(shè)計硬件制作比較順利,很快就把硬件電路做好。接著,主要是程序的調(diào)試。程序調(diào)試的難點在于設(shè)計的功能模塊過多,程序結(jié)構(gòu)比較復雜,使得調(diào)試起來比較費時間。在軟件調(diào)試過程中,當調(diào)節(jié)時間和日期后,單片機上電后更新的是PC的時間,后來查找資料發(fā)現(xiàn),是設(shè)置ds1302的問題,還有一個問題,在按鍵操作時有時會出現(xiàn)功能不穩(wěn)定,這是由于按鍵存在抖動,所以后來加個去抖動的延時后在判斷,基本就可以解決問題。仿真正確顯示了時間,在LCD1602中正確顯示了當前日期、時間,通過按按鍵K1,就可以開始設(shè)置時間或鬧鈴,依次按K1依次在年、月、日、時、分之間切換,按K2鍵用于加1操作,K3鍵用于減1操作,K4是取消按鈕,單獨按加減按鍵可以顯示溫度和進入倒計時。通過調(diào)試和仿真,基本實現(xiàn)了設(shè)計所要求的所有功能。1:顯示年、月、日、時、分、秒信息。 2:具有可調(diào)整日期和時間功能。 3:DS1302自帶閏年補償功能,可自動判斷平閏年,正確顯示時間。4:實現(xiàn)鬧鐘提醒功能,且鬧鐘可設(shè)置至年,月,日,時,分,秒。5:實時顯示環(huán)境溫度。6:顯示60秒倒計時功能。但唯一不足的是不能實現(xiàn)一年的溫度記憶功能,我用AT2404調(diào)了很長時間,還是不能實現(xiàn)溫度的存儲和顯示,可能是我不太會用那個芯片,看了它的資料,還是不能寫出正確的程序。結(jié)束語本系統(tǒng)以AT89C52為核心部件,使用串行時鐘芯片DS1302,實現(xiàn)時間和鬧鐘的功能設(shè)置,用溫度傳感器DS18B20實現(xiàn)對環(huán)境實時溫度的檢測。通過鍵盤和液晶顯示屏可方便地校對時鐘、設(shè)置鬧鐘時間和顯示溫度,本系統(tǒng)基本完成了實用電子鐘的功能,并添加了許多附加功能,使電子萬年歷更具多樣化,特色化。盡量做到了硬件電路簡單穩(wěn)定,減少電磁干擾和其他環(huán)境干擾。在該系統(tǒng)設(shè)計,調(diào)試完成之后,對最后的成功進行分析,同時結(jié)合在調(diào)試過程中出現(xiàn)的錯誤和不足進行綜合分析,總結(jié)在實際系統(tǒng)設(shè)計和調(diào)試過程中的寶貴經(jīng)驗。雖然還有一點功能不能實現(xiàn),但我不會放棄,在以后的業(yè)余時間里我會多查資料,多分析,多請教老師同學,爭取把它做完善。同時也希望各位老師批評指正,提供你們的寶貴經(jīng)驗,我相信我會做得更好。在本次專業(yè)方向設(shè)計過程當中,收獲知識的同時,還收獲了閱歷,收獲了成熟,通過查找大量資料,請教老師同學,以及不懈的努力,不僅培養(yǎng)了獨立思考、 動手制作的能力,在各種其它能力上也都有了提高。更重要的是,我們學會了很多學習的方法,知道了理論和實踐的巨大差別。而這是以后最實用的,真的是受益匪淺。要面對社會的挑戰(zhàn),只有不斷的學習、實踐,再學習、再實踐。同時在與老師和同學的交流過程中,互動學習,將知識融會貫通。通過自己的努力,做出了一個萬年歷,對以后的學習是一個莫大的鼓舞,激起了我的學習興趣和開發(fā)創(chuàng)新思維。致謝感謝學院給我們提供了一個展現(xiàn)自己的舞臺,給我們一次難得煅煉的機會,使得我們的動手能力和專業(yè)技能都有了很大的提高。感謝提供相關(guān)技術(shù)幫助的老師和同學,你們的支持和鼓勵使我對這次的作品完成有了信心和動力,也給了我們很多無私的幫助和支持,我在此深表謝意。【參考文獻】【1】 于永學、葛健,1WIRE總線數(shù)字溫度傳感器DS18B20及應用[J],電子產(chǎn)品世界2003(4)1624【2】 馬云峰、陳子夫、李全培,數(shù)字溫度傳感器DS18B20的原理與應用[EB/OL]125【3】 胡振宇、劉魯源、杜振輝,DS18B20接口的C語言程序設(shè)計[J],單片機與嵌入式系統(tǒng)應用,20022443【4】 李鋼,1WIRE總線數(shù)字溫度傳感器DS18B20原理及應用,現(xiàn)代電子技術(shù) [J],2005(8)2123【5】 陳明義,電工電子技術(shù)課程設(shè)計指導[M],中南大學出版社,2002【6】 郭天祥,新概念51單片機c語言教程,電子工業(yè)出版社,2009【7】 陳躍東,DS18B20集成溫度傳感器原理與應用[J],安徽教育出版社,2002(4)523【8】 李廣弟,《單片機基礎(chǔ)》[M],北京航空航天大學出版社,1994,156【9】 譚浩強,C程序設(shè)計(第二版)[M],清華大學出版社,2003 【10】 付家才,單片機控制工程實踐技術(shù)[M],化學工業(yè)出版社,2004附錄一 仿真電路圖 圖(16) 電路原理圖 圖(17) 顯示實時時間 圖(18) 調(diào)整日期 圖(19) 調(diào)整時間 圖(20) 進入后臺日期時間調(diào)整圖(21) 鬧鐘設(shè)置界面圖(22) 實時溫度顯示 圖(23) 倒計時顯示附錄二 源程序代碼includeincludeunsigned char code digit[]={0123456789}。 //數(shù)字代碼unsigned char mode,TH,TL,TN,TD,length,amode,alarmmode,count=60,minutes,hours,minutea,seconda,seconds,houra=12,yeara=12,montha=01,daya=01,years,months,days。sbit SCLK=P1^0。 //DS1302時鐘輸入sbit DATE=P1^1。 //DS1302數(shù)據(jù)輸入 sbit REST=P1^2。 //DS1302復位端口sbit SET=P1^4。 //DS1302設(shè)置模式選擇位sbit ADD=P1^5。 //增加sbit RED=P1^6。 //減小sbit CANL=P1^7。int down_flag=0。void delay1ms(int i)//1毫秒延時{ int j,k。 while(i) for(j=76。j1。j)。 for(k=29。k1。k)。 }void delaynus(unsigned char n) //延時若干微秒{ unsigned char i。 for(i=0。in。i++)。 }/***********蜂鳴器模塊************/ sbit beep=P3^6。 //位定義, void dely500(void){ unsigned char i。 for(i=i0。i) { _nop_()。 }}void xiangling(unsigned char n){ unsigned char x,i。 while(n) { for(i=0。i5。i++) { for(x=0。x200。x++) { beep=~beep。 dely500()。 } } for(i=0。i3。i++) { for(x=0。x200。x++) { beep=~beep。 dely500()。 dely500()。 } } }} /*******DS1302模塊*************/ void Write1302(unsigned char date)//向1302寫數(shù)據(jù) { unsigned char i。 SCLK=0。 delaynus(2)。 for(i=0。i8。i++) { DATE=dateamp。0x01。 SCLK=1。 delaynus(2)。 SCLK=0。 delaynus(2)。 date=1。 } } void WriteSet1302(unsigned char cmd,unsigned char date) //根據(jù)相應的命令輸入相應的數(shù)據(jù) { REST=0。 SCLK=0。 REST=1。 Write1302(cmd)。 delaynus(5)。 Write1302(date)。 SCLK=1。 REST=0。 } unsigned char Read1302(void) //讀取1302數(shù)據(jù) { unsigned char i,date。 delaynus(2)。 for(i=0。i8。i++) { date=1。 if(DATE==1) date|=0x80。 SCLK=1。 delaynus(2)。 SCLK=0。 delaynus(2)。 } return date。 }unsigned char ReadSet1302(unsigned char cmd)//根據(jù)命令讀取1302相應的值{ unsigned char date。 REST=0。 SCLK=0。 REST=1。 Write1302(cmd)。 delaynus(2)。 date=Read1302()。 SCLK=1。 REST=0。 return date。}void IntDS1302(void) //DS1302初始化{ unsigned char flag。 flag= ReadSet1302(0x81)。 if(flagamp。0x80) { //判斷時鐘芯片是否關(guān)閉 WriteSet1302(0x8E,0x00)。 //根據(jù)寫狀態(tài)寄存器命令字,寫入不保護指令 WriteSet1302(0x80,((0/10)4|(0%10)))。 //根據(jù)寫秒寄存器命令字,寫入秒的初始值 WriteSet1302(0x82,((0/10)4|(0%10)))。 //根據(jù)寫分寄存器命令字,寫入分的初始值 WriteSet1302(0x84,((0/10)4|(0%10)))。 //根據(jù)寫小時寄存器命令字,寫入小時的初始值 WriteSet1302(0x86,((0/10)4|(0%10)))。 //根據(jù)寫日寄存器命令字,寫入日的初始值 WriteSet1302(0x88,((0/10)4|(0%10)))。 //根據(jù)寫月寄存器命令字,寫入月的初始值 WriteSet1302(0x8c,((10/10)4|(10%10)))。 //根據(jù)寫年寄存器命令字,寫入年的初始值 WriteSet1302(0x90,0xa5)。 //打開充電功能 選擇2K電阻充電方式 WriteSet1302(0x8E,0x80)。 //根據(jù)寫狀態(tài)寄存器命令字,寫入保護指令 } }/***************液晶顯示模塊*****************/sbit RS=P2^5。sbit RW=P2^6。sbit E=P2^7。sbit BF=P0^7。 /*液晶忙檢測*/bit BusyTest(void){ bit result。 RS=0。 RW=1。 E=1。 _nop_()。 _nop_()。 _nop_()。 result=BF。 _nop_()。 _nop_()。 _nop_()。 E=0。 return result。}/*寫指令*/void Write_(unsigned char mand){ while(BusyTest()!=0)。 RS=0。 RW=0。 E=0。 _nop_()。 _nop_()。 _nop_()。 P0=mand。 _nop_()。 _nop_()。 _nop_()。 E=1。 _nop_()。 _nop_()。 _nop_()。 E=0。}/*寫地址*/void Write_Address(unsigned char address){ Write_(address|0x80)。 delay1ms(1)。 } /*寫數(shù)據(jù)*/void Write_Date(unsigned char date){ RS=1。 RW=0。 E=0。 _nop_()。 _nop_()。 _nop_()。 P0=date。 _nop_()。 _nop_()。 _nop_()。 E=1。 _nop_()。 _nop_()。 _nop_()。 E=0。 delay1ms(1)。}/*初始化*/void Lcd_Int(void){ Write_(0x38)。 delay1ms(1)。 Write_(0x38)。 delay1ms(1)。 Write_(0x06)。 delay1ms(1)。 Write_(0x0c)。
點擊復制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1