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

正文內(nèi)容

基于單片機(jī)的protues仿真畢業(yè)論文-資料下載頁(yè)

2025-06-27 19:24本頁(yè)面
  

【正文】 ,從液晶模塊讀取數(shù)據(jù)。RS=R/W=0,E=1 時(shí),向液晶模塊寫入數(shù)據(jù)。DB0~DB7:8 位雙向數(shù)據(jù)線。BLA:背光源正極。BLK:背光源負(fù)極。 RT1602 的讀/寫時(shí)序如圖 69 所:(二)顯示模塊的指令功能圖 RT1602 的外觀及引腳RS RSR/W R/WE EDB0~DB7 DB0~DB7寫時(shí)序讀時(shí)序圖 的讀/寫時(shí)序(二)顯示模塊的指令功能RT1602 液晶模塊內(nèi)部的控制器共有 11 條控制指令,單片機(jī)對(duì)液晶模塊的控制都是通過(guò)指令編程來(lái)實(shí)現(xiàn)的,指令的格式如表 63 所示,現(xiàn)分別說(shuō)明如下:清屏:指令碼 01H,清屏后,光標(biāo)返回到地址 00H。光標(biāo)返回:光標(biāo)返回到地址 00H。光標(biāo)和顯示模式設(shè)置: I/D:光標(biāo)移動(dòng)方向,高電平右移,低電平左移。 S:屏幕上所有文字是否左移或者右移。高電平表示有效,低電平則無(wú)效顯示開(kāi)/關(guān)控制:D:控制整體顯示的開(kāi)與關(guān),高電平表示開(kāi)顯示,低電平表示關(guān)顯示 。C:控制光標(biāo)的開(kāi)與關(guān),高電平表示有光標(biāo),低電平表示無(wú)光標(biāo) 。B:控制光標(biāo)是否閃爍,高電平閃爍,低電平不閃爍。光標(biāo)或顯示移位:S/C:高電平時(shí)移動(dòng)顯示的文字,低電平時(shí)移動(dòng)光標(biāo)。R/L:移動(dòng)方向,高電平右移,低電平左移。表 RT1602 顯示模塊的指令集指令 RS R/W D7 D6 D5 D4 D3 D2 D1 D0清屏 0 0 0 0 0 0 0 0 0 1光標(biāo)返回 0 0 0 0 0 0 0 0 1 *置輸入模式 0 0 0 0 0 0 0 1 I/D S顯示開(kāi)/關(guān)控制 0 0 0 0 0 0 1 D C B光標(biāo)或字符移位 0 0 0 0 0 1 S/C R/L * *置功能 0 0 0 0 1 DL N F * *置數(shù)據(jù)存儲(chǔ)器地址0 0 1 顯示數(shù)據(jù)存儲(chǔ)器地址(ADD)讀忙標(biāo)志或地址 0 1 BF 計(jì)數(shù)器地址(AC)寫數(shù)據(jù) 1 0 要寫的數(shù)據(jù)讀數(shù)據(jù) 1 1 讀出的數(shù)據(jù)置功能:DL:高電平時(shí)為 4 位總線,低電平時(shí)為 8 位總線。N:低電平時(shí)為單行顯示,高電平時(shí)雙行顯示。F: 低電平時(shí)顯示 57 的點(diǎn)陣字符,高電平時(shí)顯示 510 的點(diǎn)陣字符。置數(shù)據(jù)存儲(chǔ)器地址:如圖 所示,液晶屏幕上的每個(gè)字符位置與內(nèi)部數(shù)據(jù)存儲(chǔ)器(DDRAM)之間有著一一對(duì)應(yīng)關(guān)系10 屏幕位。LCD16 字*2 行00 01 02 06050403 27….BA0909080740 41 42 43 44 45 46 47 48 49 4a 4b 4c … 67圖 置與內(nèi)部數(shù)據(jù)存儲(chǔ)器為了將字符顯示到屏幕指定位置,必須用該命令設(shè)置液晶模塊的數(shù)據(jù)存儲(chǔ)器地址。例如:為了能在第二行第二列(數(shù)據(jù)存儲(chǔ)器地址為 41H)顯示字符,必須首先置數(shù)據(jù)存儲(chǔ)器地址為 41H,相應(yīng)的命令字為 1000 0000B + 0100 0001B=1100 0001B(C1H) 。讀忙標(biāo)志和光標(biāo)地址: BF:為忙標(biāo)志位,高電平表示忙,此時(shí)模塊不能接收命令或者數(shù)據(jù),BF為低電平表示不忙。AC:為當(dāng)前計(jì)數(shù)器地址。寫數(shù)據(jù):RT1602 液晶模塊內(nèi)部的字符發(fā)生存儲(chǔ)器(CGROM)已經(jīng)存儲(chǔ)了 160 個(gè)不同的點(diǎn)陣字符圖形,包括阿拉伯?dāng)?shù)字、英文字母的大小寫、常用的符號(hào)、和日文假名等,每一個(gè)字符都有一個(gè)固定的代碼,一般為該字符的 ASCII 碼,只要執(zhí)行寫數(shù)據(jù)指令,寫入該字符的代碼,就可在屏屏幕上顯示該字符。為了使程序清晰易讀,將對(duì)命令口、數(shù)據(jù)口的寫操作及等待操作完成設(shè)計(jì)成函數(shù),每次寫入指令碼或數(shù)據(jù)后必須等待忙標(biāo)志 BF 為 0 后才返回;由于每次寫入數(shù)據(jù)后,模塊內(nèi)的地址寄存器會(huì)自動(dòng)指向下個(gè)單元,因此無(wú)需在每個(gè)字符輸出前都設(shè)置數(shù)據(jù)存儲(chǔ)器地址,比如在顯示字符串 str1 前,只要用“l(fā)cd_cmd(0x80)?!闭Z(yǔ)句設(shè)置一次即可,將 str1 的第一個(gè)字符‘W’寫入模塊內(nèi)地址為 00H 的單元,即顯示在第一行的第一個(gè)字符位置,后續(xù)的其它字符就無(wú)需再設(shè)置地址了,程序清單如下:include include define uchar unsigned chardefine uint unsigned intdefine LCD P0 //P0 口作為總線端口sbit RS=P3^7。 //數(shù)據(jù)/命令寄存器選擇控制端sbit RW=P3^6。 //讀寫控制端sbit E =P3^5。//使能控制端sbit RDY=LCD^7。 //就緒線 BF,低電平有效void lcd_cmd(uchar cmd) //向液晶屏發(fā)送指令{ LCD=cmd。 RS=0。 //選擇命令寄存器 RW=0。 //執(zhí)行寫數(shù)據(jù)操作 E=1。 _nop_()。 //延時(shí) E=0。 //使能信號(hào)有效 while(1) { LCD=0xff。 //總線變高 RS=0。 //選擇命令寄存器 RW=1。 //讀操作 E=0。 //使能信號(hào)有效 _nop_()。 //延時(shí) E=1。 //撤消使能信號(hào) if(RDY==0) break。//如果就緒,返回 }}void lcd_dat(uchar dat) //向液晶屏寫入數(shù)據(jù){ LCD=dat。 //顯示數(shù)據(jù)送總線 RS=1。 //選擇數(shù)據(jù)寄存器 RW=0。 //執(zhí)行寫數(shù)據(jù)操作 E=1。 _nop_()。 E=0。 //使能信號(hào)有效 while(1) { LCD=0xff。//總線變高 RS=0。 //選擇命令寄存器 RW=1。 //讀操作 E=0。 //使能信號(hào)有效 _nop_()。 //延時(shí) E=1。 //撤消使能信號(hào) if(RDY==0) break。//如果就緒,返回 dat=LCD。 }}void init_lcd(void) //初始化液晶屏{ lcd_cmd(0x01)。//清屏幕 lcd_cmd(0x3c)。//設(shè)置雙行顯示,5X10 點(diǎn)陣 lcd_cmd(0x0C)。//開(kāi)顯示,關(guān)閉光標(biāo)}void disp_str(uchar x,uchar y,uchar *p) //在 x 行、y 列顯示字符串 p{ if(x==0) //如果在第一行顯示 lcd_cmd(0x80+y)。 //設(shè)置寫入地址 else //如果在第二行顯示 lcd_cmd(0xc0+y)。 //設(shè)置寫入地址 while(*p) //將字符依次發(fā)送到液晶屏 lcd_dat(*p++)。 } 鍵盤程序設(shè)計(jì)單片機(jī)將傳感器的溫度信號(hào)顯示以后,要開(kāi)始按鍵處理,單片機(jī)根據(jù)按鍵將溫度上下限設(shè)定值信號(hào)顯示出來(lái)或者是執(zhí)行其他相應(yīng)的功能。鍵盤電路雖然簡(jiǎn)單,但鍵盤的穩(wěn)定性、可靠性,應(yīng)引起足夠的重視。所以,當(dāng)檢測(cè)到有鍵按下或釋放時(shí),應(yīng)通過(guò)軟件延時(shí) 2030 ms 左右,避開(kāi)觸點(diǎn)抖動(dòng)的影響。去抖時(shí)間既不能太短也不能太長(zhǎng):如果時(shí)間太短,無(wú)法起到去抖作用;如果時(shí)間太長(zhǎng),超過(guò)了鍵按下的持續(xù)時(shí)間,則會(huì)判不到按鍵。軟件去抖時(shí)間不宜太短也不宜太長(zhǎng),定為 20ms 。為確定是否有鍵按下,CPU先通過(guò)并行輸出口使所有的行線為低電平,然后通過(guò)并行輸入口讀入列信號(hào),若為全“1” ,則沒(méi)有鍵按下,若有一個(gè)為“0” ,則表示有一個(gè)鍵已按下。若有一個(gè)為“0” ,則表示有一個(gè)鍵已按下。為消去按下時(shí)的抖動(dòng)現(xiàn)象,程序延遲20ms后再判斷具體是哪一個(gè)鍵按下先將第一行置為低電平,然后讀入列信號(hào),若有一個(gè)為“0” ,則按下的鍵在此行;若為全“1” ,則按下的鍵不在此行,再將下一行置為低電平,并測(cè)試列信號(hào)。根據(jù)本課題的系統(tǒng)要求,鍵盤主要是用來(lái)設(shè)置溫度的上下限, 因此采用獨(dú)立式鍵盤來(lái)完成這一功能。通過(guò)設(shè)置四個(gè)按鍵來(lái)控制溫度上下限的顯示和調(diào)整,程序清單如下所示:while(1) { int i,t。 if(S2==0) {debouncer()。 term_H=(0term_Hamp。amp。term_H100)?++term_H:50。while(S2==0)。debouncer()。} if(S3==0) { debouncer()。 term_L=(0term_Lamp。amp。term_L100)?term_L:50。 while(S3==0)。 debouncer()。 } for(i=0。i1。i++) //依次顯示報(bào)警溫度值 { bit zf。 //正負(fù)標(biāo)記 溫度在 0 度以下為 1,否則為 0 zf=0。 if(term_H0) //如果溫度小于 0 { zf=1。//正負(fù)標(biāo)志置 1 term_H=term_H。 //求出溫度的絕對(duì)值 } str[0]=term_H/100+0x30。 //求出百位的 ASCII 碼 term_H=term_H%100。 str[1]=term_H/10+0x30。 //求出十位的 ASCII 碼 str[2]=term_H%10+0x30。 //求出個(gè)位的 ASCII 碼 if(zf==1) //如果是負(fù)數(shù) { if(str[1]==39。039。) //如果十位為 0 { str[0]=39。 39。 //顯示格式為39。 39。 str[1]=39。39。 } else //如果十位不為 0 str[0]=39。39。 //顯示格式為39。39。 } else //如果是正數(shù) { if(str[0]==39。039。) //如果百位、十位都是 0 { if(str[1]==39。039。) //顯示格式為39。 39。 str[1]=39。 39。 // 如果只有百位為 0 str[0]=39。 39。 //顯示格式為39。 39。 } }disp_str(i/2,(i%0x02)*9+2,str)。 //將字符串在指定位置顯示出來(lái) } for(t=1。t2。t++) //依次顯示報(bào)警溫度值 { bit zf。 //正負(fù)標(biāo)記 溫度在 0 度以下為 1,否則為 0 zf=0。 if(term_L0) //如果溫度小于 0 { zf=1。//正負(fù)標(biāo)志置 1 term_L=term_L。 //求出溫度的絕對(duì)值 } str[0]=term_L/100+0x30。 //求出百位的 ASCII 碼 term_L=term_L%100。 str[1]=term_L/10+0x30。 //求出十位的 ASCII 碼 str[2]=term_L%10+0x30。 //求出個(gè)位的 ASCII 碼 if(zf==1) //如果是負(fù)數(shù) { if(str[1]==39。039。) //如果十位為 0 { str[0]=39。 39。 //顯示格式為39。 3
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1