MSP430定时器和LCD12864的时钟

来源:本站
导读:目前正在解读《MSP430定时器和LCD12864的时钟》的相关信息,《MSP430定时器和LCD12864的时钟》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《MSP430定时器和LCD12864的时钟》的详细说明。
简介: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的时钟》最后刷新时间 2024-03-14 01:13:25,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《MSP430定时器和LCD12864的时钟》该内容的真实性请自行鉴别。