PCB实训项目总体方案设计

  • 格式:doc
  • 大小:1.89 MB
  • 文档页数:16

下载文档原格式

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

第一组:

实训指导老师:

日期:

目录

绪论 (3)

1.1概述 (3)

1.2设计要求及主要功能介绍 (3)

第二章系统总体方案设计 (4)

2.1系统功能模块的划分 (4)

2.2系统原理框图 (4)

2.3系统仿真原理图 (5)

2.4PCB原理图 (5)

2.5PCB板 (6)

2.6系统硬件设计 (6)

2.7系统软件设计 (7)

2.8硬件设计与调试 (13)

2.9成果展示 (13)

小组总结 (14)

3.1小组成员有话说: (14)

3.2小组总结 (15)

3.3小组评分 (15)

参考文献 (16)

绪论

1.1 概述

单片机以其强大的控制能力已经被广泛应用于诸多领域,配以各种接口传感器可以实现系统的智能化。无论是在工业控制领域、医疗卫生领域、还是在国防军事领域、航天航空领域,微控制器都起着举足轻重的作用。从最初的8位控制器到现在的16位、32位控制器都还有很大的发展和应用空间。

本次实训以贴近实际为主,我们组就设计一个带有测温功能的电子万年历,再设计的过程中将所学的知识运用到实际中来,已达到培养我们运用知识解决实际问题的能力。

1.2 设计要求及主要功能介绍

(1)显示实时时间。由实时时钟芯片DS1302提供实时时间的数据。

(2)显示实时温度。由温度测量芯片DS18B20提供实时温度的数据。

(3)参数修改。由四个按钮来修改参数:加减按钮﹑定位按钮﹑确定按钮。

(4)通讯。通过RX232串口与上位机的通讯,将数据上传给上位机。

第二章系统总体方案设计

2.1 系统功能模块的划分

按照设计要求,系统可以分为以下几个基本功能模块:显示模块参数修改模块﹑通讯模块等。

有些模块的功能是由硬件完成,有些模块的功能由软、硬件配合完成,有些模块则是由软件、硬件、机械三部分共同完成。

将系统拆分成以上的这些基本功能模块后,再根据各个模块所要完成的功能分别去设计,也就是按照“逐步求精”的思想去设计本系统,这将使设计工作细化,也有助于制定进度安排。

2.2 系统原理框图

2.3 系统仿真原理图

2.4 PCB原理图

2.5 PCB板

2.6系统硬件设计

1)该项目的CPU使用AVR系列中的ATMEG16。该芯片能存储16K的指令程序且程序不丢。(并且我们有现成的针对AVR系列单片机的仿真软件和程序编写环境)

2) 实时时间模块用美国DALLAS公司推出实时时间芯片DS1302,

实时时钟电路DS1302是DALLAS公司的一种具有涓细电流充电能力的电

路,主要特点是采用串行数据传输,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。DS1302可以对年、月、日、周日、时、分、秒进行计时,且具有闰年补偿等多种功能。

3)实时温度模块用智能温度芯片DS18B20。单线数字温度传感器DS18B20 就是一个1-wire 器件,该器件可把温度直接转换成串行数字信号供微机处理。由于每片DS18B20 含有唯一的硅串行数,所以在一条总线上可

挂接任意多个DS18B20 芯片。从DS18B20 读出的信息或写入DS18B20 的信息,仅需要一根端口线,该端口线同时也可以向DS18B20 供电,从而无需额外电源。DS18B20 提供9~12 位温度读数,构成多点温度检测系统而无需任何外围硬件。

4)参数修改模块采。在该模块中采用四个功能各不相同的按键(加减参

数按钮﹑定位修改按钮﹑确定修改按钮)。

2.7 系统软件设计

该项目相对来说简单,软件也不复杂,我将软件分为如下模块:

1)显示模块:

void CanShuXianShi(int canshu, char dian)

{

char i;

lcd[0]=32; //编号的十位转变为ASCII码

lcd[1]=32; //编号的个位转变为ASCII码

lcd[2]=32; //空格

canshu=canshu*6.25;

if(canshu>=0) lcd[3]=32; //符号处理

else{

canshu=-canshu;

lcd[3]=0x2d; //负号

}

lcd[4]=(uchar)(canshu/10000)+0x30; //参数的万位转变为ASCII码

lcd[5]=(uchar)(canshu/1000%10)+0x30; //参数的千位转变为ASCII码

lcd[6]=(uchar)(canshu/100%10)+0x30; //参数的百位转变为ASCII码

lcd[7]=(uchar)(canshu/10%10)+0x30; //参数的十位转变为ASCII码

lcd[8]=(uchar)(canshu%10)+0x30; //参数的个位转变为ASCII码

//插入小数点

for(i=9;i>9-dian;i--)

lcd[i]=lcd[i-1];

lcd[9-dian]=0x2e;

for(i=4;i<8-dian;i++) //消除参

数前面的0

if(lcd[i]==48)lcd[i]=32;

else break;

}

该函数将温度的值进行剥离,然后再将剥离的每位数填充在数组lcd[9]中,然后在主函数中一位一位的送显示。

2)参数修改模块

if(PINB.0==0&&x==1)

{N++;

delay_ms(10);

}

x=PINB.0;

if(PINB.1==0&&y==1)

{ N--;

delay_ms(10);

}

y=PINB.1;

if(PINB.2==0&&y==1)

{ M++;

delay_ms(10);

if(M>5) M=0;

}

s=PINB.2;

if(M==0) sss=N;

if(M==1) mmm=N;

if(M==2) hhh=N;

if(M==3) yy=N;

if(M==4) mm=N;

if(M==5) dd=N;

zhuanhuan(N);

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

putchar(i,7,d[i]);

putchar(3,7,M+0x30);

if(PINB.3==0&&z==1)

{rtc_set_time(hhh,mmm,sss);

rtc_set_date(dd,mm,yy);

}

z=PINB.3;

该函数利用四个按键,加减按键用来增减需要修改的参数,定位按键用来定位需要修改参数的位置。