电子星系工程pc程序_第1页
电子星系工程pc程序_第2页
电子星系工程pc程序_第3页
电子星系工程pc程序_第4页
电子星系工程pc程序_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、文档来源为 :从网络收集整理.word 版本可编辑.欢迎下载支持#include<p18f452.h>#include <delays.h># define RSPIN PORTBbits.RB5 /Data or Instrument Select# define RWPIN PORTBbits.RB4 /Write or Read# define EPIN PORTBbits.RB3 /6800 mode Enable single# define INPUT PORTBbits.RB2# define cold PORTBbits.RB6# define warm

2、 PORTBbits.RB7# define STS PORTAbits.RA0# define CS PORTAbits.RA1# define A0 PORTAbits.RA2# define CE PORTAbits.RA3# define RC PORTAbits.RA4void InterruptHandlerHigh (void);# define uchar unsigned char居定义# define uint unsigned int#defineK_UP0X20/定义键值#defineK_DOWN0X21#defineK_CLEAR0X24#defineK_OK0X25

3、#defineK_ONE0X30#defineK_FOUR0X31#defineK_SEVEN0X32#defineK_POINT0X33#defineK_TWO0X34#defineK_FIVE0X43#defineK_EIGHT0X36#defineK_ZERO0X37#defineK_THREE0X38#defineK_SIX0X40#defineK_NINE0X41#defineKSET0X42#include"key.h"/ 全局变量 / unsigned int Timeout;float TEMP_NOW=0.0;float TEMP_SET=21.0;uin

4、t T_Count=0;uint S_Count=0;uint P_Count=0;uint N_Count=0;uint M_Count=1;uchar Current_Temp_Display_Buffer=" NOW:-23.5"uchar set_Temp_Display_Buffer= " SET: 21.0"int sel=0;void Comparison();/ 定时 /Timeout = 0;INTCON = 0x20;INTCON2 = 0x84;RCONbits.IPEN = 1;TMR0H = 0;TMR0L = 0;T0CON

5、= 0x82;INTCONbits.GIEH = 1;void timer0_init(void)/disable global and enable TMR0 interrupt/TMR0 high priority/enable priority levels/clear timer/clear timer/set up timer0 - prescaler 1:8/enable interruptsTRISD = 0; /* configure PORTD for output */ PORTD=0X00;if (Timeout = 1)Timeout = 0;/timeout?/cle

6、ar timeout indicorRead_Temperature();Display_Temperature() ;N_Count=1;/ High priority interrupt vector/PIC 中断标准服务程序#pragma code InterruptVectorHigh = 0x08 /中断向量voidInterruptVectorHigh (void)_asmgoto InterruptHandlerHigh /jump to interrupt routine_endasm/ High priority interrupt routine/中断服务程序#pragma

7、 code#pragma interrupt InterruptHandlerHighvoidInterruptHandlerHigh ()if (INTCONbits.TMR0IF)/check for TMR0 overflowINTCONbits.TMR0IF = 0;/clear interrupt flagTimeout = 1;/indicate timeoutvoid Comparison()if(N_Count&&M_Count)if(TEMP_NOW<TEMP_SET)warm=1;cold=0;if(TEMP_NOW>TEMP_SET)cold=

8、1;warm=0;if(TEMP_NOW=TEMP_SET)cold=0;warm=0;uchar int_LM20();void Read_Temperature();void Display_Temperature();void ad_convertor()float temp;OpenADC( ADC_FOSC_32 &ADC_RIGHT_JUST &ADC_8ANA_0REF,ADC_RA0 &ADC_INT_OFF );/ A/D 时钟源 ,晶振 32 分频率/ A/D 转换结果右对齐/ A/D 参考电压源,电源工作电压/ 通道选择/ 中断关闭,查询模式Del

9、ay10TCYx( 5 ); / Delay for 50TCYConvertADC(); / Start conversionwhile( BusyADC() ); / Wait for completiontemp = ReadADC(); / Read resultCloseADC(); / Disable A/D converterNop();Temp_Value0=temp/256;Temp_Value1=temp%256;void Display_Temperature()uchar t = 150, ng = 0;if(Temp_Value1&0xf8)=0xf8)Tem

