AVR单片机软件设计(proteus)报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2013 /2014 学年第一学期

课程设计实验报告

模块名称A VR单片机课程设计(proteus)专业通信工程

学生班级

学生学号

学生姓名

指导教师

AVR单片机软件设计(proteus)报告

一、总体设计原理、思路;

考虑使用数字温度传感器,结合单片机电路设计,采用一只DS18B20温度传感器,直接读取被测温度值,之后进行转换,依次完成设计要求。

二、硬件方面原理图的设计:包括使用的元器件、典型芯片的介绍;原理图的说明等

实验原理图

a)晶振

晶振为单片机提供时钟信号。单片机XIAL1和XIAL2分别接33PF的电容,中间再并一个晶振,形成单片机的晶振电路。

晶振电路

b)复位电路

单片机在启动时都需要复位,以使CPU及系统各部件处于确定的初始状态,并从初态开始工作。AVR复位时所有的I/O 寄存器都被设置为初始值,程序从复位向量处开始执行。复位向量处的指令必须是绝对跳转JMP 指令,以使程序跳转到复位处理例程。

AVR的复位信号源有五个:

上电复位。电源电压低于上电复位门限 VPOT 时, MCU 复位。

外部复位。引脚 RESET 上的低电平持续时间大于最小脉冲宽度时MCU 复位。

看门狗复位。看门狗使能并且看门狗定时器溢出时复位发生。

掉电检测复位。掉电检测复位功能使能,且电源电压低于掉电检测复位门限 VBOT 时 MCU 即复位。

JTAG AVR复位。复位寄存器为1 时MCU 复位。

复位电路

ALE引脚悬空,复位引脚接到复位电路、VCC接电源、VSS接地、EA接电源

c )温度传感器(DS18B20)电路

DS18B20数字温度传感器接线方便,封装成后可应用于多种场合,如管道式,螺纹式,磁铁吸附式,不锈钢

封装式,型号多种多样,有LTM8877,LTM8874等等。主要根据应用场合的不同而改变其外观。封装后的DS18B20可用于电缆沟测温,高炉水循环测温,锅炉测温,机房测温,农业大棚测温,洁净室测温,弹药库测温等各种非极限温度场合。耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域。

1: 技术性能描述

①、独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即

可实现微处理器与DS18B20的双向通讯。

②、测温范围-55℃~+125℃,固有测温误差(注意,不是分辨率,这里

之前是错误的)1℃。

③、支持多点组网功能,多个DS18B20可以并联在唯一的三线上,最多只能

并联8个,实现多点测温,如果数量过多,会使供电电源电压过低,从而造成信号传输的不稳定。

④、工作电源: 3~5V/DC (可以数据线寄生电源)

⑤、在使用中不需要任何外围元件

⑥、测量结果以9~12位数字量方式串行传送

⑦、不锈钢保护管直径Φ6

⑧、适用于DN15~25, DN40~DN250各种介质工业管道和狭小空间设备测温

⑨、标准安装螺纹 M10X1, M12X1.5, G1/2”任选

⑩、PVC电缆直接出线或德式球型接线盒出线,便于与其它电器设备连接。

D)LED显示器电路

LED显示器是由发光二极管显示字段的显示器件。在单片机应用系统中通常使用的是七段LED,这种显示器有共阴极与共阳极两种。例如共阴极,如图1所示。管脚配置如图2所示。

图1 共阴极图2 管脚配置共阴极LED显示器的发光二极管阴极共地,当某个发光二极管的阳极为高电平时,该发光二极管则点亮;共阳极LED显示器的发光二极管阳极并接。七段LED数码管与单片机连接时,只要将一个8位并行输出口与显示器的发光二极管引脚相连即可。多位七段LED数码管与单片机连接时将所有LED的段选线并联在一起,由一个八位I/O口控制,而位选线分别由相应的I/O口线控制。

三、软件方面程序流程图的设计、关键代码的说明(文字说明,非代码的粘贴);#include

#include"math.h"

#define uchar unsigned char

#define uint unsigned int

#define BIT0 (0X01)

#define BIT1 (0X02)

#define BIT2 (0X04)

#define BIT3 (0X08)

#define BIT4 (0X10)

#define BIT5 (0X20)

#define BIT6 (0X40)

#define BIT7 (0X80)

uchar const BIT[8]={0X01,0X02,0X04,0X08,0X10,0X20,0X40,0X80}; #define fosc 8000000UL

uchar sin_tab[64];

uchar fb_tab[64];

uchar timer1_cnt=0;

uchar flag_bo = 0;

int temp=0;

uchar TH1 = (65536-1000)/256;

uchar TL1 = (65536-1000)%256;

void delay_1us(void) //1us延时函数

{

asm("nop");

}

void delay_nus(unsigned int n) //N us延时函数 {

unsigned int i=0;

for (i=0;i

delay_1us();

}

void delayus(unsigned int n) //N us延时函数

{

unsigned int i=0;

for (i=0;i

delay_1us();

}

void delay_1ms(void) //1ms延时函数 {

unsigned int i;

for (i=0;i<1140;i++);

}

void delay_nms(unsigned int n) //N ms延时函数 {

unsigned int i=0;

for (i=0;i

delay_1ms();

}

void delayms(unsigned int n) //N ms延时函数

{

unsigned int i=0;

for (i=0;i

delay_1ms();

}

#define KEY_PORT PORTC

#define KEY_DDR DDRC

#define KEY_PIN PINC

#define KEY1_SDT 0

#define KEY2_SDT 1

#define CLR_KEY1_DDR (KEY_DDR&=~BIT[KEY1_SDT]) #define CLR_KEY2_DDR (KEY_DDR&=~BIT[KEY2_SDT])

#define SET_KEY1_GPIO (KEY_PORT|=BIT[KEY1_SDT])

相关文档
最新文档