电子系统综合设计报告
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
TH0=0xD8;//定时器初值
ET0=1;//定时器中断开放
EA=1;//总允许
TR0=1;//启动定时器T0
EX1=1;//外部中断1开放
EX0=1;//外部中断0开放
PX0=1;//外部中断0优先级置高
PX1=1;//外部中断1优先级置高
IT0=1;//外部中断0为边沿触发方式
IT1=1;//外部中断1为边沿触发方式
delay();
P2=0xff;
}
4.6系统总代码
#include<reg51.h>
#include"absacc.h"
bit flag;//采样标志
unsigned char countor;//定时器定时的循环标志
unsigned char g,s,b,i;
unsigned char Q=3,p=0;//设置预设温度
{unsigned int c;
XBYTE[0x7FF8]=0;//进行一个写操作,启动A/D转换
delay();
a=XBYTE[0x7FF8];//将A/D转换的结果保存为变量a
result=a*5/256;//将A/D转换结果换算成十进制数
if(result>1.65&&result<2.48)
DisplaySecond(s,b);
}
}
//延时函数
void delay(void)
{
unsigned int j;
for(j=0;j<100;j++);
}
//数码管动态显示函数
void DisplaySecond(unsigned char s,b)
{
P2=0xfe;//数码管1亮
P1=Tab1[g];//显示温度的百位
温度
36.57
30.25
23.89
温度分段与电压的拟合曲线:(65℃到80℃)
电压
4.295
3.815
温度
80
60
3.1.2调理电路
3.2 A/D转换电路
3.2.1 电路功能
单片机只能处理二进制信号,因此必须用A/D转换电路将纹理电路输出的模拟量转换成数字量,供单片机处理。
AD0808有8个通道,如下是通道选择以及管脚图:
3.3P89L51RD2
3.3.1功能
作为设计核心,协调各功能模块,是软件载体。
管脚图:
单片机I/O接口功能定义:
P0:AD数据采集;
P1:数码管段选信号(a,b,c,d,e,f,g);
P2.7、RD:A/D数据输出容许信号OE;
P2.7、WR:启动A/D;
P3.4~P3.5:指示灯1,指示灯2;
P2.0~P2.3:数码管位选信号(1,2,3,4);
(3)具有超温声、光报警功能;
(4)实时温度显示(四位数码管);
(5)实时温度控制(风扇及加热负载)功能;
(6)温度参数输入功能(温度+、温度-键)。
3 单元模块设计
3.1调理电路
3.1.1电路功能
利用桥式整流电路实现电阻值到电压值的转换,并用OP07放大电压。电阻与温度关系如下:
温度与电阻的关系:
{T=14.8*result-12.97;}
else if(result>2.50&&result<3.720)
{T=12.68*result-7.81; }
else if(result>3.820&&result<4.92)
{ T=15.56*result-19.86;}//把电压转换为温度
c=T;
};
/*定时器T0定时*/
void t0_ser() interrupt 1 using 1
{ TL0=0xF0;
TH0=0xD8;
countor++;
if(countor==10) //循环10次达到定时0.1秒
{countor=0;flag=1;} //定时时间到,置采样标志为1,进行采样
}
/*采样函数*/
温度与电压的关系:
电压
4.295
3.815
3.5
3
2.5
2.3
2
1.7
温度
80wenku.baidu.com
60
36.5
30.2
23.8
21.7
16.6
12.1
温度分段与电压的拟合曲线:(11℃到24℃)
电压
2.5
2.3
2
1.7
温度
23.89
21.07
16.63
12.19
温度分段与电压的拟合曲线:(25℃到35℃)
电压
3.5
3
2.5
}
/*外部中断0,预设温度加一*/
void int0_ser() interrupt 0 using 0
{
delay();
if(INT0==0)
/*数码管动态显示*/
unsigned char Tab1[]={
0xC0, //"0"
0xF9, //"1"
0xA4, //"2"
0xB0, //"3"
0x99, //"4"
0x92, //"5"
0x82, //"6"
0xF8, //"7"
0x80, //"8"
0x90, //"9"
0xC6, //"C"
2 系统设计
2.1总体方案设计
2.1.1总体设计流程
2.1.2温控仪原理图
温控仪电路原理图
2.1.3总体电路图
2.1.4温控仪设计文字说明
温度传感器输出为电阻值,经信号调理电路得到电压值,再经AD转换电路实现数模转换。由单片机控制显示管输出。除此,可设置预置温度,通过单片机外部中断,用按键控制预置温度。当实际温度高于预置温度,红灯亮,蜂鸣器响;低于时,则绿灯亮。
g=c/10;//显示温度的百位
s=c%10;//显示温度的十位
b=(int)(T*10)%10;//温度的个位
m=Q*10+p;//预设温度
n=g*10+s;//实际温度
if(n>m)
{P35=1;P34=0;}
else{ P35=0;P34=1;}//当实际温度大于预设温度时,红灯亮,反之绿灯亮
驱动负载
与数码管联接
3.5电路功能
3.5.1按键
通过按键控制预置温度,并且能在数码管显示
3.5.2负载
当温度高于预设温度时,红灯亮,蜂鸣器也会报响警。当温度低于预设温度时,绿灯会亮。
4 软件设计
4.1采样时间以及蜂鸣器
void main()
{ TMOD=0x01;//定时器工作方式
TL0=0xF0;
unsigned char m,n;
sbit P34=P3^4;
sbit P35=P3^5;
void DisplaySecond(unsigned char s,b);//数码管显示函数的声明
void delay(void);//延时函数的声明
float a,result=0,result1=0,T;
{P2=0xfe;//数码管1亮
P1=Tab1[g];//显示温度的百位
delay();
P2=0xff;
P2=0xfD;//数码管2亮
P1=Tab1[s]&0x7f;//显示温度的十位
delay();
P2=0xff;
P2=0xfb;//数码管3亮
P1=Tab1[b];//显示温度的十位
delay();
while(1)
{ if(flag)
{flag=0; samp();}//采样标准为1时,调用采样函数进行采样
DisplaySecond(s,b);
}
}
//延时函数
void delay(void)
{
unsigned int j;
for(j=0;j<100;j++);
}
4.2AD转换
void samp()
EX1=1;//外部中断1开放
EX0=1;//外部中断0开放
PX0=1;//外部中断0优先级置高
PX1=1;//外部中断1优先级置高
IT0=1;//外部中断0为边沿触发方式
IT1=1;//外部中断1为边沿触发方式
while(1)
{ if(flag)
{flag=0; samp();}//采样标准为1时,调用采样函数进行采样
A
B
C
0
0
0
IN0
0
0
1
IN1
0
1
0
IN2
0
1
1
IN3
1
0
0
IN4
图3 ADC0808管脚图
1
0
1
IN5
1
1
0
IN6
1
1
1
IN7
地址所存信号ALE为上升沿有效,与80C51
的ALE相反。
ENABLE(OE)为输出允许,高有效。
CLOCK低于640KHz。
EOC为转换结束,高有效。
启动AD变换是要给出通道地址。
电子系统综合设计报告
姓名:
陈小燕
学号:
100401203
专业:
电子信息工程
日期:
2013-3-25
南京理工大学紫金学院电光系
1引言
温控仪是调控一体化智能温度控制仪表,它采用了全数字化集成设计,具有温度曲线可编程或定点恒温控制、多重PID调节、输出功率限幅曲线编程、手动/自动切换、软启动、报警开关量输出、实时数据查询、与计算机通讯等功能,将数显温度仪表和ZK晶闸管电压调整器合二为一,集温度测量、调节、驱动于一体,仪表直接输出晶闸管触发信号,可驱动各类晶闸管负载。YWK-CT温度控制器采用智能PID控制,当通过热电偶(热电阻)采集的被测温度偏离所希望的给定值时,YWK-CT温度控制器可根据测量信号与给定值的偏差进行比例(P)、积分(I)、微分(D)运算,从而控制继电器通断比率,促使测量值恢复到给定值,达到自动控制的效果;控制器还具有上、下限温度告警和继电器输出功能,性价比高,可广泛用于电力、化工、注塑、包装、食品等企业。此次设计温控仪主要想用温度传感器采集当前温度,在数码管上显示。通过这次课程设计锻炼我们的单片机应用能力以及对电子设备的实际操作能力,也可以说是为最后的毕业设计做铺垫。希望通过这次设计,能让自己对电子设计有更清晰的概念,而不是纸上谈兵。能够让所学与实际相结合。
g=c/10;//显示温度的百位
s=c%10;//显示温度的十位
b=(int)(T*10)%10;//温度的个位
m=Q*10+p;//预设温度
n=g*10+s;//实际温度
if(n>m)
{P35=1;P34=0;}
else{ P35=0;P34=1;}//当实际温度大于预设温度时,红灯亮,反之绿灯亮
void int1_ser() interrupt 2 using 2
{ delay();
if(INT1==0)
{ p--;
if(p==0)
{Q--;p=9;}
}
for(i=0;i<50;i++)
DisplaySecond(Q,p);
}
4.4数码管显示
void DisplaySecond(unsigned char s,b)
delay();
P2=0xff;
P2=0xfD;//数码管2亮
P1=Tab1[s]&0x7f;//显示温度的十位
delay();
P2=0xff;
P2=0xfb;//数码管3亮
P1=Tab1[b];//显示温度的十位
delay();
P2=0xff;
P2=0xf7;//数码管4亮
P1=0xC6;//显示C
INT0:键+
INT1:键-
3.32单片机和ADC0808的联
3.4四段数码管
3.4.1数码管
显示实际温度和预置温度,采用动态显示
引脚说明:
1引脚 位选1 2引脚A
3引脚F4引脚 位选2
5引脚 位选3 6引脚B
7引脚 位选4 8引脚G
9引脚C10引脚CR
11引脚D12引脚E
3.4.2ULN2003APG
{T=14.8*result-12.97;}
else if(result>2.50&&result<3.720)
{T=12.68*result-7.81; }
else if(result>3.820&&result<4.92)
{ T=15.56*result-19.86;}//把电压转换为温度
c=T;
A/D采集电路: 启动、等待、采集数据。单片机电路:最小系统。键盘及显示电路:键盘数据输入和温度显示。输出控制电路:I/O驱动、继电器、指示灯、负载。
2.2总体设计要求
主要技术指标
(1)温度范围为:-20 ℃ ~ +100℃,
最小区分度为1℃,标定温度≤ 1℃;
(2)温度采样时间:500ms ~1min (可调);
void samp()
{
unsigned int c;
XBYTE[0x7FF8]=0;//进行一个写操作,启动A/D转换
delay();
a=XBYTE[0x7FF8];//将A/D转换的结果保存为变量a
result=a*5/256;//将A/D转换结果换算成十进制数
if(result>1.65&&result<2.48)
}
4.3按键预置温度
/*外部中断0,预设温度加一*/
void int0_ser() interrupt 0 using 0
{
delay();
if(INT0==0)
{ p++;
if(p==10)
{Q++;p=0;}
}
for(i=0;i<50;i++)
DisplaySecond(Q,p);
}
/*外部中断1,预设温度减一*/
P2=0xff;
P2=0xf7;//数码管4亮
P1=0xC6;//显示C
delay();
P2=0xff;
}
4.5主代码
void main()
{ TMOD=0x01;//定时器工作方式
TL0=0xF0;
TH0=0xD8;//定时器初值
ET0=1;//定时器中断开放
EA=1;//总允许
TR0=1;//启动定时器T0
ET0=1;//定时器中断开放
EA=1;//总允许
TR0=1;//启动定时器T0
EX1=1;//外部中断1开放
EX0=1;//外部中断0开放
PX0=1;//外部中断0优先级置高
PX1=1;//外部中断1优先级置高
IT0=1;//外部中断0为边沿触发方式
IT1=1;//外部中断1为边沿触发方式
delay();
P2=0xff;
}
4.6系统总代码
#include<reg51.h>
#include"absacc.h"
bit flag;//采样标志
unsigned char countor;//定时器定时的循环标志
unsigned char g,s,b,i;
unsigned char Q=3,p=0;//设置预设温度
{unsigned int c;
XBYTE[0x7FF8]=0;//进行一个写操作,启动A/D转换
delay();
a=XBYTE[0x7FF8];//将A/D转换的结果保存为变量a
result=a*5/256;//将A/D转换结果换算成十进制数
if(result>1.65&&result<2.48)
DisplaySecond(s,b);
}
}
//延时函数
void delay(void)
{
unsigned int j;
for(j=0;j<100;j++);
}
//数码管动态显示函数
void DisplaySecond(unsigned char s,b)
{
P2=0xfe;//数码管1亮
P1=Tab1[g];//显示温度的百位
温度
36.57
30.25
23.89
温度分段与电压的拟合曲线:(65℃到80℃)
电压
4.295
3.815
温度
80
60
3.1.2调理电路
3.2 A/D转换电路
3.2.1 电路功能
单片机只能处理二进制信号,因此必须用A/D转换电路将纹理电路输出的模拟量转换成数字量,供单片机处理。
AD0808有8个通道,如下是通道选择以及管脚图:
3.3P89L51RD2
3.3.1功能
作为设计核心,协调各功能模块,是软件载体。
管脚图:
单片机I/O接口功能定义:
P0:AD数据采集;
P1:数码管段选信号(a,b,c,d,e,f,g);
P2.7、RD:A/D数据输出容许信号OE;
P2.7、WR:启动A/D;
P3.4~P3.5:指示灯1,指示灯2;
P2.0~P2.3:数码管位选信号(1,2,3,4);
(3)具有超温声、光报警功能;
(4)实时温度显示(四位数码管);
(5)实时温度控制(风扇及加热负载)功能;
(6)温度参数输入功能(温度+、温度-键)。
3 单元模块设计
3.1调理电路
3.1.1电路功能
利用桥式整流电路实现电阻值到电压值的转换,并用OP07放大电压。电阻与温度关系如下:
温度与电阻的关系:
{T=14.8*result-12.97;}
else if(result>2.50&&result<3.720)
{T=12.68*result-7.81; }
else if(result>3.820&&result<4.92)
{ T=15.56*result-19.86;}//把电压转换为温度
c=T;
};
/*定时器T0定时*/
void t0_ser() interrupt 1 using 1
{ TL0=0xF0;
TH0=0xD8;
countor++;
if(countor==10) //循环10次达到定时0.1秒
{countor=0;flag=1;} //定时时间到,置采样标志为1,进行采样
}
/*采样函数*/
温度与电压的关系:
电压
4.295
3.815
3.5
3
2.5
2.3
2
1.7
温度
80wenku.baidu.com
60
36.5
30.2
23.8
21.7
16.6
12.1
温度分段与电压的拟合曲线:(11℃到24℃)
电压
2.5
2.3
2
1.7
温度
23.89
21.07
16.63
12.19
温度分段与电压的拟合曲线:(25℃到35℃)
电压
3.5
3
2.5
}
/*外部中断0,预设温度加一*/
void int0_ser() interrupt 0 using 0
{
delay();
if(INT0==0)
/*数码管动态显示*/
unsigned char Tab1[]={
0xC0, //"0"
0xF9, //"1"
0xA4, //"2"
0xB0, //"3"
0x99, //"4"
0x92, //"5"
0x82, //"6"
0xF8, //"7"
0x80, //"8"
0x90, //"9"
0xC6, //"C"
2 系统设计
2.1总体方案设计
2.1.1总体设计流程
2.1.2温控仪原理图
温控仪电路原理图
2.1.3总体电路图
2.1.4温控仪设计文字说明
温度传感器输出为电阻值,经信号调理电路得到电压值,再经AD转换电路实现数模转换。由单片机控制显示管输出。除此,可设置预置温度,通过单片机外部中断,用按键控制预置温度。当实际温度高于预置温度,红灯亮,蜂鸣器响;低于时,则绿灯亮。
g=c/10;//显示温度的百位
s=c%10;//显示温度的十位
b=(int)(T*10)%10;//温度的个位
m=Q*10+p;//预设温度
n=g*10+s;//实际温度
if(n>m)
{P35=1;P34=0;}
else{ P35=0;P34=1;}//当实际温度大于预设温度时,红灯亮,反之绿灯亮
驱动负载
与数码管联接
3.5电路功能
3.5.1按键
通过按键控制预置温度,并且能在数码管显示
3.5.2负载
当温度高于预设温度时,红灯亮,蜂鸣器也会报响警。当温度低于预设温度时,绿灯会亮。
4 软件设计
4.1采样时间以及蜂鸣器
void main()
{ TMOD=0x01;//定时器工作方式
TL0=0xF0;
unsigned char m,n;
sbit P34=P3^4;
sbit P35=P3^5;
void DisplaySecond(unsigned char s,b);//数码管显示函数的声明
void delay(void);//延时函数的声明
float a,result=0,result1=0,T;
{P2=0xfe;//数码管1亮
P1=Tab1[g];//显示温度的百位
delay();
P2=0xff;
P2=0xfD;//数码管2亮
P1=Tab1[s]&0x7f;//显示温度的十位
delay();
P2=0xff;
P2=0xfb;//数码管3亮
P1=Tab1[b];//显示温度的十位
delay();
while(1)
{ if(flag)
{flag=0; samp();}//采样标准为1时,调用采样函数进行采样
DisplaySecond(s,b);
}
}
//延时函数
void delay(void)
{
unsigned int j;
for(j=0;j<100;j++);
}
4.2AD转换
void samp()
EX1=1;//外部中断1开放
EX0=1;//外部中断0开放
PX0=1;//外部中断0优先级置高
PX1=1;//外部中断1优先级置高
IT0=1;//外部中断0为边沿触发方式
IT1=1;//外部中断1为边沿触发方式
while(1)
{ if(flag)
{flag=0; samp();}//采样标准为1时,调用采样函数进行采样
A
B
C
0
0
0
IN0
0
0
1
IN1
0
1
0
IN2
0
1
1
IN3
1
0
0
IN4
图3 ADC0808管脚图
1
0
1
IN5
1
1
0
IN6
1
1
1
IN7
地址所存信号ALE为上升沿有效,与80C51
的ALE相反。
ENABLE(OE)为输出允许,高有效。
CLOCK低于640KHz。
EOC为转换结束,高有效。
启动AD变换是要给出通道地址。
电子系统综合设计报告
姓名:
陈小燕
学号:
100401203
专业:
电子信息工程
日期:
2013-3-25
南京理工大学紫金学院电光系
1引言
温控仪是调控一体化智能温度控制仪表,它采用了全数字化集成设计,具有温度曲线可编程或定点恒温控制、多重PID调节、输出功率限幅曲线编程、手动/自动切换、软启动、报警开关量输出、实时数据查询、与计算机通讯等功能,将数显温度仪表和ZK晶闸管电压调整器合二为一,集温度测量、调节、驱动于一体,仪表直接输出晶闸管触发信号,可驱动各类晶闸管负载。YWK-CT温度控制器采用智能PID控制,当通过热电偶(热电阻)采集的被测温度偏离所希望的给定值时,YWK-CT温度控制器可根据测量信号与给定值的偏差进行比例(P)、积分(I)、微分(D)运算,从而控制继电器通断比率,促使测量值恢复到给定值,达到自动控制的效果;控制器还具有上、下限温度告警和继电器输出功能,性价比高,可广泛用于电力、化工、注塑、包装、食品等企业。此次设计温控仪主要想用温度传感器采集当前温度,在数码管上显示。通过这次课程设计锻炼我们的单片机应用能力以及对电子设备的实际操作能力,也可以说是为最后的毕业设计做铺垫。希望通过这次设计,能让自己对电子设计有更清晰的概念,而不是纸上谈兵。能够让所学与实际相结合。
g=c/10;//显示温度的百位
s=c%10;//显示温度的十位
b=(int)(T*10)%10;//温度的个位
m=Q*10+p;//预设温度
n=g*10+s;//实际温度
if(n>m)
{P35=1;P34=0;}
else{ P35=0;P34=1;}//当实际温度大于预设温度时,红灯亮,反之绿灯亮
void int1_ser() interrupt 2 using 2
{ delay();
if(INT1==0)
{ p--;
if(p==0)
{Q--;p=9;}
}
for(i=0;i<50;i++)
DisplaySecond(Q,p);
}
4.4数码管显示
void DisplaySecond(unsigned char s,b)
delay();
P2=0xff;
P2=0xfD;//数码管2亮
P1=Tab1[s]&0x7f;//显示温度的十位
delay();
P2=0xff;
P2=0xfb;//数码管3亮
P1=Tab1[b];//显示温度的十位
delay();
P2=0xff;
P2=0xf7;//数码管4亮
P1=0xC6;//显示C
INT0:键+
INT1:键-
3.32单片机和ADC0808的联
3.4四段数码管
3.4.1数码管
显示实际温度和预置温度,采用动态显示
引脚说明:
1引脚 位选1 2引脚A
3引脚F4引脚 位选2
5引脚 位选3 6引脚B
7引脚 位选4 8引脚G
9引脚C10引脚CR
11引脚D12引脚E
3.4.2ULN2003APG
{T=14.8*result-12.97;}
else if(result>2.50&&result<3.720)
{T=12.68*result-7.81; }
else if(result>3.820&&result<4.92)
{ T=15.56*result-19.86;}//把电压转换为温度
c=T;
A/D采集电路: 启动、等待、采集数据。单片机电路:最小系统。键盘及显示电路:键盘数据输入和温度显示。输出控制电路:I/O驱动、继电器、指示灯、负载。
2.2总体设计要求
主要技术指标
(1)温度范围为:-20 ℃ ~ +100℃,
最小区分度为1℃,标定温度≤ 1℃;
(2)温度采样时间:500ms ~1min (可调);
void samp()
{
unsigned int c;
XBYTE[0x7FF8]=0;//进行一个写操作,启动A/D转换
delay();
a=XBYTE[0x7FF8];//将A/D转换的结果保存为变量a
result=a*5/256;//将A/D转换结果换算成十进制数
if(result>1.65&&result<2.48)
}
4.3按键预置温度
/*外部中断0,预设温度加一*/
void int0_ser() interrupt 0 using 0
{
delay();
if(INT0==0)
{ p++;
if(p==10)
{Q++;p=0;}
}
for(i=0;i<50;i++)
DisplaySecond(Q,p);
}
/*外部中断1,预设温度减一*/
P2=0xff;
P2=0xf7;//数码管4亮
P1=0xC6;//显示C
delay();
P2=0xff;
}
4.5主代码
void main()
{ TMOD=0x01;//定时器工作方式
TL0=0xF0;
TH0=0xD8;//定时器初值
ET0=1;//定时器中断开放
EA=1;//总允许
TR0=1;//启动定时器T0