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

正文內(nèi)容

基于51單片機(jī)的步進(jìn)電機(jī)控制系統(tǒng)設(shè)計(jì)-資料下載頁(yè)

2025-07-04 21:24本頁(yè)面
  

【正文】 電解電容10uF1C2瓷片電容30pF2C3,C4晶振12M1Y18550三極管——4Q1,Q2,Q3,Q4發(fā)光二極管——4L1,L2,L3,L4按鍵開關(guān)——5K1,K2,K3,K4,K5STC89C51單片機(jī)——1U1ULN2003驅(qū)動(dòng)芯片——1U2步進(jìn)電機(jī)——1M1電源接口——1J1步進(jìn)電機(jī)插座排針——1P1四位共陽(yáng)數(shù)碼管——1SM1四針排針——1P4程 序//數(shù)碼管位 高位低位//四個(gè)按鍵控制步進(jìn)電機(jī):正轉(zhuǎn),反轉(zhuǎn),加1,減1//上電時(shí)電機(jī)啟動(dòng),數(shù)碼管上顯示速度最小檔1,加減檔位均能通過(guò)數(shù)碼管顯示出來(lái),電機(jī)采用單雙八拍方式//電機(jī)轉(zhuǎn)速一共10檔,通過(guò)按鍵調(diào)節(jié)轉(zhuǎn)速 //電機(jī)正轉(zhuǎn)時(shí)最高位數(shù)碼管顯示0,反轉(zhuǎn)時(shí)顯示1 include//reg51頭文件 用于寄存器讀取define uchar unsigned char//宏定義字符型變量名稱define uint unsigned int//宏定義整形變量define led P0//數(shù)碼管段選//define haha P2sbit s1 = P1^0。sbit s2 = P1^1。sbit s3 = P3^0。sbit s4 = P3^1。//按鍵定義,s1正轉(zhuǎn),s2反轉(zhuǎn),s3加1,s4減1sbit wei3 = P2^3。sbit wei2 = P2^2。sbit wei1 = P2^1。sbit wei0 = P2^0。//數(shù)碼管位選定義sbit a = P2^7。sbit b = P2^6。sbit c = P2^5。sbit d = P2^4。//脈沖信號(hào)輸入端定義uchar code display[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff}。//共陽(yáng)數(shù)碼管驅(qū)動(dòng)信號(hào)09,不顯示uchar code time_counter[10][2]={{0xda,0x1c},{0xde,0xe4},{0xe1,0xec},{0xe5,0xd4},{0xe9,0xbc}, // 1ms {0xed,0xa4},{0xf1,0x8c},{0xf5,0x74},{0xf9,0x5c},{0xfc,0x18}}。//定時(shí)器裝載寄存器值用于調(diào)檔時(shí)改變定時(shí)器定時(shí)時(shí)間uchar code qudong[8]={0x80,0xc0,0x40,0x60,0x20,0x30,0x10,0x90}。 //uchar num1 = 0。//控制取勵(lì)磁信號(hào)變量 //uchar num2 = 8。uchar k=1。//加減檔位控制,1為最小檔bit flag1 = 0。//初始正轉(zhuǎn),正反轉(zhuǎn)標(biāo)志uchar buf[4]={0,10,10,1}。//數(shù)碼管顯示緩存,正轉(zhuǎn),不顯示,不顯示,顯示1檔位,高低 //==========================定時(shí)器0/1初始化函數(shù)===========================void T0_T1_init(){ TMOD = 0x11。//定時(shí)器0/1均工作于方式1,16位計(jì)時(shí)方式 TH0 = (65536 3000)/256。 TL0 = (65536 3000)%256。//定時(shí)器0,定時(shí)3ms用于數(shù)碼管掃描顯示 TH1 = time_counter[k1][0]。 TL1 = time_counter[k1][1]。//定時(shí)器1,定時(shí)10ms用于步進(jìn)電機(jī)轉(zhuǎn)速控制 TR0 = 1。//定時(shí)器0 tr0位置1開啟定時(shí)器0 TR1 = 0。//定時(shí)器1 tr1位置0 關(guān)閉定時(shí)器1 ET0 = 1。//開啟定時(shí)器0中斷 ET1= 1。//開定時(shí)器1中斷 EA = 1。//開總中斷}//=============================ms級(jí)延時(shí)函數(shù)==============================void delay1m(uint x){ uint i,j。// 定義i j 兩個(gè)整形變量 for(i=0。ix。i++) //連數(shù)x次,約 x ms for(j=0。j120。j++)。 //數(shù)120 次,約1 ms} //==============================主函數(shù)==================================void main(){ T0_T1_init()。//調(diào)用定時(shí)器初始化子程序 buf[1] = 10。//不顯示 buf[2]= 0。 buf[3]= 1。 while(1) { if(s1 == 0 )//判斷s1按鍵是否按下 { delay1m(3)。//延時(shí)消抖 if(s1 == 0)//再次判斷 { TR1 = ~TR1。//定時(shí)器1控制位取反 開啟或關(guān)閉1時(shí)開始0時(shí)關(guān)閉 } while(!s1)。 //死循環(huán)判斷是否按鍵松開 } if(s2 == 0) { delay1m(3)。 if(s2 == 0) { delay1m(5)。 // while(!s1)。 flag1=~flag1。//正反轉(zhuǎn)標(biāo)志位 if(flag1==0) //正轉(zhuǎn) { buf[0] = 0。//最高位顯示0 } else { buf[0] = 1。//最高位顯示0 } // haha = 0x00。//停止 } while(!s2)。 } if(s3 == 0) //速度加1檔 { delay1m(3)。 if(s3 == 0) { k++。//速度變量k加1 if(k 10 )//如果超過(guò)10變量等于1 { k = 1。 } buf[2]= k/10。//顯示速度值十位 buf[3]= k%10。//顯示速度值個(gè)位 } while(!s3)。 } if(s4 == 0) //速度減1檔 { delay1m(3)。 if(s4 == 0) { k。//減少速度值 if(k == 0)//如果減少到等于0速度值等于10 { k = 10。 } buf[2]= k/10。 buf[3]= k%10。 } while(!s4)。 } } }//===================定時(shí)器0中斷函數(shù),用于數(shù)碼管掃描顯示====================void time0_interrupt()interrupt 1{ static num = 0。//數(shù)碼管掃描變量 判斷這個(gè)變量 點(diǎn)亮不同數(shù)碼管位 達(dá)到掃描顯示的作用 TH0 = (65536 3000)/256。 TL0 = (65536 3000)%256。//定時(shí)器0,定時(shí)3ms用于數(shù)碼管掃描顯示 wei3=1。wei2=1。wei1=1。wei0=1。//數(shù)碼管各公共段置1應(yīng)該是關(guān)閉顯示//利用定時(shí)器中斷進(jìn)行數(shù)碼管掃描顯示 不占用cpu使用 switch(num) { case 0:wei3=1。wei2=1。wei1=1。wei0=0。led = display[buf[3]]。break。 case 1:wei3=1。wei2=1。wei1=0。wei0=1。led = display[buf[2]]。break。 case 2:wei3=0。wei2=1。wei1=1。wei0=1。led = display[buf[0]]。break。 } num++。//掃描值加1到3置0 if(num == 3) num = 0。 }//====================定時(shí)器1中斷函數(shù),用于脈沖頻率控制======================void time1_interrupt()interrupt 3{ static num1 = 0。//靜態(tài)變量用于中斷程序內(nèi)使用根據(jù)這兩個(gè)變量的值 輸出不同的控制脈沖 控制步進(jìn)電機(jī)轉(zhuǎn)動(dòng) static num2 = 0。 TH1 = time_counter[k1][0]。//讀取速度值數(shù)組內(nèi)數(shù)值 用于控制步進(jìn)電機(jī)轉(zhuǎn)速 TL1 = time_counter[k1][1]。//定時(shí)器1,定時(shí)1 用于步進(jìn)電機(jī)轉(zhuǎn)速控制 if(flag1 == 0)//正轉(zhuǎn) { switch(num1) { case 0:a = 1。b = 0。c = 0。d = 0。break。//步進(jìn)電機(jī)輸出脈沖引腳控制 case 1:a = 1。b = 1。c = 0。d = 0。break。 case 2:a = 0。b = 1。c = 0。d = 0。break。 case 3:a = 0。b = 1。c = 1。d = 0。break。 case 4:a = 0。b = 0。c = 1。d = 0。break。 case 5:a = 0。b = 0。c = 1。d = 1。break。 case 6:a = 0。b = 0。c = 0。d = 1。break。 case 7:a = 1。b = 0。c = 0。d = 1。break。 } num1++。 if(num1 == 8)num1 = 0。 } else //反轉(zhuǎn) { switch(num2) { case 0:a = 1。b = 0。c = 0。d = 1。break。 case 1:a = 0。b = 0。c = 0。d = 1。break。 case 2:a = 0。b = 0。c = 1。d = 1。break。 case 3:a = 0。b = 0。c = 1。d = 0。break。 case 4:a = 0。b = 1。c = 1。d = 0。break。 case 5:a = 0。b = 1。c = 0。d = 0。break。 case 6:a = 1。b = 1。c = 0。d = 0。break。 case 7:a = 1。b = 0。c = 0。d = 0。break。 } num2++。 if(num2 == 8)num2 = 0。 }}44
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)教案相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1