10、p_Value1 = Temp_Value1;Temp_Value0 = Temp_Value0+1;if(Temp_Value0=0x00)Temp_Value1+;ng = 1;Display_Digit0 = df_TableTemp_Value0&0x0f;CurrentT = (Temp_Value0&0xf0)>>4) | (Temp_Value1&0x07)<<4);Display_Digit3 = CurrentT/100;Display_Digit2 = CurrentT%100/10;Display_Digit1 = Curr

11、entT%10;Current_Temp_Display_Buffer11 = Display_Digit0 + '0'Current_Temp_Display_Buffer10 = '.'Current_Temp_Display_Buffer9 = Display_Digit1 + '0'Current_Temp_Display_Buffer8 = Display_Digit2 + '0'Current_Temp_Display_Buffer7 = Display_Digit3 + '0'TEMP_NOW=Dis

12、play_Digit2*10+Display_Digit1+Display_Digit0*0.1 if(Display_Digit3 = 0)Current_Temp_Display_Buffer7 = ' 'if(Display_Digit2 = 0&&Display_Digit3=0) Current_Temp_Display_Buffer8 = ' 'if(ng)TEMP_NOW=-(Display_Digit2*10+Display_Digit1+Display_Digit0*0.1); if(Current_Temp_Display_B

13、uffer8 = ' ')Current_Temp_Display_Buffer8 = '-'else if(Current_Temp_Display_Buffer7 = ' ')Current_Temp_Display_Buffer7 = '-'elseCurrent_Temp_Display_Buffer6unsigned char Keys_Scan();void set_num();void set();void Delay_key();uchar Keys_Scan();uchar code KeyCodeTable=

14、0xEE,0xED,0xEB,0xE7,0xDE,0xDD,0xDB,0xD7,0xBE,0xBD,0xBB,0xB7,0x7E ,0x7D,0x7B,0x77;void Delay_key()uchar i;for(i=0;i<200;i+);uchar Keys_Scan()uchar k,kCode;TRISD=0B;PORTD=;kCode=PORTD;if(kCode = KeyCodeTable0) return K_ONE;else if(kCode = KeyCodeTable1) return K_TWO;else if(kCode = KeyCodeTable2) r

15、eturn K_THREE;else if(kCode = KeyCodeTable3) return K_FOUR;else if(kCode = KeyCodeTable4) return K_FIVE;else if(kCode = KeyCodeTable5) return K_SIX;else if(kCode = KeyCodeTable6) return K_SEVEN;else if(kCode = KeyCodeTable7) return K_EIGHT;else if(kCode = KeyCodeTable8) return K_NINE;else if(kCode =

16、 KeyCodeTable9) return K_UP;else if(kCode = KeyCodeTable10) return K_DOWN;else if(kCode = KeyCodeTable11) return K_CLEAR;else if(kCode = KeyCodeTable12) return K_OK;else if(kCode = KeyCodeTable13) return K_ZERO;else if(kCode = KeyCodeTable14) return K_POINT;else if(kCode = KeyCodeTable15) return K_S

17、ET;PORTD=;kCode=PORTD;if(kCode = KeyCodeTable0) return K_ONE;else if(kCode = KeyCodeTable1) return K_TWO;else if(kCode = KeyCodeTable2) return K_THREE;else if(kCode = KeyCodeTable3) return K_FOUR;else if(kCode = KeyCodeTable4) return K_FIVE;else if(kCode = KeyCodeTable5) return K_SIX;else if(kCode =

18、 KeyCodeTable6) return K_SEVEN;else if(kCode = KeyCodeTable7) return K_EIGHT;else if(kCode = KeyCodeTable8) return K_NINE;else if(kCode = KeyCodeTable9) return K_UP;else if(kCode = KeyCodeTable10) return K_DOWN;else if(kCode = KeyCodeTable11) return K_CLEAR;else if(kCode = KeyCodeTable12) return K_O

