基于51单片机stc89c52的温湿度检测系统.docx

上传人:b****5 文档编号:3605343 上传时间:2022-11-24 格式:DOCX 页数:14 大小:242.18KB
下载 相关 举报
基于51单片机stc89c52的温湿度检测系统.docx_第1页
第1页 / 共14页
基于51单片机stc89c52的温湿度检测系统.docx_第2页
第2页 / 共14页
基于51单片机stc89c52的温湿度检测系统.docx_第3页
第3页 / 共14页
基于51单片机stc89c52的温湿度检测系统.docx_第4页
第4页 / 共14页
基于51单片机stc89c52的温湿度检测系统.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

基于51单片机stc89c52的温湿度检测系统.docx

《基于51单片机stc89c52的温湿度检测系统.docx》由会员分享,可在线阅读,更多相关《基于51单片机stc89c52的温湿度检测系统.docx(14页珍藏版)》请在冰豆网上搜索。

基于51单片机stc89c52的温湿度检测系统.docx

基于51单片机stc89c52的温湿度检测系统

课程设计

基于msp430单片机F5529的文本提取及触摸按键测试

单位:

11电子科学与技术

姓名:

康自林

学号:

1110359

 

【摘要】本设计以MSP430单片机的F5529芯片为核心,利用程序代码提取已存信息以及触摸按键的测试

【关键词】msp430单片机触摸按键提取文本

 

一、设计目的及意义……………………………………

二、系统软件基本思路…………………………………

三、系统调试……………………………………………

四、程序……………………………………………

 

基于msp430f5529单片机的简单程序设计

一、设计目的及意义

在不用sd卡的情况下,利用芯片内部小容量存储来实现提取文本功能,以及利用触摸按键来显示不同图案

二、msp430f5529介绍

1、超低功率

a)230μA/MHz

b)1.9μA待机模式

c)从待机模式唤醒仅需<5μs

2、增强性能

d)高达25MHz

e)全线产品8MHz(1.8-3.6V)

f)1.8VISP闪存擦除及写入

g)自动防故障,灵活的时钟系统

3、创新性能

h)集成LDO,BOR,WDT+,RTC

i)多通道DMA支持待机模式下的数据传送

j)更多连接方式:

USB,RF

k)AES加密,RTC后备电池

l)用户定义的引导装入程序

m)业界领先的代码密度

4、主电路图

三、系统软件基本思路

根据系统定义,用C语言以及430单片机语言编写代码,并使系统能够正常工作,流程图如下:

四.程序

1.显示进入页面

#include

#include"msp430.h"

#include"HAL_PMM.h"

#include"HAL_UCS.h"

#include"HAL_Board.h"

#include"HAL_Buttons.h"

#include"HAL_Cma3000.h"

#include"HAL_Dogs102x6.h"

#include"HAL_Menu.h"

#include"HAL_Wheel.h"

#include"LPM.h"

#include"PMM.h"

#include"lab2.h"

uint16_ttimeoutCounter;

//ThisimagehasbeencreatedbyImageDogusing'ti_bug.jpg'

staticconstuint8_ttiBug[]=

{

0x42,//Imagewidthinpixels

0x08,//Imageheightinrows(1row=8pixels)

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x02,0x03,0x01,0x00,0x03,0x03,0x02,0x02,0x03,0x03,0x02,0x02,0x03,0x03,0x00,

0x02,0x02,0x03,0x07,0x04,0x04,0x03,0x03,0x02,0x02,0x02,0x02,0x02,0x03,0x03,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x20,0x20,0x3F,0xBF,0x02,0xFA,0xFA,0x92,0x93,0xFF,0xFF,0x93,0x92,0xFA,0xFA,0x02,

0x41,0x4F,0xFF,0xFF,0x4E,0x46,0xEB,0xE9,0x49,0x49,0x4F,0x4F,0x49,0xE9,0xE9,0x08,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x20,0xE0,0xC0,0xE0,0xE0,0x40,0xC0,0x80,0xF0,0xF0,0x80,0xC0,0x40,0x60,0x20,

0x80,0x00,0xF0,0xF0,0x00,0x20,0x20,0x20,0x20,0x20,0xE0,0xE0,0x20,0x20,0x20,0x20,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x04,0x44,0x67,0x37,0x14,0x0D,0x1D,0x79,0x71,0x41,0x41,0x41,0x7D,0x7D,0x05,0x04,

0x04,0xC4,0x77,0x37,0x00,0x04,0x04,0x04,0x04,0xFF,0xFF,0xFF,0x04,0x04,0x04,0x04,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0xFC,0xFC,0x1A,0x1E,0xC6,0xE4,0x7C,0x18,0x18,0x7C,0xE4,0xC6,0x02,0x02,

0x00,0x00,0xFE,0xFE,0x0C,0x18,0x18,0x00,0x00,0xFE,0xFE,0xFE,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

};

 

