本代碼為編碼開關(guān)代碼,編碼開關(guān)也就是數(shù)字音響中的 360度旋轉(zhuǎn)的數(shù)字音量以及顯示器上用的(單鍵飛梭開 關(guān))等類似鼠標(biāo)滾輪的手動計數(shù)輸入設(shè)備。 我使用的編碼開關(guān)為5個引腳的,其中2個引腳為按下 轉(zhuǎn)輪開關(guān)(也就相當(dāng)于鼠標(biāo)中鍵)。另外3個引腳用來 檢測旋轉(zhuǎn)方向以及旋轉(zhuǎn)步數(shù)的檢測端。引腳分別為a,b,c b接地a,c分別接到P2.0和P2.1口并分別接兩個10K上拉 電阻,并且a,c需要分別對地接一個104的電容,否則 因為編碼開關(guān)的觸點抖動會引起輕微誤動作。本程序不 使用定時器,不占用中斷,不使用延時代碼,并對每個 細(xì)分步數(shù)進行判斷,避免一切誤動作,性能超級穩(wěn)定。 我使用的編碼器是APLS的EC11B可以參照附件的時序圖 編碼器控制流水燈最能說明問題,下面是以一段流水 燈來演示。
標(biāo)簽: 代碼 編碼開關(guān)
上傳時間: 2017-07-03
上傳用戶:gaojiao1999
為微蕊的單片機與LCD interface
上傳時間: 2018-10-25
上傳用戶:mike329
針對目前使用的RS232接口數(shù)字化B超鍵盤存在PC主機啟動時不能設(shè)置BIOS,提出一種PS2鍵盤的設(shè)計方法?;赪78E052D單片機,采用8通道串行A/D轉(zhuǎn)換器設(shè)計了8個TGC電位器信息采集電路,電位器位置信息以鍵盤掃描碼序列形式發(fā)送,正交編碼器信號通過XC9536XL轉(zhuǎn)換為單片機可接收的中斷信號,軟件接收到中斷信息后等效處理成按鍵。結(jié)果表明,在滿足開機可設(shè)置BIOS同時,又可實現(xiàn)超聲特有功能,不需要專門設(shè)計驅(qū)動程序,接口簡單,成本低。 Abstract: Aiming at the problem of the digital ultrasonic diagnostic imaging system keyboard with RS232 interface currently used couldn?蒺t set the BIOS when the PC boot, this paper proposed a design method of PS2 keyboards. Based on W78E052D microcontroller,designed eight TGC potentiometers information acquisition circuit with 8-channel serial A/D converter, potentiometer position information sent out with keyboard scan code sequentially.The control circuit based on XC9536 CPLD is used for converting the mechanical actions of the encoders into the signals that can be identified by the MCU, software received interrupt information and equivalently treatmented as key. The results show that the BIOS can be set to meet the boot, ultrasound specific functionality can be achieved at the same time, it does not require specially designed driver,the interface is simple and low cost.
標(biāo)簽: 單片機 B超 數(shù)字化 鍵盤設(shè)計
上傳時間: 2013-10-10
上傳用戶:asdfasdfd
串行編程器源程序(Keil C語言)//FID=01:AT89C2051系列編程器//實現(xiàn)編程的讀,寫,擦等細(xì)節(jié)//AT89C2051的特殊處:給XTAL一個脈沖,地址計數(shù)加1;P1的引腳排列與AT89C51相反,需要用函數(shù)轉(zhuǎn)換#include <e51pro.h> #define C2051_P3_7 P1_0#define C2051_P1 P0//注意引腳排列相反#define C2051_P3_0 P1_1#define C2051_P3_1 P1_2#define C2051_XTAL P1_4#define C2051_P3_2 P1_5#define C2051_P3_3 P1_6#define C2051_P3_4 P1_7#define C2051_P3_5 P3_5 void InitPro01()//編程前的準(zhǔn)備工作{ SetVpp0V(); P0=0xff; P1=0xff; C2051_P3_5=1; C2051_XTAL=0; Delay_ms(20); nAddress=0x0000; SetVpp5V();} void ProOver01()//編程結(jié)束后的工作,設(shè)置合適的引腳電平{ SetVpp5V(); P0=0xff; P1=0xff; C2051_P3_5=1; C2051_XTAL=1;} BYTE GetData()//從P0口獲得數(shù)據(jù){ B_0=P0_7; B_1=P0_6; B_2=P0_5; B_3=P0_4; B_4=P0_3; B_5=P0_2; B_6=P0_1; B_7=P0_0; return B;} void SetData(BYTE DataByte)//轉(zhuǎn)換并設(shè)置P0口的數(shù)據(jù){ B=DataByte; P0_0=B_7; P0_1=B_6; P0_2=B_5; P0_3=B_4; P0_4=B_3; P0_5=B_2; P0_6=B_1; P0_7=B_0;} void ReadSign01()//讀特征字{ InitPro01(); Delay_ms(1);//----------------------------------------------------------------------------- //根據(jù)器件的DataSheet,設(shè)置相應(yīng)的編程控制信號 C2051_P3_3=0; C2051_P3_4=0; C2051_P3_5=0; C2051_P3_7=0; Delay_ms(20); ComBuf[2]=GetData(); C2051_XTAL=1; C2051_XTAL=0; Delay_us(20); ComBuf[3]=GetData(); ComBuf[4]=0xff;//----------------------------------------------------------------------------- ProOver01();} void Erase01()//擦除器件{ InitPro01();//----------------------------------------------------------------------------- //根據(jù)器件的DataSheet,設(shè)置相應(yīng)的編程控制信號 C2051_P3_3=1; C2051_P3_4=0; C2051_P3_5=0; C2051_P3_7=0; Delay_ms(1); SetVpp12V(); Delay_ms(1); C2051_P3_2=0; Delay_ms(10); C2051_P3_2=1; Delay_ms(1);//----------------------------------------------------------------------------- ProOver01();} BOOL Write01(BYTE Data)//寫器件{//----------------------------------------------------------------------------- //根據(jù)器件的DataSheet,設(shè)置相應(yīng)的編程控制信號 //寫一個單元 C2051_P3_3=0; C2051_P3_4=1; C2051_P3_5=1; C2051_P3_7=1; SetData(Data); SetVpp12V(); Delay_us(20); C2051_P3_2=0; Delay_us(20); C2051_P3_2=1; Delay_us(20); SetVpp5V(); Delay_us(20); C2051_P3_4=0; Delay_ms(2); nTimeOut=0; P0=0xff; nTimeOut=0; while(!GetData()==Data)//效驗:循環(huán)讀,直到讀出與寫入的數(shù)相同 { nTimeOut++; if(nTimeOut>1000)//超時了 { return 0; } } C2051_XTAL=1; C2051_XTAL=0;//一個脈沖指向下一個單元//----------------------------------------------------------------------------- return 1;} BYTE Read01()//讀器件{ BYTE Data;//----------------------------------------------------------------------------- //根據(jù)器件的DataSheet,設(shè)置相應(yīng)的編程控制信號 //讀一個單元 C2051_P3_3=0; C2051_P3_4=0; C2051_P3_5=1; C2051_P3_7=1; Data=GetData(); C2051_XTAL=1; C2051_XTAL=0;//一個脈沖指向下一個單元//----------------------------------------------------------------------------- return Data;} void Lock01()//寫鎖定位{ InitPro01();//先設(shè)置成編程狀態(tài)//----------------------------------------------------------------------------- //根據(jù)器件的DataSheet,設(shè)置相應(yīng)的編程控制信號 if(ComBuf[2]>=1)//ComBuf[2]為鎖定位 { C2051_P3_3=1; C2051_P3_4=1; C2051_P3_5=1; C2051_P3_7=1; Delay_us(20); SetVpp12V(); Delay_us(20); C2051_P3_2=0; Delay_us(20); C2051_P3_2=1; Delay_us(20); SetVpp5V(); } if(ComBuf[2]>=2) { C2051_P3_3=1; C2051_P3_4=1; C2051_P3_5=0; C2051_P3_7=0; Delay_us(20); SetVpp12V(); Delay_us(20); C2051_P3_2=0; Delay_us(20); C2051_P3_2=1; Delay_us(20); SetVpp5V(); }//----------------------------------------------------------------------------- ProOver01();} void PreparePro01()//設(shè)置pw中的函數(shù)指針,讓主程序可以調(diào)用上面的函數(shù){ pw.fpInitPro=InitPro01; pw.fpReadSign=ReadSign01; pw.fpErase=Erase01; pw.fpWrite=Write01; pw.fpRead=Read01; pw.fpLock=Lock01; pw.fpProOver=ProOver01;}
上傳時間: 2013-11-12
上傳用戶:gut1234567
計算矩陣連乘積 問題描述 在科學(xué)計算中經(jīng)常要計算矩陣的乘積。矩陣A和B可乘的條件是矩陣A的列數(shù)等于矩陣B的行數(shù)。若A是一個p×q的矩陣,B是一個q×r的矩陣,則其乘積C=AB是一個p×r的矩陣。
上傳時間: 2015-03-25
上傳用戶:yulg
數(shù)據(jù)結(jié)構(gòu)和算法Flash動畫演示 B樹的刪除,B樹的生長過程,串的順序存儲,單鏈表結(jié)點的插入,單鏈表結(jié)點的刪除,堆排序,二叉排序樹的刪除等
上傳時間: 2015-03-29
上傳用戶:kristycreasy
無線數(shù)傳電臺串口通信C程序源碼 電臺型號為深圳友迅達(dá)公司的F201/B無線數(shù)傳電臺
標(biāo)簽: 201 無線 數(shù)傳電臺 串口通信
上傳時間: 2014-01-24
上傳用戶:王小奇
AT24C02串行E2PROM的讀寫 24C02中帶有片內(nèi)地址寄存器。每寫入或讀出一個數(shù)據(jù)字節(jié)后,該地址寄存器自動加1,以實現(xiàn)對下一個存儲單元的讀寫。所有字節(jié)均以單一操作方式讀取。為降低總的寫入時間,一次操作可寫入多達(dá)8個字節(jié)的數(shù)據(jù)。
標(biāo)簽: E2PROM 24C02 24C C02
上傳時間: 2015-04-27
上傳用戶:lht618
這是一個MSC51單片機程序它讀出片外RAM中的數(shù)據(jù)從串行口發(fā)向機
上傳時間: 2014-12-21
上傳用戶:dave520l
于ADuC812的智能無功補償控制器的研制 一種眼科B型超聲診斷議 SL11R單片機外部存儲器擴展 單片機復(fù)位電路...支持鍵盤雙擊事件的C程序設(shè)計! 一些源程序 FrankLin C51 庫函數(shù)的一些bug! VC++用ActiveX控件與單片機串行通信
標(biāo)簽: FrankLin ADuC 812 11R
上傳時間: 2013-12-10
上傳用戶:古谷仁美
蟲蟲下載站版權(quán)所有 京ICP備2021023401號-1