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

正文內容

最新分揀機器人單片機控制系統(tǒng)設計(編輯修改稿)

2025-08-03 14:31 本頁面
 

【文章內容簡介】 信號對計數器的實際操作沒有影響8253內部擁有三個獨立但是結構和功能全部相同的定時器。本次設計使用到了兩個8253。 8253連接圖 下載電路本次設計使用到了CH340芯片下載,因為現在的筆記本電腦都沒有了并口通信接口,而用了CH340就可以實現USB轉串口,電腦上裝上驅動后就可以下載數據,. CH340下載電路第四章 軟件系統(tǒng)設計程序采用了順序結構,流程圖如下:本方案中定時器采用的是8253定時器,該定時器有六種工作方式,我們需要定時功能。8253的片選端是用來控制定時器工作方式的端口。該端口連接至單片機io口。只需要設置對應端口的電平就可以設置定時器的工作方式。定時器的作用是用來控制電機的轉動時間。由于存在著電機這種設備,所以需要使用pwm進行調速。但是51單片機并不能直接輸出pwm,所以本設計中通過軟件模擬的方法產生pwm。軟件模擬主要利用定時器的定時中斷功能。本設計采用的是51單片機,51單片機內部有兩個定時器,分別是T0和T1,T0和T1是兩個完全一樣的16位定時器。定時器的作用主要就是定時,在51單片機中定時器的工作方式是以中斷的方式進行的。設定一個定時時間當定時器定時達到定時時間后,就會進入定時器中斷。在中斷中可以處理相關的事件。在本設計中定時器中斷的作用是用來模擬產生pwm的。由于51單片機內部不帶硬件pwm,所以需要模擬。模擬的思路是通過定時器設定時間來控制脈沖的寬度,其控制思路如下圖所示:上述流程圖是定時器模擬產生pwm的步驟,定時器設定的定時時間為1ms,也就是說,定時時間到了1ms定時器就會進入中斷,在初始化時,要首先設置好單片機的工作方式,設置單片機的工作方式為方式1,定時時間設為1ms,通過往寄存器TH和TL中裝入初始值實現計時時間的調節(jié)。定時時間到1ms時,程序會自動進入中斷。在中斷服務程序中可以執(zhí)行相關的任務代碼。也就是說程序會每隔1ms就會進入一次中斷,就會有一個較為準確的周期性。在中斷中主要進行的是按鍵的處理和pwm的模擬,按鍵的處理將在后續(xù)章節(jié)中介紹。PWM如下圖所示: PWM圖在上圖中,可以看到pwm是一個方波。占空比是t/T,要讓單片機的管腳輸出這個占空比,只有通過定時器來實現。首先假設要輸出的pwm頻率為100hz,也就是周期T為10ms。在上面已經提到設置單片機的定時時間為1ms,也就是每個1ms會執(zhí)行一次中斷服務程序。在中斷服務程序里設一個變量flag,每進一次中斷這個變量就會自增一次,那么變量自增的次數就可以用來表示時間,每加一次就是過來1ms。利用這個時間變量就可以設置單片機輸出的PWM了。在程序中是通過判斷定時變量實現的,在第一次進入中斷時,設置單片機的一個io口輸出低電平。當第七次進入中斷時,此時正好是7ms??刂七@個單片機的io口輸出電平翻轉,輸出高電平。當第十次進入中斷的時候,此時是第10ms,控制這個io口再次輸出低電平,如此反復,就可以模擬出占空比為百分之30的pwm了。程序代碼如下:void timer0( ) interrupt 1 //定時器0工作方式1{ TH0=0xff。 //重裝計數初值 TL0=0x38。 //重裝計數初值 b++。 get_key()。 //按鍵查詢 if(p10==0) { delay(10)。 //延時消抖,按鍵消抖 if(p10==0) { p00=0。p02=p01=p03=1。 //前進 list_write_HZ_Str(6,20,qianjin)。 } } if(p11==0) { delay(10)。 if(p11==0) { p01=0。p02=p00=p03=1。 list_write_HZ_Str(6,20,houtui )。//后退 } } if(p12==0) { delay(10)。 if(p12==0) { p02=0。p00=p01=p03=1。 list_write_HZ_Str(6,20,zuo )。 //左邊 } } if(p13==0) { delay(10)。 if(p13==0) { p03=0。p00=p01=p02=1。 //右邊運動 list_write_HZ_Str(6,20,you )。 } } if(p14==0) { delay(10)。 if(p14==0) { p00=p02=p01=p03=1。 list_write_HZ_Str(6,20,停止 )。 } } if (key_up==1) { if(X!=15) //判斷是否計數到9999 { X=X+1。 //加一 key_up=0。 } }if (key_down==1) { if(X!=2) //判斷是否計數到0 { X=X1。 //減一 key_down=0。 } }} 12864液晶的初始化12864是一個帶字符庫的液晶,可以顯示128*64個點。12864液晶需要通過軟件寫入命令和數據才可以顯示出字符。在初始化時首先需要寫入命令,讓12864液晶進入顯示狀態(tài)。設定顯示地址。指令是根據12864液晶的數據手冊編寫的。12864液晶的初始化流程如下:程序代碼如下://*****************寫指令代碼*****************//void wcode(uchar cd) //寫指令 代碼 { chkbusy()。 //寫等待 P2=0xff。 //使能LCD RW=0。 //讀禁止 RS=0。 //輸出 設置 P2=cd。 //寫數據代碼 E=1。 //以下兩句產生下降沿 E=0。 }//*******************把顯示數據寫到內存單元中 *****************//void wdata(uchar dat) //寫顯示數據{ chkbusy()。 //寫等待 P2=0xff。 //使能LCD RW=0。 //讀禁止 RS=1。 //輸出 設置 P2=dat ^0xFF。 //寫數據代碼 E=1。 //以下兩句產生下降沿 E=0。 }//****************顯示LCD程序********************//void disrow(uchar page,uchar col,uchar *temp) { uchar i。 if(col64) // 左半平面 { L=1。R=0。 wcode(LCDPAGE+page)。 // 寫指令 頁 wcode(LCDLINE+col)。 //寫指令行 if((col+16)64) //如果字在左半平面顯示不了,轉到右半平面去 { for(i=0。i16。i++) //寫字 wdata(*(temp+i))。 } else //右半平面 { for(i=0。i64col。i++) //減去左邊數,從右半平面第一位開始顯示 wdata(*(temp+i))。 //寫字顯示 L=0。R=1。 //右半平面 wcode(LCDPAGE+page)。 // 寫指令頁 wcode(LCDLINE)。 //寫指令行 for(i=64col。i16。i++) //寫字右半平面 wdata(*(temp+i
點擊復制文檔內容
環(huán)評公示相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1