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

正文內(nèi)容

電子萬年歷的仿真與設(shè)計方案(更新版)

2025-06-03 13:39上一頁面

下一頁面
  

【正文】 while(ADD==0)。 } WriteSet1302(0x8e,0x80)。 delay1ms(1)。 while(ADD==0)。 WriteSet1302(0x8e,0x00)。 delay1ms(5)。 delay1ms(300)。0x70)4)*10+(datevalueamp。 break。 WriteSet1302(0x8c,datevalue)。 while(1) { if(ADD==0) { delay1ms(10)。 } WriteSet1302(0x8e,0x80)。 } } delay1ms(1)。 } WriteSet1302(0x8e,0x80)。 Write_Address(0x4A)。 if(RED==0) { minute。 minute=(((timevalueamp。 Write_(0x0c)。 WriteSet1302(0x84,timevalue)。 delay1ms(300)。 delay1ms(500)。0xf0)4)*10+(valueamp。 display_Day(days)。 hours=(((valueamp。0x0f))。 Write_Date(digit[i])。 j=x%10。}void display_houra(unsigned char x) //鬧鐘小時部分顯示{ unsigned char i,j。 delay1ms(1)。 Write_Date(digit[j])。 Write_Date(digit[i])。 Write_Address(0x0B)。 j=day%10。 i=hour/10。}void display_Minute(unsigned char minute) { unsigned char i,j。)。:39。E39。)。)。 //Write_Date(39。A39。 delay1ms(1)。 delay1ms(1)。 _nop_()。 delay1ms(1)。 _nop_()。 RS=0。 _nop_()。sbit E=P2^7。 //根據(jù)寫分寄存器命令字,寫入分的初始值 WriteSet1302(0x84,((0/10)4|(0%10)))。 REST=0。 }unsigned char ReadSet1302(unsigned char cmd)//根據(jù)命令讀取1302相應(yīng)的值{ unsigned char date。i8。 Write1302(cmd)。 SCLK=1。 dely500()。x++) { beep=~beep。 for(i=k1。 //增加sbit RED=P1^6。感謝提供相關(guān)技術(shù)幫助的老師和同學(xué),你們的支持和鼓勵使我對這次的作品完成有了信心和動力,也給了我們很多無私的幫助和支持,我在此深表謝意。同時也希望各位老師批評指正,提供你們的寶貴經(jīng)驗,我相信我會做得更好。5:實時顯示環(huán)境溫度。程序調(diào)試的難點在于設(shè)計的功能模塊過多,程序結(jié)構(gòu)比較復(fù)雜,使得調(diào)試起來比較費時間。按鍵用來調(diào)整時間,其一端直接接到單片機的端口,另一端接地,當按下按鍵時,相應(yīng)的端口變?yōu)榈碗娖?,從而作相?yīng)的操作。我們把得到的溫度數(shù)據(jù)乘上對應(yīng)的分辨率即可以得到轉(zhuǎn)換后的溫度值。 RAM:DS18B20的內(nèi)部暫存器共9個字節(jié)。DS18B20溫度檢測電路通過1820進行讀數(shù)據(jù),將讀出來的數(shù)據(jù)進行進制轉(zhuǎn)換,轉(zhuǎn)換后送到12864顯示。讀數(shù)據(jù):讀數(shù)據(jù)時在緊跟8位的控制字指令后的下一個SCLK脈沖的下降沿,讀出DS1302的數(shù)據(jù),讀出的數(shù)據(jù)是從最低位到最高位。在24小時模式時,位5是第二個10小時位控制寄存器(8Fh、8Eh)的位7是寫保護位(WP),其它7位均置為0。 圖(3) DS1302管腳圖 圖(4) DS1302時鐘電路DS1302各引腳的功能為:8: Vcc1:備用電池端;1: Vcc2:5V電源。所以采用方案一獨立式鍵盤。 設(shè)置模塊的選擇在對日期、溫度和鬧鐘進行切換,對日期和時間進行調(diào)節(jié)校準過程中,系統(tǒng)需要產(chǎn)生激勵電流,因此需要用按鍵。 顯示模塊的選擇 方案一:采用LED數(shù)碼管動態(tài)掃描,LED數(shù)碼管價格適中,對于顯示數(shù)字最合適,而且采用動態(tài)掃描法與單片機相連接時,占用的單片機口線少,但所需要的數(shù)碼管數(shù)量太多,焊接困難極易出錯,所以不采用LED數(shù)碼管作為顯示。方案二:使用時鐘芯片DS12C887。單片機算術(shù)運算功能強,軟件編程靈活、自由度大,可用軟件編程實現(xiàn)各種算法和邏輯控制,并且由于其功耗低、體積小、技術(shù)成熟和成本低等優(yōu)點,使其在各個領(lǐng)域應(yīng)用廣泛。而近年來推出的一些高檔單片機還包括有許多特殊功能單元,如A/D、D/A轉(zhuǎn)換器、調(diào)制解調(diào)器、通信控制器、鎖相環(huán)、DMA、浮點運算單元、PWM控制輸出單元、PWM輸出時的死區(qū)可編程控制功能等。這些可靠性的獲得除了依靠單片機芯片本身的高可靠性以及應(yīng)用有最少的聯(lián)接外,還可以方便地采用軟、硬件技術(shù)。其主要特點如下:8KB Flash ROM,可以擦除1000次以上,數(shù)據(jù)保存10年。方案三:采用DS1302時鐘芯片實現(xiàn)時鐘,DS1302芯片是一種高性能的時鐘芯片,可自動對秒、分、時、日、周、月、年以及閏年補償?shù)哪赀M行計數(shù),而且精度高,位的RAM作為數(shù)據(jù)暫存區(qū)。本設(shè)計所需顯示較多且需要文字,又基于設(shè)計要求,所以在本次設(shè)計中采用方案三,使用LCD1602液晶顯示屏。獨立式按鍵電路配置靈活,軟件結(jié)構(gòu)簡單。二、仿真系統(tǒng)硬件設(shè)計電路設(shè)計框圖AT89C52主控制模 塊設(shè)置模塊1602液晶顯示模塊 鬧鐘模塊DS1302時鐘模塊DS18B20溫度檢測 圖(1) 總體設(shè)計框圖 單片機控制系統(tǒng)單片機中央處理系統(tǒng)的方案設(shè)計,選用AT89C52單片機作為中央處理器,如圖(2)所示。DS1302有關(guān)日歷、時間的寄存器:圖(5)DS1302有關(guān)日歷、時間的寄存器秒寄存器(81h、80h)的位7定義為時鐘暫停標志(CH)。也就是說在電路上電的初始態(tài)WP是1,這時是不能改寫上面任何一個時間寄存器的,只有首先將WP改寫為0,才能進行其它寄存器的寫操作。顯示電路1602液晶也叫1602字符型液晶 它是一種專門用來顯示字母、數(shù)字、符號等的點陣型液晶模塊 它有若干個5X7或者5X11等點陣字符位組成,每個點陣字符位都可以顯示一個字符。當然連線簡單意味著軟件處理上可能要麻煩一點。(可以用RAM指令將其拷貝到EEPROM中)第四個字節(jié)為配置寄存器。根據(jù)DS18B20的通訊協(xié)議,主機控制DS18B20完成溫度轉(zhuǎn)換必須經(jīng)過3個步驟:每一次讀寫之前都要對DS18B20進行復(fù)位,復(fù)位成功后發(fā)送一條ROM指令,最后發(fā)送RAM指令。因本程序涉及的模塊較多,所以程序編寫也采用模塊化設(shè)計,C語言具有編寫靈活、移植方便、便于模塊化設(shè)計的特點,所以本系統(tǒng)的軟件采用C51編寫。通過調(diào)試和仿真,基本實現(xiàn)了設(shè)計所要求的所有功能。結(jié)束語本系統(tǒng)以AT89C52為核心部件,使用串行時鐘芯片DS1302,實現(xiàn)時間和鬧鐘的功能設(shè)置,用溫度傳感器DS18B20實現(xiàn)對環(huán)境實時溫度的檢測。而這是以后最實用的,真的是受益匪淺。sbit SCLK=P1^0。void delay1ms(int i)//1毫秒延時{ int j,k。 for(i=0。 }}void xiangling(unsigned char n){ unsigned char x,i。i3。 delaynus(2)。 delaynus(2)。 SCLK=1。 SCLK=1。 REST=1。 flag= ReadSet1302(0x81)。 //根據(jù)寫月寄存器命令字,寫入月的初始值 WriteSet1302(0x8c,((10/10)4|(10%10)))。 RS=0。 _nop_()。 _nop_()。 _nop_()。 E=0。 E=1。 Write_(0x38)。 delay1ms(1)。T39。 delay1ms(1)。39。)。 Write_Date(39。 Write_Date(39。 j=second%10。 Write_Address(0x49)。 Write_Date(digit[i])。 Write_Date(digit[j])。 delay1ms(1)。} void display_Daya(unsigned char x) //鬧鐘日數(shù)顯示{ unsigned char i,j。 i=x/10。 j=x%10。 Write_Address(0x44)。 Write_Date(digit[j])。//days,months,years。 minutes=(((valueamp。 display_Hour(hours)。0x70)4)*10+(valueamp。}void gbdisplay(unsigned char address) //時間調(diào)整時光標閃爍{ Write_Address(address)。 //讀取此時的數(shù)值 hour=(((timevalueamp。 if(RED==0) { hour。 Write_Address(0x47)。 } WriteSet1302(0x8e,0x80)。 while(1) { if(ADD==0) { delay1ms(10)。 while(RED==0)。 delay1ms(5)。 WriteSet1302(0x8e,0x00)。 delay1ms(5)。 WriteSet1302(0x8e,0x00)。 } } if(RED==0) { delay1ms(10)。 delay1ms(5)。}void monthset(void) //調(diào)月{ unsigned char datevalue,month。 if(ADD==0) { month++。 } } datevalue=((month/10)4|(month%10))。 break。0x70)4)*10+(datevalueamp。 delay1ms(300)。 delay1ms(5)。 while(1) { if(ADD==0) { delay1ms(20)。 if(value==0) value=1。 value=montha。 if(RED==0) { value。 } } }void alarmdayset(void) //鬧鐘調(diào)日{(diào) unsigned char value。 } } if(RED==0) { delay1ms(20)。 break。 while(ADD==0)。 if(CANL==0) { delay1ms(500)。 if(minutea==0) minutea=59。 if(seconda59) seconda=0。 if(CANL==0) { delay1ms(500)。 delay1ms(500)。delay1ms(500)。delay1ms(500)。unsigned char flag。 DQ=0。 temp=DQ。i8。time++)。 } /*********************向DS18B20寫數(shù)據(jù)**************************/ void WriteDS18B20(unsigned char date) { unsigned char i。 for(time=0。 } for(time=0。 WriteDS18B20(0XCC)。 i++。 j=x%100/10。 delay1ms(50) 。 delay1ms(5)。 TL=ReadDS18B20()。 TN=TH*16+TL/16。 delay1ms(5)。)。 Write_Address(0x4D)。F39。)。(seconds==seconda)amp。 Write_Address(0x03)。M39。)。 while(1) { xiangling(1)。T39。 Write_Address(0x00)。 delay1ms(5)。 Write_Date(39。)。)。)。 if(alarmmode==1) { Write_Address(0x4D)。 39。)。Write_(0x0c)。 case(3):{gbdisplay(0x0f)。delay1ms(500)。alarmsecondset
點擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1