第一篇:DXP 2004 第九章單片機綜合實驗板的制作
目錄
一、新建工程...................................................................................................................................2
二、建立集成元件庫.......................................................................................................................3
三、設計電路原理圖.......................................................................................................................9
四、ERC檢查.................................................................................................................................13
五、原理圖報表.............................................................................................................................13
六、規劃電路板.............................................................................................................................14
七、導入網絡表和元件封裝.........................................................................................................17
八、手工布局.................................................................................................................................17
九、設置網絡類.............................................................................................................................18
十、設置布線規則.........................................................................................................................19
十一、自動布線、手動調整.........................................................................................................21
十二、DRC設計規劃檢查.............................................................................................................22
十三、3D效果圖...........................................................................................................................23
十四、心得體會.............................................................................................................................24
一、新建工程
點擊【File】→【New】→【Project】→【PCB Project】,由此創建一個新的PCB項目,執行菜單命令【File】→【Save Project】將項目更名為“單片機基礎綜合實驗板.PrjPCB”并保存在指定文件夾下。
圖1 創建項目
圖2 保存項目
圖3 放置文件
二、建立集成元件庫
(1)建立集成元件庫項目
1)在Protel DXP 2004 設計系統的主界面上執行菜單命令【File】→【New】→【Project】→【Integrated Library】,由此創建一個新的集成元件庫項目。
圖4 創建集成元件庫項目 2)在該集成元件庫項目下添加一個新的元件原理圖文件和一個新的PCB元件封裝庫文件。在該集成項目上單擊鼠標右鍵選擇【Add New to Project】→【Schematic Library】【/PCB Library】,并保存,完成的工作面板如圖6所示。
圖5 創建元件庫和封裝文件
圖6 【Project】工作面板
(2)制作原理圖元件STC12C5A60S2、HD7279、LG5641AH、PL2303、DS18B20和USB口。1)單擊【Project】工作面板中的“單片機基礎綜合實驗板.SchLib”,切換到元件原理圖庫編輯界面下,系統將自動彈出【SCH Library】工作面板,并且存在一個一個默認名為”COMPONENT_1“的元件。
圖7 元件原理圖庫工作界面
2)雙擊默認元件,對其屬性進行編輯,編輯界面如圖8。
圖8 編輯COMPONENT_1屬性
3)單擊【SCH Library】工作面板上的Add鍵,可以添加一個新的自定義元件,如圖9。
圖9 自定義元件的添加
4)繪制所需元件。
(a)元件STC12C5A60S2
(b)元件HD7279
(c)元件LG5641AH
(d)元件DS18B20(e)元件PL2303
(f)USB接口
圖10 繪制的元件
(3)制作元件封裝
為6個自定義元件中STC12C5A60S2、LG5641AH兩個器件需要繪制相應的元件封裝。1)單擊【Project】工作面板中的”單片機基礎綜合實驗板.PcbLib”,切換到PCB元件封裝庫編輯器界面下,系統將自動彈出【PCB Library】工作面板,并且存在一個一個默認名為”PCBCOMPONENT_1“的元件,如圖11。
圖11 【PCB Library】工作面板
2)在PCB工作面板的空白區域單擊鼠標右鍵,選擇[New Blank Component]選項,再建一個元件封裝如圖12,然后對兩個元件封裝進行編輯。
圖12 再建一個元件封裝
3)完成后的STC12C5A60S2元件封裝PLCC44zuo如圖13所示。4)完成后的LG5641AH元件封裝LEDDIP-12如圖14所示。
圖13元件封裝STC12C5A60S2 圖14元件封裝LG5641AH(4)在元件庫中找封裝
1)雙擊所需編輯元件,點擊Add添加元件封裝,如圖15所示。
圖15 2)點擊【Browse】,彈出的表格中默認的是自己制作的封裝,如果想要其他封裝,可以點擊【find】在庫中尋找自己所需的封裝。
圖16
三、設計電路原理圖
為了本實驗的PCB板的制作的方便,我將所有元器件全部集中在一張原理圖中,下面我將把整張電路圖分成10個小的電路圖分別展示,最后將整張電路圖展示。
(1)由于將所有部分集中在一張圖紙中,所以在繪制原理圖開始前,我們需要對我們原本的圖紙進行設置,將其換成A3大小。
在系統主界面上執行【Design】→【Document Options】,更改圖紙屬性。
圖17 選擇【Document Options】
圖18編輯圖紙屬性(2)根據所給電路繪制原理圖
1)完成后的MCU電路如圖19所示。
圖19 MCU電路原理圖
2)完成后的時鐘電路如圖20所示。
圖20時鐘電路原理圖
3)完成后的電源接口和復位電路如圖21所示。
圖21電源接口和復位電路原理圖 4)完成后的外擴RAM電路如圖22所示。
圖22外擴RAM電路原理圖
5)完成后的DAC電路如圖23所示。
圖23 DAC電路原理圖
6)完成后的232電路如圖24所示。
圖24 232電路原理圖
7)完成后的溫度傳感器電路如圖25所示。
圖25溫度傳感器電路原理圖 8)完成后的流水燈電路如圖26所示。
圖26流水燈電路電路原理圖
9)完成后的鍵盤數碼顯示電路如圖27所示。
圖27鍵盤數碼顯示電路電路圖
10)完成后的USB電路如圖28所示。
圖28 USB電路原理圖(3)將這10個部分全部整理在一張原理圖,并根據實際情況布局。
圖29單片機基礎綜合實驗板原理圖
四、ERC檢查
執行菜單命令【Project】→【Compile PCB Project】進行電氣規格檢查如圖28所示,如果有錯誤將會彈出一個【Message】的對話框,此時需要根據系統所提示的信息進行修改,直到符合設計要求為止。
圖30電氣規格檢查
五、原理圖報表
完成原理圖的設計操作后,還要根據設計的需要輸出元件報表已經網絡表等文件。1)執行菜單命令【Report】→【Bill of Materials】,生成元件報表,單擊【Report】按鈕保存該元件報表。
2)選擇菜單命令【Design】→【Netlist For Project】→【Protel】,系統將在該工程項目下生成一個與該工程文件同名的網絡表文件。
圖31生成網絡報表
六、規劃電路板
1)點擊軟件左下角Files界面,選擇PCB板向導。
圖32 2)設置PCB板的大小
圖33 3)將電源層設置為0。
圖34 4)將PCB板設置成過孔式單軌道。
圖35 5)點擊向導完成PCB板的設置
圖36利用向導制作的PCB圖
七、導入網絡表和元件封裝
1)執行命令【Design】→【Import Changes From…】后,會彈出如圖37所示的【Engineering Change Order】對話框。
圖37【Engineering Change Order】對話框
2)在該對話框中單擊
功能按鈕檢查原理圖中的網絡和元件封裝是否正確。
功能按鈕就可以將網絡和元件封裝加3)如果2)檢查沒有錯誤,那么單擊載到PCB文件中,從而實現了從原理圖向PCB的更新。4)單擊按鈕關閉【Engineering Change Order】對話框,這時網絡和元件封裝已經加載到PCB文件中了,如圖38所示。
圖38 導入網絡表和元件封裝
八、手工布局
按照之前布置的原理圖模塊對加載到PCB的元件進行布局,如圖39所示。
圖39 對PCB板進行手工布局
九、設置網絡類
為了在自動布線的時候對同一個網絡類中的所以對象一起操作,因此在布線之前可以對板子上的所有網絡進行分類。
1)打開對象類對話框。在PCB編輯器的主菜單上執行菜單命令【Design】→【Classes】,即可進入對象類對話框,如圖40所示。
圖40生成網絡類選項
2)建立一個新的網絡類,并更名為”power”,如圖40所示。3)向新建的網絡類添加成員。
圖41設置后的網絡類列表
4)關閉對話框,完成設置。
十、設置布線規則
(1)【Electrial】規則的設置
選擇【Electrial】規則下的【Clearance】規則,將【Constraints】中的【Minimum Clearance】設置為10mil。
圖42安全間距設置
(2)【Routing】規則的設置
首先添加一個新的【Width】規則。在【Width】規則上單擊鼠標右鍵,從彈出的快捷菜單中選擇【New Rule】,并更名為“power”。
修改線寬和優先順序。
圖43導線寬度設置
圖44【Width】規則中優先順序設置
(3)【Manufacturing】規則的設置
由于232電路中元件封裝過大,超過系統默認,因此有必要對【Manufacturing】規則下【HoleSize】更改允許孔徑的范圍。
圖45孔尺寸的設置
十一、自動布線、手動調整
執行菜單命令【Auto Route】→【All】,系統將彈出自動布線器對話框,單擊按鈕,設置布線方向。
圖46布線策略的選擇
圖47編輯方向對話框
圖48 PCB布線圖
十二、DRC設計規劃檢查
完成PCB的布線操作后,通常需要對PCB進行設計規則檢查(DRC)執行菜單命令【Tools】→【Design Rule Check…】
圖49DRC報告
十三、3D效果圖
執行PCB編輯器中【View】→【Board in 3D】命令,查看該PCB的效果圖,結果如圖50。
圖50 PCB的3D效果圖
十四、心得體會
通過本周對Protel DXP的學習,讓我學會了一些基本電路圖繪制和PCB的制作。剛接觸Protel DXP軟件時,對其操作什么都不會,但在老師的講解和操作指導下,以及自己的努力下。慢慢會做了,開始會建原理圖文件和PCB文件,但都不會查找元件和繪制元件。
剛開始做Protel DXP時,最難的是對元件的查找和對元件庫的管理和添加,還有PCB封裝的繪制。的確對于不懂 Protel DXP的我們,實在很難找到成功的感覺,往往錯誤百出,到處都存在問題,每一個詳細的步驟都要認真記下,不然后期都不會操作。
隨著對Protel DXP的了解,我也慢慢地開始有感覺會做了。開始學習原理圖元件的繪制了,在做原理圖繪制之前要打開原理圖繪制界面,在繪制原理圖元件時要注意元件一般的尺寸大小適中,還有元件管腳電氣屬性的設置和消箭頭的一些簡單的方法。原理圖的繪制完成后便是修改文件名稱和添加元件庫了。只要對這些基本方法都掌握后,就可以繪制一些基本的原理圖了,繪制圖形時一定要注意元件的擺放,以及原理圖要求美觀,清晰等等。
PCB的封裝,是做Protel DXP很難的一步,制作圖時都要以元器件實物的型號和大小為依據,實物元件的種類繁多,以種類的不同大小又不一,所以要以對待不同的PCB封裝是不一樣的。PBC封裝尺寸的大小主要在管腳的距離上,管腳距離的大小決定了實物元件能否安裝,要從原理圖生成PCB就要保證每個元件都有對應的封裝,不僅大小要對應符號也要對應。在這些步驟都完成后就可以從原理圖生成PCB了,在從原理圖生成PCB時要保證每個元件都是正確的,確保每個元件都被導入。
PCB生成后最主要的工作就是對元件的布局和布線了,PCB元件的布局的要求是功能元件要盡量在一起,主要功能集成塊要放在電路板中央,重元件要有支架,開關和發熱元件靠邊放,高頻部分布線要盡量短,最后元件擺放要整齊、美觀。元件布局好后就是布線了,布線可以是單層,雙層和多層的。布線后盡量不要存在飛線,布局好后就是布線了,布線可以是單層,雙層和多層的。布線后盡量不要存在飛線,若布線存在極少飛線,依實際情況可不從新布線而手動布線。布線完后添加淚滴和敷銅,PCB就制作完成了,可以進行3D仿真觀察。
Protel 的學習注重實際練習,練習多了便有了經驗,經驗積累多了便有了感覺,有了感覺便學會了Protel,所以在以后的學習中我定會從實際出發,加強練習。
第二篇:萬年歷單片機綜合實驗
綜合實驗報告
實驗題目: 萬年歷
學生班級: 學生姓名: 學生學號: 指導教師: 實驗時間:
摘要
本設計是電子萬年歷。具備三個功能:能顯示:年、月、日、時、分、秒及星期信息,并具有可調整日期和時間功能。
我選用的是單片機STC89C52來實現電子萬年歷的功能。該電子萬年歷能夠成功實現時鐘運行,調整,顯示年月日時分秒等信息。
該電子萬年歷使用12MHZ晶振與單片機STC89C52相連接,通過軟件編程的方法實現了以24小時為一個周期,同時顯示小時、分鐘和秒的要求。利用單片機定時器及計數器產生定時效果通過編程形成數字鐘效果,再利用數碼管動態掃描顯示單片機內部處理的數據。同時通過端口讀入當前外部控制狀態來改變程序的不同狀態,實現不同功能。
電子萬年歷設計與制作可采用數字電路實現,也可以采用單片機來完成。若用數字電路完成,所設計的電路相當復雜,大概需要十幾片數字集成塊,其功能也主要依賴于數字電路的各功能模塊的組合來實現,焊接的過程比較復雜,成本也非常高。若用單片機來設計制作完成,由于其功能的實現主要通過軟件編程來完成,這樣一來就降低了硬件電路的復雜性,從而使得其成本降低,更適合我們大學生自主研發。所以在該設計與制作中我選用了單片機STC89C52,它是低功耗、高性能的CMOS型8位單片機。片內帶有4KB的Flash存儲器,且允許在系統內改寫或用編程器編程。另外, 單片機STC89C52的指令系統和引腳與8051完全兼容,片內有128B 的RAM、32條I/O口線、2個16位定時計數器、5個中斷源、一個全雙工串行口等。
因此,采用單片機STC89C52原理制作的電子萬年歷,不僅僅在原理上能夠成功實現計時等功能,也更經濟,更適用,更符合我們實際生活的需要,對我們大學生來說也更加有用。
關鍵詞:STC89S52,DS1302,LCD,PROTEUS
目錄
一、實驗要求:...............................................................................................................................3
1.1基本要求:.........................................................................................................................3 1.2拓展要求:.........................................................................................................................3
二、方案論證:...............................................................................................................................3
2.1.顯示部分:...........................................................................................................................3 2.2.數字時鐘:.........................................................................................................................3
三、總體方案:...............................................................................................................................4
四、系統硬件設計:.......................................................................................................................4
4.1.時間設置模塊:...............................................................................................................4 4.2.時鐘模塊:...........................................................................................................................4 4.3.整點報時電路.....................................................................................................................5 4.4.LCD液晶顯示模塊:.......................................................................................................5
五、整體電路:...............................................................................................................................6
5.1.電路.....................................................................................................................................6
六、數字時鐘使用說明:...............................................................................................................7
七、心得體會:...............................................................................................................................7
八、程序代碼:...............................................................................................................................7
一、實驗要求:
1.1基本要求:
1、能動態顯示年、月、日、星期、小時、分鐘、秒。
2、可用鍵盤進行日期時間的修改。1.2拓展要求:
3、具有鬧鐘功能:可設定鬧鐘時間,在時間到達后,發出報警時間,持續5秒。
二、方案論證:
2.1.顯示部分: 顯示部分是本次設計的重要部分,一般有以下兩種方案: 方案一:
采用LED顯示,分靜態顯示和動態顯示。對于靜態顯示方式,所需的譯碼驅動裝置很多,引線多而復雜,且可靠性也較低。而對于動態顯示方式,雖可以避免靜態顯示的問題,但設計上如果處理不當,易造成亮度低,有閃爍等問題。方案二:
采用LCD顯示。LCD液晶顯示具有豐富多樣性、靈活性、電路簡單、易于控制而且功耗小等優點,對于信息量多的系統,是比較適合的。
鑒于上述原因,我們采用方案二。2.2.數字時鐘:
數字時鐘是本設計的核心的部分。根據需要可采用以下兩種方案實現: 方案一:
方案完全用軟件實現數字時鐘。原理為:在單片機內部存儲器設三個字節分別存放時鐘的時、分、秒信息。利用定時器與軟件結合實現1秒定時中斷,每產生一次中斷,存儲器內相應的秒值加1;若秒值達到60,則將其清零,并將相應的分字節值加1;若分值達到60,則清零分字節,并將時字節值加1;若時值達到24,則將時字節清零。該方案具有硬件電路簡單的特點,但當單片機不上電,程序將不執行。而且由于每次執行程序時,定時器都要重新賦初值,所以該時鐘精度不高。
方案二:
方案采用Dallas公司的專用時鐘芯片DS1302。該芯片內部采用石英晶體振蕩器,其芯片精度不大于10ms/年,且具有完備的時鐘鬧鐘功能,因此,可直接對其以用于顯示或設置,使得軟件編程相對簡單。為保證時鐘在電網電壓不足或突然掉電等突發情況下仍能正常工作,芯片內部包含鋰電池。當電網電壓不足或突然掉電時,可使系統自動轉換到內部鋰電池供電系統。而且即使系統不上電,程序不執行時,鋰電池也能保證芯片的正常運行,以備隨 時提供正確的時間。
基于時鐘芯片的上述優點,本設計采用方案二完成數字時鐘的功能。
三、總體方案:
本設計采用STC89C52RC單片機作為本系統的控制模塊。單片機可把由DS1302、LCD液晶顯示模塊中的數據利用軟件來進行處理,從而把數據傳輸到顯示模塊,實現日歷和修改的顯示。以LCD液晶顯示器為顯示模塊,把單片機傳來的數據顯示出來,并且顯示多樣化。在顯示電路中,主要靠按鍵來實現日期的修改和選擇。
四、系統硬件設計:
4.1.時間設置模塊:
時間設置模塊通過四個按鍵實現萬年歷的時間調整設置。KEY1鍵進入時間設置模式,KEY2鍵實現設置內容選擇,KEY3鍵實現設置內容加1,KEY4鍵實現設置內容減1。
圖1.時間設置模塊
4.2.時鐘模塊: 時鐘模塊采用DS1302芯片,DS1302是DALLAS公司推出的涓流充電時鐘芯片內含有一個實時時鐘/日歷和31字節靜態RAM通過簡單的串行接口與單片機進行通信實時時鐘/日歷電路提供秒分時日日期月年的信息每月的天數和閏年的天數可自動調整時鐘操作可通過 4 AM/PM指示決定采用24或12小時格式DS1302與單片機之間能簡單地采用同步串行的方式進行通信僅需用到三個口線:
RST復位、I/O數據線、SCLK串行時鐘。時鐘/RAM的讀/寫數據以一個字節或多達31個字節的字符組方式通信。DS1302工作時功耗很低,保持數據和時鐘信息時功率小于1mW,其接線電路如圖2所示:
圖2.時鐘模塊
4.3.整點報時電路
整點報時電路由一個NPN三極管和蜂鳴器組成,當時間走到整點時分,會每間隔一秒發出一次報時,連響五次。
圖3.報時電路
4.4.LCD液晶顯示模塊: LCD液晶顯示模塊采用LCD1602型號,具有很低的功耗,正常工作時電流僅2.0mA/5.0V。通過編程實現自動關閉屏幕能夠更有效的降低功耗。LCD1602分兩行顯示,每行可顯示多達16個字符。LCD1602液晶模塊內部的字符發生存儲器(CGROM)已經存儲了160個不同的點陣字符圖形,通過內部指令可實現對其顯示多樣的控制,并且還能利用空余的空間自定義字符。其接線如圖4所示:
圖4.LCD液晶顯示
五、整體電路:
5.1.電路
圖5.整體電路
六、數字時鐘使用說明:
調整時間設定:在時間顯示界面中按KEY1鍵后,進入時間調整,通過KEY2選擇需要修改的或設定的時間。按KEY2鍵對應內容向右移動,KEY3鍵加1,KEY4鍵減1,設置完畢,自動退出設置功能。
七、心得體會:
通過這一周的課程設計,加深了我對于單片機和數字電路的認識,通過查閱大量的資料,我獲得了以前在課堂上學不到的東西,我想這對于以后的畢業設計,或者工作也好,都是很有幫助的。在設計電路中,往往是先仿真后連接實物圖,但有時候仿真和電路連接并不是完全一致的,例如仿真的連接示意圖中,往往沒有接高電平的16腳或14腳以及接低電平的7腳或8腳,因此在實際的電路連接中往往容易遺漏。在設計的過程中遇到了很多問題,本來自己的單片機基礎就比較弱,又是第一次做這樣的設計,難免會遇到過各種各樣的問題。同時在設計的過程中發現了自己的不足之處,比如對以前所學過的知識理解得不夠深刻,掌握得不夠牢固,對單片機匯編語言掌握得不好。此次的電子萬年歷設計重在于仿真和接線,雖然能把電路圖接出來,并能正常顯示,但對于電路本身的原理并不是十分熟悉.總的來說,通過這次的設計實驗更進一步地增強了實驗的動手能力。
八、程序代碼:
#include “reg51.h” #include “intrins.h” typedef unsigned char uint8;typedef unsigned int uint16;
#define LED_Y P2 #define LCD_DATA 1 #define LCD_COMMAND 0 #define WORDNUU 11
sbit ALARM=P2^0;sbit LCD_RS=P1^5;sbit LCD_RW=P1^6;sbit LCD_EN=P1^7;sbit RTC_SDA=P3^6;sbit RTC_SCL=P3^5;sbit RTC_RST=P3^4;sbit KEY1=P1^0;sbit KEY2=P1^1;sbit KEY3=P1^2;sbit KEY4=P1^3;
#define LCD_PORT P0 uint8 LCD_NO;uint16 i1,i2;uint8 bdata AA;sbit AA7 = AA^7;#define READ_SECOND #define WRITE_SECOND #define READ_MINE
#define WRITE_MINE
#define READ_HOUR
#define WRITE_HOUR #define READ_DAY #define WRITE_DAY #define READ_MONTH #define WRITE_MONTH #define READ_WEEK #define WRITE_WEEK #define READ_YEAR
#define WRITE_YEAR
uint8 SET;uint8 PRE_HOUR;uint8 DATE[16];uint8 TIME[16];
0x81 0x80 0x83 0x82 0x85 0x84 0x87 0x86 0x89 0x88 0x8b 0x8a 0x8d 0x8c 8
void delaynus(uint8 n){
uint8 i;
for(i=0;i } void RTC_Write(uint8 dat){ uint8 i; RTC_SCL=0; //拉低SCLK,為脈沖上升沿寫入數據做好準備 delaynus(2); //稍微等待,使硬件做好準備 for(i=0;i<8;i++) //連續寫8個二進制位數據 { RTC_SDA=dat&0x01; //取出dat的第0位數據寫入1302 delaynus(2); //稍微等待,使硬件做好準備 RTC_SCL=1; //上升沿寫入數據 delaynus(2); //稍微等待,使硬件做好準備 RTC_SCL=0; //重新拉低SCLK,形成脈沖 dat>>=1; //將dat的各數據位右移1位,準備寫入下一個數據位 } } uint8 RTC_Read(){ uint8 i,dat; delaynus(2); //稍微等待,使硬件做好準備 for(i=0;i<8;i++) //連續讀8個二進制位數據 { dat>>=1; //將dat的各數據位右移1位,因為先讀出的是字節的最低位 if(RTC_SDA==1) //如果讀出的數據是1 dat|=0x80; //將1取出,寫在dat的最高位 RTC_SCL=1; //將SCLK置于高電平,為下降沿讀出 delaynus(2);//稍微等待 RTC_SCL=0; //拉低SCLK,形成脈沖下降沿 delaynus(2);//稍微等待 } return dat; //將讀出的數據返回 } void RTC_Write_Byte(uint8 addr,uint8 dat){ RTC_RST=0; //禁止數據傳遞 RTC_SCL=0; //確保寫數居前SCLK被拉低 RTC_RST=1; //啟動數據傳輸 delaynus(2); //稍微等待,使硬件做好準備 RTC_Write(addr); //寫入命令字 RTC_Write(dat); //寫數據 RTC_SCL=1; //將時鐘電平置于已知狀態 RTC_RST=0; //禁止數據傳遞 } uint8 RTC_Read_Byte(uint8 addr){ uint8 dat; RTC_RST=0; //拉低RST RTC_SCL=0; //確保寫數居前SCLK被拉低 RTC_RST=1; //啟動數據傳輸 RTC_Write(addr); //寫入命令字 dat=RTC_Read(); //讀出數據 RTC_SCL=1; //將時鐘電平置于已知狀態 RTC_RST=0; //禁止數據傳遞 return dat; //將讀出的數據返回 } typedef struct __SYSTEMTIME__ { uint8 Second;uint8 Mine;uint8 Hour;uint8 Day;uint8 Month;uint8 Week;uint8 Year;}SYSTEMTIME; static SYSTEMTIME TIMETYPE; void CurrentTime(SYSTEMTIME *dat){ uint8 TimeValue; TimeValue=RTC_Read_Byte(READ_SECOND);dat->Second=(((TimeValue&0x70)>>4)*10)+(TimeValue&0x0f); TimeValue=RTC_Read_Byte(READ_MINE);dat->Mine=(((TimeValue&0x70)>>4)*10)+(TimeValue&0x0f); TimeValue=RTC_Read_Byte(READ_HOUR);dat->Hour=(((TimeValue&0x70)>>4)*10)+(TimeValue&0x0f); TimeValue=RTC_Read_Byte(READ_DAY);dat->Day=(((TimeValue&0x70)>>4)*10)+(TimeValue&0x0f); TimeValue=RTC_Read_Byte(READ_MONTH);dat->Month=(((TimeValue&0x70)>>4)*10)+(TimeValue&0x0f); TimeValue=RTC_Read_Byte(READ_WEEK);dat->Week=(TimeValue&0x0f); TimeValue=RTC_Read_Byte(READ_YEAR);dat->Year=(((TimeValue&0x70)>>4)*10)+(TimeValue&0x0f);} bit LCD_BUSY(){ bit result;LCD_RS=0;LCD_RW=1;LCD_EN=1;_nop_();_nop_();result=(bit)(LCD_PORT&0x80);LCD_EN=0;return result;} void LCD_Write(uint8 dat,uint8 type) //LCD寫字符 { uint8 i;while((LCD_BUSY()&&i<100)){i++;} if(i>99)LCD_NO=1;LCD_RS=type;LCD_RW=0;LCD_EN=0;_nop_();_nop_();_nop_();_nop_();LCD_PORT=dat;_nop_();_nop_();_nop_();_nop_();LCD_EN=1;_nop_();_nop_();_nop_();_nop_();LCD_EN=0;} void LCD_INITIALIZE() //LCD初始化 { LCD_Write(0x06,LCD_COMMAND);LCD_Write(0x38,LCD_COMMAND);LCD_Write(0x0c,LCD_COMMAND);LCD_Write(0x01,LCD_COMMAND);} void LCD_Prints(uint8 *dat,uint8 add) //LCD打印函數 { LCD_Write(add|0x80,LCD_COMMAND);while(*dat!='
主站蜘蛛池模板:
免费精品国产自产拍在线观看图片|
亚洲色偷偷偷网站色偷一区|
久久久欧美精品激情|
欧美乱大交xxxxx潮喷|
岳好紧好湿夹太紧了好爽矜持|
热re99久久精品国99热|
九色精品国产成人综合网站|
蜜桃视频成人专区在线观看|
免费观看av|
日韩中文字幕在线一区二区三区|
久久亚洲国产成人影院|
欧洲无码一区二区三区在线观看|
18女下面流水不遮图|
伊人久久大香线蕉aⅴ色|
色欲av伊人久久大香线蕉影院|
国产精品久久精品第一页|
久久精品第九区免费观看|
永久免费看mv网站入口亚洲|
欧美亚洲日本高清不卡|
国产精品刮毛|
97碰碰碰免费公开在线视频|
老太婆性杂交视频|
亚洲乱码av中文一区二区软件|
婷婷五月综合缴情在线视频|
久久99国产亚洲高清观看首页|
亚洲熟妇丰满xxxxx国语|
果冻国产精品麻豆成人av电影|
国产成人综合亚洲亚洲国产第一页|
欧美日韩午夜群交多人轮换|
插我舔内射18免费视频|
2020每日更新国产精品视频|
国产一区二区三区成人欧美日韩在线观看|
亚洲成熟丰满熟妇高潮xxxxx|
国内精品伊人久久久久影院麻豆|
青青青国产在线观看免费|
性做久久久久久久免费看|
亚洲国产长腿丝袜av天堂|
99riav国产精品视频|
狠狠色噜噜狠狠狠888777米奇|
国产新婚夫妇叫床声不断|
亚洲一区无码中文字幕|