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

正文內(nèi)容

片機課程設計--電子日歷時鐘-預覽頁

2025-07-06 06:46 上一頁面

下一頁面
 

【正文】 0 0 0 分寄存器 1 0 0 0 0 0 1 小時寄存器 1 0 0 0 0 1 0 日寄存器 1 0 0 0 0 1 1 月寄存器 1 0 0 0 1 0 0 星期寄存器 1 0 0 0 1 0 1 年寄存器 1 0 0 0 1 1 0 寫保護寄存器 1 0 0 0 1 1 1 慢充電寄存器 1 0 0 1 0 0 0 時鐘突發(fā)寄存器 1 0 1 1 1 1 1 表 3 DS14302 內(nèi)部主要寄存器分布表 寄存器名稱 命令字 取值范圍 各位內(nèi)容 寫 讀 7 6 5 4 3 2 1 0 秒寄存器 80H 81H 0059 CH 10SEC SEC 分寄存器 82H 83H 0059 0 10MIN MIN 小時寄存器 84H 85H 0112或 0023 12/24 0 A HR HR 日期寄存器 86H 87H 0128,29,30,31 0 0 10DATE DATE 月份寄存器 88H 89H 0112 0 0 0 10M MONTH 周寄存器 8AH 8BH 0107 0 0 0 0 0 DAY 年份寄存器 8CH 8DH 0099 10YEAR YEAR 電路設計最終方案決定 綜上 硬件的介紹 所述,對此次作品的方案選定:采用 AT89S51 作為主控制系統(tǒng); DS1302 提供時鐘; LCD1602 液晶作為顯示。 主 控 模 塊A T 8 9 S 5 1顯 示 模 塊L C D 1 6 0 2時 鐘 電 路D S 1 0 3 2鍵 盤 掃 描 電 路振 蕩 器 圖 5電路設計框圖 系統(tǒng)硬件概述 本電路是由 AT89S51 單片機為控制核心,具有在線編程功能,低功耗,能在3V超低壓工作;時鐘電路由 DS1302 提供,它是一種高性能、低功耗、帶 RAM 的實時時鐘電路,它可以對年、月、日、時、分、秒進行計時,具有閏年補償功能,工作電壓為 ~ 。 主要單元電路的設計 單片機主控模塊的設計 AT89S51單片機為 40引腳雙列直插芯片 ,有四個 I/O口 P0,P1,P2,P3, MCS51單片機共有 4 個 8 位的 I/O 口( P0、 P P P3) ,每一條 I/O線都能獨立地作輸出或輸入。在主電源關閉的情況下,也能保持時鐘的連續(xù)運行。 X1 和 X2 是振蕩源,外接 晶振。如果在傳送過程中 RST 置為低電 平,則會終 止此次數(shù)據(jù)傳送, I/O引腳變?yōu)楦咦钁B(tài)。 圖 8 時鐘電路 DS1302 接線 圖 2. DS1302 數(shù)據(jù) 操作原理 DS1302 在每次進行讀、寫程序前都必須初始化,先把 SCLK 端置“ 0”,接著把 RST 端置“ 1”,最后才給予 SCLK 脈沖。位 0是讀 /寫操作位,進行讀操作時,該位為 1;該位為 0 則表示進行的是寫操作。當“ WP”為 1 時,寫保護位防止對任一寄存器的寫操作。 K3:減鍵,功能類似加鍵,只是當光標處于相應位置時,此按鍵按動一次,該光標處的數(shù)值將減一。 //調用 DS1302 時鐘的初始化子函數(shù) init()。 //調用鍵盤掃描子函數(shù) } } DS1302 子函數(shù) DS1302 初始化子函數(shù): void ds1302_init() //1302 芯片初始化子函數(shù) (20210612,09:45:05) { RST=0。 //向 DS1302 內(nèi)寫秒寄存器 80H 寫入初始秒數(shù)據(jù) 05 //write_1302(0x82,0x45)。 //向 DS1302 內(nèi)寫月份寄存器 88H 寫入初始月份數(shù)據(jù) 06 write_1302(0x8c,0x12)。//開顯示不顯示光標 write_1602(0x06)。a10。//時間顯示固定符號寫入位置,從第 2 個位置后開始顯示 for(a=0。 } } 液晶寫入子程序 1.液晶寫入子函數(shù)流程圖 ,如圖 13 所示。//送入數(shù)據(jù) delay(1)。//en 由高變低,產(chǎn)生下降沿,液晶執(zhí)行命令 } write_1602dat(uchar dat)//***液晶寫入數(shù)據(jù)函數(shù) **** { rs=1。 en=1。 時間調整程序流程圖如圖 B 所示 : 調 用 子 函 數(shù)返 回 主 程 序計 時 停 止顯 示 子 程 序時 間 相 應 位 閃爍對 應 位 數(shù) 據(jù) 減 1減 鍵 按 下對 應 位 數(shù) 據(jù) 加 1加 鍵 按 下判 斷 功 能 鍵 次 數(shù) 7 次判 斷 是 否 有按 鍵 按 下按 下 次 數(shù) 7 ? 按 下 次 數(shù) 7YNNYYYNN 圖 B 時間調整程序流程圖 第四章 軟件測試與硬件仿真 在開發(fā)軟件 Keil 中,建立新工程,根據(jù)設計的相應模塊電路接線圖編寫調用子函數(shù),并且編寫主程序,編譯、運行,根據(jù)編譯結果進行相應修改,最終得到符合系統(tǒng)要求的程序代碼,并產(chǎn)生“ HEX 文件”。 附 錄 附錄一: 系統(tǒng)電路圖: 附錄二: Proteus 仿真圖 附錄三: 電子日歷時鐘源程序: include define uint unsigned int define uchar unsigned char uchar a,miao,shi,fen,ri,yue,nian,flag,key1n,temp。 //如果硬件上 rw 接地,就不用寫這句和后面的 rw=0 了 //DS1302 時鐘芯片與 C51 之間的引腳連接定義 sbit IO=P2^2。 sbit ACC7=ACC^7。 //減鍵 /*************************************************/ uchar code tab1[]={20 }。x0。 } /********液晶寫入指令函數(shù)與寫入數(shù)據(jù)函數(shù),以后可調用 **************/ /*液晶寫入有 關函數(shù)會在 DS1302 的函數(shù)中調用,所以液晶程序要放在前面 */ write_1602(uchar )//****液晶寫入指令函數(shù) **** { rs=0。 en=1。//數(shù)據(jù) /指令選擇置為數(shù)據(jù) rw=0。 //en 置高電平,為制造下降沿做準備 delay(1)。//開顯示不顯示光標 write_1602(0x06)。a10。//時間顯示固定符號寫入位置,從第 2 個位置后開始顯示 for(a=0。 } } /*********************over***********************/ /***************DS1302 有關子函數(shù) ********************/ void write_byte(uchar dat)//寫一個字節(jié) { ACC=dat。a) { IO=ACC0。 } } uchar read_byte()//讀一個字節(jié) { RST=1。 SCLK=1。 } void write_1302(uchar add,uchar dat)//向 1302 芯片寫函數(shù),指定寫入地址,數(shù)據(jù) { RST=0。 write_byte(dat)。 RST=0。 temp=read_byte()。 } uchar BCD_Decimal(uchar bcd)//BCD 碼轉十進制函數(shù),輸入 BCD,返回十進制 { uchar Decimal。 } void ds1302_init() //1302 芯片初始化子函數(shù) (20210612,09:45:05) { RST=0。 //向 DS1302 內(nèi)寫秒寄存器 80H 寫入初始秒數(shù)據(jù) 05 //write_1302(0x82,0x45)。 //向 DS1302 內(nèi)寫月份寄存器 88H 寫入初始月份數(shù)據(jù) 06 write_1302(0x8c,0x12)。//取得個位數(shù)字 sw=dat/10。//數(shù)字 +30 得到該數(shù)字的 LCD1602 顯示碼 } // //年月日顯示子函數(shù) void write_nyr(uchar add,uchar dat)//向 LCD 寫年月日,有顯示位置數(shù)、顯示數(shù)據(jù),兩個參數(shù) { uchar gw,sw。//設定顯示位置為第一個位置 +add write_1602dat(0x30+sw)。 while(!key1)。//關閉定時器 //TR1=0。//秒數(shù)據(jù)寫入 DS1302 write_1302(0x8e,0x00)。 case 2: write_1602(er+6)。//按動 3 次, shi write_1602(0x0f)。 case 5: write_1602(yh+0x07)。 case 7: write_1602(0x0c)。 write_1302(0x80,0x00|temp)。再按以下鍵才有效(按鍵次數(shù)不等于零) { if(key2==0) //上調鍵 { delay(10)。//設置鍵按動 1 次,調秒 if(miao==60) miao=0。 //允許寫,禁止寫保護 write_1302(0x80,temp)。 case 2:fen++。//十進制轉換成 DS1302 要求的 DCB 碼 write_1302(0x8e,0x00)。 break。//令 LCD 在正確的位置顯示 加 設定好的小時數(shù)據(jù) temp=(shi)/10*16+(shi)%10。//打開寫保護 write_1602(er+3)。 write_nyr(9,ri)。//向 DS1302 內(nèi)寫日期寄存器寫入調整后的數(shù)據(jù) BCD 碼 write_1302(0x8e,0x80)。 if(yue==13) yue=1。//允許寫,禁止寫保護 write_1302(0x88,temp)。 case 6:nian++。//十進制轉換成 DS1302 要求的 DCB 碼 write_1302(0x8e,0x00)。 break。//調延時,消抖動 if(key3==0) { delay(20)。//秒數(shù)據(jù)減到 1 時自動變成 59 write_sfm(0x08,miao)。 //向 DS1302內(nèi)寫秒寄存器寫入調整后的秒數(shù)據(jù) BCD碼 write_1302(0x8e,0x80)。 if(fen==1) fen=59。//允許寫,禁止寫保護 write_1302(0x82,temp)。 case 3:shi。//十進制轉換成 DS1302 要求的 DCB 碼 write_1302(0x8e,0x00)。 break。 temp=(ri)/10*16+(ri)%10。//打開寫保護 write_1602(yh+10)。 write_nyr(6,yue)。//向 DS1302 內(nèi)寫月份寄存器寫入調整后的數(shù)據(jù) BCD 碼 write_1302(0x8e,0x80)。 if(nian==1) nian=99。//允許寫,禁止寫保護 write_1302(0x8c,temp)。 } } } } } // void init() //定時器、計數(shù)器設置函數(shù) { TMOD=0x11。 //系統(tǒng)允許有開放的中斷 ET0=1。 //調用 DS1302 時鐘的初始化子函數(shù) init()。 fen = BCD_Decimal(read_1302(0x83))。 nian=BCD_Decimal(read_1302(0x8d))。//小時,從第二行第 2 個字符后開始顯示 //顯示日、月、年數(shù)據(jù): write_nyr(9,
點擊復制文檔內(nèi)容
畢業(yè)設計相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1