资源简介
此文件时本人电信专业课程设计—温度控制系统-包含(C语言程序,Proteus仿真,报告) 完整版
代码片段和文件信息
#include
#define uchar unsigned char
#define uint unsigned int
#define ActualTemp_worth 9
#define TempSet_worth 9
#define row_worth 16
void dentify_key(uchar key);
void get_temp(void);
uchar keyscan();
void solid_data(void);
uchar sktemp2;//sk表示有键按下标志,temp2用来临时存储扫描值
uchar code table[]=“RealTemp:“;
uchar code table1[]=“TempRset:“;
uchar code table2[]={0xdf‘C‘};
uchar code table3[]=“ADD“;
uchar code table4[]=“SUB“;
uchar aa_lowbtt1temp1keyc;//t表示温度整数部分,t1表示温度小数部分temp1为中间变量(P3)
float t2f_temp;
uint temp;
uchar sg=0made_temp=0made_temp1=0;
sbit lcden=P1^7; //*******************LCD1602的使能端
sbit lcdrs=P1^6; //*******************LCD1602的数据命令端
sbit DQ=P1^1; //*******************DS18B20的DS端
sbit SIG=P1^5; //******************按键输入信号
sbit ADD=P1^2;
sbit SUB=P1^3;
sbit ex0_enter=P3^2;
uchar code tablenum[]={0xc00xf90xa40xb00x99 //0~9
0x920x820xf80x800x90};
uchar code tablenum2[]={0x300x310x320x330x34 //0~9的ASIIC值
0x350x360x370x380x39};
/*****************************************************************
LCD1602液晶显示
*****************************************************************/
uchar num=0;
void delay(int z)//延迟函数delay
{
uint xy;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void delay1(uint i)//延迟函数delay1
{
while(i>0) i--;
}
void write_com(uchar com)
{
lcdrs=0;
P0=com;
delay(1);
lcden=1;
delay(1);
lcden=0;
}
void write_data(uchar date)
{
lcdrs=1;
P0=date;
delay(1);
lcden=1;
delay(1);
lcden=0;
}
void init_lcd()//LCD1602初始化函数
{
lcden=0;
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
}
bit int_DS18B20(void)//DS18B20初始化函数
{
unsigned char x=0;
uint i;
DQ=0;
i=103;
while(i>0)i--;
DQ=1;
i=4;
while(i>0)i--;
x=DQ; //延时片刻后,若x=0则初始化成功;若x=1,则初始化失败
delay(20);
return x;
}
//*************DS18B20读取一位数据函数
bit tempreadbit(void)
{
uint i;
bit dat;
DQ=0;i++;
DQ=1;i++;i++;
dat=DQ;
i=8;while(i>0)i--;
return (dat);
}
//*************DS18B20读取一个字节函数
uchar Read(void)//DS18B20读取一个字节
{
unsigned char i=0;
unsigned char j=0;
unsigned char dat=0;
for(i=8;i>0;i--)
{
j=tempreadbit();
dat=(j<<7)|(dat>>1);
}
return(dat);
}
//*************DS18B20写一个字节函数
Write(unsigned char dat)
{
uint i;
uchar j;
bit testb;
for(j=1;j<=8;j++)
{
testb=dat&0x01;
dat=dat>>1;
if(testb)
{
DQ=0;
i++;i++;
DQ=1;
i=8;while(i>0)i--;
}
else
{
DQ=0;
i=8;while(i>0)i--;
DQ=1;
i++;i++;
}
}
}
//****************启动转换函数
void int_(void)
{
while(int_DS18B20());//若为1,重新初始化
delay(1);
Write(0xcc);
Write(0x44);
}
//main()主函数
void main()
{
init_lcd();//液晶初始化
int_(); //启动温度转换
sk=0;
c=0;
EA=1; //开总中断
EX0=1; //打开外部中断0中断
solid_data();//打印固定数据
while(1)
{
int_();
delay1(1700);//等待温度传感器转换温度
get_temp();
keyscan()
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2011-01-06 11:19 专业课程设计—温度控制系统 完整版\
目录 0 2011-01-06 11:19 专业课程设计—温度控制系统 完整版\proteus_fangzhen\
文件 18209 2011-01-01 23:20 专业课程设计—温度控制系统 完整版\proteus_fangzhen\lcd1602
文件 8845 2011-01-01 23:20 专业课程设计—温度控制系统 完整版\proteus_fangzhen\lcd1602.c
文件 6802 2011-01-01 23:20 专业课程设计—温度控制系统 完整版\proteus_fangzhen\lcd1602.hex
文件 23199 2011-01-01 23:20 专业课程设计—温度控制系统 完整版\proteus_fangzhen\lcd1602.LST
文件 25215 2011-01-01 23:20 专业课程设计—温度控制系统 完整版\proteus_fangzhen\lcd1602.M51
文件 20892 2011-01-01 23:20 专业课程设计—温度控制系统 完整版\proteus_fangzhen\lcd1602.OBJ
文件 1260 2011-01-03 17:48 专业课程设计—温度控制系统 完整版\proteus_fangzhen\lcd1602.Opt
文件 179 2011-01-03 17:48 专业课程设计—温度控制系统 完整版\proteus_fangzhen\lcd1602.plg
文件 2006 2010-12-30 18:17 专业课程设计—温度控制系统 完整版\proteus_fangzhen\lcd1602.Uv2
文件 1264 2011-01-02 21:27 专业课程设计—温度控制系统 完整版\proteus_fangzhen\lcd1602_Opt.Bak
文件 1988 2010-12-30 14:16 专业课程设计—温度控制系统 完整版\proteus_fangzhen\lcd1602_Uv2.Bak
文件 106911 2011-01-04 19:28 专业课程设计—温度控制系统 完整版\温度控制系统设计报告.docx
目录 0 2011-01-06 11:19 专业课程设计—温度控制系统 完整版\温度自动控制系统\
文件 147063 2007-10-11 18:19 专业课程设计—温度控制系统 完整版\温度自动控制系统\Backup Of 温度控制.DBK
文件 150695 2011-01-01 21:46 专业课程设计—温度控制系统 完整版\温度自动控制系统\Last Loaded 温度控制.DBK
文件 150690 2011-01-01 23:02 专业课程设计—温度控制系统 完整版\温度自动控制系统\温度控制.DSN
文件 1340 2011-01-04 19:26 专业课程设计—温度控制系统 完整版\温度自动控制系统\温度控制.PWI
- 上一篇:VS2012 MFC小程序 简易网络聊天室
- 下一篇:说话人识别代码
评论
共有 条评论