天津大学 智能装置课程设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
智能装置课程设计报告
一、设计题目空调控制系统
二、设计目的
1. 深入了解PIC16F877单片机的工作原理,熟练掌握汇编语言程序设计方法,熟
练使用MPLAB-ICD仿真器及MPLAB-IDE仿真调试软件。
2.通过该课程设计使学生初步掌握以单片机为核心的智能装置设计的简单原则、
步骤和方法。
3.熟悉智能装置设计中有关的硬件设计调试,如人机界面等。
4.熟悉智能装置设计中相关软件的设计、编程和调试。
三、设计内容
1.以16F877单片机为核心,结合给出的其他原器件和智能装置实验系统原有的
内容设计空调遥控系统硬件电路。
2.利用实验系统提供的电机模拟空调的压缩机,按键及LED显示模拟遥控器,
可调电阻模拟温度传感器(可调电阻输出电压1-3V代表10-30℃)。
3.编制软件实现设置温度、起停空调、温度控制、风速控制等功能。
4.利用MAX515实现低、中、高3档风速调整。
5.实现空调温度自动控制,温度高于设定温度2度启动低风,高于4度启动中风,
4度以上启动高风。(选做)
四、设计要求
1.根据实验指导书的设计内容及所给出的元件,设计空调系统硬件原理图。
2.按照设计好的硬件原理图在实验板上用导线搭建硬件电路。
3.用万用表检查硬件电路连接是否正确,检查无误后上电并编制简单的测试程
序分步调试各部分功能。
4.在各部分功能实现后,编制完整的空调系统软件,并进行软硬件联调,直到达
到设计要求。
5.按照设计内容要求测试仪表误差并做分析,给出仪表精度,完成后由教师进行
验收检查。
五、实验设备
1.MPLAB-ICD模块与仿真头
2. 智能装置实验系统
3. 安装了MPLAB-IDE开发软件的计算机
4. 数字万用表
5. 导线若干
六、实验项目
1. 设计空调系统硬件电路
⑴采用16F877单片机,利用实验板上提供的电机、MAX515构成空调系统,利用按键及LED构成控制器,可调电阻模拟温度(可调电阻输出电压1-3V代表10-30℃)。
(2)将设置的温度值、空调工作状态通过LED显示
(3)利用MAX515输出调整电压,控制转速。
2.硬件电路连接与检查
⑴将设计好的电路由指导老师检查完毕后,在实验系统上用导线将实际的电路连接
出来。
⑵接线完成后对照原理图用万用表逐根连线检查电路连接是否正确,特别是电源
VCC和VDD有无短路。
⑶检查无误后连接仿真头后通电。
3.编制软件对硬件电路分步调试
(1)对数码管显示电路进行调试,编制简单程序实现将数据在数码管上显示
#include
#include "temperature_header_file.h"
#define DECODE_MODE 0x09 //译码控制寄存器
#define INTENSITY 0x0A //亮度控制寄存器
#define SCAN_LIMIT 0x0B //扫描界限寄存器
#define SHUT_DOWN 0x0C //关断模式寄存器
#define DISPLAY_TEST 0x0F //测试控制寄存器
#define DIG0 0x02 //DIG0
void max7219_write(unsigned char address,unsigned char dat);
void max7219_init(void);
void delay1();
void delay();
void init();
int get_ad();
unsigned char a=0;
void max7219_write(unsigned char address,unsigned char dat)
{
unsigned char i;
MAX7219_LOAD=0; //拉低片选线,选中器件
//发送地址
for (i=0;i<8;i++) //移位循环8次,最高频率为10MHz {
MAX7219_CLK=0; //清零时钟总线
if(address&(1<<7-i))
MAX7219_DIN=1; //每次取高字节else
MAX7219_DIN=0;
MAX7219_CLK=1; //时钟上升沿,发送地址}
//发送数据
for (i=0;i<8;i++)
{
MAX7219_CLK=0;
if(dat&(1<<7-i))
MAX7219_DIN=1; //(bit)(data&0x80); //每次取高字节else
MAX7219_DIN=0;
MAX7219_CLK=1; //时钟上升沿,发送数据}
MAX7219_LOAD=1; //发送结束,上升沿锁存数据}
void max7219_init(void)
{
TRISD=0x00;
PORTD=0x00;
MAX7219_LOAD=1;
max7219_write(SHUT_DOWN,0x01); //开启正常工作模式(0xX1)max7219_write(DISPLAY_TEST,0x00); //选择工作模式(0xX0)
max7219_write(DECODE_MODE,0xFF); //选用全译码模式
max7219_write(SCAN_LIMIT,0x03); //只用前4只LED ;这里没问题
max7219_write(INTENSITY,0x04); //设置初始亮度
}
void main(void)
{
unsigned char i;
max7219_init(); //MAX7219初始化
init();
while(1)
{
a=get_ad();
max7219_write(0x02,a); //数码管显示
max7219_write(0x04,a); //数码管显示
delay1();
}
}
void delay1()
{
for(int i=20000;i>0;i--);
}
void init()
{
TRISA=0x01;//A口RA0输入
TRISC=0x00;
PORTA=0x00;
PORTC=0x00;
ADCON0=0x41;//0100 0001 8倍fosc 0通道开ad