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

正文內(nèi)容

基于at89c51單片機(jī)的lcd電子時鐘設(shè)計(編輯修改稿)

2024-07-20 22:13 本頁面
 

【文章內(nèi)容簡介】 平)。 指令1:清顯示,指令碼01H,光標(biāo)復(fù)位到地址00H位置。 指令2:光標(biāo)復(fù)位,光標(biāo)返回到地址00H。 指令3:光標(biāo)和顯示模式設(shè)置 I/D:光標(biāo)移動方向,高電平右移,低電平左移。S:屏幕上所有文字是否左移或者右移。高電平表示有效,低電平則無效。 指令4:顯示開關(guān)控制。D:控制整體顯示的開與關(guān),高電平表示開顯示,低電平表示關(guān)顯示。C:控制光標(biāo)的開與關(guān),高電平表示有光標(biāo),低電平表示無光標(biāo)。 B:控制光標(biāo)是否閃爍,高電平閃爍,低電平不閃爍。 指令5:光標(biāo)或顯示移位 S/C:高電平時移動顯示的文字,低電平時移動光標(biāo)。 指令6:功能設(shè)置命令 DL:高電平時為4位總線,低電平時為8位總線。N:低電平時為單行顯示,高電平時雙行顯示。F:低電平時顯示5X7的點(diǎn)陣字符,高電平時顯示5x10的點(diǎn)陣字符(有些模塊是 DL:高電平時為8位總線,低電平時為4位總線)。 指令7:字符發(fā)生器RAM地址設(shè)置。 指令8:DDRAM地址設(shè)置。 指令9:讀出忙信號和光標(biāo)地址。BF為忙標(biāo)志位,高電平表示忙,此時模塊不能接收命令或者數(shù)據(jù),如果為低電平表示不忙,模塊就能接收相應(yīng)的命令或者數(shù)據(jù)。 指令10:寫數(shù)據(jù)。 指令11:讀數(shù)據(jù)。液晶顯示模塊是一個慢顯示器件,所以在執(zhí)行每條指令之前一定要確認(rèn)模塊的忙標(biāo)志位是不是為低電平,是低電平則表示不忙,否則此指令失效。要顯示字符時要先輸入顯示字符地址,也就是告訴模塊在哪里顯示字符。表29為 LCD1602的內(nèi)部顯示地址。表29 LCD1602的內(nèi)部顯示地址123141516第一行80H81H82H8DH8EH8FH第二行0C0H0C1H0C2H0CDH0CEH0CFH第3章 系統(tǒng)軟件電路設(shè)計 系統(tǒng)流程圖及源代碼設(shè)計 主程序流程圖設(shè)計液晶屏通信引腳定義DS1302通信引腳定義數(shù)據(jù)設(shè)定引腳定義開始引腳定義地址定義程序開始初始化液晶屏讀取DS1302程序數(shù)據(jù)分離送顯示緩存日歷顯示子程序數(shù)據(jù)存儲地址顯示數(shù)據(jù)緩沖地址初始化液晶屏幕顯示初始畫面清液晶屏幕顯示空白讀DS1302程序分離數(shù)據(jù)子程序?qū)懼噶畹揭壕磷x數(shù)據(jù)到液晶屏圖31 主程序流程圖 子程序流程圖設(shè)計 DS1302 定時器中斷子程序流程圖YYYYYYYNNNNNNNNY開始給定時器再次賦值判斷是否計滿18次秒加1,判斷是否等于60分加1,秒置0,判斷分是否等于60時加1,分置0,判斷時是否等于24日加1,時置0,判斷該年是否為閏年判斷日是否到月底月加1,日置1,判斷月是否等于12年加1,月置1,判斷年是否為100執(zhí)行年、月、日、時、分、秒的顯示結(jié)束圖32 DS1302中斷流程圖 程序主要實(shí)現(xiàn)對DS1302寫保護(hù)、充電,對年、月、日、時、分、秒等寄存器的讀寫操作。在讀寫操作子程序中都執(zhí)行了關(guān)中斷指令,因?yàn)樵诖型ㄐ艜r對時序要求比較高,而且在此是用I/O口軟件模擬串行時鐘脈沖,所以在通信過程中最好保證傳輸?shù)倪B續(xù)性,不要允許中斷,如圖32所示。 LCD1602 流程圖 程序主要實(shí)現(xiàn)對信息的顯示,包括年、月、日、時、分、秒等信息,在這里要注意它的讀寫控制指令。其流程圖如圖33所示。開始RW和E都置零設(shè)置點(diǎn)陣8位數(shù)據(jù)接口,兩行顯示開顯示,不顯示光標(biāo)地址指針加一,畫面不一定刷新,全部清零給地址,從第一行開始寫顯示第一行數(shù)據(jù)給第二行地址,顯示第二行數(shù)據(jù)結(jié)束 圖33 LCD1602初始化流程圖 子程序源代碼設(shè)計詳見附錄一 設(shè)計原理圖詳見附錄二附錄一/*****************************************************程序名稱:基于單片機(jī)和時鐘芯片DS1302的電子時鐘程序功能: 時鐘芯片采用DS1302 顯示采用液晶屏LCD1602***************************************************/ include //包含單片機(jī)寄存器的頭文件include //包含_nop_()函數(shù)定義的頭文件define uchar unsigned chardefine uint unsigned int/***********************************************************************以下是DS1302芯片的操作程序************************************************************************/uchar code digit[10]={0123456789}。 //定義字符數(shù)組顯示數(shù)字sbit DATA=P1^1。 //位定義1302芯片的接口,sbit RST=P1^2。 //位定義1302芯片的接口,sbit SCLK=P1^0。 //位定義1302芯片的接口,/*****************************************************函數(shù)功能:延時若干微秒入口參數(shù):n***************************************************/ void delaynus(uchar n){ uchar i。 for(i=0。in。i++) 。}/*****************************************************函數(shù)功能:向1302寫一個字節(jié)數(shù)據(jù)入口參數(shù):x***************************************************/ void Write1302(uchar dat){ uchar i。 SCLK=0。 //拉低SCLK,為脈沖上升沿寫入數(shù)據(jù)做好準(zhǔn)備 delaynus(2)。 //稍微等待,使硬件做好準(zhǔn)備 for(i=0。i8。i++) //連續(xù)寫8個二進(jìn)制位數(shù)據(jù) { DATA=datamp。0x01。 //取出dat的第0位數(shù)據(jù)寫入1302 delaynus(2)。 //稍微等待,使硬件做好準(zhǔn)備 SCLK=1。 //上升沿寫入數(shù)據(jù) delaynus(2)。 //稍微等待,使硬件做好準(zhǔn)備 SCLK=0。 //重新拉低SCLK,形成脈沖 dat=1。 //將dat的各數(shù)據(jù)位右移1位,準(zhǔn)備寫入下一個數(shù)據(jù)位 } }/*****************************************************函數(shù)功能:根據(jù)命令字,向1302寫一個字節(jié)數(shù)據(jù)入口參數(shù):Cmd,儲存命令字;dat,儲存待寫的數(shù)據(jù)***************************************************/ void WriteSet1302(uchar Cmd,uchar dat) { RST=0。 //禁止數(shù)據(jù)傳遞 SCLK=0。 //確保寫數(shù)居前SCLK被拉低 RST=1。 //啟動數(shù)據(jù)傳輸 delaynus(2)。 //稍微等待,使硬件做好準(zhǔn)備 Write1302(Cmd)。 //寫入命令字 Write1302(dat)。 //寫數(shù)據(jù) SCLK=1。 //將時鐘電平置于已知狀態(tài) RST=0。 //禁止數(shù)據(jù)傳遞 }/*****************************************************函數(shù)功能:從1302讀一個字節(jié)數(shù)據(jù)入口參數(shù):x***************************************************/ uchar Read1302(void) { uchar i,dat。 delaynus(2)。 //稍微等待,使硬件做好準(zhǔn)備 for(i=0。i8。i++) //連續(xù)讀8個二進(jìn)制位數(shù)據(jù) { dat=1。 //將dat的各數(shù)據(jù)位右移1位,因?yàn)橄茸x出的是字節(jié)的最低位 if(DATA==1) //如果讀出的數(shù)據(jù)是1 dat|=0x80。 //將1取出,寫在dat的最高位 SCLK=1。 //將SCLK置于高電平,為下降沿讀出 delaynus(2)。 //稍微等待 SCLK=0。 //拉低SCLK,形成脈沖下降沿 delaynus(2)。 //稍微等待 } return dat。 //將讀出的數(shù)據(jù)返回} /*****************************************************函數(shù)功能:根據(jù)命令字,從1302讀取一個字節(jié)數(shù)據(jù)入口參數(shù):Cmd***************************************************/ uchar ReadSet1302(uchar Cmd) { uchar dat。 RST=0。 //拉低RST SCLK=0。 //確保寫數(shù)居前SCLK被拉低 RST=1。 //啟動數(shù)據(jù)傳輸 Write1302(Cmd)。 //寫入命令字 dat=Read1302()。 //讀出數(shù)據(jù) SCLK=1。 //將時鐘電平置于已知狀態(tài) RST=0。 //禁止數(shù)據(jù)傳遞 return dat。 //將讀出的數(shù)據(jù)返回}/*****************************************************函數(shù)功能: 1302進(jìn)行初始化設(shè)置***************************************************/ void Init_DS1302(void){ WriteSet1302(0x8E,0x00)。 //根據(jù)寫狀態(tài)寄存器命令字,寫入不保護(hù)指令 WriteSet1302(0x80,((0/10)4|(0%10)))。 //根據(jù)寫秒寄存器命令字,寫入秒的初始值 //39。/39。除法運(yùn)算,取整;39。%39。取模運(yùn)算,取余 //數(shù)據(jù)前四位為
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1