⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 heat.lst

📁 用pic18fxx8单片机和热敏电阻实现温度的测量
💻 LST
字号:
     1: //;*************************************************

     2: //;* heat.c                                     **

     3: //;*************************************************

     4: //;* 本程序为热敏电阻输入处理模块程序

     5: //;* 将温度值在LCD特定位置显示

     6: //;* 占用I/O     RA1,RB5,RB4,RB3

     7: //;* 使用RAM

     8: //;* 程序包括:

     9: //;*   - tempdeal    热敏电阻输入处理子程序

    10: //;*   - heattab     温度值校准表

    11: //;*

    12: //;* 入口参数    无

    13: //;* 出口参数    TempH,TempL  (温度值)

    14: //;*************************************************

    15: #include  <pic18.h>       // ;定义所用单片机的头文件

    16: #define  TSRCLK  TRISB5

    17: #define  TRCLK   TRISB4

    18: #define  TSER    TRISB3

    19: #define  SRCLK   RB5

    20: #define  RCLK    RB4

    21: #define  SER     RB3

    22: #define  ADGO    GODONE

    23: 

    24: 

    25: void preled(void)

    26: {TSRCLK=0;

    27:  TRCLK=0;

    28:  TSER=0;

    29:  SRCLK=0;

    30:  RCLK=0;

    31:  SER=0;

    32: }

    33: void moniled (char led_data)

    34: {  //MONILED;     入口参数LED_DATA,需要为

    35:   //;芯片全部在时钟上升沿完成动作,故需在低电平期间完成数据的变化。先发送高位

    36:      char i=8;

    37:      for(i=8;i!=0;i--)

    38:   {if(led_data&0x80)

    39:     SER=1;

    40:    else

    41:     SER=0;

    42:    led_data<=1;

    43:    asm("nop");

    44:    SRCLK=1;

    45:    asm("nop");

    46:    SRCLK=0;

    47:   }

    48:     RCLK=0;

    49:     asm("nop");

    50:     RCLK=1;

    51:     RCLK=0;

    52: }

    53: 

    54: void delay(unsigned int i)

    55: {

    56:  while(i)

    57:     {   NOP();

    58:         --i;

    59:     }

    60:  }

    61: 

    62: void iniheat()

    63: {

    64:  ADCON1=0x0D;

    65:  ADCON0=0x5;

    66:  ADCON2=0X21;

    67: 

    68: }

    69: 

    70: char tempdeal()

    71: {  const char  heattab[255]={0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,

    72:                            6,6,6,7,7,7,8,8,8,9,9,0xa,0xa,0xb,0xb,0xc,0xc,

    73:                            0xd,0xd,0xe,0xe,0xf,0xf,0xf,0x10,0x10,0x10,

    74:                            0x11,0x11,0x12,0x12,0x12,0x13,0x13,0x14,0x14,0x14,

    75:                            0x15,0x15,0x15,0x16,0x16,0x16,0x17,0x17,0x18,0x18,

    76:                            0x19,0x19,0x1a,0x1a,0x1b,0x1b,0x1c,0x1c,0x1c,

    77:                            0x1d,0x1d,0x1d,0x1e,0x1e,0x1f,0x1f,0x20,0x20,

    78:                            0x21,0x21,0x22,0x22,0x23,0x23,0x24,0x24,0x25,0x25,

    79:                            0x26,0x26,0x27,0x28,0x29,0x29,0x2a,0x2a,0x2b,0x2b,

    80:                            0x2c,0x2d,0x2e,0x2f,0x30,0x32};

    81:   char temp;

    82:   ADGO=1;

    83:   while(ADGO)

    84:   ;

    85:   ADRESH-=0X3A;

    86:   temp=heattab[(ADRESH)];

    87:   return temp;

    88: }

    89: 

    90: void main()

    91: {const char ledtab[10]={0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F };

    92: 

    93: char temp,temph,templ,led_data;

    94: 

    95: preled();

    96: iniheat();

    97: while(1)

    98: {

    99: temp=tempdeal();

   100: temph=temp/10;

   101: templ=temp%10;

   102: led_data=ledtab[templ];

   103: moniled(led_data);

   104: led_data=ledtab[temph];

   105: moniled(led_data);

   106: delay(65535);//1S延时

   107: delay(65535);

   108: }

   109: }

   110: 

   111: 

   112: 

   113: 

   114: 

   115: 

   116: 

   117: 

   118: 

   119: 

   120: 

   121: 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -