智能电风扇控制器设计报告完整版.docx
《智能电风扇控制器设计报告完整版.docx》由会员分享,可在线阅读,更多相关《智能电风扇控制器设计报告完整版.docx(15页珍藏版)》请在冰豆网上搜索。
智能电风扇控制器设计报告完整版
《单片机课程设计》设计报告
设计题目智能电风扇控制器设计
序言
一、设计任务…………………………………………..………………2
二、小直流电机调速控制系统的总体方案设计………………….….2
T6.,2.1、系统硬件总体结构…………………………………………...2
2.2、芯片选择……………………………………………….…......2
2.3、DAC0832芯片的主要性能指标……………………….…....3
三、系统硬件电路设计…………………………………..…….…..….5
3.1、AT89C52单片机最小系统………………………….…….….5
3.2、系统程序电路主程序CUP电路图….………….......................5
3.3、DAC0832与AT89C52单片机接口电路设计………….………6
3.4、显示电路与AT89C52单片机电路设计……………...…...…..7
四、系统程序流程设计…………………………………………….….7
五、调试与测试结果分析…………………………..……...………….8
5.1、实验系统连线图………………………………………....……8
5.2、程序调试…………………………………………,.……...…...9
5.3、实验结果分析……………………………………..……....…..9
六、程序总结……………………………………………...…………...9
附录…………………………………………………………..…......…...10
1、实验程序………………………………………….……............10
2、实验原理图……………………………….................................13
一、设计任务
利用DAC0832芯片进行数/模控制,输出的电压经放大后驱动小直流电机的速度进行数字量调节,并显示运行状态DJ-XX和D/A输出的数字量。
巩固所学单片知识,熟悉试验箱的相关功能,熟练掌握Proteus仿真软件,培养系统设计的思路和科研的兴趣。
实现功能如下:
1风速设为从高到低3个档位,可由用户通过键盘手动设定。
2实现数码管友好显示。
二、小直流电机调速控制系统的总体设计方案
2.1系统硬件总体结构
2.2芯片选择
1、AT89C52芯片:
选用该单片机作为智能电风扇控制部件,用来实现电风扇调速核心功能。
2、74LS245芯片:
用来驱动数码管。
3、74LS373芯片:
锁存器,用来锁存输出的信号。
4、74LS240芯片:
八单线驱动器,缓冲输出的信号。
5、DAC0832芯片:
片选地址是FF80H,AOUT1插孔作为模拟量的输出。
6、8255芯片:
可编程并行I/O接口芯片,用以扩展单片机的IO口。
7、LED数码显示管:
用来显示电机旋转的速度是加速还是减速。
8、741:
运算放大器。
2.3DAC0832的主要性能指标
D/A转换的基本原理是应用电阻解码网络,将N位数字量逐位转换为模拟量并求和,从而实现将N位数字量转换为相应的模拟量。
其性能指标为:
(1)分辨率:
相对分辨率=1/2N,N越大,分辨率越高(2)线性度(3)转换精度(4)建立时间(5)温度系数。
DAC0832引脚功能图如图2.2
图2.2数模转换DAC0832引脚功能
1、DI0~DI7:
8位数字信号输入端;
2、!
CS:
片选端;ILE:
数据锁存允许控制端,高电平有效;
3、!
WR1:
输入寄存器写选通控制端。
当!
CS=0、ILE=1、!
WR1=0时,数据信号被锁存在输入寄存器中。
4、!
XFER:
数据传送控制
5、!
WR2:
DAC寄存器写选通控制端。
当!
XFER=0,!
WR2=0时,输入寄存器状态传入DAC寄存器中
6、IOUT1:
电流输出1端,输入数字量全“1”时,IOUT1最大,输入数字量全为“0”时,IOUT1最小。
7、IOUT2:
D/A转换器电流输出2端,IOUT2+IOUT1=常数。
8、RFB:
外部反馈信号输入端,内部已有反馈电阻RFB,根据需要也可外接反馈电阻。
9、VCC:
电源输入端,可在+5V~+15V范围内。
10、DGND:
数字信号地。
11、AGND:
模拟信号地
8255A的主要性能指标
8255是Intel公司生产的可编程并行I/O接口芯片,有3个8位并行I/O口。
具有3个通道3种工作方式的可编程并行接口芯片(40引脚)。
其各口功能可由软件选择,使用灵活,通用性强。
8255可作为单片机与多种外设连接时的中间接口电路。
8255作为主机与外设的连接芯片,必须提供与主机相连的3个总线接口,即数据线、地址线、控制线接口。
同时必须具有与外设连接的接口A、B、C口。
由于8255可编程,所以必须具有逻辑控制部分,因而8255内部结构分为3个部分:
与CPU连接部分、与外设连接部分、控制部分。
三、系统硬件电路设计
3.1AT89C52单片机最小系统:
AT89C52已包含了定时器、程序存储器、数据存储器等硬件,其硬件能符合整个控制系统的要求,不需要外接其他存储器芯片和定时器件,方便地构成一个最小系统。
整个系统结构紧凑,抗干扰能力强,性价比高。
图3.1为AT89C52芯片最小系统。
一方面,单片机要通过I/O口中接收输入信号,另一方面要通过I/O口控制数码管的初始化、显示方式以及要显示的字符。
因此,设计必须以单片机为核心,显示器为外围设备。
硬件上,单片机通过电路板电路与液晶显示电路相连;软件上,单片机要下载完整的程序对二者进行适时的控制。
图3.1AT89C52芯片最小系统图
3.2系统程序电路主程序CUP电路图:
AT89C52单片机P0、P2口扩充电路图如图3.2:
图3.2AT89C52系统管脚扩充图
3.3DAC0832与AT89C52单片机接口电路设计
实验电路使用逻辑器件实现地址译码,地址FF80H接入数模转换器DAC0832片选段,通过数模转换后的模拟量通过运放放大驱动电机驱动,其电路图如图3.3所示:
图3.3DAC0832与AT89C52单片机接口及电机控制电路
3.4显示电路与AT89C52单片机电路设计
实验电路使用IO扩充芯片8255及锁存芯片74LS245对六个数码管选通控制显示。
显示部分电路图如图3.4所示:
图3.4数码管显示部分电路图
四、系统程序流程设计
4.1档位调节显示框图
4.2主程序框图
图4.2主程序框图
五、调试与测试结果分析
5.1实验系统连线图
a、P3.2、P3.3分别连按键、S1、S2
b、JX0与JX2相连
c、将DAC0832驱动电路AOUT接至直流电机
d、将P0口接至DAC0832数字输入端
e、将地址译码器电路(FF80H)接至DAC0832片选端
5.2程序调试
程序上电时,直流电机停止不动,然后打开总开关K1,当第一次来回拨动档位开关时,电动机低速转动,同时显示1;当第二次来回拨动档位开关时,电动机中速转动,同时显示2;当第三次来回拨动档位开关时,电动机高速转动,同时显示3;第四次则回到低档,即低中高三档位循环输出。
5.3实验结果分析
电机运行正常时即可实现调速现象,适当的控制按键,就可以实现所需要的效果。
拨码开关必须做消除抖动的处理,因为开关抖动会导致档位及定时信息混乱。
六、程序设计总结
附录1、实验程序
#include
#include
#defineContaddXBYTE[0xff23]//8255控制地址
#definePAXBYTE[0xff20]//段选信号地址
#definePBXBYTE[0xff21]//片选信号地址
#defineadcXBYTE[0xFF80]//片选指针,A/D转换电路片外地址
#defineucharunsignedchar
#defineuintunsignedint
voidwei_2();//声明档位显示程序
uchari=2,j=0,s=0;
uintcount,n=0;
bitflag;//定义标志位
sbitK1=P3^4;//定义总开关的按键位
ucharcodetable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,
0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff};//共阳极数码管段码
/********************延迟子程序******************************/
voidDelayMS(uintx)
{
uchart;
while(x--)for(t=0;t<120;t++);
}
/*******************主程序***********************************/
voidmain()
{
Contadd=0x81;//设置8255的工作方式:
PA、PB口为输出口,PC口为输入口
PB=0xff;//端口数据初始化,防止出错
adc=0x00;
EA=1;//开总中断
EX0=1;//打开外部中断0
IT0=1;//设置中断0为下降沿触发
EX1=1;//打开外部中断1
IT1=1;//设置中断1为下降沿触发
while(K1==0)//判断总开关是否打开
{
if(flag==1)//判断档位按键是否按下
{
wei_2();
}
Else//无档位按键时,关闭数显和发动机
{PB=0xff;
PA=0x00;
adc=0x00;
}
}
}
/*******************外部中断0程序,用于档位调节**************/
voiddangwei1()interrupt0
{
DelayMS
(2);//延迟,去抖动
i=(i+1)%3;//实现档位的循环
flag=1;//标志位置1
}
/*****************档位显示程序*******************************/
voidwei_2()
{
switch(i)
{case0:
PB=0xff;
PB=table[1];PA=0xfe;adc=0x7f;DelayMS
(2);break;//低速档位1档
case1:
PB=0xff;
PB=table[2];PA=0xfe;adc=0xbf;DelayMS
(2);break;//中速档位2档
case2:
PB=0xff;
PB=table[3];PA=0xfe;adc=0xff;DelayMS
(2);//高速档位3档
}
}
附录2、实验原理图