单片机课程设计报告模板

南京信息工程大学

单片机课程设计报告模板

单片机原理课程设计报告

设计题目: 直流数字电压表设计 专业班级: 测控技术与仪器 学生姓名:

学生学号:

指导老师:

成 绩:

二○一三年 六 月 二十 日

一、设计任务、目的与要求

1

1.1 设计任务

通过STC89S52单片机与ADC0809、1602液晶等原件设计一个一般精度的三位半数字电压表。

1.2 设计目的

1、通过动手实践在理论学习的基础上更加理解51单片机的应用

2、提高动手能力,为将来就业奠定基础

3、了解掌握相关软硬件应用软件,如KEIL、ALTIUM DESIGNER等

4、熟悉应用开发基本流程,学会查询相关芯片资料并自主学习应用

1.3 设计要求

在已有相关元器件基础上,通过查询相关资料并在理解单片机相关知识基础上,能自主设计相关硬件电路,在万能板上布局相关器件并动手焊接,并通过KEIL软件编程,烧录到51单片机芯片中,使系统能成为独立工作的三位半数字电压表。

二、系统总体方案设计

2.1 系统组成

系统包括电源电路模块、单片机最小系统模块、ADC0809与单片机接口电路模块、液晶显示模块。

2.2 系统工作原理

系统核心部分是ADC0809模数转换模块。只要通过AD转换,将数据送给单片机,单片机通过数据处理再送到1602液晶显示。

ADC0809是带有8位A/D转换器、8路多路开关以及微处理机兼容的控制逻辑的CMOS组件。它是逐次逼近式A/D转换器,可以和单片机直接接口。

1)ADC0809的内部逻辑结构

由下图可知,ADC0809由一个8路模拟开关、一个地址锁存与译码器、一个A/D转换器和一个三态输出锁存器组成。多路开关可选通8个模拟通道,允许8路模拟 2

量分时输入,共用A/D转换器进行转换。三态输出锁器用于锁存A/D转换完的数字量,当OE端为高电平时,才可以从三态输出锁存器取走转换完的数据。

单片机课程设计报告模板

(2).ADC0809引脚结构

ADC0809各脚功能如下:

D7-D0:8位数字量输出引脚。

IN0-IN7:8位模拟量输入引脚。

VCC:+5V工作电压。

GND:地。

REF(+):参考电压正端。

REF(-):参考电压负端。

START:A/D转换启动信号输入端。

ALE:地址锁存允许信号输入端。

(以上两种信号用于启动A/D转换)

EOC:转换结束信号输出引脚,开始转换时为低电平,当转换结束时为高电平。 OE:输出允许控制端,用以打开三态数据输出锁存器。

CLK:时钟信号输入端(一般为500KHz)。

A、B、C:地址输入线。

3

ADC0809对输入模拟量要求:信号单极性,电压范围是0-5V,若信号太小,必须进行放大;输入的模拟量在转换过程中应该保持不变,如若模拟量变化太快,则需在输入前增加采样保持电路。

地址输入和控制线:4条

ALE为地址锁存允许输入线,高电平有效。当ALE线为高电平时,地址锁存与译码器将A,B,C三条地址线的地址信号进行锁存,经译码后被选中的通道的模拟量进入转换器进行转换。A,B和C为地址输入线,用于选通IN0-IN7上的一路模拟量输入。通道选择表如下表所示。

单片机课程设计报告模板

4

单片机课程设计报告模板

单片机课程设计报告模板

数字量输出及控制线:11条

ST为转换启动信号。当ST上跳沿时,所有内部寄存器清零;下跳沿时,开始进行A/D转换;在转换期间,ST应保持低电平。EOC为转换结束信号。当EOC为高电平时,表明转换结束;否则,表明正在进行A/D转换。OE为输出允许信号,用于控制三条输出锁存器向单片机输出转换得到的数据。OE=1,输出转换得到的数据;OE=0,输出数据线呈高阻状态。D7-D0为数字量输出线。

CLK为时钟输入信号线。因ADC0809的内部没有时钟电路,所需时钟信号必须由外界提供,通常使用频率为500KHZ,