19、K;else if(kCode = KeyCodeTable13) return K_ZERO;else if(kCode = KeyCodeTable14) return K_POINT;else if(kCode = KeyCodeTable15) return K_SET;PORTD=;kCode=PORTD;if(kCode = KeyCodeTable0) return K_ONE;else if(kCode = KeyCodeTable1) return K_TWO;else if(kCode = KeyCodeTable2) return K_THREE;else if(kCod

20、e = KeyCodeTable3) return K_FOUR;else if(kCode = KeyCodeTable4) return K_FIVE;else if(kCode = KeyCodeTable5) return K_SIX;else if(kCode = KeyCodeTable6) return K_SEVEN;else if(kCode = KeyCodeTable7) return K_EIGHT;else if(kCode = KeyCodeTable8) return K_NINE;else if(kCode = KeyCodeTable9) return K_U

21、P;else if(kCode = KeyCodeTable10) return K_DOWN;else if(kCode = KeyCodeTable11) return K_CLEAR;else if(kCode = KeyCodeTable12) return K_OK;else if(kCode = KeyCodeTable13) return K_ZERO;else if(kCode = KeyCodeTable14) return K_POINT;else if(kCode = KeyCodeTable15) return K_SET;PORTD=;kCode=PORTD;if(k

22、Code = KeyCodeTable0) return K_ONE;else if(kCode = KeyCodeTable1) return K_TWO;else if(kCode = KeyCodeTable2) return K_THREE;else if(kCode = KeyCodeTable3) return K_FOUR;else if(kCode = KeyCodeTable4) return K_FIVE;else if(kCode = KeyCodeTable5) return K_SIX;else if(kCode = KeyCodeTable6) return K_S

23、EVEN;else if(kCode = KeyCodeTable7) return K_EIGHT;else if(kCode = KeyCodeTable8) return K_NINE;else if(kCode = KeyCodeTable9) return K_UP;else if(kCode = KeyCodeTable10) return K_DOWN;else if(kCode = KeyCodeTable11) return K_CLEAR;else if(kCode = KeyCodeTable12) return K_OK;else if(kCode = KeyCodeT

24、able13) return K_ZERO;else if(kCode = KeyCodeTable14) return K_POINT;else if(kCode = KeyCodeTable15) return K_SET;return -1;void set_num()uchar key; if(sel=0) key = Keys_Scan(); if(K_CLEAR = key) while(Keys_Scan() = K_CLEAR); set_Temp_Display_Buffer8 =' ' set_Temp_Display_Buffer9 =' '

25、; set_Temp_Display_Buffer10=' ' set_Temp_Display_Buffer11=' ' M_Count=0;cold=0;warm=0;if(K_UP = key)while(Keys_Scan() = K_UP);if(set_Temp_Display_Buffer11>47)&&(set_Temp_Display_Buffer11<57) set_Temp_Display_Buffer11+=1;else if(set_Temp_Display_Buffer11=57)set_Temp_Disp

26、lay_Buffer11=48;if(set_Temp_Display_Buffer9>47)&&(set_Temp_Display_Buffer9<57)set_Temp_Display_Buffer9+=1;else if(set_Temp_Display_Buffer9=57)set_Temp_Display_Buffer9=48;if(set_Temp_Display_Buffer8>47)&&(set_Temp_Display_Buffer8<57)set_Temp_Display_Buffer8+=1;else if(set_

27、Temp_Display_Buffer8=57)set_Temp_Display_Buffer8=48;if(K_DOWN = key)while(Keys_Scan() = K_DOWN);if(set_Temp_Display_Buffer11>48)&&(set_Temp_Display_Buffer11<58)set_Temp_Display_Buffer11-=1;else if(set_Temp_Display_Buffer11=48)set_Temp_Display_Buffer11=57;if(set_Temp_Display_Buffer9>

28、48)&&(set_Temp_Display_Buffer9<58) set_Temp_Display_Buffer9-=1;else if(set_Temp_Display_Buffer9=48)set_Temp_Display_Buffer9=57;if(set_Temp_Display_Buffer8>48)&&(set_Temp_Display_Buffer8<58) set_Temp_Display_Buffer8-=1;else if(set_Temp_Display_Buffer8=48)set_Temp_Display_Buff

