EX_MSP430F5529的液晶显示中文函数
MSP430F5529测频法测量信号频率
MSP430F5529测量频率-----测频法信号变换电路过零比较器,lm393输出上拉电阻,两电阻分压程序#include <>#include ""//测频法,上限1Mhz//看门狗定时1s,开门狗中断处理程序开启捕获器,捕获1s中所有的上升脉冲,脉冲个数即为频率/*优化的反向可以将开门够定时1S使用定时器去定时1s**/long fre=0;char buf[60]="\0";void SetVcoreUp (unsigned int level){// Open PMM registers for writePMMCTL0_H = PMMPW_H;// Set SVS/SVM high side new levelSVSMHCTL = SVSHE + SVSHRVL0 * level + SVMHE + SVSMHRRL0 * level;// Set SVM low side to new levelSVSMLCTL = SVSLE + SVMLE + SVSMLRRL0 * level;// Wait till SVM is settledwhile ((PMMIFG & SVSMLDLYIFG) == 0);// Clear already set flagsPMMIFG &= ~(SVMLVLRIFG + SVMLIFG);// Set VCore to new levelPMMCTL0_L = PMMCOREV0 * level;// Wait till new level reachedif ((PMMIFG & SVMLIFG))while ((PMMIFG & SVMLVLRIFG) == 0);// Set SVS/SVM low side to new levelSVSMLCTL = SVSLE + SVSLRVL0 * level + SVMLE + SVSMLRRL0 * level;// Lock PMM registers for write accessPMMCTL0_H = 0x00;}void init_clock(){SetVcoreUp (0x01);SetVcoreUp (0x02);SetVcoreUp (0x03);UCSCTL3 = SELREF_2; // Set DCO FLL reference = REFOUCSCTL4 |= SELA_2; // Set ACLK = REFO__bis_SR_register(SCG0); // Disable the FLL control loopUCSCTL0 = 0x0000; // Set lowest possible DCOx, MODxUCSCTL1 = DCORSEL_7; // Select DCO range 50MHz operationUCSCTL2 = FLLD_0 + 609; // Set DCO Multiplier for 25MHz// (N + 1) * FLLRef = Fdco// (762 + 1) * 32768 = 25MHz// Set FLL Div = fDCOCLK/2__bic_SR_register(SCG0); // Enable the FLL control loop__delay_cycles(782000);do{UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + DCOFFG);// Clear XT2,XT1,DCO fault flagsSFRIFG1 &= ~OFIFG; // Clear fault flags}while (SFRIFG1&OFIFG); // Test oscillator fault flag}void send_char(char sc){UCA0TXBUF=sc;while(!(UCA0IFG&UCTXIFG));}void send_string(char *s){while(*s!='\0'){send_char(*s++);}}init_uart(){P3SEL |= BIT3+BIT4; // ,4 = USCI_A0 TXD/RXDUCA0CTL1 |= UCSWRST; // **Put state machine in reset**UCA0CTL1 |= UCSSEL__SMCLK; // SMCLKUCA0BR0 = 173; // 1MHz 115200 (see User's Guide)UCA0BR1 = 0; // 1MHz 115200 UCA0MCTL |= UCBRS_5 + UCBRF_0; // Modulation UCBRSx=1, UCBRFx=0UCA0CTL1 &= ~UCSWRST; // **Initialize USCI state machine**// UCA0IE |= UCRXIE; // Enable USCI_A0 RX interruptsend_string("CLS(0);\r\n");}int main(void) {WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timerinit_clock();//初始化系统时钟为20 MHzinit_uart();//串口波特率为115200bpsWDTCTL=WDT_ADLY_1000 ;//开门狗定时1sP1DIR &= ~BIT2; // inP1SEL |= BIT2; //捕获输入SFRIE1|=WDTIE; //开看门狗定时器中断__bis_SR_register(LPM0_bits + GIE); // Enter LPM0, enable interrupts__no_operation(); // For debugger return 0;}void measure_fre(){if(fre>=500)sprintf(buf,"DS16(0,60,'频率:% ',4);\r\n",fre*;if(fre<=52)sprintf(buf,"DS16(0,60,'频率:% ',4);\r\n",(fre)*;else if(fre<=208)sprintf(buf,"DS16(0,60,'频率:% ',4);\r\n",(fre+1)*;else if(fre<=496)sprintf(buf,"DS16(0,60,'频率:% ',4);\r\n",(fre+3)*;send_string( buf);fre=0;TA0CTL = TASSEL_2 + MC_2 + TACLR+TAIE; // SMCLK, 连续mode, clear TAR 8分频下限可以测到8Hz。
MSP430F5529中文
4xx
25MHz
600uA @ 1MHz 4.8mA @ 8MHz N/A
5xx
290uA @ 1MHz 1.84mA @ 8MHz 230 uA/MHz 8.90mA @ 25MHz
120KB / 8KB (Flash / RAM) Wake-up Time From LPM3 Standby LPM3 Current LPM4 Current Flash ISP Minimum DVCC Port I/O Interrupt Capability Prog. Port Pin Drive Strength Prog. Pull-ups / Pull-downs 12-bit A/D Internal Reference Current 12-bit A/D Active Conversion Current Available MCLK Sources 1us 0.9 – 1.1uA 0.1uA 2.2V P1/P2 N/A All port pins 500 uA 800 uA DCO LFXT1 XT2 (if available) VLO N/A
XT2
REFO
内部32768Hz振荡器
XT2
晶体振荡器 400kHz …… >25MHz
Divider /1/2/4/8/16
FLLREFCLK
MCLK
FLL
FLL
锁频回路
10-bit Frequency Integrator
DCO
数字控制振荡器 ~100kHz …… >25MHz
DCOCLK DCO DCOCLKDIV SMCLK
MSP430F5529 launchpad
日程
介绍MSP430F5xxx (lab-0)
MSP430F5529资料
MSP430系列单片机是美国德州仪器(TI)1996年开始推向市场的一种16位超低功耗、具有精简指令集(RISC)的混合信号处理器(Mixed Signal Processor)。
MSP430单片机称之为混合信号处理器,是由于其针对实际应用需求,将多个不同功能的模拟电路、数字电路模块和微处理器集成在一个芯片上,以提供“单片机”解决方案。
该系列单片机多应用于需要电池供电的便携式仪器仪表中。
什么是单片机?单片微型计算机简称单片机,是典型的嵌入式微控制器(Microcontroller Unit),英文缩写:MCU。
它是把中央处理器、存储器、定时/计数器、各种输入输出接口等都集成在一块芯片上的微型计算机。
什么是嵌入式?IEEE(国际电气和电子工程师协会) 对嵌入式系统的定义:用于控制、监视或者辅助操作机器和设备的装置.Devices Used to Control,Monitor or Assist the Operation of Equipment,Machinery or Plants.国内普遍认同的嵌入式系统定义:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。
MSP430单片机内核是16位RISC处理器的超低功耗混合信号处理器丰富的片内外设灵活的开发手段MSP430单片机特点◆超低功耗低电压工作1.8~3.6V,RAM数据不丢失情况下耗电仅0.1μA,活动模式耗电290μA/MIPS,I/O输入最大漏电流仅为50nA灵活的时钟系统采用向量中断,需要运行时通过中断唤醒CPU,只需3.5μs◆强大的处理能力指令速度高达25MIPS◆高性能模拟技术及丰富的片上外设时钟模块、Flash控制器、RAM控制器、通用I/O端口、定时器、数模转换器、比较器、UART、SPI、I2C、USB等MSP430单片机的应用领域◆能量收集太阳能、热能、振动能、人体运动的动能等;◆计量仪表水表、电表、流量表等;◆安全与安防烟雾探测器、破损玻璃检测系统等;◆便携式医疗血糖计、个人血压监控器、心率检测计等;MSP430F5529单片机特性◆低工作电压:1.8V到3.6V;◆超低功耗:--活动模式(AM):所有系统时钟活动290 μA/MHz在8MHz,3.0V,Flash Program150 μA/MHz在8MHz,3.0V,RAM Program--待机模式(LPM3):实时时钟、看门狗、电源监控、RAM数据保持、快速唤醒:1.9μA在2.2V,2.1μA在3.0V(典型)低功耗振荡器、通用计数器、看门狗、电源监控、RAM数据保持、快速唤醒:1.4 μA在3.0V(典型)--关闭模式(LPM4):RAM数据保持,电源监控,快速唤醒:1.1μA在3.0V(典型)--关断模式(LPM4.5):0.18μA在3.0V(典型)◆从待机模式下唤醒时间在3.5μs内(典型);◆16位RISC结构,可拓展内存,高达25-MHZ的系统时钟;◆灵活的电源管理系统:--核心供电电压可编程调节的内置LDO--电源电压监控、监测及掉电检测◆UCS统一时钟系统:--频率稳定的FLL控制回路--低功率或低频率内置时钟源(VLO)MSP430F5529单片机特性◆UCS统一时钟系统:--修整后的低频内置参考源(REFO)--32KHZ低频晶振(XT1)--高达32MHZ高频晶振(XT2)◆具有五个捕获/比较寄存器的16位定时器TA0,Timer_A;◆具有三个捕获/比较寄存器的16位定时器TA1,Timer_A;◆具有三个捕获/比较寄存器的16位定时器TA2,Timer_A;◆具有七个捕获/比较映射寄存器的16位定时器TB0,Timer_B;◆两个通用串行通讯接口:--USCI_A0和USCI_A1,每个支持:增强UART、IrDA、同步SPI--USCI_B0和USCI_B1,每个支持:I2C 、同步SPI◆全速USB:--集成USB-PHY--集成3.3V/1.8V USB 电源系统--集成USB-PLL--8输入,8输出端点◆具有内部基准电压,采样和保持及自动扫描功能的12位ADC(MSP430F552X系列仅有);◆比较器;◆支持32位运算的硬件乘法器;◆串行系统编程,无需添加外部编程电压;◆三通道内部DMA;◆具有实时时钟功能的基本定时器;MSP430F5529引脚图MSP430F5529结构图MSP430F5529LP开发板介绍eZ-FET仿真模块的LED说明隔离跳线块eZ-FET仿真器适用于几乎所有MSP430产品短路跳线块,eZ-FET仿真器可以选择连接开发板上的F5529芯片断开跳线块,eZ-FET仿真器可以作用于外接的其他芯片隔离跳线模块应用设置见TI官网MSP430F5529 LaunchPad User’s guide Section2.2.7各接口引脚介绍见Quickstart Guide一些缩写说明(x为数字):GPIO: 通用数字I/O口;CBx: 比较器B输入通道CBx;Ax: ADC输入通道Ax;RTC: 实时时钟;UCAx: USCI_Ax;TAxCLK: TAx时钟信号输入;CBOUT: 比较器B输出;STE: 从机传输使能;PM_: 默认映射;SDA: I2C数据;SCL: I2C时钟;DMAEx: DMA外部触发输入;SOMI: 在SPI模式下的从机输出、主机输入;SIMO:在SPI模式下的从机输入、主机输出;UCAxRXD: USCI_Ax在UART模式下的接收数据输入; TXD为数据输出;CCS简介TI公司研发的一款具有环境配置、源文件编辑、程序调试、跟踪和分析等功能的集成开发环境。
Msp430f5529开发板测周期和AD
Msp430f5529开发板测频率和ADC采样电压必备资料:f5529的中文指导和数据手册(遗憾是汇编语言不是C)中文指导:网上有大侠把英文版的用户指导翻译成中文了数据手册:还没有出现中文版这种神器,不过多看几遍就OK一.定时器A一些基本资料至于寄存器里面含义自己应该可以看懂!这句话我认为有一个极容易产生一个误区,就是TA有7个比较捕获寄存器,当你查看msp430f5529.h的时候,我就发现只有TAxCCTL0,TAxCCR0TAxCCTL1,TAxCCR1TAxCCTL2,TAxCCR2它们都是共用一个TACTL。
压根就是没有3~6例如没有TAxCCTL3,TAxCCR3,我认为单片机上肯定是有7个比较捕获寄存器,就是msp430f5529没有对剩余的四个进行宏定义。
个人想法。
这个最高级,好像大部分的430单片机写的程序都是优先写它。
特点:增计数模式连续计数模式增减计数模式!!!!!!!这几种模式都能用例如增计数模式:TA0CCTL0 = CCIE; // CCR0 interrupt enabledTA0CCR0 = 50000;TA0CTL = TASSEL_2 + MC_1 + TACLR; // SMCLK, upmode, clear TAR __bis_SR_register(GIE); // Enter LPM0, enable interrupts 就凭它的权力最多,就应该单独想用一个中断函数与CCTL1,CCTL2区分开来!// Timer0 A0 interrupt service routine#pragma vector=TIMER0_A0_VECTOR__interrupt void TIMER0_A0_ISR(void){}其中的R0代表你用的TA定时器的第几个TA0-----R0TA1-----R1TA2-----R2CCTL0---A0 一个中断对应一个中断源例如我写的是TA2CCTL0和TA2CCR0,则对应的中断就是#pragma vector=TIMER2_A0_VECTOR应该明白了吧!TAxCCTL2,TAxCCR2特点:连续计数模式经我调试TA0CCTL1 = CCIE; // CCR0 interrupt enabledTA0CCR1 = 50000;TA0CTL = TASSEL_2 + MC_1 + TACLR; // SMCLK, upmode, clear TAR是进不了中断的,这是血的教训,(如果你采用的是比较模式,千万别想着,TMD 理论上就是这样,为什么进不了中断)应该把 MC_1改为MC_2就OK了.官方这样说这样可以从侧面提问,上文中为什么不是TAxCCRx,而只是TAxCCR0!应该明白了,这里有一点千万要区分开来,这是晕死的教训!TA0R,与TA0CCR1的区别,我也不知道是看了那本破书,或者就是那些5系列一下的430单片机程序可以,我只能感叹F5529真是神器!在中断函数里把cap=TA0CCR1,或者是TA1CCR1,还说TA0R,TA0CCRx其实是一样的,就是计数的储存。
MSP430f5529中文手册
一、先写一篇开个头:这样快速闯入 MSP430学习过程
进入各个电子产品公司的网站,招聘里面嵌入式:传统的什么51单片机、 MSP430称做嵌入式微控制器; ARM 是嵌入式微处理器;当然还有 DSP;FPGA。我们现在就不说别的,就说 MSP430单片机,多数想学 MSP430的童鞋,对89C51内核系列的单片机是很熟 悉的,为了加深对 MSP430 系列单片机的认识吗,迅速闯入 MSP430学习过程, 就必须彻底了解 MSP430单片机, 我们不妨将51单片机和 MSP430两者进行一下 比较。
以下几部分模块硬件资源是作为初学者必须要了解学习的。
①WDT 看门狗定时器: 新手们会看到很多编程实例中, 开头都有“WDTCTL = WDTPW + WDTHOLD;”语句。这是 CUP 执行关闭定时器的意思。在刚开始, 我们没必要关心这个, 可以跳过这章节, 只要大概地知道他的作用就好了。 看门狗定时器一般是用于防止程序失效而存在的, 一般是用于完整的程序 中使用。主程序中可不断地清除看门狗定时器的计数值,以防定时器的值 自动计满后使 CPU 复位而重新开始工作。当程序发生错误时,无法正常清 除看门狗的定时值时,则看门狗定时器计数溢出而产生 CPU 复位。
作为430新手, 首先看我们是否准备好以下几样硬件: 电脑(带有并口)1
台,MSP430FET 仿真器1套,MSP430开发实验板1套,和一些 MSP430教程或 电子教程资料等。
选用 MSP430仿真器。购买现成的 MSP430JTAG 仿真器如 TI-MSP430JTAG 选用 MSP430开发板或目标板是学习一个重要的工具,建议购买一个开
⑵.DCO,SMCLK,MCLK,ACLK 各个时钟有什么优点和点。 ⑶.4个时钟信号中,每个时钟的通常频率范围是多少。 ⑷.常规的时基控制寄存器设置和时钟如何从引脚输出等等。 ④TimaA 模块:⑴.初学者需要搞清 TimerA 的三个不同工作模式中 TA、 CCR1、CCR2与 CCR0之间的关系。⑵.搞清楚 TA、CCR1、CCR2与 CCR0之间的 中断向量关系。⑶.综合上面的理解,我们可以结合 TimerA 的例程来进行 相关验证, 只有通过亲自的操作才能有效地记住。 ⑷.利用 TimerA 实现 PWM 信号输出、利用捕获/比较功能实现捕获信号等等。
MSP430F5529中文技术资料
描述MSP430F5529 实验板(MSP-EXP430F5529) 是MSP430F5529 器件的开发平台,出自最新一代的具有集成USB 的MSP430 器件。
该实验板与CC2520EMK 等众多TI 低功耗射频无线评估模块兼容。
实验板能帮助设计者快速使用新的F55xx MCU 进行学习和开发,其中F55xx MCU 为能量收集、无线传感以及自动抄表基础设施(AMI) 等应用提供了业界最低工作功耗的集成USB、更大的内存和领先的集成技术。
实验板上的MSP430F5529 器件可以通过集成ezFET或通过TI 闪存仿真工具(如MSP-FET430UIF)进行供电和调试。
∙基于新的MSP430F5529 MCU,可用于需要增强型功能和集成USB 的超低功耗设计∙凭借eZ430-RF2500 工具、用于Z-Stack Pro 的开包即用平台以及对各种TI 低功耗射频无线评估模块的支持,可实现快速的低功耗无线开发,覆盖低于1GHz 和2.4GHz 的频带∙用于各种用户界面和娱乐游戏的102x64 点-矩阵LCD∙多个输入/输出选项可实现快速的系统开发:电容触摸按钮/滑块、按钮、USB、micro SD 插槽、LED 和滚轮。
∙集成ezFET 可让实验板直接插到PC 上,通过USB 实现供电和调试。
∙JTAG 接头连接,可借助MSP-FET430UIF 用于4 线JTAG 编程和调试。
∙与Code Composer Studio 兼容,免费的16KB IDE∙已预安装完整的用户体验软件演示,源码提供下载∙PCB 设计提供下载(Eagle PCB)特性∙集成MSP430F5529:o128KB 闪存/ 8KB SRAM(如禁用USB,则为10kB)o全速USB 2.0o16 位RISC 架构,高达25MHzo 3 个Timer_A 块、1 个Timer_B 块o 2 个USCI (UART/SPI/I2C) 块、16 通道12 位ADC12_A、12 通道Comp_B、63 I/O∙USB 开发平台∙ 5 块电容触摸条(按钮或滑块功能)∙microSD Card 插槽,附1GB 内存卡。
MSP430F5529制作的施工车辆信息监测系统.doc
MSP430F5529制作的施工车辆信息监测系统一,功能介绍:本系统主要用于监测施工车辆运行的速度,运行时路面的温度以及车辆的位置信息。
然后将这些这些信息借助移动的网络发送到服务器上去并将温度,速度,时间信息通过显示屏进行显示。
系统的控制核心选用的是TI的msp430F5529,考虑到整个系统用到的IO管脚比较多,所以选用了该款430。
一下是整个系统的方案选型:(1)测速系统采用的霍尔器件,430单片机对霍尔器件输出的脉冲进行输入捕获对其频率进行测量就可计算出车辆的速度;(2)测量车辆运行的路面温度系统我采用的是红外测温温度传感器,430通过smBUS总线方式读取温度传感器的数据,然后进行数据处理,显示在LCD屏上。
(3)计时系统我选用了的是DS1302时钟芯片,外加上一个3v的纽扣电池起到掉电时间保护左右,然后430负责读取时间进行显示。
(4)车辆定位系统我选用的GPS模块,430通过GPS读取到车辆的经纬度信息。
(5)数据发送装置我采用的GPRS模块将采集到速度,温度,时间,位置信息发送到我们自己建立的服务器上去(6)LCD屏,我选用的是240*128的LCD屏,这样尺寸的屏刚好满足我设计的要求。
(7) 考虑到有时没有移动信号,我们在电路上设计了SD卡,这样当GPRS 没有信号时,我们的数据可以自动的到存到我们的SD卡中二,系统框图上图就是我整个设计的框图。
(1)电源给整个系统供电,输入12v通过两种稳压芯片,分别稳压到5v和3.3v 给整个系统供电。
(2)测速,键盘, LCD我采用的都是IO进行和430单片机进行连接(3)GPS和GPRS采用的是UART和430进行连接(4) SD卡采用的是SPI接口和430进行连接三,系统原理图图2 电源图3 LCD和时钟芯片图4 430核心部分整个系统的原理图如图2,3,4所示。
图2是整个系统的电源部分,图3是lcd 显示屏,图4是整个430核心部分。
模数转换模块ADC12的设计MSP430F5529 片内温度传感器的方法和编程实现
微机原理实验实验六模数转换模块(ADC12)的设计与应用一、实验目的1. 了解数模转换(ADC)的基本原理、转换过程及性能指标;2. 熟练掌握片内 ADC12 模块的 4 种工作模式;3. 熟练掌握片内 ADC12 模块的寄存器及其配置应用方法;4. 掌握应用 MSP430F5529 片内温度传感器的方法和编程实现方法;5. 了解 I2C 设备的应用方法及片外温度传感器的编程实现方法;二、实验内容1. ●编程实现并分析:采用单通道单次采样模式,选择A0 通道作为输入通道,模拟转换参考电压组合选择 ADC12 内部生成电压 1.5V 和 AVSS,转换结果存储在 ADC12MEM0 缓冲寄存器中。
(1)源程序#include<msp430.h>void main(){volatile unsigned int i;WDTCTL=WDTPW+WDTHOLD; //关闭看门狗P6SEL |= BIT0; //使能A0输入通道REFCTL0 &= ~REFMSTR; //复位控制位以控制ADC12参考电压控制寄存器ADC12CTL0=ADC12ON+ADC12SHT02+ADC12REFON;//打开ADC12,设置采样间隔,打开参考电压产生器,并设置参考电压为1.5V,ADC12CTL1=ADC12SHP; //采样保持触发信号选择采样定时器ADC12MCTL0=ADC12SREF_1; //Vr+=Vref+,Vr-=Avssfor(i=0;i<64;i++); //延迟以使参考电压稳定ADC12CTL0 |= ADC12ENC; //使能转换while (1){ADC12CTL0 |=ADC12SC; //开始转换while(!(ADC12IFG&BIT0));__no_operation(); //设置断点查看ADC12MEN0缓冲寄存器}}(2)写出配置ADC12模块转换时钟源ADC12CLK的控制寄存器和控制位;控制寄存器:ADC12CTL1控制位:ADC12DIVx:第5~7位,时钟分频控制位ADC12SSELx:第3~4位,参考时钟源选择控制位(3)写出上述实验要求下ADC12模块的默认时钟源及其频率;默认时钟源是MODCLK,由内部模块振荡器MODOSC产生,频率约为4.8MHZ.(4)写出配置ADC12模块参考电压的控制寄存器和控制位;控制寄存器:ADC12CTL0控制位:ADC12REF2_5V:第6位,内部参考电压的电压值选择控制位ADC12REFON:第5位, ADC12参考电压开关控制位控制寄存器:ADC12MCTL0控制位:ADC12SREFx:第4~6位,参考电压选择控制位(5)分析上述实验要求下ADC12模块配置的参考电压与转换量程的关系ADC模块是12位,表示的数值的取值范围是0~4095,参考电压(基准电压)为1.5V,则分辨率为 1.5V/212=0.366mV.(6)分析ADC12模块配置的时钟源与采样触发信号和转换信号是否有关?从寄存器的控制位可以看出,采样周期和ADC12CLK的个数有关,时钟源和采样触发信号无关。
基于MSP430F5529俄罗斯方块游戏程序文件
基于MSP430F5529俄罗斯方块游戏程序文件/*基于MSP430F5529俄罗斯方块游戏程序*///作者:詹磊//功能:基于MSP430F5529俄罗斯方块游戏程序//说明:运行环境:TI官方MSP-EXP5529开发板(外接4个带上拉电阻独立按键)// 非原创,思路是从51单片机上移植过来的// 底层液晶驱动是TI官方提供的LCD API// 游戏算法部分的底层程序多处已经修改,与原版会有较大的差别//版本:测试版V1.0(基本能流畅运行,但需要进一步的美化和优化)#include "MSP430F5529.h"#include "LCD_102x64.h"#include "main.h"#include "Key.h"#define MAXHANG20 //游戏显示行数#defineMAXLIE 16//游戏显示列数#defineMapWide 48//地图宽#defineMapHigh 60//地图高#define ON 0#define OFF 1#define BIT(n) (1<<(n))volatile uint cubeMap[MAXHANG]; //地图显示存存typedef struct{uchar const * box; //方块图形字模数据指针uchar cube :4; //方块形态(占用4个位域)uchar state :4; //方块状态(占用4个位域)charrow; //方块所在行charcolumn; //方块所在列} block;block this;uchar liang=11;uchar Speed=1,Score=0;uint timeA=0;uchar downflag=0;uchar randomNumber=0;const uchar cube[]={/* ■■■■*/0,4,0xe,0, 0,2,6,2, 0,7,2,0, 4,6,4,0,/*■■■■*/0,8,0xe,0, 0,4,4,0xc, 0,0,0xe,2, 0,6,4,4,/*■■■*/0,0xe,8,0, 0,4,4,6, 0,1,7,0, 6,2,2,0, /*■■■■*/0,0xc,6,0, 0,2,6,4, 0,6,3,0, 2,6,4,0, /* ■■■■*/0,6,0xc,0, 0,4,6,2, 0,3,6,0, 4,6,2,0, /*■■■■*/0,0xf,0,0, 4,4,4,4, 0,0,0xf,0, 2,2,2,2, /*■■■■*/0,6,6,0, 0,6,6,0, 0,6,6,0, 0,6,6,0 };void delay_ms(uint z)//毫秒级延时函数{uint i,m;for(i=z;i>0;i--)for(m=4500;m>0;m--){_NOP();}}//-------------------------------------------// //函数名:八位LED灯控制函数//入口:Number:Number哪位为一则哪位LED点亮//出口:Void//功能://-------------------------------------------// void DigitalLedControl(uchar Number)if(Number&BIT7) P1OUT|=BIT0; elseP1OUT&=~BIT0; if(Number&BIT6) P8OUT|=BIT1; elseP8OUT&=~BIT1; if(Number&BIT5) P8OUT|=BIT2; elseP8OUT&=~BIT2; if(Number&BIT4) P1OUT|=BIT1; elseP1OUT&=~BIT1; if(Number&BIT3) P1OUT|=BIT2; elseP1OUT&=~BIT2; if(Number&BIT2) P1OUT|=BIT3; elseP1OUT&=~BIT3; if(Number&BIT1) P1OUT|=BIT4; elseP1OUT&=~BIT4; if(Number&BIT0)P1OUT|=BIT5;elseP1OUT&=~BIT5;}//-------------------------------------------////函数名:显存清空函数//入口:Void//出口:Void//功能:清空显存//-------------------------------------------//void DisplayRamClear(){uchar i;for(i=0;i<20;i++){cubeMap[i]=0x0;}}//-------------------------------------------////函数名:两位十进制数字显示函数//入口: Row:显示的行数// Column:显示的列数// Number:需要显示的数字<100 && >=0//出口:Void//功能://-------------------------------------------//void Number2BitDisplay(uchar Row,uchar Column,uchar Number) {uchar tempShi,tempGe;tempShi=Number/10;tempGe=Number%10;Dogs102x6_charDraw(Row, Column,tempShi+'0',ON); Dogs102x6_charDraw(Row, Column+6,tempGe+'0',ON); } //-------------------------------------------////函数名:游戏背景函数//入口:Void//出口:Void//功能:绘制游戏背景地图//-------------------------------------------//void GameBackground(){uchar i;for(i=0;i<maphigh+1;i++)< p="">{Dogs102x6_pixelDraw(0, i, ON);Dogs102x6_pixelDraw(MapWide+1, i, ON);}for(i=0;i<mapwide+2;i++)< p="">{Dogs102x6_pixelDraw(i, 0, ON);Dogs102x6_pixelDraw(i, MapHigh+1, ON);}DisplayRamClear();Dogs102x6_stringDraw(3, 10, "START",ON);Dogs102x6_stringDraw(1, 51, "NEXT:",ON);Dogs102x6_stringDraw(3, 51, "SPEED:--",ON);Dogs102x6_stringDraw(5, 51, "SCORE:--",ON);Number2BitDisplay(3,87,Speed);Number2BitDisplay(5,87,Score);}//-------------------------------------------// //函数名:游戏Map清空//入口:Void//出口:Void//功能:清空游戏背景地图(不清空显存)//-------------------------------------------// void GameMapClear(){uchar i,j;for(i=0;i<maphigh;i++)< p="">{for(j=0;j<mapwide;j++)< p="">{Dogs102x6_pixelDraw(j+1, i+1, OFF);}}}//-------------------------------------------// //函数名:系统初始化//入口:Void//出口:Void//功能://-------------------------------------------// void SystemInit(){WDTCTL = WDTPW + WDTHOLD;P8DIR|=BIT1+BIT2;P8OUT|=BIT1+BIT2;P1DIR|=BIT0+BIT1+BIT2+BIT3+BIT4+BIT5; P1OUT|=BIT0+BIT1+BIT2+BIT3+BIT4+BIT5;InitKey();UCSCTL3 = SELREF_2; // Set DCO FLL reference = REFOUCSCTL4 |= SELA_2; // Set ACLK = REFO__bis_SR_register(SCG0); // Disable the FLL control loopUCSCTL0 = 0x0000; // Set lowest possible DCOx, MODxUCSCTL1 = DCORSEL_7; // Select DCO range 50MHz operationUCSCTL2 = FLLD_1 + 609; // Set DCO Multiplier for 25MHz(这里设置为20MHz适应液晶的SPI通信)// (N + 1) * FLLRef = Fdco// (762 + 1) * 32768 = 25MHz// Set FLL Div = fDCOCLK/2__bic_SR_register(SCG0); // Enable the FLL control loopTA1CCTL0 = CCIE; // CCR0 interrupt enabledTA1CCR0 = 328-1;TA1CTL = TASSEL_1 + MC_1 + TACLR; // ACLK, upmode, clear TAR_BIS_SR(GIE);Dogs102x6_init();Dogs102x6_clearScreen();Dogs102x6_backlightInit();Dogs102x6_setContrast(11);Dogs102x6_setBacklight(liang);}//-------------------------------------------////函数名:3x3点显示函数//入口: x:x轴坐标// y:y轴坐标// mode:ON 打点;OFF 消点//出口:Void//功能://-------------------------------------------//void Display3x3Pixels(uchar x,uchar y,uchar mode) {x=3*x+1;</mapwide;j++)<></maphigh;i++)<></mapwide+2;i++)<></maphigh+1;i++)<>。
电子科技大学MSP430f5529开发板的独立按键及显示屏标准实验报告
电子科技大学实验报告学生姓名:学号:指导教师:邮箱:一、实验室名称:MSP430单片机实验室二、实验项目名称:使用MSP430f5529开发板的独立按键及显示屏三、实验原理:(1)通用功能I/OGPIO基本都是用于芯片与片外器件或设备的交互。
其作用包括:●检测数字输入,如键盘或开关信号;●驱动LED,蜂鸣器或LCD等其他指示器;●控制片外器件,较高级的使用可以用它们(通过程序)模拟很多器件的时序达到控制相应器件的目的,比如模拟SPI和模拟总线等;GPIO是MCU与外界交互的重要途径,它具有如下的特性:●可以独立控制每个GPIO口的方向(输入/输出模式);●可以独立设置每个GPIO的输出状态(高/低电平);●所有GPIO口在复位后都有个默认方向(或输入或输出)GPIO口都是按组规划,有的芯片是8个GPIO口一组,有的是16个或32个为一组。
一般每个GPIO口都需要做两个寄存器位:一是选择口线方向(输入输出)二是需要一个数据位(用于设置输出数据和读取输入数据)。
所以一组GPIO 口至少会有两个寄存器GPIOxDIR和GPIOxDATA。
如图1.1所示的GPIO口各模块构成。
GPIOxDIR:控制各个GPIO口的方向;GPIOxDATA:用于各个GPIO口的输入输出数据。
图1.1 GPIO口各模块构成MSP430各种端口有大量的控制寄存器供用户操作。
最大限度提供了输入/输出的灵活性。
其特点如下:●每个I/O口都可以独立编程●输入或输出可任意组合●P1和P2所有I/O口都具有边沿可选的输入中断功能●可以按字节输入输出,也可按位进行操作●可设置I/O口的上拉或下拉功能●可配置I/O驱动能力(高驱动强度或低驱动强度)MSP430端口的控制寄存器包括:(a)xDIR输入/输出方向寄存器相互独立的8位分别定义了8个引脚的输入/输出方向。
使用输入和输出功能时,应该先定义端口的方向。
PxDIR配置:Bit = 1: 将端口引脚设置为输出模式;Bit = 0: 将端口引脚设置为输入模式。
最新MSP430F5529资料
M S P430F5529资料MSP430系列单片机是美国德州仪器(TI)1996年开始推向市场的一种16位超低功耗、具有精简指令集(RISC)的混合信号处理器(Mixed Signal Processor)。
MSP430单片机称之为混合信号处理器,是由于其针对实际应用需求,将多个不同功能的模拟电路、数字电路模块和微处理器集成在一个芯片上,以提供“单片机”解决方案。
该系列单片机多应用于需要电池供电的便携式仪器仪表中。
什么是单片机?单片微型计算机简称单片机,是典型的嵌入式微控制器(Microcontroller Unit),英文缩写:MCU。
它是把中央处理器、存储器、定时/计数器、各种输入输出接口等都集成在一块芯片上的微型计算机。
什么是嵌入式?IEEE(国际电气和电子工程师协会) 对嵌入式系统的定义:用于控制、监视或者辅助操作机器和设备的装置.Devices Used to Control,Monitor or Assist the Operation of Equipment,Machinery or Plants.国内普遍认同的嵌入式系统定义:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。
MSP430单片机内核是16位RISC处理器的超低功耗混合信号处理器丰富的片内外设灵活的开发手段MSP430单片机特点◆超低功耗低电压工作1.8~3.6V,RAM数据不丢失情况下耗电仅0.1μA,活动模式耗电290μA/MIPS,I/O输入最大漏电流仅为50nA灵活的时钟系统采用向量中断,需要运行时通过中断唤醒CPU,只需3.5μs◆强大的处理能力指令速度高达25MIPS◆高性能模拟技术及丰富的片上外设时钟模块、Flash控制器、RAM控制器、通用I/O端口、定时器、数模转换器、比较器、UART、SPI、I2C、USB等MSP430单片机的应用领域◆能量收集太阳能、热能、振动能、人体运动的动能等;◆计量仪表水表、电表、流量表等;◆安全与安防烟雾探测器、破损玻璃检测系统等;◆便携式医疗血糖计、个人血压监控器、心率检测计等;MSP430F5529单片机特性◆低工作电压:1.8V到3.6V;◆超低功耗:--活动模式(AM):所有系统时钟活动290 μA/MHz在8MHz,3.0V,Flash Program150 μA/MHz在8MHz,3.0V,RAM Program--待机模式(LPM3):实时时钟、看门狗、电源监控、RAM数据保持、快速唤醒:1.9μA在2.2V,2.1μA在3.0V(典型)低功耗振荡器、通用计数器、看门狗、电源监控、RAM数据保持、快速唤醒:1.4 μA在3.0V(典型)--关闭模式(LPM4):RAM数据保持,电源监控,快速唤醒:1.1μA在3.0V(典型)--关断模式(LPM4.5):0.18μA在3.0V(典型)◆从待机模式下唤醒时间在3.5μs内(典型);◆16位RISC结构,可拓展内存,高达25-MHZ的系统时钟;◆灵活的电源管理系统:--核心供电电压可编程调节的内置LDO--电源电压监控、监测及掉电检测◆UCS统一时钟系统:--频率稳定的FLL控制回路--低功率或低频率内置时钟源(VLO)MSP430F5529单片机特性◆ UCS统一时钟系统:--修整后的低频内置参考源(REFO)--32KHZ低频晶振(XT1)--高达32MHZ高频晶振 (XT2)◆具有五个捕获/比较寄存器的16位定时器TA0,Timer_A;◆具有三个捕获/比较寄存器的16位定时器TA1,Timer_A;◆具有三个捕获/比较寄存器的16位定时器TA2,Timer_A;◆具有七个捕获/比较映射寄存器的16位定时器TB0,Timer_B;◆两个通用串行通讯接口:--USCI_A0和USCI_A1,每个支持:增强UART、IrDA、同步SPI --USCI_B0和USCI_B1,每个支持: I2C 、同步SPI◆全速USB:--集成USB-PHY--集成3.3V/1.8V USB 电源系统--集成USB-PLL--8输入,8输出端点◆具有内部基准电压,采样和保持及自动扫描功能的12位ADC(MSP430F552X系列仅有);◆比较器;◆支持32位运算的硬件乘法器;◆串行系统编程,无需添加外部编程电压;◆三通道内部DMA;◆具有实时时钟功能的基本定时器;MSP430F5529引脚图MSP430F5529结构图MSP430F5529LP开发板介绍eZ-FET仿真模块的LED说明隔离跳线块eZ-FET仿真器适用于几乎所有MSP430产品短路跳线块,eZ-FET仿真器可以选择连接开发板上的F5529芯片断开跳线块,eZ-FET仿真器可以作用于外接的其他芯片隔离跳线模块应用设置见TI官网MSP430F5529 LaunchPad User’s guide Section2.2.7各接口引脚介绍见Quickstart Guide一些缩写说明(x为数字):GPIO: 通用数字I/O口;CBx: 比较器B输入通道CBx;Ax: ADC输入通道Ax;RTC: 实时时钟;UCAx: USCI_Ax;TAxCLK: TAx时钟信号输入;CBOUT: 比较器B输出;STE: 从机传输使能;PM_: 默认映射;SDA: I2C数据;SCL: I2C时钟;DMAEx: DMA外部触发输入;SOMI: 在SPI模式下的从机输出、主机输入;SIMO:在SPI模式下的从机输入、主机输出;UCAxRXD: USCI_Ax在UART模式下的接收数据输入; TXD为数据输出; CCS简介TI公司研发的一款具有环境配置、源文件编辑、程序调试、跟踪和分析等功能的集成开发环境。
基于MSP430F5529的简易风洞控制系统设计
基于MSP430F5529的简易风洞控制系统设计胡进德;付晓军【摘要】基于MSP430F5529设计了一个简易风洞控制系统.选用超声波传感器检测乒乓球在简易风洞中的位置,微控制器MSP430F5529通过对乒乓球当前位置的分析判断控制直流电机的转速,从而完成对乒乓球升降高度的实时控制.【期刊名称】《微型机与应用》【年(卷),期】2016(035)006【总页数】3页(P88-90)【关键词】MSP430F5529;超声波传感器;实时控制【作者】胡进德;付晓军【作者单位】仙桃职业学院,湖北仙桃433000;仙桃职业学院,湖北仙桃433000【正文语种】中文【中图分类】TP273本设计实现一个简易风洞控制系统。
风洞由圆管、连接部与直流风机构成,如图1所示。
圆管竖直放置,长度约40 cm,内径大于4 cm,且内壁平滑,小球(直径4 cm的黄色乒乓球)可在其中上下运动;管体外壁有A、B、C、D 等长标志线,BC 段有1 cm 间隔的短标志线;可从圆管外部观察管内小球的位置;连接部实现风机与圆管的气密性连接,圆管底部有防止小球落入连接部的格栅。
控制系统通过调节风机的转速,实现小球在风洞中升降高度的实时控制。
系统在小球到达设定位置时可声光报警并显示小球的升降高度和动作时间等参数。
系统主要由超声波传感器检测电路、直流电机驱动电路、显示电路、报警电路、MSP430F5529微控制器、电压转换电路等模块构成。
系统硬件结构如图2所示。
选用合适的超声波传感器检测小球在风洞中的位置,超声波传感器将小球位置信号转换成电信号,由MSP430F5529微控制器记录和分析处理。
MSP430F5529调节直流电机的转速,由此调节风力的大小从而实现对小球升降高度的自动测量与控制。
2.1 小球位置检测与报警电路采用超声波测距模块HY-SRF05检测乒乓球在简易风洞中的位置。
HY-SRF05超声波测距模块可提供2~450 cm的非接触式距离感测功能,检测精度高达3 mm。
MSP430控制LCD显示简单指令
程序功能:在LCD屏幕第一行第一列显示字符A端口:P1——DB0~DB7P2.0——RSP2.1——RWP2.2——EN****************************************************/#inlude<AT89x51.h>#define LCD_DB P1sbit LCD_RS=P2^0;sbit LCD_RW=P2^1;sbit LCD_E=P2^2;#define uchar unsigned char#define uint unsigned intvoid LCD_init(void);void LCD_write_command(uchar command);void LCD_write_data(uchar dat);void LCD_disp_char(uchar x,uchar y,uchar dat);void LCD_check_busy(void);void delay_n40us(uint n);/***************************************************函数名称:LCD_init函数功能:初始化LCD***************************************************/void LCD_init(void){//设置数据总线为8位,2行显示,5*7点阵/每字符——————功能设定LCD_write_command(0x38);//显示功能开,无光标,光标闪烁——————显示控制LCD_write_command(0x0c);//写入数据后光标右移——————模式设置LCD_write_command(0x06);//清除屏幕——————清屏指令LCD_write_command(0x01);delay_n40us(100);//延时一段时间保证完全清屏}/***************************************************函数名称:LCD_write_command函数功能:void LCD_write_command(uchar command){LCD_DB=command;//向P1端口写入指令LCD_RW=0;//设置为向LCD写入指令或数据LCD_RS=0;//设置为输入指令模式LCD_E=1;//允许写入LCD_E=0;//结束写入delay_n40us(1);}/*************************************************** 函数名称:LCD_write_data函数功能:写入字符数据***************************************************/ void LCD_write_data(uchar dat){LCD_DB=dat;//向P1端口写入数据LCD_RW=0;LCD_RS=1;//设置为写入数据模式LCD_E=1;LCD_E=0;delay_n40us(1);}/*************************************************** 函数名称:LCD_disp_char函数功能:显示一个字符***************************************************/ void LCD_disp_char(uchar x,uchar y,uchar dat){uchar address;if(y==1) address=0x80+x;//如果是第一行,则地址为?else address=0xc0+x;//如果是第二行,则地址为?LCD_write_command(address);LCD_write_data(dat);}/*************************************************** 函数名称:LCD_check_busy函数功能:忙检测***************************************************/ void LCD_check_busy(void){ do{LCD_E=0;LCD_RS=0;LCD_RW=1;LCD_DB=0xff;//P1端口设置为高电平LCD_E=1;}while(LCD_DB^7==1);}/********************************************** 函数名称:delay_n40us函数功能:延时**********************************************/ void delay_n40us(uint n){ uint i;uint j;for(i=n,i>0;i++)for(j=0;j<2;j++);}/**************主函数*************************/ void main(){ LCD_init();LCD_dis_char(0,1,"A");while(1);}。
MSP430F5529实验指导书(V1.0)
MSP430F5529 实验指导书(V1.0)2014年10月27日东北林业大学机电工程学院“3+1”实验室实验一基础GPIO实验实验二键盘与液晶显示实验实验三时钟系统配置实验实验四看门狗与定时器实验实验五 AD/DA实验实验六比较器实验实验七 Flash实验实验八串行通信实验实验一基础GPIO实验【实验目的】1、熟悉CCS的基本使用方法;2、掌握MSP430系列单片机程序开发的基本步骤;3、掌握MSP430 IO口的基本功能。
【实验仪器】1、SEED-EXP430F5529v1.0开发板一套;2、PC机操作系统Windows XP或Windows 7,CCSv5.1集成开发环境。
【实验原理】CCS(Code Composer Studio)是 TI 公司研发的一款具有环境配置、源文件编辑、程序调试、跟踪和分析等功能的集成开发环境,能够帮助用户在一个软件环境下完成编辑、编译、链接、调试和数据分析等工作。
CCSv5.1 为 CCS 软件的最新版本,功能更强大、性能更稳定、可用性更高,是 MSP430 软件开发的理想工具。
SEED-EXP430F5529v1.0开发板上的有8个可操作的LED灯,与MCU的IO口对应关系如图1-1所示:图1-1 LED与MCU的IO对应关系电路我们可以通过控制单片机IO口的输出电平状态来控制各个LED灯的亮灭。
开发板上还有2个可操作的按键S1,S2。
如图1-2所示。
图1-2 按键电路我们可以通过读取与按键相连的IO口的输入电平状态来执行相应的操作。
此外,S1,S2还可以作为外部中断源,触发中断。
【实验内容】1、用调用头文件的方法,使能MSP430F5529开发板上的8个LED灯依次按顺序循环点亮;2、用按键S1控制开发板上LED1的亮灭状态(查询法);3、用按键S2控制开发板上跑马灯的循环速度(中断方式)。
【实验步骤】内容1:使能开发板上的8个LED灯依次按顺序循环点亮1、打开CCSv5并确定工作区间,然后选择File-->New-->CCS Project 弹出图1-3对话框。
学习笔记-CCS-MSP430F5529[快速入门篇二]
学习笔记-CCS-MSP430F5529[快速⼊门篇⼆] 由于2021的全国电赛延期了,从今天开始打算好好整理⼀下使⽤CCS编程的经验,本篇笔记会好好整理⼀下我备赛期间⽤CCS写的程序,包括外部中断,定时器部分的定时中断,定时器输⼊捕获,PWM波输出,UART,OLED(IIC),MPU6050,内容涵盖了硬件和软件部分。
鉴于笔者⽔平有限和能⼒不⾜,⽂中有不到之处还请看者多包涵,我的⼯程源代码链接会在⽂章末尾贴出。
先贴⼀张peripheral图,MSP430的外部引脚及其复⽤功能都可在图⾥查到。
⼀·外部中断 外部中断的操作⽅式与GPIO⼀样是使⽤寄存器操作,所以学习相关的寄存器是不可避免的,不过MSP430的寄存器不算太多,操作外部中断主要要⽤到以下寄存器:1.PxIV 中断向量表(字),P1端⼝的中断函数⼊⼝地址应该都放在⾥⾯,只是⼀个地址;2.PxIE 中断使能寄存器,相应引脚位置1表⽰允许产⽣中断;置0表⽰该引脚不产⽣中断;3.PxIES 中断触发⽅式选择寄存器,相应引脚位置1表⽰下降沿触发,置0表⽰上升沿触发;4.PxIFG 中断标志,由于MSP430的中断使能需要使能总中断,所以仅当总中断GIE和中断使能寄存器PxIE都打开后,PxIFG⾼电平表⽰有中断请求等待待响应,等中断服务函数结束时需要软件清该标志位; 这些寄存器在TI的msp430f5xx_6xxgeneric.h头⽂件有如下定义下⾯看⼀个外部中断程序,所⽤引脚为P2.1,对应MSP430F5529⽕箭板的板载按键S1,初始化为下降沿触发void EXTI_Init(){/*按键中断*/P2IE |= BIT1; //P2.1中断使能P2IES |= BIT1; //设置为下降沿触P2IFG &= ~BIT1; //清中断标志位P2REN |= BIT1; //上拉电阻P2OUT |= BIT1; //初始化置⾼}/*中断服务函数*/#pragma vector=PORT2_VECTOR__interrupt void P2_ISR(void){if(P2IFG & BIT1){delay(2); //延时2ms消抖动/*这⾥是函数算法部分*/}P2IFG &=~BIT1; //清空中断标志}⼆·定时器MSP430的定时器资源还算丰富,共有两类共四个定时器,分别是3个TimerA和1TimerB,由于我对TimerA使⽤较多,所以本⽂着重来讲TimerA,三个TimerA分别为Timer0_A(5个捕获/⽐较寄存器),Timer1_A(3个捕获/⽐较寄存器),Timer2_A(3个捕获/⽐较寄存器),下⾯是TimerA的结构图我们结合TimerA的寄存器讲解⼀下这张图上半部分是整个定时器的基础,整个上半部分可通过TACTL控制寄存器来编程,从功能⾓度来讲从左往右分别是,⾃⾝时钟源配置TASSEL,第⼀次分频选择ID,定时器清零位TACLR,计数值存放寄存器TAR,⼯作模式控制位MC,中断标志位TAIFG以及没有在结构图出现的定时器中断使能TAIE。
衡星MSP430F5529大作业报告
中国地质大学(北京)本科课程报告《电子电路设计与实践》学生姓名衡星院(系)地球物理与信息技术学院专业测控技术与仪器学号10101522132018 年3 月19 日中国地质大学(北京)第一章程序框图说明:(1)“文字说明”的具体内容为:“当前A0~A7循环采集,串口发送a/b/c/d实现PWM 转换。
按键P2.1通道转换,按键P1.1实现A0~A7通道循环采集。
”(2)占空比不同的PWM波由P3.6通道输出。
(3)按键P2.1按x下后,“Ax通道循环采集并显示”,其中x取值1~8。
当x>8时,x=x%8。
(4)所有显示均在串口助手窗口显示,串口波特率设置为115200。
课堂程序编写过程:3月6日(周二):王猛老师在课堂上讲解大作业要求。
3月8日(周四):分发MSP430F5529单片机,并学习GPIO相关程序编写。
3月10日(周六):学习定时计数器、时钟功能,并完成“呼吸灯”和“时钟分频”等课堂函数编写。
3月15日(周四):学习中断、串口和ADC采集功能,完成“中断服务”等课堂函数编写。
3月17日(周六):完成“串口显示”和“测温环节”等课堂函数编写。
大作业程序编写过程:3月17日(周六)15:00~16:00:仔细阅读《MSP单片机-验收标准》和相关PPT,确定整个程序的功能框图。
3月17日(周六)16:00~18:00:通过串口中断函数完成PWM波形输出与串口指令的连接功能,并通过串口调试助手验证了程序的准确性。
3月18日(周日)9:00~11:00:通过按键中断函数完成ADC八路循环采集和单路选择采集的切换功能,并通过串口中断函数将采集的数据输出,在串口调试助手页面进行了验证。
3月18日(周日)14:00~15:00:通过按键中断添加LED1与LED2的闪烁功能,为整个实验程序增添创意。
3月18日(周日)15:30~16:00:与钮学长就《MSP单片机验收标准》交换了意见。
3月18日(周日)19:00~21:00:完成《电子电路设计与实践》课程报告程序框图。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
*函数名称:Dogs102x6_Font8x12DrawXY(x, y, f, style)
*功能描述:Dogs102x6液晶上显示12x12字体
*参数说明:x-坐标(0 - 101),y-坐标(0 - 63) 注意:当y>52时,字体都显示在液晶的最下面一行
*参数说明:p_f-字符指针,style-(0-正常显示,1-反白显示);无返回参数.
******************************************************************************/
desired_char[b + 12] =
*(p_f + b) << (8 - y % 8) | (*(p_f + 12 + b) >> (y % 8)) | dogs102x6Memory[2 + ((row + 1) * 102) + x + b];
void Dogs102x6_Font12x12DrawXY(uint8_t x, uint8_t y, const uint8_t *p_f, uint8_t style)
{
uint8_t b, row;
uint8_t desired_char[36];
// make sure we won't be writing off the screen
{
uint8_t k;
for (k = 0; k < GB_12_num; k ++) //GB_12_num - (sizeof(GB_12) / 26)
{
if ((GB_12[k].Index[0] == *cchar) && (GB_12[k].Index[1] == *(cchar + 1)))
}
}
}
else
{
for (b = 0; b < 12; b++)
{
desired_char[b] =
(*(p_f + b) ^ 0xFF) >> (y % 8) | dogs102x6Memory[2 + (row * 102) + x + b];
if (style == DOGS102x6_DRAW_NORMAL)
{
for (b = 0; b < 12; b++)
{
desired_char[b] =
(*(p_f + b) >> (y % 8)) | dogs102x6Memory[2 + (row * 102) + x + b];//
if (x >= 102)
{
x = 101;
}
if (y >= 53)//字体是12x12,(63-52)+1=12
{
y = 52;
}
// Check if there is a remainder
row = y >> 3; // identical to: row = y / 8;
if((y % 8) > 4)
{
desired_char[b + 24] = *(p_f + 12 + b) << (8 - y % 8) | dogs102x6Memory[2 + ((row + 2) * 102) + x + b];
******************************************************************************/
void Dogs102x6_chinesecharDrawXY(uint8_t x, uint8_t y, char *cchar, uint8_t style)
******************************************************************************/
void Dogs102x6_chinesefontsDrawXY(uint8_t x, uint8_t y, char *word, uint8_t style)
}
}
}
Dogs102x6_setAddress(row, x);
Dogs102x6_writeData(desired_char, 12);
Dogs102x6_setAddress(row + 1, x);
Dogs102x6_writeData(desired_char + 12, 12);
{
Dogs102x6_Font12x12DrawXY(x,y,GB_12[k].Msk,style);
}
}
}
/*******************************************************************************
if((y & 0x07) > 4)
{
desired_char[b + 24] =
((*(p_f + 12 + b) ^ 0xF0) << (8 - y % 8)) | dogs102x6Memory[2 + ((row + 2) * 102) + x + b];
desired_char[b + 12] =
(*(p_f + b) ^ 0xFF) << (8 - y % 8) | (*(p_f + 12 + b) ^ 0xF0) >> (y % 8) |dogs102x6Memory[2 + ((row + 1) * 102) + x + b];
{
while (*word)
{
// Draw a character
Dogs102x6_chinesecharDrawXY(x, y, word, style);
// Update location
x += 12;
*函数名称:Dogs102x6_chinesefontsDrawXY(x, y, word, style)
*功能描述:Dogs102x6液晶上连续显示汉字体(每行少于9个)
*参数说明:x-坐标(0 - 101),y-坐标(0 - 63)
*参数说明:word-汉字符指针,style-(0-正常显示,1-反白显示);无返回参数.
}
word += 2;
}
}
// TБайду номын сангаасxt wrapping
if (x >= 102)
{
x = 0;
if (y + 12 < 64)
y += 12;
else
y = 0;
if((y % 8) > 4)
{
Dogs102x6_setAddress(row + 2, x);
Dogs102x6_writeData(desired_char + 24, 12);
}
}
/*******************************************************************************
*函数名称:Dogs102x6_chinesecharDrawXY(x, y, cchar, style)
*功能描述:Dogs102x6液晶上显示汉字体
*参数说明:x-坐标(0 - 101),y-坐标(0 - 63)
*参数说明:cchar-汉字符指针,style-(0-正常显示,1-反白显示);无返回参数.