VREF(+),VREF(-)为参考电压输入。

2. ADC0809应用说明

(1). ADC0809内部带有输出锁存器,可以与AT89S51单片机直接相连。

(2). 初始化时,使ST和OE信号全为低电平。

(3). 送要转换的哪一通道的地址到A,B,C端口上。

(4). 在ST端给出一个至少有100ns宽的正脉冲信号。

(5). 是否转换完毕,我们根据EOC信号来判断。

(6). 当EOC变为高电平时,这时给OE为高电平,转换的数据就输出给单片机了。

三、系统硬件设计

3.1电源电路设计

单片机课程设计报告模板

BT1+6vGND(C?)

5

单片机课程设计报告模板

3.2单片机最小系统

单片机课程设计报告模板

单片机课程设计报告模板

单片机课程设计报告模板

(U?)

C1(C?)22uf

VCC

+1

单片机课程设计报告模板

3.3 液晶显示电路

3.4单片机与ADC0809接口电路

6

3.5系统整体硬件原理图

单片机课程设计报告模板

四、系统软件设计

4.1 系统程序设计

系统软件设计包括ADC0809数据采集程序设计、1602液晶显示程序设计、延迟子程序

7

单片机课程设计报告模板

设计,其中ADC0809数据采集程序是整个系统程序核心,也是最难的,采用中断判断采集结束信号再由单片机进行处理。

4.2 系统源程序

4.2.1系统主函数

#include<reg52.h>

#include<stdio.h>

#define uchar unsigned char

#define uint unsigned int

#define _NOP_ _nop_()

#include"1602.h"

#include"delay.h"

#include"intrins.h"

sbit ST=P2^5;

sbit OE=P2^3;

sbit EOC=P3^2;

sbit ALE=P2^7;

uchar value=0;

float voltage2=0;

uchar si=0;

uint sun2=0;

char v2[5];

uchar flag;

void Start_ADC0809();

uchar str1[11]="dianyazhi";

void adc0809_init()

{

8

EA=1;//开总中断 TCON=0x01;

EX0=1;//开外部中断0

ST=0;

}

void main()

{ //uint i;

adc0809_init();

Start_ADC0809(); DelayUs2x(2); lcd_init(); delay(1); lcd_zifu(str1,0x01); while(1) OE=0; ALE=0; { _NOP_;_NOP_; OE=1; value=P0; OE=0; _NOP_;_NOP_; if(flag==1) { flag=0; voltage2=(float)value*5/256; 9

sprintf(v2,"%5.2f",voltage2); lcd_zifu(v2,0x46); }

}

}

/*----------------------------------

启动ADC0809

-----------------------------------*/

void Start_ADC0809()

{

_NOP_;

ST=0;

ALE=0;

_NOP_;

ST=1;

ALE=1;

_NOP_;

_NOP_;

ST=0;

ALE=0;

_NOP_;

}

/*----------------------------------

读ADC0809结果

-----------------------------------*/

10

void In0() interrupt 0 using 0 {

flag=1;

}

4.2.2

#include<reg52.h>

#include<intrins.h>

#include"1602.h"

#include"delay.h"

#define uchar unsigned char #define uint unsigned int sbit rs=P3^0;

sbit rw=P3^1;

sbit en=P3^3;

void lcd_1602(uchar comm); void lcd_write(uchar dat); bit lcd_busy();

void delay(uchar); void lcd_1602(uchar comm);

void lcd_data(uchar *p,uchar wei);

bit lcd_busy();

sbit busy=P1^7;

/***************************** 1602液晶写命令函数

参数:

返回值:无

11

******************************/ void lcd_1602(uchar comm) {

while(lcd_busy());//查忙 rs = 0;

rw = 0;

en = 0;

_nop_();

P1 = comm;

_nop_();

en = 1;

_nop_();

_nop_();

en = 0;

}

/***************************** 1602液晶写数据函数

参数:

返回值:无

******************************/ void lcd_write(uchar dat)

{

while(lcd_busy());//查忙 rs = 1;

rw = 0;

en = 0;

_nop_();

12

}

P1= dat; _nop_(); _nop_(); en = 1; _nop_(); _nop_(); en = 0;

