基于msp430片内传感器和1602液晶显示器的温度计Word文件下载.docx

上传人:b****6 文档编号:18941883 上传时间:2023-01-02 格式:DOCX 页数:13 大小:221.71KB
下载 相关 举报
基于msp430片内传感器和1602液晶显示器的温度计Word文件下载.docx_第1页
第1页 / 共13页
基于msp430片内传感器和1602液晶显示器的温度计Word文件下载.docx_第2页
第2页 / 共13页
基于msp430片内传感器和1602液晶显示器的温度计Word文件下载.docx_第3页
第3页 / 共13页
基于msp430片内传感器和1602液晶显示器的温度计Word文件下载.docx_第4页
第4页 / 共13页
基于msp430片内传感器和1602液晶显示器的温度计Word文件下载.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

基于msp430片内传感器和1602液晶显示器的温度计Word文件下载.docx

《基于msp430片内传感器和1602液晶显示器的温度计Word文件下载.docx》由会员分享,可在线阅读,更多相关《基于msp430片内传感器和1602液晶显示器的温度计Word文件下载.docx(13页珍藏版)》请在冰豆网上搜索。

基于msp430片内传感器和1602液晶显示器的温度计Word文件下载.docx

2.2、1602液晶显示器7

第三章、电路设计8

3.1、系统原理图9

3.2、液晶显示电路图9

第四章、软件设计11

4.1、系统流程图11

4.2、程序12

第五章、感悟12

引言

单片机诞生于20世纪70年代,象Fairchid公司研制的F8单片微型计算机。

所谓单片机是利用大规模集成电路技术把中央处理单元(CenterProcessingUnit,也即常称的CPU)和数据存储器(RAM)、程序存储器(ROM)及其他I/O通信口集成在一块芯片上,构成一个最小的计算机系统,而现代的单片机则加上了中断单元,定时单元及A/D转换等更复杂、更完善的电路,使得单片机的功能越来越强大,应用更广泛。

80年代,世界各大公司均竞相研制出品种多功能强的单片机,约有几十个系列,300多个品种,此时的单片机均属于真正的单片化,大多集成了CPU、RAM、ROM、数目繁多的I/O接口、多种中断系统,甚至还有一些带A/D转换器的单片机,功能越来越强大,RAM和ROM的容量也越来越大,寻址空间甚至可达64kB,可以说,单片机发展到了一个全新阶段,应用领域更广泛,许多家用电器均走向利用单片机控制的智能化发展道路。

1990年美国INTEL公司推出了80960超级32位单片机引起了计算机界的轰动,产品相继投放市场,成为单片机发展史上又一个重要的里程碑。

单片机的应用越来越广泛,msp430更是拥有极低功耗的优点。

而且430内部有温度传感器,还有ADC10模数转换模块,刚好可以用来显示温度。

第一章、总体分析

1.1、功能和系统原理介绍

功能介绍:

本设计可以通过片内温度传感器采集温度,然后用1602液晶显示器显示温度。

原理:

ADC10通过温度传感器采集温度值,然后输出到液晶显示器显示。

1.2、元件清单

msp430芯片1块

1602液晶显示器1个

滑动变阻器1个

杜邦线19根

第二章、硬件设计

2.1、msp430的参数介绍

1.msp430是一种低功耗性单片机。

(1)运行模式:

230uA在1MHZ频率和2.2V电压条件下。

(2)待机模式:

0.5uA。

(3)关闭模式:

0.1uA。

2.工作电压:

1.8V~3.6V  

3.基本的时钟模块配置:

(1)内部具有超低功耗低频振荡器。

(2)具有四种校准频率并达到16MHz的内部频率。

(3)32kHz晶体。

(4)外部数字时钟。

4.具有快速的唤醒功能。

  

5.两个16的timer_A,分别具有三个捕获/比较寄存器。

6.20个支持触摸感应的I/O引脚。

7.通用串行通信接口(USCI)。

(1)支持自动波特率检测增强型通用异步收发器(UART)

(2)lrDA编译器和解码器。

(3)同步SPI和I2C.

8.用于模拟信号比较功能或者斜率模数(A\D)转换的片载比较器。

9.具有看门狗功能  

10.带内部基准、采样与保持以及自动扫描功能的ADC10。

11.工作温度范围:

-40~+85℃(工业级)/0~75℃(商业级)

2.2、1602液晶显示器介绍

1.1602字符型液晶显示器实物如图:

1602字符型液晶显示器实物图

2.1602LCD的基本参数及引脚功能

1602LCD分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别,两者尺寸差别如下图所示:

1602LCD尺寸图

1602LCD主要技术参数:

显示容量:

16×

2个字符

芯片工作电压:

4.5—5.5V

工作电流:

2.0mA(5.0V)

模块最佳工作电压:

5.0V

字符尺寸:

2.95×

4.35(W×

H)mm

引脚功能说明

1602LCD采用标准的16脚(带背光)接口,各引脚接口说明如表所示:

编号

符号

引脚说明

1

VSS

电源地

9

D2

数据

2

VDD

电源正极

10

D3

3

VL

液晶显示偏压

11

D4

4

RS

数据/命令选择

12

D5

5

R/W

读/写选择

13

D6

6

E

使能信号

14

D7

7

D0

15

BLA

背光源正极

8

D1

16

BLK

背光源负极

表:

引脚接口说明表

第1脚:

VSS为地电源。

第2脚:

VDD接5V正电源。

第3脚:

VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。

第4脚:

RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。

第5脚:

R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。

当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。

第6脚:

E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。

第7~14脚:

