电子星系工程pic程序.docx

上传人:b****0 文档编号:9823413 上传时间:2023-05-21 格式:DOCX 页数:39 大小:21.25KB
下载 相关 举报
电子星系工程pic程序.docx_第1页
第1页 / 共39页
电子星系工程pic程序.docx_第2页
第2页 / 共39页
电子星系工程pic程序.docx_第3页
第3页 / 共39页
电子星系工程pic程序.docx_第4页
第4页 / 共39页
电子星系工程pic程序.docx_第5页
第5页 / 共39页
电子星系工程pic程序.docx_第6页
第6页 / 共39页
电子星系工程pic程序.docx_第7页
第7页 / 共39页
电子星系工程pic程序.docx_第8页
第8页 / 共39页
电子星系工程pic程序.docx_第9页
第9页 / 共39页
电子星系工程pic程序.docx_第10页
第10页 / 共39页
电子星系工程pic程序.docx_第11页
第11页 / 共39页
电子星系工程pic程序.docx_第12页
第12页 / 共39页
电子星系工程pic程序.docx_第13页
第13页 / 共39页
电子星系工程pic程序.docx_第14页
第14页 / 共39页
电子星系工程pic程序.docx_第15页
第15页 / 共39页
电子星系工程pic程序.docx_第16页
第16页 / 共39页
电子星系工程pic程序.docx_第17页
第17页 / 共39页
电子星系工程pic程序.docx_第18页
第18页 / 共39页
电子星系工程pic程序.docx_第19页
第19页 / 共39页
电子星系工程pic程序.docx_第20页
第20页 / 共39页
亲,该文档总共39页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

电子星系工程pic程序.docx

《电子星系工程pic程序.docx》由会员分享,可在线阅读,更多相关《电子星系工程pic程序.docx(39页珍藏版)》请在冰点文库上搜索。

电子星系工程pic程序.docx

电子星系工程pic程序

#include

#include

#defineRSPINPORTBbits.RB5//DataorInstrumentSelect

#defineRWPINPORTBbits.RB4//WriteorRead

#defineEPINPORTBbits.RB3//6800modeEnablesingle

#defineINPUTPORTBbits.RB2

#definecoldPORTBbits.RB6

#definewarmPORTBbits.RB7

#defineSTSPORTAbits.RA0

#defineCSPORTAbits.RA1

#defineA0PORTAbits.RA2

#defineCEPORTAbits.RA3

#defineRCPORTAbits.RA4

voidInterruptHandlerHigh(void);

#defineucharunsignedchar//宏定义

#defineuintunsignedint

#defineK_UP0X20//定义键值

#defineK_DOWN0X21

#defineK_CLEAR0X24

#defineK_OK0X25

#defineK_ONE0X30

#defineK_FOUR0X31

#defineK_SEVEN0X32

#defineK_POINT0X33

#defineK_TWO0X34

#defineK_FIVE0X43

#defineK_EIGHT0X36

#defineK_ZERO0X37

#defineK_THREE0X38

#defineK_SIX0X40

#defineK_NINE0X41

#defineK_SET0X42

#include"key.h"

////////////////////全局变量/////////////////////////////

unsignedintTimeout;

floatTEMP_NOW=0.0;

floatTEMP_SET=21.0;

uintT_Count=0;

uintS_Count=0;

uintP_Count=0;

uintN_Count=0;

uintM_Count=1;

