单片机+DS18B20温度控制程序仿真芯片解密
芯片解密单片机源程序如下:
#include<reg52.h> //芯片解密51单片机的头文件
#include<intrins.h> //函数程序中需要使用到空指令
/***_crol_ 字符循环左移
_cror_ 字符循环右移
_irol_ 整数循环左移
_iror_ 整数循环右移
_lrol_ 长整数循环左移
_lror_ 长整数循环右移
_nop_ 空操作 (相当于8051 NOP 指令)
_testbit_ 测试并清零位 (相当于8051 JBC 指令) ***/
#define dm P0 //段码输出口
#define uchar unsigned char //宏定义,用uchar来代替unsigned char(无符号字符型变量,也即是无符号的8位变量),
//宏定义的原因就是书写方便,宏定义后,uchar可直接用来定义变量
#define uint unsigned int //原因同上,不过要注意,unsigned int为无符号的整型变量
//sbit是用来管脚的。
sbit DQ=P1^0; //温度输入口
sbit w0=P2^4; //数码管4
sbit w1=P2^5; //数码管3
sbit w2=P2^6; //数码管2
sbit w3=P2^7; //数码管1
sbit beep=P2^0; //蜂鸣器
sbit jidianqi=P2^1; //继电器
sbit yellow=P3^5; //加热指示灯
sbit led=P3^6; //高温指示灯
sbit zc=P3^7; //系统运行正常指示灯
sbit set=P3^4; //选择设置
sbit add=P3^3; //加
sbit dec=P3^2; //减
int temp1=0;//最高温度和最低温度标志位
uint h;
uint temp; //温度函数
uchar r;
uchar high=30,low=28; //开机默认最高温度和最低温度
uchar sign;
uchar q=0;
uchar tt=0;
uchar scale;
uchar code ditab[16]={0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09}; //共阳小数断码表
uchar code table_dm[12]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff,0xbf}; //共阳LED段码表"0""1""2""3""4""5""6""7""8""9""不亮""-"
uchar code table_dm1[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10}; //共阳个位带小数点的断码表
uchar data temp_data[2]={0xff,0xff};//读出温度暂放
uchar data display[5]={0xff,0xff,0xff,0xff,0xff};//显示单元数据,共四个数据和一个运算暂用
/***************11us延时函数***************/
void delay(uint t)
{
for(;t>0;t--);
}
/***************数码管显示***************/
void scan()
{
int j;
for(j=0;j<4;j++)
{
switch(j)
{
case 0:
dm=table_dm[display[0]];;
w0=0; //打开数码管显示小数数字的数码管位选端
delay(50);
w0=1; //关闭数码管显示小数数字的数码管位选端
case 1:
dm=table_dm1[display[1]];
w1=0; //打开数码管显示个位数字的数码管位选端
delay(50);
w1=1; //关闭数码管显示个位数字的数码管位选端
case 2:
dm=table_dm[display[2]];
w2=0; //打开数码管显示十位数字的数码管位选端
delay(50);
w2=1; //关闭数码管显示十位数字的数码管位选端
case 3:
dm=table_dm[display[3]];
w3=0; //打开数码管显示百位数字的数码管位选端
delay(50);
w3=1; //关闭数码管显示百位数字的数码管位选端
}
}
}

芯片解密