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