ucharCurrent_Temp_Display_Buffer[]={"NOW:

-23.5"};

ucharset_Temp_Display_Buffer[]={"SET:

21.0"};

intsel=0;

voidComparison();

//////////////////////定时///////////////////////////////

voidtimer0_init(void)

{

Timeout=0;

INTCON=0x20;//disableglobalandenableTMR0interrupt

INTCON2=0x84;//TMR0highpriority

RCONbits.IPEN=1;//enableprioritylevels

TMR0H=0;//cleartimer

TMR0L=0;//cleartimer

T0CON=0x82;//setuptimer0-prescaler1:

8

INTCONbits.GIEH=1;//enableinterrupts

TRISD=0;/*configurePORTDforoutput*/

PORTD=0X00;

if(Timeout==1)

{//timeout?

Timeout=0;//cleartimeoutindicor

Read_Temperature();

Display_Temperature();

N_Count=1;

}

}

//Highpriorityinterruptvector

//PIC中断标准服务程序

#pragmacodeInterruptVectorHigh=0x08//中断向量

void

InterruptVectorHigh(void)

{

_asm

gotoInterruptHandlerHigh//jumptointerruptroutine

_endasm

}

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

//Highpriorityinterruptroutine

//中断服务程序

#pragmacode

#pragmainterruptInterruptHandlerHigh

void

InterruptHandlerHigh()

{

if(INTCONbits.TMR0IF)

{//checkforTMR0overflow

INTCONbits.TMR0IF=0;//clearinterruptflag

Timeout=1;//indicatetimeout

}

}

voidComparison()

{

if(N_Count&&M_Count)

{

if(TEMP_NOW

{

warm=1;

cold=0;

}

if(TEMP_NOW>TEMP_SET)

{

cold=1;

warm=0;

}

if(TEMP_NOW==TEMP_SET)

{

cold=0;

warm=0;

}

}

}

ucharint_LM20();

voidRead_Temperature();

voidDisplay_Temperature();

voidad_convertor()

{

floattemp;

OpenADC(ADC_FOSC_32&

ADC_RIGHT_JUST&

ADC_8ANA_0REF,

ADC_RA0&

ADC_INT_OFF);

//A/D时钟源,晶振32分频率

//A/D转换结果右对齐

//A/D参考电压源,电源工作电压

//通道选择

//中断关闭,查询模式

Delay10TCYx(5);//Delayfor50TCY

ConvertADC();//Startconversion

while(BusyADC());//Waitforcompletion

temp=ReadADC();//Readresult

CloseADC();//DisableA/Dconverter

Nop();

Temp_Value[0]=temp/256;

Temp_Value[1]=temp%256;

}

voidDisplay_Temperature()

{

uchart=150,ng=0;

if((Temp_Value[1]&0xf8)==0xf8)

{

Temp_Value[1]=~Temp_Value[1];

Temp_Value[0]=~Temp_Value[0]+1;

if(Temp_Value[0]==0x00)

Temp_Value[1]++;

ng=1;

}

Display_Digit[0]=df_Table[Temp_Value[0]&0x0f];

CurrentT=((Temp_Value[0]&0xf0)>>4)|((Temp_Value[1]&0x07)<<4);

Display_Digit[3]=CurrentT/100;

Display_Digit[2]=CurrentT%100/10;

Display_Digit[1]=CurrentT%10;

Current_Temp_Display_Buffer[11]=Display_Digit[0]+'0';

Current_Temp_Display_Buffer[10]='.';

Current_Temp_Display_Buffer[9]=Display_Digit[1]+'0';

Current_Temp_Display_Buffer[8]=Display_Digit[2]+'0';

Current_Temp_Display_Buffer[7]=Display_Digit[3]+'0';

TEMP_NOW=Display_Digit[2]*10+Display_Digit[1]+Display_Digit[0]*0.1;

if(Display_Digit[3]==0)

Current_Temp_Display_Buffer[7]='';

if(Display_Digit[2]==0&&Display_Digit[3]==0)

Current_Temp_Display_Buffer[8]='';

if(ng)

{

TEMP_NOW=-(Display_Digit[2]*10+Display_Digit[1]+Display_Digit[0]*0.1);

if(Current_Temp_Display_Buffer[8]=='')

Current_Temp_Display_Buffer[8]='-';

elseif(Current_Temp_Display_Buffer[7]=='')

Current_Temp_Display_Buffer[7]='-';

else

Current_Temp_Display_Buffer[6]='-';

}

}

unsignedcharKeys_Scan();

voidset_num();

voidset();

voidDelay_key();

ucharKeys_Scan();

ucharcodeKeyCodeTable[]=

{

0xEE,0xED,0xEB,0xE7,0xDE,0xDD,0xDB,0xD7,0xBE,0xBD,0xBB,0xB7,0x7E,0x7D,0x7B,0x77

};

voidDelay_key()

{

uchari;

for(i=0;i<200;i++);

}

ucharKeys_Scan()

{

uchark,kCode;

TRISD=0B11110000;

PORTD=11111110;

kCode=PORTD;

if(kCode==KeyCodeTable[0])returnK_ONE;

elseif(kCode==KeyCodeTable[1])returnK_TWO;

elseif(kCode==KeyCodeTable[2])returnK_THREE;

elseif(kCode==KeyCodeTable[3])returnK_FOUR;

elseif(kCode==KeyCodeTable[4])returnK_FIVE;

elseif(kCode==KeyCodeTable[5])returnK_SIX;

elseif(kCode==KeyCodeTable[6])returnK_SEVEN;

elseif(kCode==KeyCodeTable[7])returnK_EIGHT;

elseif(kCode==KeyCodeTable[8])returnK_NINE;

elseif(kCode==KeyCodeTable[9])returnK_UP;

elseif(kCode==KeyCodeTable[10])returnK_DOWN;

elseif(kCode==KeyCodeTable[11])returnK_CLEAR;

elseif(kCode==KeyCodeTable[12])returnK_OK;

elseif(kCode==KeyCodeTable[13])returnK_ZERO;

elseif(kCode==KeyCodeTable[14])returnK_POINT;

elseif(kCode==KeyCodeTable[15])returnK_SET;

PORTD=11111101;

kCode=PORTD;

if(kCode==KeyCodeTable[0])returnK_ONE;

elseif(kCode==KeyCodeTable[1])returnK_TWO;

elseif(kCode==KeyCodeTable[2])returnK_THREE;

elseif(kCode==KeyCodeTable[3])returnK_FOUR;

elseif(kCode==KeyCodeTable[4])returnK_FIVE;

elseif(kCode==KeyCodeTable[5])returnK_SIX;

elseif(kCode==KeyCodeTable[6])returnK_SEVEN;

elseif(kCode==KeyCodeTable[7])returnK_EIGHT;

elseif(kCode==KeyCodeTable[8])returnK_NINE;

elseif(kCode==KeyCodeTable[9])returnK_UP;

elseif(kCode==KeyCodeTable[10])returnK_DOWN;

elseif(kCode==KeyCodeTable[11])returnK_CLEAR;

elseif(kCode==KeyCodeTable[12])returnK_OK;

elseif(kCode==KeyCodeTable[13])returnK_ZERO;

elseif(kCode==KeyCodeTable[14])returnK_POINT;

elseif(kCode==KeyCodeTable[15])returnK_SET;

PORTD=11111011;

kCode=PORTD;

if(kCode==KeyCodeTable[0])returnK_ONE;

elseif(kCode==KeyCodeTable[1])returnK_TWO;

elseif(kCode==KeyCodeTable[2])returnK_THREE;

elseif(kCode==KeyCodeTable[3])returnK_FOUR;

elseif(kCode==KeyCodeTable[4])returnK_FIVE;

elseif(kCode==KeyCodeTable[5])returnK_SIX;

elseif(kCode==KeyCodeTable[6])returnK_SEVEN;

elseif(kCode==KeyCodeTable[7])returnK_EIGHT;

elseif(kCode==KeyCodeTable[8])returnK_NINE;

elseif(kCode==KeyCodeTable[9])returnK_UP;

elseif(kCode==KeyCodeTable[10])returnK_DOWN;

elseif(kCode==KeyCodeTable[11])returnK_CLEAR;

elseif(kCode==KeyCodeTable[12])returnK_OK;

elseif(kCode==KeyCodeTable[13])returnK_ZERO;

elseif(kCode==KeyCodeTable[14])returnK_POINT;

elseif(kCode==KeyCodeTable[15])returnK_SET;

PORTD=11110111;

kCode=PORTD;

if(kCode==KeyCodeTable[0])returnK_ONE;

elseif(kCode==KeyCodeTable[1])returnK_TWO;

elseif(kCode==KeyCodeTable[2])returnK_THREE;

elseif(kCode==KeyCodeTable[3])returnK_FOUR;

elseif(kCode==KeyCodeTable[4])returnK_FIVE;

elseif(kCode==KeyCodeTable[5])returnK_SIX;

elseif(kCode==KeyCodeTable[6])returnK_SEVEN;

elseif(kCode==KeyCodeTable[7])returnK_EIGHT;

elseif(kCode==KeyCodeTable[8])returnK_NINE;

elseif(kCode==KeyCodeTable[9])returnK_UP;

elseif(kCode==KeyCodeTable[10])returnK_DOWN;

elseif(kCode==KeyCodeTable[11])returnK_CLEAR;

elseif(kCode==KeyCodeTable[12])returnK_OK;

elseif(kCode==KeyCodeTable[13])returnK_ZERO;

elseif(kCode==KeyCodeTable[14])returnK_POINT;

elseif(kCode==KeyCodeTable[15])returnK_SET;

return-1;

}

voidset_num()

{

ucharkey;

if(sel==0)

{

key=Keys_Scan();

if(K_CLEAR==key)

{

while(Keys_Scan()==K_CLEAR);

set_Temp_Display_Buffer[8]='';

set_Temp_Display_Buffer[9]='';

set_Temp_Display_Buffer[10]='';

set_Temp_Display_Buffer[11]='';

M_Count=0;

cold=0;

warm=0;

}

if(K_UP==key)

{

while(Keys_Scan()==K_UP);

if((set_Temp_Display_Buffer[11]>47)&&(set_Temp_Display_Buffer[11]<57))

{

set_Temp_Display_Buffer[11]+=1;

}

elseif(set_Temp_Display_Buffer[11]==57)

{

set_Temp_Display_Buffer[11]=48;

if((set_Temp_Display_Buffer[9]>47)&&(set_Temp_Display_Buffer[9]<57))

{

set_Temp_Display_Buffer[9]+=1;

}

elseif(set_Temp_Display_Buffer[9]==57)

{

set_Temp_Display_Buffer[9]=48;

if((set_Temp_Display_Buffer[8]>47)&&(set_Temp_Display_Buffer[8]<57))

{

set_Temp_Display_Buffer[8]+=1;

}

elseif(set_Temp_Display_Buffer[8]==57)

{

set_Temp_Display_Buffer[8]=48;

}

}

}

}

if(K_DOWN==key)

{

while(Keys_Scan()==K_DOWN);

if((set_Temp_Display_Buffer[11]>48)&&(set_Temp_Display_Buffer[11]<58))

{

set_Temp_Display_Buffer[11]-=1;

}

elseif(set_Temp_Display_Buffer[11]==48)

{

set_Temp_Display_Buffer[11]=57;

if((set_Temp_Display_Buffer[9]>48)&&(set_Temp_Display_Buffer[9]<58))

{

set_Temp_Display_Buffer[9]-=1;

}

elseif(set_Temp_Display_Buffer[9]==48)

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2