voidmain(void)

{

uint8_tcontrast=*((unsignedchar*)contrastSetpointAddress);//读取FLASH中对比度值

uint8_tbrightness=*((unsignedchar*)brightnessSetpointAddress);//读取FLASH中背光值

//Initializeaccelerometeroffsetfromflash

Cma3000_setAccel_offset(*((unsignedchar*)accelXcalibrationAddress),//初始化加速度偏移量

*((unsignedchar*)accelYcalibrationAddress),

*((unsignedchar*)accelZcalibrationAddress));

//StopWDT

WDTCTL=WDTPW+WDTHOLD;//关闭看门狗

//BasicGPIOinitialization

Board_init();//初始化GPIO

//SetVcoretoaccomodateformax.allowedsystemspeed

SetVCore(3);//设VCore为最大

//Use32.768kHzXTALasreference

LFXT_Start(XT1DRIVE_0);//利用LFXT1(32.768kHZ)作为时钟参考

//Setsystemclocktomax(25MHz)

Init_FLL_Settle(25000,762);//利用FLL(锁频环)将系统时钟设为最大25MHZ

SFRIFG1=0;//清中断标志

SFRIE1|=OFIE;//使能晶振失效中断

//Globallyenableinterrupts

__enable_interrupt();//使能全局中断

//Setuprealtimeclock

//SetupRTC();//设置实时时钟

//SetupLCD

Dogs102x6_init();//初始化LCD

Dogs102x6_backlightInit();//背光初始化

//ContrastnotprogramedinFlashYet

if(contrast==0xFF)//若当前FLASH中无对比度值,则将对比度值设为11(默认)

//SetDefaultContrast

contrast=11;

//BrightnessnotprogramedinFlashYet

if(brightness==0xFF)//若当前FLASH中无背光值,则将背光值设为11(默认)

//SetDefaultBrightness

brightness=11;

Dogs102x6_setBacklight(brightness);//设置初始背光值

Dogs102x6_setContrast(contrast);//设置初始对比度值

Dogs102x6_clearScreen();//清屏

//Setupwheel

Wheel_init();//初始化齿轮电位计

Buttons_init(BUTTON_ALL);//初始化按键

Buttons_interruptEnable(BUTTON_ALL);//使能所有按键中断

buttonsPressed=0;//键值清零

//DisplayTIlogo

Dogs102x6_imageDraw(tiBug,0,16);//显示图案

//Waitforbuttonpress

while(!

buttonsPressed)//等待按键被按下,或者超时退出等待

{

for(timeoutCounter=0;timeoutCounter<0xFFFF;timeoutCounter++)

{

if(buttonsPressed)

break;

__delay_cycles(1000);

}

//Timeoutbreak

break;//超时退出

}

Dogs102x6_clearScreen();

buttonsPressed=0;

//显示文字说明:

Dogs102x6_stringDraw(3,10,"Welcome",DOGS102x6_DRAW_NORMAL);

Dogs102x6_stringDraw(4,0,"toNKuniversity",DOGS102x6_DRAW_NORMAL);

Dogs102x6_stringDraw(7,0,"orpressS1|S2",DOGS102x6_DRAW_INVERT);

//Waitforbuttonpress

while(!

buttonsPressed)//等待按键被按下,或者超时退出等待

{

for(timeoutCounter=0;timeoutCounter<0xFFFF;timeoutCounter++)

{

if(buttonsPressed)

break;

__delay_cycles(2000);

}

//Timeoutbreak

break;

}

//主循环

while

(1)

{

lab2();//

}

}

2.主程序

#include

#include"msp430.h"

#include"HAL_PMM.h"

#include"HAL_UCS.h"

#include"HAL_Board.h"

