芯片复制STC15单片机NTC测温程序
- 芯片复制/*
- 芯片复制* NTC测温,10位AD分辨率0.1度
- 芯片复制* 硬件说明:IAP15W4K58S4
- * 第一位数码管 位引脚-->P41 *
- * 第二位数码管 位引脚-->P42 *
- * 第三位数码管 位引脚-->P44 *
- * 第四位数码管 位引脚-->P45 *
- * 所有的数码管 段引脚-->P2 *
- *******************************************************************************/
- #define MAIN_Fosc 22118400L //定义主时钟
- #include <STC15.H>
- #include <intrins.H>
- #define Timer0_Reload (65536UL -(MAIN_Fosc / 1000)) //Timer 0 中断频率, 1000次/秒
- //#define uchar unsigned char
- //#define uint unsigned int
- typedef unsigned char u8;
- typedef unsigned int u16;
- typedef unsigned long u32;
- #define DIS_DOT 0x20
- #define DIS_BLACK 0x10
- #define DIS_ 0x11
- u8 code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共阳数字编码 0.1.2.3.4....9
- u8 qian,bai,shi,ge;
- bit B_1ms; //1ms标志
- u16 msecond;
- u8 flag0; //正负温度标志位
- u8 flag1; //温度超过100度,千位数正常显示
- u16 Get_ADC10bitResult(u8 channel); //AD转换函数声明,channl输入通道选择
- u16 get_temperature(u16 adc); //温度转换函数声明
- /********************************************************************
- * 名称 : Delay()
- * 功能 : 延时
- * 输入 : i
- * 输出 : 无
- ***********************************************************************/
- void delay(u8 i) //延时函数
- {
- u16 j,k;
- for(j=i;j>0;j--)
- for(k=500;k>0;k--);
- }
- /********************************************************************
- * 名称 : display()
- * 功能 : 数码管显示函数
- * 输入 : 无
- * 输出 : 无
- ***********************************************************************/
- void display(u8 qian,u8 bai,u8 shi,u8 ge) //显示函数
- {
- if(flag0) //温度低于0度千位数码管显示-
- {
- P2=0XBF;
- P41 = 0;
- delay(5);
- P41 = 1;
- }
- if(flag1) //温度超过100度,千位显示
- {
- P2=table[qian];
- P41 = 0;
- delay(5);
- P41 = 1;
- }
- P2=table[bai];
- P42 = 0;
- delay(5);
- P42 = 1;
- P2=table[shi]&0X7F; //十位显示小数点
- P44 = 0;
- delay(5);
- P44 = 1;
- P2=table[ge];
- P45 = 0;
- delay(5);
- P45 = 1;
- }

芯片解密