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

正文內(nèi)容

基于單片機的萬年歷的設(shè)計(參考版)

2024-12-10 01:17本頁面
  

【正文】 WriteDs1302(0x8e,0x80)。 WriteDs1302(0x80,0x30)。 WriteDs1302(0x82,0x50)。 WriteDs1302(0x84,0x12)。 WriteDs1302(0x86,0x24)。 WriteDs1302(0x88,0x05)。 WriteDs1302(0x8a,0x02)。 WriteDs1302(0x8c,0x11)。 } void InitDS1302() { 38 WriteDs1302(0x8e,0x00)。 //禁止數(shù)據(jù)傳遞 DS1302_CLK=1。 //寫入命令字 temp=read_byte()。 DS1302_RST=1。 DS1302_RST=0。 } return temp0。 //將 SCLK 置于高電平,為下降沿讀出做準(zhǔn)備 DS1302_CLK=0。i) { if(DS1302_IO) temp0=temp0|0x80。 for(i=8。 //寫數(shù)據(jù) DS1302_RST=0。 WriteDs1302Byte(address)。 //確 保寫數(shù)居前 SCLK 被拉低 DS1302_RST=1。 } } 37 /*********************************************** 根據(jù)命令字,向 1302 寫一個字節(jié)數(shù)據(jù) 入口參數(shù): address,儲存命令字; dat,儲存待寫的數(shù)據(jù) ***********************************************/ void WriteDs1302( unsigned char address,unsigned char dat ) { DS1302_RST=0。 //拉低 SCLK,為脈沖上升沿寫入數(shù)據(jù)做好準(zhǔn)備 DS1302_CLK=1。0x01。i0。 } /********************************************* 向 1302 寫一個字節(jié)數(shù)據(jù) *********************************************/ void WriteDs1302Byte(unsigned char temp) { unsigned char i。 //溫度轉(zhuǎn)換常數(shù) temp=tt*10+。 temp=temp|a。 temp=b。 a=TempRead()。 //跳過 ROM 匹配 TempWriteByte(0xbe)。 DS18B20Init()。 // 跳過 ROM 匹配 TempWriteByte(0x44)。 DS18B20Init()。 } } /************DS18B20 讀取溫度函數(shù) **************/ int GetTemp() { float tt。 dat=dat1。 36 delayb(8)。 DS18B20=datamp。i8。 delayb(2)。 } /***************DS18B20 寫字節(jié)函數(shù) ***************/ void TempWriteByte(unsigned char dat) { unsigned int i。 delayb(2)。 delayb(4)。 DS18B20=1。i++) { DS18B20=0。 for(i=0。 DS18B20=1。 return x。 x=DS18B20。 DS18B20=1。 DS18B20=0。 DS18B20=1。 } } void delayb(unsigned int count) { while(count)。i125。 //按鍵功能:減 void delay(unsigned int a) //延時 1MS/次 { unsigned char i。 //按鍵功能:確認 sbit PlusKey=P3^6。 //生肖 sbit SetKey=P3^4。 //位定義 DS1302 芯片的接口,復(fù)位端口 sbit DS18B20=P3^3。 //位定義 DS1302 芯片的接口,時鐘輸出端口 sbit DS1302_IO=P1^1。 //H:并口方式 L:串口方式 sbit rst=P1^3。 sbit LCD_E=P1^5。 sbit LCD_RS=P1^7。 bit cenbit=1。 unsigned char temp0。 unsigned char next。謝謝! 33 附錄一 萬年歷硬件電路原理圖: 34 附錄二 源程序: include include define Busy 0x80 define LCD_Data P2 unsigned char sec,min,hour,day,month,year,cen,week。其次我要感謝在大學(xué)四年時間里教我專業(yè)課和幫助過我的所有老師,沒有老師們教的專業(yè)知識,我想完成這設(shè)計是不可能的。從選題到設(shè)計完成王老師都是嚴格要求,幫助我解決各種難題。制作 本設(shè)計 整個過程還算順利,沒出現(xiàn)太大的問題, 不足的地方是沒有整點報時和鬧鈴的功能。 在進行程序調(diào)試時,一些大問題比較容易找出并改正,而一些小的問題就比較麻煩,因此一定要注意細小的問題。在本設(shè)計中,并沒有現(xiàn)成的電路板,而是用萬能板自己搭線組裝。 硬件的線路設(shè)計和元件組裝都花了較長的時間,雖然以前也焊接過一些東西,但不能說那就是有經(jīng) 驗。圖 是調(diào)試好的結(jié)果。根據(jù) 時鐘芯片寫時序操作可以知道,數(shù)據(jù)或指令寫入時是上升沿有效, SCLK 必須先拉低,再拉高才能形成上升沿。 DS1302_CLK=0。 //拉低 SCLK,形成脈沖 temp=1。 //取出 temp 的第 0 位數(shù)據(jù)寫入 1302 DS1302_CLK=1。i) { DS1302_IO=tempamp。 for (i=8。日期和時間為什么沒有按要求正確顯示,還出現(xiàn)亂碼,出現(xiàn)這樣的結(jié)果,我想應(yīng)該是時鐘數(shù)據(jù)沒能夠正確的寫入時鐘芯片,結(jié)合時鐘芯片工作的寫時序,可以發(fā)現(xiàn)問題。程序里我寫入的日期是 2021 年 5 月 24 日,時間是 12: 50: 30,圖 并沒有正確顯示,溫度也沒有顯示。萬年歷用到的各模塊組裝完成后 27 的實物圖如圖 所示。若在硬件沒問題時還不能按照設(shè)計要求正常顯示,就得從程序上入手了。 本設(shè)計是要實現(xiàn)萬年歷的功能,讓其內(nèi)容在液晶屏上顯示出來的。測試單片機各引腳是否正常,我是用點亮發(fā)光二極管進行測試,下載程序逐個驅(qū)動看發(fā)光二極管是否點亮,點亮 說明單片機引腳沒問題。每個模塊完成后要下載程序進行調(diào)試。 直接采用硬件調(diào)試難度不比先采用軟件調(diào)試的難度低,直接采用硬件進行調(diào)試一定要保證硬件是沒問題的,所以硬件焊接時一定要小心,盡量做到一次能完成,不然修改起來會很麻煩,元件也容易損壞。 26 4. 調(diào)試 在本設(shè)計中采用的是帶有中文字庫的的液晶顯示器,而 Proteus 仿真軟件里的庫里沒有帶中文字庫的液晶,功能也與帶中文字庫的有一定區(qū)別,所以在采用 Proteus 仿真軟件進行調(diào)試時出現(xiàn)了很多問題,比如不顯示或顯示亂碼等等。 字符顯示 RAM 在液晶模塊中的地址為 80H~9FH,字符顯示的 RAM 的地址與 32個字符顯示區(qū)域有著一一對應(yīng)的關(guān)系,其對應(yīng)關(guān)系如下表 。 (4) 讀 RAM(讀出 RAM 的值)功能:從內(nèi)部 RAM 讀取資料( DDRAM/CGRAM/TRAM/GDRAM)。 (3) 寫 RAM(寫資料到 RAM)功能:寫資料到內(nèi)部的 RAM。 (1) 清除顯示功能:清除顯示屏幕,把 DDRAM 位地址計數(shù)器調(diào)整為“00H”。 DB0DB7 表示數(shù)據(jù)口。 表 部分基本指令介紹 RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 清除顯示 L L L L L L L L L H 顯示狀態(tài) L L L L L L H D C B 寫 RAM H L D7 D6 D5 D4 D3 D2 D1 D0 讀 RAM H H D7 D6 D5 D4 D3 D2 D1 D0 讀忙狀態(tài) L H BF AC6 AC5 AC4 AC3 AC2 AC1 AC0 表中的 RS=H 表示 DB0DB7 為顯示數(shù)據(jù), RS=L 表示 DB0DB7 為顯示指令數(shù)據(jù)。 12864 液晶與單片機通信時,可以采用串行數(shù)據(jù)通信和并行數(shù)據(jù)通信,我這里將液晶的 DB0~DB7 引腳對應(yīng)的接上單片機的 ~ 引腳,因此 24 采用的是并行數(shù)據(jù)通信。 LCD 的讀時序: 讀時序與寫時序差不多,區(qū)別是 R/W 在讀操作時是拉高的,與寫操作相反,其它都一樣。 E 引腳為使能信號, E=H→L 時,配合 R/W 進行寫數(shù)據(jù)或指令; E=H 時,配合 R/W 進行讀數(shù)據(jù)或讀指令。 12864液晶顯示程序設(shè)計 下面先看一下 12864 液晶并行連接的讀寫時序: 23 LCD 的寫時序: RS 引腳有 H(高) L(低)兩種狀態(tài), RS=H 時,單片機將進行寫數(shù)據(jù)操作; RS=L 時,單片機將進行寫指令操作。 return temp。 tt=temp*。 temp=8。 //數(shù)據(jù)讀出 b=TempRead()。 //發(fā)出讀溫度命令 delayb(200)。 //DS18B20 初始化 TempWriteByte(0xcc)。 //發(fā)出溫度轉(zhuǎn)換命令 delayb(100)。 //DS18B20 初始化 TempWriteByte(0xcc)。 unsigned char a,b。 DS18B20 工作流程圖如圖 所示。 DS18B20 溫度傳感器操作簡單,一個引腳就可以進行雙向傳輸。 //將時鐘電平置于已知狀態(tài) return temp。 //讀出數(shù)據(jù) DS1302_RST=0。 WriteDs1302Byte(address)。 DS1302_CLK=0。 } (2) 讀取數(shù)據(jù)程序: unsigned char ReadDs1302(unsigned char address) { unsigned char temp。 //拉低 SCLK,形成脈沖下降沿 temp0=temp01。 //將數(shù)據(jù)取出,寫在 temp0 的最高位 DS1302_CLK=1。i0。 程序?qū)崿F(xiàn)說明: (1) 讀字節(jié)程序: unsigned char read_byte() { 20 unsigned char i。 //寫數(shù)據(jù) DS1302_RST=0。 WriteDs1302Byte(address)。 //確保寫 數(shù)據(jù)前 SCLK 被拉低 DS1302_RST=1。 19 } } (2) 此程序為寫數(shù)據(jù)程序: void WriteDs1302( unsigned char address,unsigned char dat ) { DS1302_RST=0。 將 SCLK 置于低電平,為上升沿
點擊復(fù)制文檔內(nèi)容
研究報告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1