#include"HAL_Buttons.h"

#include"HAL_Dogs102x6.h"

#include"HAL_Menu.h"

#include"HAL_Wheel.h"

#include"Clock.h"

#include"LPM.h"

#include"Random.h"

#include"PMM.h"

#include"Demo_Cube.h"

#include"CTS_Layer.h"

#include"stdlib.h"

#include"lab2.h"

staticconstchar*constcapMenuText[]={

"==LAB2:

CapApp===",

"1.test1",

"2.CapDemo",

"3.happy"

};

char*itoa(int,char*,int);

//ForwardDeclaredFunction

voidtest1(void);

voidCapDemo(void);

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

*@briefThemenuoflab2.

*@paramnone

*@returnnone

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

voidlab2(void)

{

uint8_tselection=0;

buttonsPressed=0;

Dogs102x6_clearScreen();

Dogs102x6_stringDraw(7,0,"*S1=EnterS2=Esc*",DOGS102x6_DRAW_NORMAL);

selection=Menu_active((char**)capMenuText,3);

if(buttonsPressed&BUTTON_S2);

else

switch(selection)

{

case1:

test1();break;//读取已存文件

case2:

CapDemo();break;//触摸按键柱形图

default:

break;

}

}

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

*@briefCapLED.

*@paramnone

*@returnnone

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

voidtest1(void)

{

uint8_tsliderPosition=0;

Board_ledOff(LED_ALL);//关闭所有LED

Dogs102x6_clearScreen();

buttonsPressed=0;

Dogs102x6_stringDraw(1,0,"SlideFingeron",DOGS102x6_DRAW_NORMAL);

Dogs102x6_stringDraw(2,0,"TouchPads",DOGS102x6_DRAW_NORMAL);

TI_CAPT_Init_Baseline(&slider);//触摸按键初始化

while(!

(buttonsPressed&BUTTON_S2))//S2按键按下退出程序

{

sliderPosition=TI_CAPT_Slider(&slider);

sliderPosition=(sliderPosition+10)/20;//得到触摸按键位置

//以下根据触摸按键位置点亮相应LED

switch(sliderPosition)

{

case1:

Dogs102x6_stringDraw(1,0,"page_one",DOGS102x6_DRAW_NORMAL);

Dogs102x6_stringDraw(2,0,"friend'name",DOGS102x6_DRAW_NORMAL);

break;

case2:

Dogs102x6_stringDraw(1,0,"page_two",DOGS102x6_DRAW_NORMAL);

Dogs102x6_stringDraw(2,0,"friend'message",DOGS102x6_DRAW_NORMAL);

break;

case3:

Dogs102x6_stringDraw(1,0,"page_three",DOGS102x6_DRAW_NORMAL);

Dogs102x6_stringDraw(2,0,"friend'message",DOGS102x6_DRAW_NORMAL);

break;

case4:

Dogs102x6_stringDraw(1,0,"page_four",DOGS102x6_DRAW_NORMAL);

Dogs102x6_stringDraw(2,0,"friend'message",DOGS102x6_DRAW_NORMAL);

break;

case5:

Dogs102x6_stringDraw(1,0,"page_five",DOGS102x6_DRAW_NORMAL);

Dogs102x6_stringDraw(2,0,"friend'message",DOGS102x6_DRAW_NORMAL);

break;

case(255/17):

break;

}

}

Board_ledOff(LED_ALL);

Dogs102x6_clearScreen();

buttonsPressed=0;

}

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

*@briefAllowsusertoselectUSBapps

*@paramnone

*@returnnone

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

voidCapDemo(void)

{

uint8_tquit=0,spacing=0,height=0,height1=0,i;

uint16_tdeltaCount[5];

Dogs102x6_clearScreen();

buttonsPressed=0;

TI_CAPT_Init_Baseline(&slider);//触摸按键初始化

buttonDebounce=0;

Dogs102x6_stringDraw(0,0,"==TouchDemo==",DOGS102x6_DRAW_NORMAL);

//menuactiveuntilselectionismade

while(!

quit)

{

TI_CAPT_Custom(&slider,deltaCount);//测量电容传感器变化

//5=No.ofsensors

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

{

spacing=20*i+10;

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

当前位置:首页 > 农林牧渔 > 畜牧兽医

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

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