单片机课设报告.docx

上传人:b****4 文档编号:13965481 上传时间:2023-06-19 格式:DOCX 页数:11 大小:364.15KB
下载 相关 举报
单片机课设报告.docx_第1页
第1页 / 共11页
单片机课设报告.docx_第2页
第2页 / 共11页
单片机课设报告.docx_第3页
第3页 / 共11页
单片机课设报告.docx_第4页
第4页 / 共11页
单片机课设报告.docx_第5页
第5页 / 共11页
单片机课设报告.docx_第6页
第6页 / 共11页
单片机课设报告.docx_第7页
第7页 / 共11页
单片机课设报告.docx_第8页
第8页 / 共11页
单片机课设报告.docx_第9页
第9页 / 共11页
单片机课设报告.docx_第10页
第10页 / 共11页
单片机课设报告.docx_第11页
第11页 / 共11页
亲,该文档总共11页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

单片机课设报告.docx

《单片机课设报告.docx》由会员分享,可在线阅读,更多相关《单片机课设报告.docx(11页珍藏版)》请在冰点文库上搜索。

单片机课设报告.docx

单片机课设报告

1、项目设计目的

本次课设是用热敏电阻做温度敏感器件,通过模数转换、校准等,最后显示在液晶屏上。

通过做这次设计加强我们的动手操作能力和团队合作能力。

同时也加深我们对C51单片机工作原理和其系统内部结构,如何工作等的理解。

通过这次课程设计也锻炼了我们的编程能力,方便我们对各个编程软件的使用方法的掌握。

2、项目设计正文

2、1硬件设计

2、1、1方案设计

传统的温度检测以热敏电阻为温度敏感元件,热敏电阻成本低,但需要接信号处理电路,而且热敏电阻的可靠性较差,测量温度的准确度低,检测系统的精度差。

因此,采用单片机进行温度检测、数值显示和数据的传送,这样就会使效率高、性能稳定等。

本系统的温度测量采用热阻效应。

温度测量模块主要为温度测量电桥,当温度发生变化时,电桥失去平衡,从而在电桥输出端有电压输出,但该电压很小。

将输出的微弱电压信号通过一个差分放大器放大,将放大后的信号输入AD转换芯片,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来。

2、1、2单元电路设计

本次实验中我主要是做汉显12864部分的设计。

12864是一种带中文字库的128X64是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64,内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。

可以显示8×4行16×16点阵的汉字.也可完成图形显示。

低电压低功耗是其又一显著特点。

由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。

其各个引脚图如下:

 

每个引脚的功能如下表所示

管脚名称

电平

管脚功能描述

1

VSS

0V

电源地

2

VCC

3.0+5V

电源正

3

V0

-

对比度(亮度)调整

4

RS(CS)

H/L

RS=“H”,表示DB7——DB0为显示数据

RS=“L”,表示DB7——DB0为显示指令数据

5

R/W(SID)

H/L

R/W=“H”,E=“H”,数据被读到DB7——DB0

R/W=“L”,E=“H→L”,DB7——DB0的数据被写到IR或DR

6

E(SCLK)

H/L

使能信号

7

DB0

H/L

三态数据线

8

DB1

H/L

三态数据线

9

DB2

H/L

三态数据线

10

DB3

H/L

三态数据线

11

DB4

H/L

三态数据线

12

DB5

H/L

三态数据线

13

DB6

H/L

三态数据线

14

DB7

H/L

三态数据线

15

PSB

H/L

H:

8位或4位并口方式,L:

串口方式

16

NC

-

空脚

17

/RESET

H/L

复位端,低电平有效

18

VOUT

-

LCD驱动电压输出端

19

A

VDD

背光源正端(+5V)

20

K

VSS

背光源负端

2、2软件设计

2、2、1系统分析

本次课程设计所用的是模块化编程,所使用的编程软件为Keil软件,仿真软件为Proteus7.5。

其中系统程序包括主程序、lcd12864汉显程序、及时钟芯片DS1302的程序。

所有的源程序导入到Keil软件中进行。

系统的流程图如下:

 

 

 

2、2、2系统设计

本次设计所用的电路图如下:

 

2、2、3LCD12864

编程实现汉显功能的程序如下:

#include"lcd12864.h"

#include"intrins.h"

#defineucharunsignedchar

#defineuintunsignedint

voidv_Lcd12864CheckBusy_f(void)//忙检测函数

{

unsignedintnTimeOut=0;

SET_INC

SET_READ

CLR_EN

SET_EN

while((io_LCD12864_DATAPORT&0x80)&&(++nTimeOut!

=0));

CLR_EN

SET_INC

SET_READ

}