29、er8=57;if(K_ONE = key)while(Keys_Scan() = K_ONE);set_Temp_Display_Buffer11='1'sel+;if(K_TWO = key) while(Keys_Scan() = K_TWO); set_Temp_Display_Buffer11='2' sel+;if(K_THREE = key)while(Keys_Scan() = K_THREE); set_Temp_Display_Buffer11='3' sel+;if(K_FOUR = key)while(Keys_Scan(

30、) = K_FOUR); set_Temp_Display_Buffer11='4' sel+;if(K_FIVE = key)while(Keys_Scan() = K_FIVE);set_Temp_Display_Buffer11='5'sel+;if(K_SIX = key)while(Keys_Scan() = K_SIX);set_Temp_Display_Buffer11='6' sel+;if(K_SEVEN = key)while(Keys_Scan() = K_SEVEN); set_Temp_Display_Buffer11=

31、'7' sel+;if(K_EIGHT = key)while(Keys_Scan() = K_EIGHT);set_Temp_Display_Buffer11='8'sel+;if(K_NINE = key)while(Keys_Scan() = K_NINE);set_Temp_Display_Buffer11='9'sel+;if(K_ZERO = key)while(Keys_Scan() = K_ZERO);set_Temp_Display_Buffer11='0'sel+;if(K_OK = key)while(Key

32、s_Scan() = K_OK);TEMP_SET=(set_Temp_Display_Buffer8-48)*10+(set_Temp_Display_Buffer 9-48)+(set_Temp_Display_Buffer11-48)*0.1;sel=0;M_Count=1;if(sel=1)key = Keys_Scan();if(K_CLEAR = key)while(Keys_Scan() = K_CLEAR);set_Temp_Display_Buffer8 =' 'set_Temp_Display_Buffer9 =' 'set_Temp_Dis

33、play_Buffer10=' 'set_Temp_Display_Buffer11=' 'M_Count=0;cold=0;warm=0;sel=0;if(K_ONE = key)while(Keys_Scan() = K_ONE);set_Temp_Display_Buffer10=set_Temp_Display_Buffer11 ;set_Temp_Display_Buffer11='1'sel+;if(K_TWO = key) while(Keys_Scan() = K_TWO);set_Temp_Display_Buffer10=se

34、t_Temp_Display_Buffer11 ;set_Temp_Display_Buffer11='2'sel+;if(K_THREE = key) while(Keys_Scan() = K_THREE);set_Temp_Display_Buffer10=set_Temp_Display_Buffer11 ;set_Temp_Display_Buffer11='3'sel+;if(K_FOUR = key)while(Keys_Scan() = K_FOUR);set_Temp_Display_Buffer10=set_Temp_Display_Buff

35、er11 ;set_Temp_Display_Buffer11='4'sel+;if(K_FIVE = key)while(Keys_Scan() = K_FIVE);set_Temp_Display_Buffer10=set_Temp_Display_Buffer11 ;set_Temp_Display_Buffer11='5'sel+;if(K_SIX = key)while(Keys_Scan() = K_SIX);set_Temp_Display_Buffer10=set_Temp_Display_Buffer11 ;set_Temp_Display_B

36、uffer11='6'sel+;if(K_SEVEN = key)while(Keys_Scan() = K_SEVEN);set_Temp_Display_Buffer10=set_Temp_Display_Buffer11 ;set_Temp_Display_Buffer11='7'sel+;if(K_EIGHT = key)while(Keys_Scan() = K_EIGHT);set_Temp_Display_Buffer10=set_Temp_Display_Buffer11 ;set_Temp_Display_Buffer11='8'