D0~D7为8位双向数据线。

第15脚:

背光源正极。

第16脚:

第三章、电路原理图

3.1、系统原理图

3.2、液晶图

第四章、软件设计

4.1、系统流程图

4.2、程序

#include"

msp430.h"

#defineucharunsignedchar

#defineuintunsignedint

#defineRSBIT0

#defineRWBIT1

#defineENBIT2

voidlcd_busy(void);

//测试LCD忙碌状态程序

voidlcd_wcmd(unsignedcharcmd);

//写入指令到LCD程序

voidlcd_wdat(unsignedchardat);

//写入数据到LCD程序

voidlcd_init(void);

//LCD初始化设定程序

unsignedcharmun[]={"

0123456789abcdef"

};

staticunsignedcharwendu=0;

/*******延时1***************************/

voiddelay_nms(unsignedintn)

{

unsignedinti=0,j=0;

for(i=n;

i>

0;

i--)

for(j=0;

j<

800;

j++);

//800

}

/***********延时2**********************/

voiddelay_mini(unsignedcharn)

while(n--)

{

_NOP();

}

/***********延时3**********************/

voiddelay(unsignedintcnt)//延时

while(cnt)

cnt--;

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

//测试LCD忙碌状态

voidlcd_busy(void)

{unsignedcharbz;

do{

P2OUT&

=~(EN);

//ep=0;

=~(RS);

//rs=0;

//指令

P2OUT|=RW;

//rw=1;

//读出

P1OUT=0xff;

//io=0xff;

P2OUT|=EN;

//ep=1;

delay_mini(10);

//_nop_();

//高电平读出1us

P1DIR=0;

;

bz=(P1IN&

BIT7)>

>

7;

//bz=0;

P1DIR=0xff;

}while(bz);

//bz=1表示忙,bz=0表示空闲

delay_mini(100);

//写入指令到LCD

voidlcd_wcmd(unsignedcharcmd)

lcd_busy();

//检测忙

=~(RW);

//rw=0;

//写入

delay_mini(5);

P1OUT=cmd;

//下降沿有效

//写入数据函数

voidlcd_wdat(unsignedcharData)

P2OUT|=RS;

//rs=1;

//数据

//rw=0;

P1OUT=Data;

//LCD初始化设定

voidlcd_init()

{P1DIR=0xff;

//设P6口为输入方式

P1SEL=0;

//设P6口为一般I/O口

P2DIR|=BIT0;

P2DIR|=BIT1;

P2DIR|=BIT2;

P2SEL=0;

lcd_wcmd(0x38);

//设置LCD为16X2显示,5X7点阵,八位数据接口

lcd_wcmd(0x06);

//LCD显示光标移动设置(光标地址指针加1,整屏显示不移动)

lcd_wcmd(0x0f);

//LCD开显示及光标设置(光标不闪烁,不显示"

_"

lcd_wcmd(0x01);

//清除LCD的显示内容

/******************主函数*****************************/

voidmain(void)

unsignedchari;

unsignedshortADvalue;

unsignedshorttemp;

WDTCTL=WDTPW+WDTHOLD;

//StopWDT

ADC10CTL1=INCH_10+ADC10DIV_3;

//TempSensorADC10CLK/4

ADC10CTL0=SREF_1+ADC10SHT_3+REFON+ADC10ON+ADC10IE;

//参考电压

CCTL0=CCIE;

//设置捕获/比较控制寄存器中CCIE位为1,CCR0捕获/比较功能中断为允许。

CCR0=50000;

//捕获/比较控制寄存器CCR0初值为50000。

TACTL=TASSEL_2+MC_2;

//设置定时器A控制寄存器TACTL,使时钟源选择为SMCLK辅助时钟。

_EINT();

for(;

//转换5次

ADvalue=0;

for(i=0;

i<

5;

i++)

ADC10CTL0|=ENC+ADC10SC;

//Samplingandconversionstart

ADvalue+=ADC10MEM;

temp=ADvalue/5;

wendu=(unsignedchar)(temp*211/512-278);

delay(30000);

//定时器A中断服务程序区**********

#pragmavector=TIMER0_A0_VECTOR//固定的格式

__interruptvoidTimer_A(void)//定时器A的CC0中断处理程序必须是没有返回值的

unsignedcharx;

CCR0+=1000;

//重新载入CCR0捕获/比较数据寄存器数据

//初始化并显示temp字样

uchari;

uchars[]="

wendu"

lcd_init();

lcd_wcmd(0x80);

lcd_wcmd(0x80+i);

lcd_wdat(s[i]);

delay_nms(5);

//显示十位

x=wendu/10;

lcd_wcmd(0x80+0x06);

lcd_wdat(mun[x]);

//显示个

x=wendu%10;

lcd_wcmd(0x80+0x07);

//ADC10interruptserviceroutine

#pragmavector=ADC10_VECTOR

__interruptvoidADC10_ISR(void)

__bic_SR_register_on_exit(CPUOFF);

//Returntoactivemode

第五章、感悟

430与51的最大区别在于430有很多的寄存器,较之51程序较为复杂。

前学习过51单片机,虽然单片机的组成都是差不多但还有很大的区别,被说别的就拿本次设计还说,虽说是之前是了解过还改用msp430设计还是有一点的难度,对于51单片机I/O口多,而现在我们用的msp430虽说是功能多,但编程起来还是很困难,可能是我知识的欠缺,之前所学的可能是最简单的,现在学习了这个16位的单片机还是有一点难度,不过,我个人觉得功能很多,还需多学习。

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

当前位置:首页 > 自然科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1