亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

蟲蟲首頁| 資源下載| 資源專輯| 精品軟件
登錄| 注冊

0X80

  • CHUSHIHUA()//初始化 Display(0X80,"顯示內(nèi)容")

    CHUSHIHUA()//初始化 Display(0X80,"顯示內(nèi)容")

    標(biāo)簽: CHUSHIHUA Display 80 初始化

    上傳時間: 2013-12-10

    上傳用戶:aa54

  • Arduino學(xué)習(xí)筆記A10_Arduino數(shù)碼管骰子實(shí)驗(yàn)

    電路連接 由于數(shù)碼管品種多樣,還有共陰共陽的,下面我們使用一個數(shù)碼管段碼生成器(在文章結(jié)尾) 去解決不同數(shù)碼管的問題: 本例作者利用手頭現(xiàn)有的一位不知品牌的共陽數(shù)碼管:型號D5611 A/B,在Eagle 找了一個 類似的型號SA56-11,引腳功能一樣可以直接代換。所以下面電路圖使用SA56-11 做引腳說明。 注意: 1. 將數(shù)碼管的a~g 段,分別接到Arduino 的D0~D6 上面。如果你手上的數(shù)碼管未知的話,可以通過通電測量它哪個引腳對應(yīng)哪個字段,然后找出a~g 即可。 2. 分清共陰還是共陽。共陰的話,接220Ω電阻到電源負(fù)極;共陽的話,接220Ω電阻到電源+5v。 3. 220Ω電阻視數(shù)碼管實(shí)際工作亮度與手頭現(xiàn)有原件而定,不一定需要準(zhǔn)確。 4. 按下按鈕即停。   源代碼 由于我是按照段碼生成器默認(rèn)接法接的,所以不用修改段碼生成器了,直接在段碼生成器選擇共陽極,再按“自動”生成數(shù)組就搞定。   下面是源代碼,由于偷懶不用寫循環(huán),使用了部分AVR 語句。 PORTD 這個是AVR 的端口輸出控制語句,8 位對應(yīng)D7~D0,PORTD=00001001 就是D3 和D0 是高電平。 PORTD = a;就是找出相應(yīng)的段碼輸出到D7~D0。 DDRD 這個是AVR 語句中控制引腳作為輸出/輸入的語句。DDRD = 0xFF;就是D0~D7 全部 作為輸出腳了。 ARDUINO CODECOPY /* Arduino 單數(shù)碼管骰子 Ansifa 2011-12-28 */ //定義段碼表,表中十個元素由LED 段碼生成器生成,選擇了共陽極。 inta[10] = {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0X80, 0x90}; voidsetup() { DDRD = 0xFF; //AVR 定義PortD 的低七位全部用作輸出使用。即0xFF=B11111111對 應(yīng)D7~D0 pinMode(12, INPUT); //D12用來做骰子暫停的開關(guān) } voidloop() { for(int i = 0; i < 10; i++) { //將段碼輸出PortD 的低7位,即Arduino 的引腳D0~D6,這樣需要取出PORTD 最高位,即 D7的狀態(tài),與段碼相加,之后再輸出。 PORTD = a[i]; delay(50); //延時50ms while(digitalRead(12)) {} //如果D12引腳高電平,則在此死循環(huán),暫停LED 跑 動 } }      

    標(biāo)簽: Arduino 10 數(shù)碼管 實(shí)驗(yàn)

    上傳時間: 2013-10-15

    上傳用戶:baitouyu

  • LCD12864顯示漢字和數(shù)字(程序和電路)

    附件為:LCD12864顯示漢字和數(shù)字的程序與電路 /*  自定義延時子函數(shù) */ void delayms(uchar z) {   int x,y;   for(x=z;x>0;x--)      for(y=110;y>0;y--); } /*      判斷LCD忙信號狀態(tài) */ void buys() {   int dat;   RW=1;   RS=0;   do     {           P0=0x00;          E=1;    dat=P0;    E=0;    dat=0X80 & dat;   } while(!(dat==0x00)); } /*      LCD寫指令函數(shù) */ void w_com(uchar com) {   //buys();   RW=0;   RS=0;   E=1;   P0=com;   E=0; }  /*      LCD寫數(shù)據(jù)函數(shù) */ void w_date(uchar date) {   //buys();   RW=0;   RS=1;   E=1;   P0=date;   E=0; } /*     LCD選屏函數(shù) */ void select_screen(uchar screen) {     switch(screen)     {         case 0:     //選擇全屏                 CS1=0;        CS2=0;           break;      case 1:     //選擇左屏                 CS1=0;        CS2=1;           break;                          case 2:     //選擇右屏                 CS1=1;        CS2=0;           break;    /*  case 3:     //選擇右屏                 CS1=1;          CS2=1;               break;    */     }           } /*   LCDx向上滾屏顯示 */ void lcd_rol() {     int x;     for(x=0;x<64;x++)        {       select_screen(0);     w_com(0xc0+x);       delayms(500);     } } /*     LCD清屏函數(shù):清屏從第一頁的第一列開始,總共8頁,64列 */ void clear_screen(screen) {   int x,y;   select_screen(screen);     //screen:0-選擇全屏,1-選擇左半屏,2-選擇右半屏   for(x=0xb8;x<0xc0;x++)   //從0xb8-0xbf,共8頁      {    w_com(x);    w_com(0x40);   //列的初始地址是0x40    for(y=0;y<64;y++)       {            w_date(0x00);              }       }    } /*   LCD顯示漢字字庫函數(shù) */ void lcd_display_hanzi(uchar screen,uchar page,uchar col,uint mun) {  //screen:選擇屏幕參數(shù),page:選擇頁參數(shù)0-3,col:選擇列參數(shù)0-3,mun:顯示第幾個漢字的參數(shù)       int a;    mun=mun*32;    select_screen(screen);    w_com(0xb8+(page*2));    w_com(0x40+(col*16));    for ( a=0;a<16;a++)       {        w_date(hanzi[mun++]);       }    w_com(0xb8+(page*2)+1);    w_com(0x40+(col*16));    for ( a=0;a<16;a++)       {        w_date(hanzi[mun++]);       } }  /*   LCD顯示字符字庫函數(shù) */ void lcd_display_zifuk(uchar screen,uchar page,uchar col,uchar mun) {  //screen:選擇屏幕參數(shù),page:選擇頁參數(shù)0-3,col:選擇列參數(shù)0-7,mun:顯示第幾個漢字的參數(shù)       int a;    mun=mun*16;    select_screen(screen);    w_com(0xb8+(page*2));    w_com(0x40+(col*8));    for ( a=0;a<8;a++)       {        w_date(zifu[mun++]);       }    w_com(0xb8+(page*2)+1);    w_com(0x40+(col*8));    for ( a=0;a<8;a++)       {        w_date(zifu[mun++]);       } } /*   LCD顯示數(shù)字字庫函數(shù) */ void lcd_display_shuzi(uchar screen,uchar page,uchar col,uchar mun) {  //screen:選擇屏幕參數(shù),page:選擇頁參數(shù)0-3,col:選擇列參數(shù)0-7,mun:顯示第幾個漢字的參數(shù)       int a;    mun=mun*16;    select_screen(screen);    w_com(0xb8+(page*2));    w_com(0x40+(col*8));    for ( a=0;a<8;a++)       {        w_date(shuzi[mun++]);       }    w_com(0xb8+(page*2)+1);    w_com(0x40+(col*8));    for ( a=0;a<8;a++)       {        w_date(shuzi[mun++]);       } } /*   LCD初始化函數(shù) */ void lcd_init() {   w_com(0x3f);   //LCD開顯示   w_com(0xc0);   //LCD行初始地址,共64行   w_com(0xb8);   //LCD頁初始地址,共8頁   w_com(0x40);   //LCD列初始地址,共64列     } /*   LCD顯示主函數(shù) */ void main() {   //第一行       int x;    lcd_init();     //LCD初始化    clear_screen(0);    //LCD清屏幕    lcd_display_shuzi(1,0,4,5);    //LCD顯示數(shù)字    lcd_display_shuzi(1,0,5,1);    //LCD顯示數(shù)字       lcd_display_hanzi(1,0,3,0);    //LCD顯示漢字    lcd_display_hanzi(2,0,0,1);    //LCD顯示漢字    //LCD字符漢字    lcd_display_hanzi(2,0,1,2);    //LCD顯示漢字   //第二行     lcd_display_zifuk(1,1,2,0);    //LCD顯示字符    lcd_display_zifuk(1,1,3,0);    //LCD顯示字符    lcd_display_zifuk(1,1,4,0);    //LCD顯示字符    lcd_display_zifuk(1,1,5,4);    //LCD顯示字符    lcd_display_shuzi(1,1,6,8);    //LCD顯示字符    lcd_display_shuzi(1,1,7,9);    //LCD顯示字符    lcd_display_shuzi(2,1,0,5);    //LCD顯示字符    lcd_display_shuzi(2,1,1,1);    //LCD顯示字符    lcd_display_zifuk(2,1,2,4);    lcd_display_zifuk(2,1,3,1);    lcd_display_zifuk(2,1,4,2);    lcd_display_zifuk(2,1,5,3);   //第三行    for(x=0;x<4;x++)       {      lcd_display_hanzi(1,2,x,3+x);    //LCD顯示漢字    }      for(x=0;x<4;x++)       {      lcd_display_hanzi(2,2,x,7+x);    //LCD顯示漢字    }   //第四行     for(x=0;x<4;x++)       {      lcd_display_zifuk(1,3,x,5+x);    //LCD顯示漢字    }     lcd_display_shuzi(1,3,4,7);     lcd_display_shuzi(1,3,5,5);     lcd_display_shuzi(1,3,6,5);     lcd_display_zifuk(1,3,7,9);     lcd_display_shuzi(2,3,0,8);     lcd_display_shuzi(2,3,1,9);     lcd_display_shuzi(2,3,2,9);     lcd_display_shuzi(2,3,3,5);     lcd_display_shuzi(2,3,4,6);     lcd_display_shuzi(2,3,5,8);     lcd_display_shuzi(2,3,6,9);     lcd_display_shuzi(2,3,7,2);        while(1);    /* while(1)     {     //  LCD向上滾屏顯示        lcd_rol();     }    */ }

    標(biāo)簽: 12864 LCD 漢字 數(shù)字

    上傳時間: 2013-11-08

    上傳用戶:aeiouetla

  • TLC2543 中文資料

    TLC2543是TI公司的12位串行模數(shù)轉(zhuǎn)換器,使用開關(guān)電容逐次逼近技術(shù)完成A/D轉(zhuǎn)換過程。由于是串行輸入結(jié)構(gòu),能夠節(jié)省51系列單片機(jī)I/O資源;且價格適中,分辨率較高,因此在儀器儀表中有較為廣泛的應(yīng)用。 TLC2543的特點(diǎn) (1)12位分辯率A/D轉(zhuǎn)換器; (2)在工作溫度范圍內(nèi)10μs轉(zhuǎn)換時間; (3)11個模擬輸入通道; (4)3路內(nèi)置自測試方式; (5)采樣率為66kbps; (6)線性誤差±1LSBmax; (7)有轉(zhuǎn)換結(jié)束輸出EOC; (8)具有單、雙極性輸出; (9)可編程的MSB或LSB前導(dǎo); (10)可編程輸出數(shù)據(jù)長度。 TLC2543的引腳排列及說明    TLC2543有兩種封裝形式:DB、DW或N封裝以及FN封裝,這兩種封裝的引腳排列如圖1,引腳說明見表1 TLC2543電路圖和程序欣賞 #include<reg52.h> #include<intrins.h> #define uchar unsigned char #define uint unsigned int sbit clock=P1^0; sbit d_in=P1^1; sbit d_out=P1^2; sbit _cs=P1^3; uchar a1,b1,c1,d1; float sum,sum1; double  sum_final1; double  sum_final; uchar duan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uchar wei[]={0xf7,0xfb,0xfd,0xfe};  void delay(unsigned char b)   //50us {           unsigned char a;           for(;b>0;b--)                     for(a=22;a>0;a--); }  void display(uchar a,uchar b,uchar c,uchar d) {    P0=duan[a]|0X80;    P2=wei[0];    delay(5);    P2=0xff;    P0=duan[b];    P2=wei[1];    delay(5);   P2=0xff;   P0=duan[c];   P2=wei[2];   delay(5);   P2=0xff;   P0=duan[d];   P2=wei[3];   delay(5);   P2=0xff;   } uint read(uchar port) {   uchar  i,al=0,ah=0;   unsigned long ad;   clock=0;   _cs=0;   port<<=4;   for(i=0;i<4;i++)  {    d_in=port&0X80;    clock=1;    clock=0;    port<<=1;  }   d_in=0;   for(i=0;i<8;i++)  {    clock=1;    clock=0;  }   _cs=1;   delay(5);   _cs=0;   for(i=0;i<4;i++)  {    clock=1;    ah<<=1;    if(d_out)ah|=0x01;    clock=0; }   for(i=0;i<8;i++)  {    clock=1;    al<<=1;    if(d_out) al|=0x01;    clock=0;  }   _cs=1;   ad=(uint)ah;   ad<<=8;   ad|=al;   return(ad); }  void main()  {   uchar j;   sum=0;sum1=0;   sum_final=0;   sum_final1=0;    while(1)  {              for(j=0;j<128;j++)          {             sum1+=read(1);             display(a1,b1,c1,d1);           }            sum=sum1/128;            sum1=0;            sum_final1=(sum/4095)*5;            sum_final=sum_final1*1000;            a1=(int)sum_final/1000;            b1=(int)sum_final%1000/100;            c1=(int)sum_final%1000%100/10;            d1=(int)sum_final%10;            display(a1,b1,c1,d1);           }         } 

    標(biāo)簽: 2543 TLC

    上傳時間: 2013-11-19

    上傳用戶:shen1230

  • AVR單片機(jī)數(shù)碼管秒表顯示

    #include<iom16v.h> #include<macros.h> #define uint unsigned int #define uchar unsigned char uint a,b,c,d=0; void delay(c) { for for(a=0;a<c;a++) for(b=0;b<12;b++); }; uchar tab[]={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0X80,0x90,

    標(biāo)簽: AVR 單片機(jī) 數(shù)碼管

    上傳時間: 2013-10-21

    上傳用戶:13788529953

  • AT89C2051驅(qū)動步進(jìn)電機(jī)的電路和源碼

    AT89C2051驅(qū)動步進(jìn)電機(jī)的電路和源碼:AT89C2051驅(qū)動步進(jìn)電機(jī)的電路和源碼 程序:stepper.c stepper.hex/* * STEPPER.C * sweeping stepper's rotor cw and cww 400 steps * Copyright (c) 1999 by W.Sirichote */#i nclude c:\mc5151io.h /* include i/o header file */ #i nclude c:\mc5151reg.hregister unsigned char j,flag1,temp; register unsigned int cw_n,ccw_n;unsigned char step[8]={0X80,0xc0,0x40,0x60,0x20,0x30,0x10,0x90} #define n 400/* flag1 mask byte 0x01 run cw() 0x02 run ccw() */main(){ flag1=0; serinit(9600); disable(); /* no need timer interrupt */ cw_n = n; /* initial step number for cw */ flag1 |=0x01; /* initial enable cw() */while(1){ { tick_wait(); /* wait for 10ms elapsed */energize(); /* round-robin execution the following tasks every 10ms */ cw(); ccw(); } }}cw(){ if((flag1&0x01)!=0) { cw_n--; /* decrement cw step number */ if (cw_n !=0) j++; /* if not zero increment index j */ else {flag1&=~0x01; /* disable cw() execution */ ccw_n = n; /* reload step number to ccw counter */ flag1 |=0x02; /* enable cww() execution */ } }

    標(biāo)簽: C2051 2051 89C AT

    上傳時間: 2013-11-21

    上傳用戶:boyaboy

  • DS1820 C51 子程序 (一線數(shù)據(jù)傳輸)

    //芯片資料請到www.elecfans.com查找 //DS1820 C51 子程序//這里以11.0592M晶體為例,不同的晶體速度可能需要調(diào)整延時的時間//sbit DQ =P2^1;//根據(jù)實(shí)際情況定義端口 typedef unsigned char byte;typedef unsigned int  word; //延時void delay(word useconds){  for(;useconds>0;useconds--);} //復(fù)位byte ow_reset(void){  byte presence;  DQ = 0; //pull DQ line low  delay(29); // leave it low for 480us  DQ = 1; // allow line to return high  delay(3); // wait for presence  presence = DQ; // get presence signal  delay(25); // wait for end of timeslot  return(presence); // presence signal returned}     // 0=presence, 1 = no part //從 1-wire 總線上讀取一個字節(jié)byte read_byte(void){  byte i;  byte value = 0;  for (i=8;i>0;i--)  {    value>>=1;    DQ = 0; // pull DQ low to start timeslot    DQ = 1; // then return high    delay(1);  //for (i=0; i<3; i++);     if(DQ)value|=0X80;    delay(6); // wait for rest of timeslot  }  return(value);} //向 1-WIRE 總線上寫一個字節(jié)void write_byte(char val){  byte i;  for (i=8; i>0; i--) // writes byte, one bit at a time  {    DQ = 0; // pull DQ low to start timeslot    DQ = val&0x01;    delay(5); // hold value for remainder of timeslot    DQ = 1;    val=val/2;  }  delay(5);} //讀取溫度char Read_Temperature(void){  union{    byte c[2];    int x;  }temp;   ow_reset();  write_byte(0xCC); // Skip ROM  write_byte(0xBE); // Read Scratch Pad  temp.c[1]=read_byte();  temp.c[0]=read_byte();  ow_reset();  write_byte(0xCC); //Skip ROM  write_byte(0x44); // Start Conversion  return temp.x/2;}

    標(biāo)簽: 1820 C51 DS 程序

    上傳時間: 2013-11-03

    上傳用戶:hongmo

  • 16 16點(diǎn)陣顯示漢字原理及顯示程序

    16 16點(diǎn)陣顯示漢字原理及顯示程序 #include "config.h" #define                DOTLED_LINE_PORT        PORTB #define                DOTLED_LINE_DDR                DDRB #define                DOTLED_LINE_PIN                PINB #define                DOTLED_LINE_SCKT        PB1 #define                DOTLED_LINE_SCKH        PB5 #define                DOTLED_LINE_SDA                PB3 #define                DOTLED_ROW_PORT                PORTC #define                DOTLED_ROW_DDR                DDRC #define                DOTLED_ROW_PIN                PINC #define                DOTLED_ROW_A0                PC0 #define                DOTLED_ROW_A1                PC1 #define                DOTLED_ROW_A2                PC2 #define                DOTLED_ROW_A3                PC3 #define                DOTLED_ROW_E                PC4 uint8 font[] = { /*--  調(diào)入了一幅圖像:這是您新建的圖像  --*/ /*--  寬度x高度=16x16  --*/ 0x00,0x00,0x00,0x00,0x08,0x38,0x18,0x44,0x08,0x44,0x08,0x04,0x08,0x08,0x08,0x10, 0x08,0x20,0x08,0x40,0x08,0x40,0x08,0x40,0x3E,0x7C,0x00,0x00,0x00,0x00,0x00,0x00 }; static void TransmitByte(uint8 byte); static void SelectRow(uint8 row); static void FlipLatchLine(void); static void TransmitByte(uint8 byte) {         uint8 i;                  for(i = 0 ; i < 8 ; i ++)         {                 if(byte & (1 << i))                 {                         DOTLED_LINE_PORT |= _BV(DOTLED_LINE_SDA);                 }                 else                 {                         DOTLED_LINE_PORT &= ~_BV(DOTLED_LINE_SDA);                 }                 //__delay_cycles(100);                 DOTLED_LINE_PORT |= _BV(DOTLED_LINE_SCKH);                 //__delay_cycles(100);                 DOTLED_LINE_PORT &= ~_BV(DOTLED_LINE_SCKH);                 //__delay_cycles(100);         } } static void SelectRow(uint8 row) {           //row -= 1;         row |= DOTLED_ROW_PIN & 0xe0;         DOTLED_ROW_PORT = row; } static void FlipLatchLine(void) {         DOTLED_LINE_PORT |= _BV(DOTLED_LINE_SCKT);         DOTLED_LINE_PORT &= ~_BV(DOTLED_LINE_SCKT); } void InitDotLedPort(void) {         DOTLED_LINE_PORT &= ~(_BV(DOTLED_LINE_SCKT) | _BV(DOTLED_LINE_SCKH));         DOTLED_LINE_PORT |= _BV(DOTLED_LINE_SDA);         DOTLED_LINE_DDR |= _BV(DOTLED_LINE_SCKT) | _BV(DOTLED_LINE_SCKH) | _BV(DOTLED_LINE_SDA);                  DOTLED_ROW_PORT |= 0x1f;         DOTLED_ROW_PORT &= 0xf0;         DOTLED_ROW_DDR |= 0x1f; } void EnableRow(boolean IsEnable) {         if(IsEnable)         {                 DOTLED_ROW_PORT &= ~_BV(DOTLED_ROW_E);         }         else         {                 DOTLED_ROW_PORT |= _BV(DOTLED_ROW_E);         } } void PrintDotLed(uint8 * buffer) {         uint8 i , tmp;                  for(i = 0 ; i < 16 ; i ++)         {                 tmp = *buffer ++;                 TransmitByte(~tmp);                 tmp = *buffer ++;                 TransmitByte(~tmp);                 SelectRow(i);                 FlipLatchLine();         } } void main(void) {         InitDotLedPort();                  EnableRow(TRUE);                  while(1)         {                 PrintDotLed(font);                 __delay_cycles(5000);         }          } //---------------------------------------------------- config.h文件 #ifndef        _CONFIG_H #define        _CONFIG_H //#define                GCCAVR #define                CPU_CYCLES        7372800L #ifndef                GCCAVR #define                _BV(bit)        (1 << (bit)) #endif #define                MSB                0X80 #define                LSB                0x01 #define                FALSE                0 #define                TRUE                1 typedef                unsigned char        uint8; typedef                unsigned int        uint16; typedef                unsigned long        uint32; typedef                unsigned char        boolean; #include <ioavr.h> #include <inavr.h> #include "dotled.h" #endif //-----

    標(biāo)簽: 16 點(diǎn)陣顯示 漢字 顯示程序

    上傳時間: 2013-11-18

    上傳用戶:mnacyf

  • 51單片機(jī)驅(qū)動步進(jìn)電機(jī)(含電路圖和C語言源程序代碼)

    51單片機(jī)驅(qū)動步進(jìn)電機(jī)(含電路圖和源程序代碼) 源程序:stepper.c stepper.hex /* * STEPPER.C * sweeping stepper's rotor cw and cww 400 steps * Copyright (c) 1999 by W.Sirichote */ #i nclude c:\mc5151io.h /* include i/o header file */ #i nclude c:\mc5151reg.h register unsigned char j,flag1,temp; register unsigned int cw_n,ccw_n; unsigned char step[8]={0X80,0xc0,0x40,0x60,0x20,0x30,0x10,0x90} #define n 400 /* flag1 mask byte 0x01 run cw() 0x02 run ccw() */

    標(biāo)簽: 51單片機(jī) 驅(qū)動 步進(jìn)電機(jī) C語言

    上傳時間: 2013-11-09

    上傳用戶:釣鰲牧馬

  • 4x4鍵盤的設(shè)計(jì)與制作

    三種方法讀取鍵值􀂄 使用者設(shè)計(jì)行列鍵盤介面,一般常採用三種方法讀取鍵值。􀂉 中斷式􀂄 在鍵盤按下時產(chǎn)生一個外部中斷通知CPU,並由中斷處理程式通過不同位址讀資料線上的狀態(tài)判斷哪個按鍵被按下。􀂄 本實(shí)驗(yàn)採用中斷式實(shí)現(xiàn)使用者鍵盤介面。􀂉 掃描法􀂄 對鍵盤上的某一行送低電位,其他為高電位,然後讀取列值,若列值中有一位是低,表明該行與低電位對應(yīng)列的鍵被按下。否則掃描下一行。􀂉 反轉(zhuǎn)法􀂄 先將所有行掃描線輸出低電位,讀列值,若列值有一位是低表明有鍵按下;接著所有列掃描線輸出低電位,再讀行值。􀂄 根據(jù)讀到的值組合就可以查表得到鍵碼。4x4鍵盤按4行4列組成如圖電路結(jié)構(gòu)。按鍵按下將會使行列連成通路,這也是見的使用者鍵盤設(shè)計(jì)電路。 //-----------4X4鍵盤程序--------------// uchar keboard(void) { uchar xxa,yyb,i,key; if((PINC&0x0f)!=0x0f) //是否有按鍵按下 {delayms(1); //延時去抖動 if((PINC&0x0f)!=0x0f) //有按下則判斷 { xxa=~(PINC|0xf0); //0000xxxx DDRC=0x0f; PORTC=0xf0; delay_1ms(); yyb=~(PINC|0x0f); //xxxx0000 DDRC=0xf0; //復(fù)位 PORTC=0x0f; while((PINC&0x0f)!=0x0f) //按鍵是否放開 { display(data); } i=4; //計(jì)算返回碼 while(xxa!=0) { xxa=xxa>>1; i--; } if(yyb==0X80) key=i; else if(yyb==0x40) key=4+i; else if(yyb==0x20) key=8+i; else if(yyb==0x10) key=12+i; return key; //返回按下的鍵盤碼 } } else return 17; //沒有按鍵按下 }

    標(biāo)簽: 4x4 鍵盤

    上傳時間: 2013-11-12

    上傳用戶:a673761058

主站蜘蛛池模板: 盐源县| 闻喜县| 山阳县| 宁陵县| 昔阳县| 德昌县| 梧州市| 射洪县| 合水县| 嘉兴市| 孝感市| 山阳县| 阆中市| 泾源县| 达日县| 古田县| 涞源县| 甘洛县| 彭阳县| 剑川县| 江都市| 资源县| 平南县| 福建省| 漯河市| 永城市| 方正县| 巴林左旗| 湘潭市| 西青区| 广德县| 卓资县| 长丰县| 奉化市| 凌源市| 海林市| 岳西县| 枣阳市| 英山县| 应城市| 中卫市|