37、;sel+;if(K_NINE = key)while(Keys_Scan() = K_NINE);set_Temp_Display_Buffer10=set_Temp_Display_Buffer11 ;set_Temp_Display_Buffer11='9'sel+;if(K_ZERO = key) while(Keys_Scan() = K_ZERO);set_Temp_Display_Buffer10=set_Temp_Display_Buffer11 ;set_Temp_Display_Buffer11='0'sel+;if(sel=2)key =

38、Keys_Scan();if(K_CLEAR = key)while(Keys_Scan() = K_CLEAR);set_Temp_Display_Buffer8 =' 'set_Temp_Display_Buffer9 =' 'set_Temp_Display_Buffer10=' 'set_Temp_Display_Buffer11=' 'M_Count=0;cold=0;warm=0;sel=0;if(K_POINT = key) while(Keys_Scan() = K_POINT);set_Temp_Display_

39、Buffer9=set_Temp_Display_Buffer10 ;set_Temp_Display_Buffer10=set_Temp_Display_Buffer11 ;set_Temp_Display_Buffer11='.'sel+;if(sel=3)key = Keys_Scan();if(K_CLEAR = key)while(Keys_Scan() = K_CLEAR);set_Temp_Display_Buffer8 =' 'set_Temp_Display_Buffer9 =' 'set_Temp_Display_Buffer

40、10=' 'set_Temp_Display_Buffer11=' 'M_Count=0;cold=0;warm=0;sel=0;if(K_ONE = key)while(Keys_Scan() = K_ONE);set_Temp_Display_Buffer8=set_Temp_Display_Buffer9 ;set_Temp_Display_Buffer9=set_Temp_Display_Buffer10 ;set_Temp_Display_Buffer10=set_Temp_Display_Buffer11 ;set_Temp_Display_Buff

41、er11='1'sel+;if(K_TWO = key) while(Keys_Scan() = K_TWO);set_Temp_Display_Buffer8=set_Temp_Display_Buffer9 ;set_Temp_Display_Buffer9=set_Temp_Display_Buffer10 ;set_Temp_Display_Buffer10=set_Temp_Display_Buffer11 ;set_Temp_Display_Buffer11='2'sel+;if(K_THREE = key) while(Keys_Scan() =

42、K_THREE);set_Temp_Display_Buffer8=set_Temp_Display_Buffer9 ;set_Temp_Display_Buffer9=set_Temp_Display_Buffer10 ;set_Temp_Display_Buffer10=set_Temp_Display_Buffer11 ;set_Temp_Display_Buffer11='3'sel+;if(K_FOUR = key) while(Keys_Scan() = K_FOUR);set_Temp_Display_Buffer8=set_Temp_Display_Buffer

43、9 ;set_Temp_Display_Buffer9=set_Temp_Display_Buffer10 ;set_Temp_Display_Buffer10=set_Temp_Display_Buffer11 ;set_Temp_Display_Buffer11='4'sel+;if(K_FIVE = key)while(Keys_Scan() = K_FIVE);set_Temp_Display_Buffer8=set_Temp_Display_Buffer9 ;set_Temp_Display_Buffer9=set_Temp_Display_Buffer10 ;set

44、_Temp_Display_Buffer10=set_Temp_Display_Buffer11 ;set_Temp_Display_Buffer11='5'sel+;if(K_SIX = key)while(Keys_Scan() = K_SIX);set_Temp_Display_Buffer8=set_Temp_Display_Buffer9 ;set_Temp_Display_Buffer9=set_Temp_Display_Buffer10 ;set_Temp_Display_Buffer10=set_Temp_Display_Buffer11 ; set_Temp_

45、Display_Buffer11='6' sel+;if(K_SEVEN = key) while(Keys_Scan() = K_SEVEN);set_Temp_Display_Buffer8=set_Temp_Display_Buffer9 ;set_Temp_Display_Buffer9=set_Temp_Display_Buffer10 ;set_Temp_Display_Buffer10=set_Temp_Display_Buffer11 ;set_Temp_Display_Buffer11='7'sel+;if(K_EIGHT = key) whi

