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

正文內(nèi)容

電子萬年歷的設(shè)計(jì)與制作畢業(yè)論文(編輯修改稿)

2024-07-24 15:08 本頁面
 

【文章內(nèi)容簡介】 器周期以上的高電平時(shí),單片機(jī)就完成了復(fù)位操作。如果RST持續(xù)為高電平,單片機(jī)就處于循環(huán)復(fù)位狀態(tài),而無法執(zhí)行程序。因此要求單片機(jī)復(fù)位后能脫離復(fù)位狀態(tài)。而本系統(tǒng)選用的是12MHz的晶振,因此一個(gè)機(jī)器周期為1μs,那么復(fù)位脈沖寬度最小應(yīng)為2μs。在實(shí)際應(yīng)用系統(tǒng)中,考慮到電源的穩(wěn)定時(shí)間,參數(shù)漂移,晶振穩(wěn)定時(shí)間以及復(fù)位的可靠性等因素,必須有足夠的余量根據(jù)應(yīng)用的要求,復(fù)位操作通常有兩種基本形式:上電復(fù)位、手動(dòng)復(fù)位。上電復(fù)位要求接通電源后,自動(dòng)實(shí)現(xiàn)復(fù)位操作。AT89S52單片機(jī)的上電復(fù)位POR(Power On Reset)實(shí)質(zhì)上就是上電延時(shí)復(fù)位,也就是在上電延時(shí)期間把單片機(jī)鎖定在復(fù)位狀態(tài)上。在單片機(jī)每次初始加電時(shí),首先投入工作的功能部件是復(fù)位電路。 復(fù)位電路把單片機(jī)鎖定在復(fù)位狀態(tài)上并且維持一個(gè)延時(shí)(記作TRST),以便給予電源電壓從上升到穩(wěn)定的一個(gè)等待時(shí)間;在電源電壓穩(wěn)定之后,再插入一個(gè)延時(shí),給予時(shí)鐘振蕩器從起振到穩(wěn)定的一個(gè)等待時(shí)間;在單片機(jī)開始進(jìn)入運(yùn)行狀態(tài)之前, 還要至少推遲2個(gè)機(jī)器周期的延時(shí)。本設(shè)計(jì)采用上電且開關(guān)復(fù)位電路,由于電容充電,使RST持續(xù)一段高電平時(shí)間。當(dāng)單片機(jī)已在運(yùn)行之中時(shí),按下復(fù)位鍵也能使RST持續(xù)一段時(shí)間的高電平,從而實(shí)現(xiàn)上電且開關(guān)復(fù)位的操作。通常選擇C=10~30μF。 復(fù)位電路第4章 系統(tǒng)的軟件設(shè)計(jì) 概述 電子萬年歷的功能是在程序控制下實(shí)現(xiàn)的。該系統(tǒng)的軟件設(shè)計(jì)方法與硬件設(shè)計(jì)相對應(yīng),按整體功能分成多個(gè)不同的程序模塊,分別進(jìn)行設(shè)計(jì)、編程和調(diào)試,最后通過主程序?qū)⒏鞒绦蚰K連接起來。這樣有利于程序修改和調(diào)試,增強(qiáng)了程序的可移植性。本系統(tǒng)的軟件部分主要要進(jìn)行公歷計(jì)算程序設(shè)計(jì),溫度測量程序設(shè)計(jì),按鍵的掃描輸入等。程序開始運(yùn)行后首先要進(jìn)行初始化,把單片機(jī)的各引腳的狀態(tài)按程序里面的初始化命令進(jìn)行初始化,初始化完成后運(yùn)行溫度測量程序,讀取出溫度傳感器測量出來的溫度,然后運(yùn)行公歷計(jì)算程序,得到公歷的時(shí)間、日期信息,再運(yùn)行按鍵掃描程序,檢測有無按鍵按下,如果沒有按鍵按下則直接調(diào)用節(jié)日計(jì)算程序,根據(jù)得到的公歷日期信息計(jì)算出節(jié)日,如果有按鍵按下則更新按鍵修改后的變量后送給節(jié)日計(jì)算程序,由節(jié)日計(jì)算程序根據(jù)修改后的變量計(jì)算出對應(yīng)的節(jié)假日,計(jì)算完成后運(yùn)行顯示程序,顯示程序?qū)⒌玫降臏囟葦?shù)據(jù)、公歷信息、節(jié)假日信息送給對應(yīng)的數(shù)碼管讓其顯示。 主程序流程圖的設(shè)計(jì):開始DS1302初始化設(shè)置DS1302讀年月日星期時(shí)分秒將讀取的數(shù)據(jù)處理后送液晶屏顯示返回 主程序流程圖 程序設(shè)計(jì) DS1302讀寫程序設(shè)計(jì)本系統(tǒng)的時(shí)間讀取主要來源于單片機(jī)對DS1302的操作,在硬件上時(shí)鐘芯片DS1302與單片機(jī)的連接需要三條線,即SCLK(7)、I/O(6)、RST(5),具體連接圖見系統(tǒng)硬件設(shè)計(jì)原理圖。讀取寫程序設(shè)計(jì)如下:sbit clk = P1^3。 //ds1302時(shí)鐘線定義sbit io = P1^4。 //數(shù)據(jù)線sbit rst = P1^5。 //復(fù)位線 //秒 分 時(shí) 日 月 年 星期 uchar code write_add[]={0x80,0x82,0x84,0x86,0x88,0x8c,0x8a}。 //寫地址uchar code read_add[] ={0x81,0x83,0x85,0x87,0x89,0x8d,0x8b}。 //讀地址uchar code init_ds[] ={0x58,0x00,0x00,0x01,0x01,0x13,0x1}。 uchar miao,fen,shi,ri,yue,week,nian。uchar i。uchar fen1=0x11,shi1=0。 //兩個(gè)鬧鐘變量的定義bit open1。/*************寫一個(gè)數(shù)據(jù)到對應(yīng)的地址里***************/void write_ds1302(uchar add,uchar dat){ rst = 1。 //把復(fù)位線拿高 for(i=0。i8。i++) { //低位在前 clk = 0。 //時(shí)鐘線拿低開始寫數(shù)據(jù) io = add amp。 0x01。 add = 1。 //把地址右移一位 clk = 1。 //時(shí)鐘線拿高 } for(i=0。i8。i++) {clk = 0。 //時(shí)鐘線拿低開始寫數(shù)據(jù) io = dat amp。 0x01。 dat = 1。 //把數(shù)據(jù)右移一位 clk = 1。 //時(shí)鐘線拿高 } rst = 0。 //復(fù)位線合低 clk = 0。 io = 0。}uchar read_ds1302(uchar add){ uchar value,i。 rst = 1。 //把復(fù)位線拿高 for(i=0。i8。i++) { //低位在前 clk = 0。 //時(shí)鐘線拿低開始寫數(shù)據(jù) io = add amp。 0x01。 add = 1。 //把地址右移一位 clk = 1。 //時(shí)鐘線拿高 } for(i=0。i8。i++) { clk = 0。 //時(shí)鐘線拿低開始讀數(shù)據(jù) value = 1。 if(io == 1) value |= 0x80。 clk = 1。 //時(shí)鐘線拿高 } rst = 0。 //復(fù)位線合低 clk = 0。 io = 0。 return value。 //返回讀出來的數(shù)據(jù)}void read_time(){ miao = read_ds1302(read_add[0])。 //讀秒 fen = read_ds1302(read_add[1])。 //讀分 shi = read_ds1302(read_add[2])。 //讀時(shí) ri = read_ds1302(read_add[3])。 //讀日 yue = read_ds1302(read_add[4])。 //讀月 nian = read_ds1302(read_add[5])。 //讀年 week = read_ds1302(read_add[6])。 //讀星期 Conversion(0,nian,yue,ri)。 //農(nóng)歷轉(zhuǎn)換 n_nian = year_moon 。 n_yue = month_moon 。 n_ri = day_moon 。}void write_time(){ write_ds1302(0x8e,0x00)。 //打開寫保護(hù)write_ds1302(write_add[0],miao)。 //寫秒 write_ds1302(write_add[1],fen)。 //寫分 write_ds1302(write_add[2],shi)。 //寫時(shí) write_ds1302(write_add[3],ri)。 //寫日 write_ds1302(write_add[4],yue)。 //寫月 write_ds1302(write_add[5],nian)。 //寫星期 write_ds1302(write_add[6],week)。 //寫年 write_ds1302(0x8e,0x80)。 //關(guān)閉寫保護(hù)}void write_ds1302ram(uchar add,uchar dat){ add = 1。 //地址是從第二位開始的 add amp。= 0xfe。 //把最低位清零 是寫的命令 add |= 0xc0。 //地址最高兩位為 1 write_ds1302(0x8e,0x00)。 write_ds1302(add,dat)。 write_ds1302(0x8e,0x80)。}uchar read_ds1302ram(uchar add){ add = 1。 //地址是從第二位開始的 add |= 0x01。 //把最高位置1 是讀命令 add |= 0xc0。 //地址最高兩位為 1 return(read_ds1302(add))。 }void init_ds1302(){ uchar i。 rst = 0。 //第一次讀寫數(shù)據(jù)時(shí)要把IO品拿低 clk = 0。 io = 0。i = read_ds1302ram(30)。 if(i != 3) { i = 3。 write_ds1302ram(30,i)。 //4050 4100 3080 write_ds1302(0x8e,0x00)。 //打開寫保護(hù) for(i=0。i7。i++) write_ds1302(write_add[i],init_ds[i])。 //把最高位值0 允許ds1302工作 write_ds1302(0x8e,0x80)。 //關(guān)寫保護(hù) }}DS1302與微處理器進(jìn)行數(shù)據(jù)交換時(shí),首先由微處理器向電路發(fā)送命令字節(jié),命令字節(jié)最高位MSB(D7)必須為邏輯 1,如果D7=0,則禁止寫DS1302,即寫保護(hù);D6=0,指定時(shí)鐘數(shù)據(jù),D6=1,指定RAM數(shù)據(jù);D5~D1指定輸入或輸出的特定寄存器;最低位LSB(D0)為邏輯0,指定寫操作(輸入),D0=1,指定讀操作(輸出) 。 溫度程序設(shè)計(jì)單總線上最基本的操作有初始化、寫和讀3種,所有其它的操作都由這3種基本操作組合而成,初始化用于對總線上的器件進(jìn)行狀態(tài)復(fù)位,寫用于主節(jié)點(diǎn)向總線上寫入一位數(shù)據(jù),讀用于主節(jié)點(diǎn)從總線上讀取一位數(shù)據(jù)。在這3種操作中,只有寫操作是單向的,初始化操作和讀操作都是雙向的。具體程序設(shè)計(jì)如下:byte ow_reset(void){ byte presence。 DQ = 0。 // 拉低總線 delay(29)。 // 保持 480us DQ = 1。 // 釋放總線 delay(3)。 // 等待回復(fù) presence = DQ。 // 讀取信號 delay(25)。 // 等待結(jié)束信號 return(presence)。 // 返回 0:正常 1:不存在} //從 1wire 總線上讀取一個(gè)字節(jié)byte read_byte(void){ byte i。 byte value = 0。 for (i=8。i0。i) { value=1。 DQ = 0。 DQ = 1。 delay(1)。 if(DQ)value|=0x80。 delay(6)。 } return(value)。}//向 1WIRE 總線上寫一個(gè)字節(jié)void write_byte(char val){ byte i。 for (i=8。 i0。 i) // 一次寫一位 { DQ = 0。 // DQ = valamp。0x01。 delay(5)。 // DQ = 1。 val=val/2。 } delay(5)。} 總結(jié)與展望一、總結(jié)在整個(gè)設(shè)計(jì)過程中學(xué)到了許多沒學(xué)到的知識,在電路焊接時(shí)雖然沒什么大問題,但從中也知道了焊接在整個(gè)作品中的重要性,電路工程量大,不能心急,一個(gè)個(gè)慢慢來不能急于求成。反而達(dá)到事半功倍的效果。對電路的設(shè)計(jì)、布局要先有一個(gè)好的構(gòu)思,才顯得電路板美觀、大方。程序編寫中,由于思路不清晰,開始時(shí)遇到了很多的問題,經(jīng)過靜下心來思考,理清了思路,反而得心應(yīng)手。在此次設(shè)計(jì)中,知道了做事要有一顆平常的心,不要想著走捷徑,一步一腳印。也練就了我的耐心,做什么事都要有耐心。在本次設(shè)計(jì)中學(xué)到了很多很多東西,這是最重要的??傊?,此次畢業(yè)設(shè)計(jì)使我的能力得到了全方位的提高,次設(shè)計(jì)的電子萬年歷也存在的不足的地方,有待于以后的改進(jìn)。二、今后研究方向在整個(gè)設(shè)計(jì)過程中,硬件方面主要設(shè)計(jì)了AT89S52單片機(jī)的最小系統(tǒng)、DS1302接口電路、DS18B20接口電路、鬧鐘及LCD顯示;軟件方面借助各個(gè)渠道的資料,主要設(shè)計(jì)了陽歷數(shù)據(jù)讀取程序、陽歷轉(zhuǎn)陰歷程序、溫度采集程序、鬧鈴程序以及LCD顯示程序;系統(tǒng)的調(diào)試主要是通過一塊AT89S52開發(fā)板,再借助于Keil、STC以及少許自己搭建的外圍電路實(shí)現(xiàn)的;再此過程中,分步調(diào)試時(shí)顯示出了陽歷的日期及時(shí)間,還有實(shí)時(shí)溫度,集中調(diào)試時(shí)沒有達(dá)到預(yù)期效果。此萬年歷具有讀顯示直觀、功能多樣、電路簡潔、成本低廉等諸多優(yōu)點(diǎn),符合電子儀器儀表的發(fā)展趨勢,具有廣闊的市場前景。 參考文獻(xiàn)[1] [M].北京:電子工業(yè)出版社,2006[2] [M].西安:西安科技大學(xué)出版社,2003[3] 何立民.單片機(jī)高級教程[M].北京:北京航空航天大
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1