您的位置 首页 解答

PIC单片机显现程序共享

PIC单片机显示程序分享-#defineBIAS0X50//1/2偏压,4背极

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

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

#defineTIMERDIS0X08//时基输出禁能

#defineSYSEN0X02//打开系统时钟

#defineLCDON0X06//打开偏压发生器

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

#defineKEY_UPRB7//

#defineKEY_DOWNRB6//

#defineKEY_SETRB5//

#include//

#include//

#include//

#defineucharunsignedchar//

#defineuintunsignedint//

//—————————————

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

#defineRC2560X30//体系时钟挑选为片内RC振荡器

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

#defineTIMERDIS0X08//时基输出禁能

#defineSYSEN0X02//翻开体系时钟

#defineLCDON0X06//翻开偏压发生器

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

#defineKEY_UPRB7//

#defineKEY_DOWNRB6//

#defineKEY_SETRB5//

P%&&&&&%单片机显现程序共享

//————————————–

//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();//

}

}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/changshang/jieda/345982.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部