📄 heat.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 + -