voidv_Lcd12864SendCmd_f(unsignedcharbyCmd)//发送命令

{

v_Lcd12864CheckBusy_f();

SET_INC

SET_WRITE

CLR_EN

io_LCD12864_DATAPORT=byCmd;

_nop_();

_nop_();

SET_EN

_nop_();

_nop_();

CLR_EN

SET_READ

SET_INC

}

voidv_Lcd12864SendData_f(unsignedcharbyData)//发送数据

{

v_Lcd12864CheckBusy_f();

SET_DATA

SET_WRITE

CLR_EN

io_LCD12864_DATAPORT=byData;

_nop_();

_nop_();

SET_EN

_nop_();

_nop_();

CLR_EN

SET_READ

SET_INC

}

voidv_DelayMs_f(unsignedintnDelay)//延时

{

unsignedinti;

for(;nDelay>0;nDelay--)

{

for(i=125;i>0;i--);

}

}

voidv_Lcd12864Init_f(void)//初始化

{

v_Lcd12864SendCmd_f(0x30);//基本指令集

v_DelayMs_f(50);

v_Lcd12864SendCmd_f(0x01);//清屏

v_DelayMs_f(50);

v_Lcd12864SendCmd_f(0x06);//光标右移

v_DelayMs_f(50);

v_Lcd12864SendCmd_f(0x0c);//开显示

}

voidv_Lcd12864SetAddress_f(unsignedcharx,y)//地址转换

{

unsignedcharbyAddress;

switch(y)

{

case0:

byAddress=0x80+x;

break;

case1:

byAddress=0x90+x;

break;

case2:

byAddress=0x88+x;

break;

case3:

byAddress=0x98+x;

break;

default:

break;

}

v_Lcd12864SendCmd_f(byAddress);

}

voidv_Lcd12864PutString_f(ucharx,uchary,uchar*pData)

{

v_Lcd12864SetAddress_f(x,y);

while(*pData!

='\0')

{

v_Lcd12864SendData_f(*pData++);

}

}

12864对各个引脚定义编程为:

#ifndef_12864_H_

#define_12864_H_

#include

#defineucharunsignedchar

#defineuintunsignedint

sbitio_LCD12864_RS=P2^0;

sbitio_LCD12864_RW=P2^1;

sbitio_LCD12864_EN=P2^2;

#defineio_LCD12864_DATAPORTP0

//#defineCLR_CS1io_LCD12864_CS1=0;

//#defineCLR_CS2io_LCD12864_CS1=0;

#defineSET_DATAio_LCD12864_RS=1;

#defineSET_INCio_LCD12864_RS=0;

#defineSET_READio_LCD12864_RW=1;

#defineSET_WRITEio_LCD12864_RW=0;

#defineSET_ENio_LCD12864_EN=1;

#defineCLR_ENio_LCD12864_EN=0;

//******************************fonction*********************//

/*************************************************************/

voidv_Lcd12864CheckBusy_f(void);

voidv_Lcd12864SendCmd_f(unsignedcharbyCmd);

voidv_Lcd12864SendData_f(unsignedcharbyData);

voidv_DelayMs_f(unsignedintnDelay);

voidv_Lcd12864Init_f(void);

voidv_Lcd12864SetAddress_f(unsignedcharx,y);

voidv_Lcd12864PutString_f(unsignedcharx,unsignedchary,unsignedchar*pData);

/*************************************************************/

#endif

3、项目设计总结及结论

由于做设计之前对所要设计的电路和器件不是太了解,所以老师给我们时间查询了各个器件的资料及功能,让我们对此有了一个大致的了解。

在编程时,由于温度需要用分段函数来显示,结果我们没有用,经过老师的指导我们改进了程序,使得其温度的显示有所精确。

在设计时注意温度的范围。

此次课程设计使我学到了很多知识。

无论是在查阅资料还是动手编程焊接也好,都让我对单片机的认识加深。

这中间有过问题,但都需要我们想办法去解决,这样才能取得最后的成功。

4、参考文献

[1]张毅刚、彭喜元、彭宇等,单片机原理及应用(第二版)高等教育出版社

[2]邵发森.单片机原理与应用及其实验指导书[M].北京:

北京大学出版社,2012年8月:

171-226..

[3]李华,王思明,张金敏.单片机原理及应用[M].兰州:

兰州大学出版社,2001年5月:

8-67.

[4]张立.基于单片机的数字温度计设计[J].吉林:

华章,2011年11月(31):

347.

 

项目设计

评语

项目设计

成绩

指导教师

(签字)

年月日

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2