PIC单片机显示程序分享

PIC单片机显示程序分享,第1张

#include//

#include//

#include//

#defineucharunsignedchar//

#defineuintunsignedint//

//---------------------------------------

#defineBIAS0X50//1/2偏压,4背极

#defineRC2560X30//系统时钟选择为片内RC振荡器

#defineWDTDIS10X0A//禁止WDT溢出标志输出

#defineTIMERDIS0X08//时基输出禁能

#defineSYSEN0X02//打开系统时钟

#defineLCDON0X06//打开偏压发生器

#defineSYSDIS0X00//关闭系统时钟和偏压发生器

#defineKEY_UPRB7//

#defineKEY_DOWNRB6//

#defineKEY_SETRB5//

PIC单片机显示程序分享,PIC单片机显示程序分享,第2张

//--------------------------------------

//staTIcunsignedcharKeyV,TempKeyV;//键值

unsignedcharbuf0,buf1,buf2,buf3,buff;//

unsignedcharbuf[4];//

unsignedchark,data,sreg,disppoint;//

unsignedinTI;//

consttable[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xd8,0x80,0x90};//

//*********************************

/*延时函数*/

//*********************************

voiddelay_10ms()//

{uintj;//

for(j=0;j《1000;j++)//

{;}//

}//

//*********************************

voiddelay_1ms()//

{uintj;//

for(j=0;j《100;j++)//

{;}//

}//

//**********************************

voiddelay1s()//延时1S

{

uchari;//

uintj;//

for(i=0;i《10;i++)//

for(j=0;j《1300;j++);//

}//

//**********************************

//按键等待程序

//**********************************

voidkeywait()//

{

while((PORTB&0xF0)!=0xF0)//

{;}//

}//

//********************************

//********************************

voidbuf_iniTIal()//

{

buf0=0x00;//

buf[0]=buf0;//

buf1=0x00;//

buf[1]=buf1;//

buf2=0x00;//

buf[2]=buf2;//

buf3=0x00;//

buf[3]=buf3;//

sreg=0x00;//

}//

//**********************************

voidput_num(charc)

{

PORTC=table[c&0x0f];//

}

//**********************************

voiddisplay()//

{

disppoint=0;//

put_num(buf[disppoint]);//

RC0=0;//

delay_1ms();//

RC0=1;//

disppoint++;//

put_num(buf[disppoint]);//

RC1=0;//

delay_1ms();//

RC1=1;//

disppoint++;//

put_num(buf[disppoint]);//

RC2=0;//

delay_1ms();//

RC2=1;//

disppoint++;//

put_num(buf[disppoint]);//

RC3=0;//

delay_1ms();//

RC3=1;//

}

//**********************************

//AD转换初始化子程序//

//*********************************

voidad_initial()//

{

ADCON0=0B01001001;//fosc/8RA1/AN1ADON=1

ADCON1=0B00000010;//AN0-AN4=AVREF=VDD

ADIE=1;//

PEIE=1;//

}

//**********************************

//按键处理子程序//

//**********************************

voidkeywork()//

{

if((PORTB&0xFF)!=0xFF)//如果P1.2--P1.4不为全1,可能有键按下

{

delay_10ms();//延时去抖动

if((PORTB&0xFF)!=0xFF)//重读P1.2-P1.4位,若还是不全为1,定有键按下

{

if((PORTB&0xF0)!=0xF0)//重读P1.2-P1.4位,若还是不全为1,定有键按下

{

//-------------------------------------------

if(KEY_SET==0)//按下SET键,如在SET状态就退出,否则进入

{

RC4=!RC4;

keywait();

return;

}

elseif(KEY_DOWN==0)//按下DOWN键

{

RC3=!RC3;

keywait();

return;

}

elseif(KEY_UP==0)//按下UP键

{

RC2=!RC2;

keywait();

return;

}

}

}

}

}

//--------------------------------------

//--------------------------------------

//Tmr0中断程序

voidinterruptclkint(void)

{

TMR0=0x13;//

T0IF=0;//

CLRWDT();//

sreg=sreg+1;//

if(sreg==40)//

{//

sreg=0;//

buf[3]++;

if(buf[3]》9)

{buf[3]=0;

buf[2]++;

if(buf[2]》9)

{buf[2]=0;

buf[1]++;

if(buf[1]》9)

{buf[1]=0;

buf[0]++;

if(buf[0]》9)buf[0]=0;

}

}

}

}

}

/*******************************主函数******************************/

main()//主函数

{

OPTION=0B00000000;//

STATUS=0X00;//

ADCON1=0B00000000;//

INTCON=0X00;//

PIE1=0B00000000;//

PIR1=0X00;//

T1CON=0B00000000;//

T0CS=0;//

PSA=1;//

T0IF=0;//

T0IE=1;//

TRISB=0XFF;//

TRISC=0X00;//

PORTB=0XFF;//

PORTC=0X00;//

buf_initial();//

while(1)//

{

keywork();//

}

}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2582935.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-08
下一篇 2022-08-08

发表评论

登录后才能评论

评论列表(0条)

保存