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

📄 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  TRISD5
    17: #define  TRCLK   TRISD4
    18: #define  TSER    TRISD3
    19: #define  SRCLK   RD5
    20: #define  RCLK    RD4
    21: #define  SER     RD3
    22: 
    23: 
    24: void preled(void)
    25: {
    26:         TSRCLK=0;
    27:         TRCLK=0;
    28:         TSER=0;
    29:         SRCLK=0;
    30:         RCLK=0;
    31:         SER=0;
    32: }
    33: void moniled (unsigned char led_data)
    34: {
    35:         //MONILED;     入口参数LED_DATA,需要为
    36:   //;芯片全部在时钟上升沿完成动作,故需在低电平期间完成数据的变化。先发送高位
    37:      unsigned char i;
    38:      for(i=8;i!=0;i--)
    39:         {
    40:                 if(led_data&0x80)
    41:                         SER=1;
    42:                 else
    43:                         SER=0;
    44:                 led_data<<=1;
    45:                 asm("nop");
    46:                 SRCLK=1;
    47:                 asm("nop");
    48:                 SRCLK=0;
    49:   }
    50:     RCLK=0;
    51:     asm("nop");
    52:     RCLK=1;
    53:     RCLK=0;
    54: }
    55: 
    56: void delay(unsigned int i)
    57: {
    58:         while(i)
    59:     {   
    60:                 NOP();
    61:         --i;
    62:     }
    63:  }
    64: 
    65: void iniheat458()
    66: {
    67:         TRISA1=1;//RA1输入
    68:         ADCON1=0;
    69:         ADCON0=0;
    70:         ADCS0=1;//设置转换时钟
    71:         CHS0=1;//设置通道为RA1
    72:         PCFG2=1;//0100,设置各通道属性及参考电压为VDD,VSS
    73:         ADON=1;//使能AD
    74: }
    75: 
    76: unsigned char tempdeal()
    77: {  
    78:         const char  heattab[255]={
    79:                                                                 0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,
    80:                                                                 6,6,6,7,7,7,8,8,8,9,9,0xa,0xa,0xb,0xb,0xc,0xc,
    81:                                                                 0xd,0xd,0xe,0xe,0xf,0xf,0xf,0x10,0x10,0x10,
    82:                                                                 0x11,0x11,0x12,0x12,0x12,0x13,0x13,0x14,0x14,0x14,
    83:                                                                 0x15,0x15,0x15,0x16,0x16,0x16,0x17,0x17,0x18,0x18,
    84:                                                                 0x19,0x19,0x1a,0x1a,0x1b,0x1b,0x1c,0x1c,0x1c,
    85:                                                                 0x1d,0x1d,0x1d,0x1e,0x1e,0x1f,0x1f,0x20,0x20,
    86:                                                                 0x21,0x21,0x22,0x22,0x23,0x23,0x24,0x24,0x25,0x25,
    87:                                                                 0x26,0x26,0x27,0x28,0x29,0x29,0x2a,0x2a,0x2b,0x2b,
    88:                                                                 0x2c,0x2d,0x2e,0x2f,0x30,0x32
    89:                                                         };
    90:   unsigned char temp;
    91:   GODONE=1;
    92:   while(GODONE);
    93:   ADRESH-=0x3A;
    94:   temp=heattab[(ADRESH)];
    95:   return temp;
    96: }
    97: 
    98: void main()
    99: {
   100:         const char ledtab[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F };             //定义依次显示"0"~"9"的数组元素
   101:         unsigned char temp,temph,templ;
   102: 
   103:         preled();
   104:         iniheat458();
   105:         while(1)
   106:         {
   107:                 temp=tempdeal();
   108:                 temph=temp/10;
   109:                 templ=temp%10;
   110:                 moniled(ledtab[templ]);
   111:                 moniled(ledtab[temph]);
   112:                 delay(65535);//延时1S
   113:                 delay(65535);
   114:         }
   115: }
   116: 
   117: 
   118: 
   119: 
   120: 
   121: 
   122: 
   123: 
   124: 
   125: 
   126: 
   127: 

⌨️ 快捷键说明

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