新聞中心

我的MIDI鍵盤程序

作者: 時(shí)間:2016-11-29 來(lái)源:網(wǎng)絡(luò) 收藏
void initial_keyboard() //初始化鍵盤{v_74hc164WriteData_f(0x00);//關(guān)掉后排段選v_74hc164WriteData_f(0x00);//關(guān)掉前排段選}//keynumber[0]定義為第一排//keynumber[1]定義為第二排void scan_key(){uchar ts=0; //開(kāi)始的時(shí)間uchar kb_cs; // 段選uchar i=0;uchar j=0; //循環(huán)變量uchar outa=0;uchar outb=0;uchar csp;uchar lkb,hkb;uchar atime;uchar temp;//臨時(shí)kb_cs=0x01; //00000001 00000010while (i!=8){ts=kbtime;v_74hc164WriteData_f(0x00);//關(guān)掉前排段選v_74hc164WriteData_f(kb_cs);//輸出后排段選//高在前,低在后//以下代碼輸出下排力度檢測(cè)的信號(hào)io_74hc165_SH_HIGH //拉高并行置數(shù)outa=v_74hc165ReadData_f(); //讀入輸出io_74hc165_SH_LOW //拉低并行置數(shù)//結(jié)束,以下代碼輸出前排檢測(cè)開(kāi)關(guān)的信號(hào)initial_keyboard();//保險(xiǎn)點(diǎn)v_74hc164WriteData_f(kb_cs); //輸出前排段選v_74hc164WriteData_f(0x00); //關(guān)掉后排段選csp=0x01;//初始化指針io_74hc165_SH_HIGH //拉高并行置數(shù)outb=v_74hc165ReadData_f(); //讀入輸出io_74hc165_SH_LOW //拉低并行置數(shù)initial_keyboard();//全部關(guān)掉//與原來(lái)的鍵值進(jìn)行比較~lkb=outb^keynumber[0][i]; //前排與原來(lái)的鍵值比較hkb=outa^keynumber[1][i]; //后排與原來(lái)的鍵值比較// 1&1=1 1&0=0 0&1=0 0&0=0// 1^1=0 1^0=0 0^1=0 0^0=0所以用來(lái)做比較。有變化的就輸出1keynumber[0][i]=outb; //前排,記錄下新的鍵值keynumber[1][i]=outa; //后排//原理:在琴鍵下面有兩個(gè)開(kāi)關(guān),順序?yàn)镵1,K2。按照順序接通。只能兩個(gè)全導(dǎo)通/兩個(gè)全關(guān)斷,或者只有K1導(dǎo)通。在K1導(dǎo)通的時(shí)候lkb&csp發(fā)生變化并且在前排鍵上也發(fā)生變化//所以程序會(huì)在一個(gè)2維數(shù)組中記錄閉合的時(shí)間,然后繼續(xù)掃過(guò)去。等到第二次掃到這組鍵的話while(j!=8){if ((lkb&csp)!=0) // 前排觸點(diǎn)是否有變化{ if ((outb&csp)!=0){//前排的按鍵按下了count_begin[i][j]=ts;}else{//前排鍵松開(kāi)了就復(fù)原黑名單temp=0x01;temp=temp<blacklist_time){//超時(shí)了temp=0x01;temp=temp<blacklist_time){//超時(shí)了temp=0x1;temp=temp<

全部源碼下載地址:http://www.51hei.com/f/mdid.rar
編譯后約占用1K ROM。效率夠高~
不過(guò)這個(gè)最后還要和主控ATmega8通信。
還是半成品。

本文引用地址:http://butianyuan.cn/article/201611/323461.htm

做鍵盤也是要技術(shù)的。做電子琴更要技術(shù)。哇哈哈哈! 本程序的正式版本請(qǐng)看:http://www.51hei.com/mcu/1636.html

89S52單片機(jī)的Flash ROM為8KByte.內(nèi)存為256Byte.

PS:程序本來(lái)是分塊設(shè)計(jì)的。為了發(fā)上網(wǎng)就用cpp處理了下。include 全部被替換掉了。


上一頁(yè) 1 2 3 下一頁(yè)

關(guān)鍵詞: MIDI鍵盤程

評(píng)論


技術(shù)專區(qū)

關(guān)閉