×
单片机 > 单片机程序设计 > 详情

PIC16F877控制数码显示按键按下次数C语言程序

发布时间:2020-05-16 发布时间:
|

//数码管动态扫描,k1按下,数字+1,K2按下,数字-1,每次按下的同时,听到DD二声。


#include


#define uchar unsigned char


#define uint unsigned int


__CONFIG(0x3B31);


uint a;


const  uchar aa[]=


{0xc0,0xf9,0xa4,0xb0,0x99,


0x92,0x82,0xf8,0x80,0x90};


void delay(uchar x)//延时函数


{


uchar a;


for(;x>0;x--)


for(a=220;a>0;a--);


}


void init()//初始化


{


TRISC=0xFF;


TRISD=0x00;


TRISB=0x00;


PORTD=0xff;


PORTC=0xFF;


}


void ss(uchar a,uchar b,uchar c)//数码管显示部份


{


PORTB=aa[a];


RD3=0;


delay(5);


RD3=1;


PORTB=aa;


RD4=0;


delay(5);


RD4=1;


PORTB=aa[c];


RD5=0;


delay(5);


RD5=1;


}


void kk()//按制扫描程序


{


if(RC0==0)//看k1是否按下


{


delay(5);


if(RC0==0)


{


a++;


if(a==1000)


{a=0;}


}


while(!RC0)


{


ss(a/100,a%100/10,a%10);


RD6=0;


}


RD6=1;


}


if(RC1==0)//看K2是否按下


{


delay(5);


if(RC1==0)


{


a--;


if(a==0)


{a=999;}


}


while(!RC1)


{


ss(a/100,a%100/10,a%10);


RD6=0;


}


RD6=1;


}


}


void main()


{


init();


while(1)


{


kk();


ss(a/100,a%100/10,a%10);


}


}




『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
C51 特殊功能寄存器SFR的名称和地址