اطلاعیه

Collapse
No announcement yet.

برنامه اسکن سگمنت

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    برنامه اسکن سگمنت

    میخوام برنامه رو طوری تغییر بدم که بشه 4 رقم رو اسکن کرد وبتونم هر عدد چهار رقمی رو روی سگمنت نشان بدم
    الان در این برنامه یک عدد میتونه متغیر باشه و بغیه ثابتند برای اینکه هر 4 دد متغیر باشه چه تغییراتی در برنامه بدم
    /************************************************** ***
    برنامه اسکن سون سگمنت 4 تایی توسط کیبرد4*4
    این برنامه یک عدد یک رقمی را اسکن میکند

    This program was produced by the
    CodeWizardAVR V1.24.4 Standard
    Automatic Program Generator
    © Copyright 1998-2004 Pavel Haiduc, HP InfoTech s.r.l.
    http://www.hpinfotech.com
    e-mailffice@hpinfotech.com

    Project :
    Version :
    Date : 1/12/2008
    Author : Mahmood
    Company : AVR
    Comments:


    Chip type : ATmega8
    Program type : Application
    Clock frequency : 1.000000 MHz
    Memory model : Small
    External SRAM size : 0
    Data Stack size : 256
    ************************************************** ***/
    #include <mega16.h>
    #include <delay.h>
    flash char anod[4]={(255-1),(255-2),(255-4),(255-8)};
    flash char cathod[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x9 0};
    char n;

    unsigned char scan_key(void);
    unsigned char code[4][4]={{7,4,1,0},{8,5,2,0},{9,6,3,0},{0,0,0,0}};

    void main(void)
    {
    char j,a,b,c,d;

    unsigned char seg[4];
    unsigned char key1;
    DDRC=255;DDRD=255;PORTC=0;PORTD=0;

    seg[0]=0;
    seg[1]=0;
    seg[2]=0;
    seg[3]=0;

    PORTA=0x00;
    DDRA=0xf0;
    while(1){
    seg[0]=a;
    seg[1]=b;
    seg[2]=c;
    seg[3]=d;
    for(j=0;j<4;j++)
    {
    PORTC=anod[j];
    PORTD=~cathod[seg[j]];
    delay_ms(2);
    PORTC=255;
    delay_us(10);
    }
    key1=scan_key();


    if(key1!=0xff)
    {
    a=0;b=0;c=0;d=key1;
    }
    }
    }
    unsigned char scan_key(void)
    {
    unsigned char i,data,num_key1,temp;
    num_key1=0xff;
    temp=0x70;
    for(i=0;i<4;i++){
    PORTA=temp;
    delay_ms(5);
    data=PINA & 0x0f;
    if(data==0x07)
    num_key1=code[0][i];
    if(data==0x0B)
    num_key1=code[1][i];
    if(data==0x0D)
    num_key1=code[2][i];
    if(data==0x0E)
    num_key1=code[3][i];
    temp= ((temp>>=1) | 0x80) & 0xF0 ;

    }
    return num_key1;
    }

لطفا صبر کنید...
X