MSP430定时器和LCD12864的时钟

发布者:HarmoniousVibes最新更新时间:2021-07-08 来源: eefocus关键字:MSP430  定时器  LCD12864  时钟 手机看文章 扫描二维码
随时随地手机看文章

比较简单,最主要的目的是熟悉TimerA的使用。


第一步:TimerA定时产生1s的秒信号。


(1)选择时钟ACLK,32768Hz,设置位UP模式:TACTL = TASSEL_1 + MC_1;


(2)计数个数32786,即得到1s时间:CCR0 = 32768 - 1;


(3)使能CCR0和总中断:CCTL0 |= CCIE;_EINT();




第二步:时间处理。


中断到来,秒计数加1.做过51单片机的时钟,照搬即可。




第三步:显示。


12864的3个函数:


(1)显示汉字:


函数名称:Disp_HZ

功 能:控制液晶显示汉字

参 数:addr--显示位置的首地址

pt--指向显示数据的指针

num--显示字符个数

void Disp_HZ(uchar addr,const uchar * pt,uchar num)

{

uchar i;


Write_Cmd(addr);

for(i = 0;i < (num*2);i++)

Write_Data(*(pt++));

}


(2)显示字符串:


函数名称:DispStr

功 能:在制定位置显示字符串

void DispStr(uchar addr,uchar *str)

{

Write_Cmd(addr);

while(*str != '')

{

Write_Data(*str);

str ++;

}

}


(3)显示数字(两位)


函数名称:Dips_Digit

功 能:控制液晶显示数字

参 数:addr--显示位置的首地址

hang--在第几行显示

digit--显示数字


void Disp_Digit(uchar addr,uchar hang,uchar digit)

{

uchar shi,ge;

shi = digit/10;

ge = digit;

if(hang == 0) //第1行

Write_Cmd(0x80 + addr);

else if(hang == 1) //第2行

Write_Cmd(0x90 + addr);

else if(hang == 2) //第3行

Write_Cmd(0x88 + addr);

else //第4行

Write_Cmd(0x98 + addr);


Write_Data(0x30 + shi);

Write_Data(0x30 + ge );

}






另:


画点函数,验证可行:


函数名称:Draw_Dots

功 能:画点

描 述:先读出不打点位置数据,打完点后把读到的数据送回原处

void Draw_Dots(uchar x,uchar y)

{

uchar row,xlabel,xlabel_bit;

uchar read_h,read_l; //读LCD中的数据

Write_Cmd(0x34); //扩充指令

Write_Cmd(0x36); //打开绘图指令

xlabel = x >> 4; //取16*16首地址

xlabel_bit = x & 0x0f; //计算该点在16位数据中的第几位


if(y < 32) //显示上半屏

{ row = y; }

else //显示下半屏

{

row = y - 32;

xlabel += 8; //规定显示下半屏

}

Write_Cmd(0x80 + row); //送垂直地址

Write_Cmd(0x80 + xlabel); //再送水平地址

ReadByte(); //读取当前GDRAM数据前需要进行一次空读,接下来才可以读取数据

read_h = ReadByte(); //读高8位

read_l = ReadByte(); //读低8位

Write_Cmd(0x80 + row); //送垂直地址

Write_Cmd(0x80 + xlabel); //再送水平地址


if(xlabel_bit < 8)

{

Write_Data(read_h | (0x01 << (7 - xlabel_bit)));

Write_Data(read_l);


}

else

{

Write_Data(read_h); //把数据写入GDRAM

Write_Data(read_l | (0x01 << (15 - xlabel_bit)));

}


Write_Cmd(0x30); //回到普通模式


}


有一方法很好:#define SetTime(H,M,S) {hour = H;min = M;sec = S;}可以方便的设置时钟初始值。

关键字:MSP430  定时器  LCD12864  时钟 引用地址:MSP430定时器和LCD12864的时钟

上一篇:MSP430开发总结
下一篇:基于MSP430的声音定位系统的设计

推荐阅读最新更新时间:2024-11-12 22:47

