天津大学 智能装置课程设计报告 - 图文

更新时间:2023-09-27 23:23:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

智能装置课程设计报告

一、设计题目 空调控制系统

二、设计目的

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 \

#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

ADCON1=0x0e;//0000 1110 adfm=0 直接读低8位 1110 选择RA0 delay(); }

int get_ad() {

int adval; ADGO=1; while(ADGO) {;} adval=ADRESH; return adval; }

void delay() { for(int i=500;i>0;i--); }

(2)编制MAX515程序,驱动电机旋转。 #include

#include \

void max515_write(unsigned char data) { unsigned char i; MAX515_CS=0; //拉低片选线,选中器件 //发送地址 for (i=0;i<8;i++) //移位循环8次,最高频率为10MHz { MAX515_SCLK=0; //清零时钟总线 if(data&(1<<11-i)) MAX515_DIN=1; //每次取高字节 else MAX515_DIN=0; MAX515_SCLK=1; //时钟上升沿,发送地址 } MAX515_CS=1; //发送结束,上升沿锁存数据 }

void max515_init(void)

本文来源:https://www.bwwdw.com/article/cb1d.html

Top