46、le(Keys_Scan() = K_EIGHT);set_Temp_Display_Buffer8=set_Temp_Display_Buffer9 ;set_Temp_Display_Buffer9=set_Temp_Display_Buffer10 ;set_Temp_Display_Buffer10=set_Temp_Display_Buffer11 ;set_Temp_Display_Buffer11='8'sel+;if(K_NINE = key)while(Keys_Scan() = K_NINE);set_Temp_Display_Buffer8=set_Tem

47、p_Display_Buffer9 ;set_Temp_Display_Buffer9=set_Temp_Display_Buffer10 ;set_Temp_Display_Buffer10=set_Temp_Display_Buffer11 ;set_Temp_Display_Buffer11='9'sel+;if(K_ZERO = key)while(Keys_Scan() = K_ZERO);set_Temp_Display_Buffer8=set_Temp_Display_Buffer9 ;set_Temp_Display_Buffer9=set_Temp_Displ

48、ay_Buffer10 ;set_Temp_Display_Buffer10=set_Temp_Display_Buffer11 ;set_Temp_Display_Buffer11='0'sel+;if(sel=4)key = Keys_Scan();if(K_CLEAR = key)while(Keys_Scan() = K_CLEAR);set_Temp_Display_Buffer8 =' 'set_Temp_Display_Buffer9 =' 'set_Temp_Display_Buffer10=' 'set_Temp

49、_Display_Buffer11=' 'M_Count=0;cold=0;warm=0;sel=0;if(K_OK = key)while(Keys_Scan() = K_OK);TEMP_SET=(set_Temp_Display_Buffer8-48)*10+(set_Temp_Display_Buffer9-48)+(set_Temp_Display_Buffer11-48)*0.1;sel=0;M_Count=1;/* void set()uchar key;key = Keys_Scan();if(K_SET = key)while(Keys_Scan() = K_

50、SET);S_Count=1;M_Count=0;cold=0;warm=0;set_Temp_Display_Buffer8 =' 'set_Temp_Display_Buffer9 =' 'set_Temp_Display_Buffer10=' 'set_Temp_Display_Buffer11=' 'if(K_UP = key)while(Keys_Scan() = K_UP);if(K_DOWN = key)while(Keys_Scan() = K_DOWN);if(S_Count)set_num(); */void

51、lcd_wait_busy(void)/为读状态做准备/选择指令寄存器/选择读/使能线电平变化TRISCbits.TRISC7=1;RSPIN=0;RWPIN=1;EPIN=1;while(PORTCbits.RC7=1);/读忙状态,不忙时退出EPIN=0;/恢复使能线电平TRISCbits.TRISC7=0;/名称 : 1602 写命令函数/void lcd_write_com(unsigned char combuf)RSPIN=0;RWPIN=0;PORTC=combuf;EPIN=1;口Delay1TCY();EPIN=0;/选择指令寄存器/选择写/ 把命令字送入RC/使能线电平变化

52、, 命令送入1602 的 8 位数据/恢复使能线电平/名称 : 1602 写命令函数(带忙检测)/void lcd_write_com_busy(unsigned char combuf) lcd_wait_busy();/调用忙检测函数lcd_write_com(combuf); /调用写命令函数/名称 : 1602 写数据函数(带忙检测)/void lcd_write_data(unsigned char databuf) lcd_wait_busy(); /调用忙检测函数RSPIN=1;RWPIN=0;PORTC=databuf;EPIN=1;/选择数据寄存器/选择写/把数据字送入P2/使能线电平变化,命令送入 1602 的 8 位数据Delay1TCY();EPIN=0;/恢复使能线电平/名称 : 1602 显示地址写函数/ void lcd_write_address(unsigned char x,unsigned char y) x&=0x0f;/ 列地址限制在0-15y&=0x01;/行地址限制在0-1/第一行的列地址写入/第二行的列地址写入if(y=0x00)lcd_write

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论