/***************************** 1602液晶初始化函数

参数:无

返回值:无

******************************/ void lcd_init()

{

lcd_1602(0x38); delay(3); lcd_1602(0x38); delay(3); lcd_1602(0x38); delay(3); lcd_1602(0x38);

lcd_1602(0x08); /*显示关闭*/ lcd_1602(0x01); /*显示清屏*/

lcd_1602(0x06); /*显示光标移动设置*/ delay(3);

13

lcd_1602(0x06);

delay(5);

lcd_1602(0x0c);

}

/***************************** 1602液晶读忙标志

参数:无

返回值:无

******************************/ bit lcd_busy()

{

bit result;

rs = 0;

rw = 1;

en = 1;

delay(2);

result = busy;

en = 0;

return result;

}

/***************************** 1602液晶写字符

参数:

返回值:无

******************************/ void lcd_zifu(uchar *p,uchar wei) {

14

} uchar temp; lcd_1602(0x80+wei); for(temp=*p;temp!='\0';p++,temp=*p) lcd_write(temp); delay(10);

void lcd_data(uchar *p,uchar wei)

{

}

#include "delay.h"

/*------------------------------------------------

uS延时函数,含有输入参数 unsigned char t,无返回值 unsigned char 是定义无符号字符变量,其值的范围是

0~255 这里使用晶振12M,精确延时请使用汇编,大致延时 长度如下 T=tx2+5 uS

------------------------------------------------*/

void DelayUs2x(unsigned char t)

{

while(--t);

}

/*------------------------------------------------

mS延时函数,含有输入参数 unsigned char t,无返回值 uchar temp; lcd_1602(0x80+wei); for(temp=*p;temp!='\0';p++,temp=*p) lcd_write(temp); delay(10); 15

unsigned char 是定义无符号字符变量,其值的范围是 0~255 这里使用晶振12M,精确延时请使用汇编 ------------------------------------------------*/

extern void delay(unsigned char t)

{

while(t--)

{

//大致延时1mS

DelayUs2x(245);

DelayUs2x(245);

}

}

五、设计实物图片展示

单片机课程设计报告模板

16

六、课程设计总结(心得体会)

5.1 本课程设计应该是大部分同学的第一次真正动手实践。本小组成员通过优势互补,互相协作,最终完成设计任务。在设计过程中由于开始觉得比较简单,比较大意,硬件电路设计较为迅速,焊接过程也比较快,焊接完成后,发现了许多错误。虽然焊接时错误也是难免的,但如果更加小心可能会更好。 由于小组成员在软件编程方面比较薄弱,花了较长时间才完成了相关软件设计。虽然不容易,但我们也从中学会了很多。以前在软件设计方面总是一大块,现在我们学会了使用模块化设计方法,使程序的可移植性、清晰性更加明显。

5.2老师的指导是我们首先要感谢的,老师将设计相关内容原理给我们讲的比较透彻,在设计过程中耐心指导,使我们少走很多弯路。团队合作也比较关键,小组成员知识掌握程度不一,组长在理论和实践方面比较熟悉,带领组员一起动手,分工明确,使工作效率大大提高。大家也都从中学到了很多。

17

 

第二篇:PIC单片机 实验报告模板

PIC单片机技术 上机实验报告

实验项目: 定时/计数 姓 名: 专 业: 班 级: 学 号: 学 期: 1314 学年2 学期

20xx

一、实验名称

×××

二、实验设备

×××× (实验所需的设备或者软件)

三、实验目的

1.××××

2.××××

3.

4.

四、实验要求

××××××××

五、理论原理

×××××(本次实验所用到的书上的理论知识点的概要说明。)

六、实验内容步骤

1.×××××××××××××××××××××××××××××××××××××××××

2.×××××××××××

3.×××××

七、实验程序

附软件流程、程序源代码。(程序要注释)

八、实验结果

附:电路原理图、Proteus仿真的结果图片等。并做文字说明。

九、分析总结

××××××××(实验过程遇到的问题、思考及解决方法;此次实验的功能模块在实际应用的思考、本次实验的心得体会等)

1

相关推荐