STM32 关于定时器相关问题的探讨(二)
4.硬件设计 4.1LED驱动电路 利用单片机产生得PWM驱动电路直接驱动LED电路来验证,当输出PWM宽度变化时可以看到此时LED亮度变化,此时只需要将LED上拉就可以实现验证。当输入为低电平时,LED灯发光 4.2 SPWM滤波方案 利用高级定时器,我们能产生一系列PWM脉宽随时间变化的PWM波形,通过简单的RC滤波就可以将SPWM滤波成正弦波 5.软件设计过程 5.1 四路pwm输出配置 5.1.1 GPIO初始化 初始化引脚(PA6、PA7,PB0、PB1),这里拿出初始化PA6例子 GPIO_InitTypeDef GPIO_InitStructure; RCC_AHB1PeriphClockCmd(RC
[单片机]
STM32 关于<font color='red'>定时器</font>相关问题的探讨(二)
stm32 基于TIM1定时器的PWM输出
void PWM_TIM1(uint16_t arr,uint16_t psc) { RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE); //定时器TIM1时钟使能 TIM_DeInit(TIM1); //设置在下一个更新事件装入活动的自动重装载寄存器周期的值 TIM_TimeBaseStructure.TIM_Period =arr; //设置用来作为TIMx时钟频率出书的预分频值 TIM_TimeBaseStructure.TIM_Prescaler =psc; //设置时钟分割 TIM_TimeBaseStru
[单片机]
51单片机定时器实现PWM波
51单片机是可以实现PWM波输出的,原理其实都是一样的。说白了,PWM波就是让某一个引脚输出周期性连续高低电平变化的信号。 那么如何用51单片机实现周期性的高低电平呢? 答案就是用定时器。首先我们需要配置一下定时器,这里不做过多阐述,资料到处都有。然后设置一个计数周期,比如说让定时器计一百个数产生溢出,那么这一百个数的时间就是一个周期。接下来我们就以这一百个数的时间为基准。比如设置前五十个数的时间某引脚为高电平,后五十个数为低电平。那么这个引脚就会输出一个占空比为50%的高低电平变化。这就是所谓的PWM波。 基本代码实现如下: sbitPWM=P2^0;//P2.0输出pwm int time;//定义占空比
[单片机]
stm32变更外部晶振时时钟配置
学习野火的固件库UART1串口案例时,用的是SIM9008模块应用板上STM32103F103RB芯片,使用的外部晶振是12M。 串口读取的是乱码 默认的外部晶振是8M 由于stm32的库默认是外部晶振8M的情况下实现的,所以配置串口波特率的时候也是按8M,包括主频。 如果采用外部晶振8M或12M,配置时钟为72MHZ 。 1)在system32_stm32f10x.c文件中的void SetSysClockTo72(void)里这样改: 8M: RCC- CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL9);//8*9=72 12M: RCC- CFGR |=
[单片机]
MSP430单片机之看门狗的作用
看门狗定时器是一个计数器,基本功能是在发生软件问题和程序跑飞后使系统重新启动。看门狗计数器正常工作时自动计数,程序流程定期将其复位清零,如果系统在某处卡死或跑飞,该定时器将溢出,并将进入中断。在定时器中断中执行一些复位操作,使系统恢复正常的工作状态,即在程序没有正常运行期间,如期复位看门狗以保证所选择的定时溢出归零,使处理器重新启动。 2 看门狗问题及相关实验 现今市面上流行的一些 单片机 ,多嵌有内部WDT,如TI的MSP430系列,Philips的P87XXX和P89XXX系列,MICroChip的PIC列,Atmel的AT89SXX系列和HoLTEk公司的Htxxx系列。但是这些内部看门狗在工作时,多存在一定的误差。一些
[单片机]
<font color='red'>MSP430</font>单片机之看门狗的作用
详解80C51单片机的复位电路和时钟电路
复位电路 在80C51中,最常见的复位电路就是下图的上电复位电路。 它能有效地实现上电复位和手动复位。RST引脚高电平有效。 其有效时间应持续24个振荡周期以上才能完成复位操作。若使用6MHz晶振,则需持续4us以上才能完成复位操作。 在通电瞬间,由于RC电路的充电过程,在RST端出现一定宽度的正脉冲,只要正脉冲保持10mS以上,就能使单片机自动复位。 CPU在第二个及其周期内执行内部复位操作,以后每个机器周期重复一次,直至RST端电平变低。 在单片机复位器件,ALE和~PSEN信号都不产生。复位操作将对部分专用寄存器产生影响,复位后,这些内部寄存器的状态发生变化,如下表。 时钟电路 在80C51单片机内有一个高增益的反
[单片机]
详解80C51单片机的复位电路和<font color='red'>时钟</font>电路
LPC1768定时器普通定时
//其他通道的基本定时功能都能在这里实现 void Time0Mr0Init(u32 arr,u32 psc) { LPC_SC- PCONP |= (1 1); //打开功率控制 LPC_TIM0- TCR |= (1 1); //复位定时器 LPC_TIM0- MR0 = psc; //匹配寄存器与定时器计数器值相比较 LPC_TIM0- IR |= 0XFF; //清所有中断标志位 LPC_TIM0- MCR |= ((1 1)|(1 0)); //MR0与TC值匹配时将产生中断,TC复位
[单片机]
MSP430单片机的FLASH与存储器结构(1)
简介: 我们这节课的主要内容有: ·存储器结构 ·片内ROM组织 ·RAM和外围模块组织 ·FLASH存储器 ·FLASH操作程序设计 1,存储器结构 1.1存储空间的组织结构 我们先来看一下MSP430的存储空间的组织结构,大家可以看到,MSP430是按照64K的存储空间来处理的,只不过不同型号的单片机它内部的容量发生了一些变化。像有些单片机RAM会很大,flash想回会小一些;还有一些flash和RAM都很小,中间空出来的就是作为保留区域,像我们使用的这个149单片机的话,使用的60K的flash,flash空间就是从0FFFFh-01100h。还有就是1K的启动ROM,然后这是RAM的地址,然后下面这里的地址都是
[单片机]
<font color='red'>MSP430</font>单片机的FLASH与存储器结构(1)
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved