本科生课程设计(论文)
参考文献
[1] 王迎旭编.单片机原理与应用[M].机械工业出版社.2012
[2] 陈海晏编.51单片机原理与应用[M].北京航空航天大学出版社.2010 [3] 黄仁欣编.单片机原理与应用技术[M].清华大学出版社.2010
[4] 张中明编.单片计算机原理及接口技术[M].人民邮电出版社出版社.2009 [5] 赛奎春.MySql数据库开发实例解析[M].北京:机械工业出版社,2010
13
本科生课程设计(论文)
附录 程序
#include
sbit JDQ=P3^7; //管脚定义 类似于起名字
//用JDQ来代替P1.4控制继电器工作
unsigned int tempL; //设全局变量 unsigned int tempH;
unsigned int sdata; unsigned int s;
code unsigned char seg7code[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,
0x82,0xf8,0x80,0x90,0xff}; //不带小数点的共阳数码管段码
code unsigned char seg7codeB[]={0x40,0x79,0x24,0x30,0x19,0x12,
0x02,0x78,0x00,0x10,0xff}; //带小数点的共阳数码管段码
bit fg=1; //正负标志
//******************延时子程序 *******************************
//这个延时程序的具体延时时间是time=i*8+10,适用于小于2ms的延时
//************************************************************ void delay(unsigned char i) {
for(i;i>0;i--); }
14
本科生课程设计(论文)
//***********************************************************
// 延时子程序
//************************************************************ void delay1ms() {
unsigned char i;
for(i=124;i>0;i--); //延时124*8+10=1002us }
//读值(低位放tempL;高位放tempH;) ReadTemperature(void) { }
//控制继电器
//********************显示函数**************** void Led(unsigned int date) { if(fg==1) {
P2=0xfe; //P1.0=0,选通第一位
P0=seg7code[date/10]; //十位数,查表,输出 delay1ms();
P0=0xff; //消隐
P2=0xfd; //P1.1=0,选通第二位,个位数
15
tempH=c; tempL=d;
s = (tempH*256+tempL); //整数部分 sdata=s/100;
本科生课程设计(论文)
}
P0=seg7codeB[date]; delay1ms();
P0=0xff; //消隐
P2=0xfb; //P1.3=0,选通第三位,小数点第一位 P0=seg7code[s0/10]; delay1ms();
P0=0xff; //消隐
P2=0xf7; //P1.3=0,选通第四位,小数点第二位 P0=seg7code[s]; delay1ms();
P0=0xff; //消隐
if(fg==0) //温度为负时显示的数据 {
P2=0xfe; //P1.0=0,选通第一位 P0=seg7code[11]; //显示负号 delay1ms();
P0=0xff; //消隐
P2=0xfd; //P1.1=0,选通第二位,十位数 P0=seg7code[date/10]; delay1ms();
P0=0xff; //消隐
P2=0xfb; //P1.3=0,选通第三位,个位数 P0=seg7codeB[date]; delay1ms();
P0=0xff; //消隐
P2=0xf7; //P1.3=0,选通第四位,小数点第一位 P0=seg7code[date];
16
本科生课程设计(论文)
}
delay1ms();
P0=0xff; //消隐
}
//主函数,C语言的入口函数: void Relay() { if(sdata<10)
JDQ=0;
//P1.4引脚控制三极管再由三极管控制继电器,
if(sdata>11) JDQ=1; 开
delay1ms(); }
void main() {
17
//输出0三极管导通继电器得电吸合,输出1三极管截止继电器失电断
P0=0xff; //消隐 while(1){Led(sdata); if(num==1) {
num=0;break; }
}; //主程序循环,即程序要停止在这里,很多初学者忘记了这点,只输入了上面
一行,结果程序跑飞,找不出问题
TMOD=0x20; TH1=0xfd; TL1=0xfd; TR1=1;
//用定时器设置串口波特率9600
REN=1; //串口初始化 SM0=0; SM1=1;
EA=1; //开启总中断 ES=1;
温湿度检测系统的设计与实现



