msp430g2553怎么在LCD上面显示一个信号波形

查看: 2293|回复: 3
LCD12864显示波形?
主题帖子精华
初级会员, 积分 100, 距离下一级还需 100 积分
在线时间0 小时
怎么样让12864按列扫描波形啊,如正弦波,方波等等,求大神指点~~~
I think: Impossible is equal that i'm possible!!!
主题帖子精华
金钱122636
在线时间1009 小时
这个实现画点函数,就不是很难了。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
微信公众平台:正点原子& &
主题帖子精华
初级会员, 积分 148, 距离下一级还需 52 积分
在线时间0 小时
百度一下 打点行数
主题帖子精华
初级会员, 积分 95, 距离下一级还需 105 积分
在线时间2 小时
bdf50ab3b4ae08b13ebe248_380.jpg (0 Bytes, 下载次数: 0)
22:54 上传
这种吗?正弦波
Powered byMSP430液晶LCD048
12:37:48来源: eefocus
TI公司系列是一种超的混合信号控制器,其中包括一系列器件,它们针对不用的应用由不同的模块组成。其中FLASH系列使高效电子系统变得轻巧,FLASH存储器也具有很强的灵活性。同时为了在低频率振荡器的驱动下得到较高的稳定频率,某些MSP器件上使用了锁频技术FLL或增强型锁频环技术FLL+。如MSP430F425的时钟模块中使用了FLL+技术,这样可以得到稳定的频率。
&&&&MSP430器件上的液晶显示器的控制/驱动将简化液晶显示器的显示。不同型号的液晶驱动能力不同,我们采用 MSP430的F42X系列,有128段驱动能力。
液晶的驱动有4种方法:静态,2MUX或1/2占空比,3MUX或1/3占空比, 4MUX或1/4占空比。对于不同系列、不同型号的液晶驱动原理,控制方法都是一样的,不同点在于驱动液晶段数不一样,或可显示信息的多少不一样。我们采用4MUX,这种方式也最简单。
其中需要注意以下两点:
&&&&(1)液晶的偏压。由于液晶驱动使用交流电压,所以必须根据液晶的工作模MSP430进行偏压设置,具体的操作是:STATIC模式下,R33开路,R03-R23接地,2MUX模式下,分别在R33、R13以及R13、R03之间接上10K的电阻;3/4MUX模式下,分别在R33、R23之间,R23、R13以及R13、R03之间接上10K的电阻,这样就能保证COM0-COM3出来供给液晶块的电压符合要求。&&
&&&&(2)频率的设置。MSP430有三种时钟ACLK(辅助时钟)、MCLK(主时钟)、SMCLK(子时钟),其中液晶的驱动频率FCLK来自ACLK。在XTIN和XTOUT之间接上振荡频率为32KHz的晶振,Fclk可以根据需要选为1024Hz、512Hz、256Hz、128Hz等。由FRFQ0和FRFQ1的设置可以满足不同液晶对频率的要求,其中Flcd=2*MUX(rate)*F(framing)。
&&&&例如:采用3MUX,已知F(framing)=100Hz-30Hz,
&&&&由F(LCD)=2*MUX(rate)*F(framing)=6*F(framing),
&&&&可知F(LCD)=180Hz-600Hz。可选择的F(LCD)为1024Hz、512Hz、256Hz、128Hz,所以F(LCD)=32K/128=256Hz,所以FRFQ0=1、FRFQ1=0。
&&&&在以上两点做好的基础上,我们只要把要输出的数字所对应的代码输出到MSP430的显存就可以显示。实验中如液晶,可适当提高液晶的驱动频率。如液晶亮度不够,应适当调整偏压电阻的大小。
&&&&在驱动电路中,液晶可以等效为电容。两个电极分别为公共极与段极。公共极由CMOn信号驱动,段极由SEGn信号驱动。由此可以得到4种驱动方法。
&&&&(1)静态驱动:使用一个引脚作为液晶公共端COM0,而每一段段极需要另一个引脚驱动。
&&&&(2)2MUX驱动:使用两个引脚作为液晶公共端COM0、COM1每两段段极需要另一引脚驱动。
&&&&(3)3MUX驱动:使用三个引脚作为液晶公共端COM0、COM1、COM2,每3段段极需要另一引脚驱动。
&&&&(4)4MUX驱动:使用4个引脚作为液晶公共端COM0、COM1、COM2,每4段段极需要另一引脚驱动。
&&&&LCD048的资料
&&&&显示&123456&程序
#include&&<x42x.h>
const char digit[10] =
0x7B,&&// "0"&&&&LCD segments a+b+c+d+e+f&&&&lcd= lsd048
0x12,&&// "1"
0x4F,&&// "2"
0x1F,&&// "3"
0x36,&&// "4"
0x3D,&&// "5"
0x7D,&&// "6"
0x13,&&// "7"
0x7F,&&// "8"
0x3F&&&// "9"
char *LCD=LCDMEM;
void main(void)
&&WDTCTL = WDTPW + WDTHOLD;&&&&&&&&&&&&&&&&&// Stop WDT
&&FLL_CTL0 |= XCAP14PF;&&&&&&&&&&&&&&&&&&&&&// Configure load caps
&&for (i = 0; i < 10000; i++);&&&&&&&&&&&// Delay for 32 kHz crystal to
&&LCDCTL = 0x03d;&&&&&&&&&&&&&&&&&&&&&&&&&&&&// 4-Mux LCD, segments S0-S15
&&BTCTL&&= BTFRFQ1;&&&&&&&&&&&&&&&&&&&&&&&&&// Set freqLCD = ACLK/128
&for (i=0;i<6;i++)
&&&LCD[i]=0;
&&&&for(i=1;i<7;i++)
&&&&&&LCD[i]=digit[i];
补充:采用4MUX方式,相应的段顺序为:HEFCDGBA。显示1~9见上述程序,显示A~F:
&&&&&&0x77,&&// "A"
&&&&&&0x7c,&&// "B"
&&&&&&0x69,&&// "C"
&&&&&&0x5e,&&// "D"
&&&&&&0x6d,&&// "E"
&&&&&&0x65&&&// "F"
关键字:&&
编辑:什么鱼
引用地址:
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
微信扫一扫加关注 论坛活动 E手掌握
微信扫一扫加关注
芯片资讯 锐利解读
大学堂最新课程
汇总了TI汽车信息娱乐系统方案、优质音频解决方案、汽车娱乐系统和仪表盘参考设计相关的文档、视频等资源
热门资源推荐
频道白皮书
何立民专栏
北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。查看: 1137|回复: 5
基于MSP430F169的LCD12864显示一个动态波形
波形是自己给定的数值,并不是采集的值
完整代码下载:
(27.71 KB, 下载次数: 28)
16:07 上传
点击文件名下载附件
部分代码预览:
#include&msp430f169.h&
#include&stdlib.h&
#include&math.h&
//延时函数,IAR自带,经常使用到
#define CPU_F ((double)8000000)& &//外部高频晶振8MHZ
//#define CPU_F ((double)32768)& &//外部低频晶振32.768KHZ
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/))
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))
#define uchar unsigned char
#define uint&&unsigned int
#define ulong unsigned long
#define LCD_DataIn P4DIR=0x00 //数据口方向设置为输入
#define LCD_DataOut P4DIR=0xff //数据口方向设置为输出
#define LCD2MCU_Data P4IN
#define MCU2LCD_Data P4OUT
#define RS_CLR& & P5OUT &= ~BIT5& && && &&&//RS置低
#define RS_SET& & P5OUT |=&&BIT5& && && &&&//RS置高
#define RW_CLR& & P5OUT &= ~BIT6& && && &&&//RW置低
#define RW_SET& & P5OUT |=&&BIT6& && && &&&//RW置高
#define EN_CLR& & P5OUT &= ~BIT7& && && &&&//E置低
#define EN_SET& & P5OUT |=&&BIT7& && && &&&//E置高
#define PSB_CLR& & & && &P5OUT &= ~BIT0& && && && &//PSB置低,串口方式
#define PSB_SET& & & && &P5OUT |=&&BIT0& && && && &//PSB置高,并口方式
#define RST_CLR& & & && &P5OUT &= ~BIT1& && && && &//RST置低
#define RST_SET& & & && &P5OUT |= BIT1& && && && & //RST置高
uchar DIS1[] = {&Vpp:&};
uchar DIS2[] = {&F:&};
uchar DIS3[] = {&5V&};
uchar DIS4[] = {&12Hz&};
uchar D1[]={&&};
//正弦波代码
uchar tab[]={
126,100,80,70,65,62,65,70,80,100,126,152,172,182,187,190,187,182,172,152
};
//背景图片
uchar Photo1[]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00
};
/******************************************************************************
函数名称:& && && && && && && && && && &Clock_Init
功 能:& && && && && && && && && && && &外部时钟初始化
参 数:& && && && && && && && && && && &无
返回值 :& && && && && && && && && && & 无
******************************************************************************/
void Clock_Init()
{
&&
&&BCSCTL1&=~XT2OFF;& && && && && &&&//打开XT2振荡器
&&BCSCTL2|=SELM1+SELS;& && && && &&&//MCLK为8MHZ,SMCLK为8MHZ
&&do{
& & IFG1&=~OFIFG;& && && && && && & //清楚振荡器错误标志
& & for(i=0;i&100;i++)
& && & _NOP();
&&}
&&while((IFG1&OFIFG)!=0);& && && &&&//如果标志位1,则继续循环等待
&&IFG1&=~OFIFG;
}
/******************************************************************************
函数名称:& && && && && && && && && && &Port_Init
功 能:& && && && && && && && && && && &端口初始化
参 数:& && && && && && && && && && && &无
返回值 :& && && && && && && && && && & 无
******************************************************************************/
void Port_Init()
{
&&P4SEL = 0x00;
&&P5SEL = 0x00;
&&P5DIR|= BIT0 + BIT1 + BIT5 + BIT6 + BIT7;
}
/******************************************************************************
函数名称:& && && && && && && && && && &Delay_1ms
功 能:& && && && && && && && && && && &延时约1ms的时间
参 数:& && && && && && && && && && && &无
返回值 :& && && && && && && && && && & 无
*******************************************************************************/
void Delay_1ms(void)
&&for(i = 150;i & 0;i--) _NOP();
/*******************************************************************************
函数名称:& && && && && && && && && && &&&Delay_Nms
功 能:& && && && && && && && && && && &&&延时N个1ms的时间
参 数:& && && && && && && && && && && &&&n--延时长度
返回值 :& && && && && && && && && && && &无
*******************************************************************************/
void Delay_Nms(uint n)
&&
&&for(i =i & 0;i--) Delay_1ms();
/*******************************************************************************
函数名称:& && && && && && && && && && && &Write_Cmd
功 能:& && && && && && && && && && && && &向液晶中写控制命令
参 数:& && && && && && && && && && && && &cmd--控制命令
返回值 :& && && && && && && && && && && & 无
*******************************************************************************/
void Write_Cmd(uchar cmd)
&&uchar lcdtemp = 0;
&&LCD_DataIn;
&&do //判忙
& & EN_SET;
& & _NOP();
& & lcdtemp = LCD2MCU_D
& & EN_CLR;
&&}while(lcdtemp & 0x80);
&&
&&LCD_DataO
&&MCU2LCD_Data =
/******************************************************************************
函数名称:& && && && && && && && && && && &&&Write_Data
功 能:& && && && && && && && && && && && &&&向液晶中写显示数据
参 数:& && && && && && && && && && && && &&&dat--显示数据
返回值 :& && && && && && && && && && && && &无
*******************************************************************************/
void Write_Data(uchar dat)
&&uchar lcdtemp = 0;
&&LCD_DataIn;
&&do //判忙
& & EN_SET;
& & _NOP();
& & lcdtemp = LCD2MCU_D
& & EN_CLR;
&&}while(lcdtemp & 0x80);
&&
&&LCD_DataO
&&MCU2LCD_Data =
/*******************************************************************************
函数名称:& && && && && && && && && && &Read_Data
功 能:& && && && && && && && && && && &读数据
参 数:& && && && && && && && && && && &无
返回值 :& && && && && && && && && && & readvalue
********************************************/
uchar Read_Data()
&&LCD_DataO
&&MCU2LCD_Data |=0
&&LCD_DataIn;
&&readvalue=LCD2MCU_D
&&Delay_1ms();
/******************************************************************************
函数名称:& && && && && && && && && && & Lcd_Pos
功 能:& && && && && && && && && && && & 定位函数
参 数:& && && && && && && && && && && & X(行),Y(列)
返回值 :无
******************************************************************************/
void Lcd_Pos(uchar X,uchar Y)
{& && && && && && && && &&&
& &uchar&&
& &if (X==1)
& &&&{X=0x80;}
& &else if (X==2)
& &&&{X=0x90;}
& &else if (X==3)
& &&&{X=0x88;}
& &else if (X==4)
& &&&{X=0x98;}
& &pos = X+Y ;
& &Write_Cmd(pos);& &&&//显示地址
}
/******************************************************************************
函数名称:& && && && && && && && && && & Clear_GDRAM
功 能:& && && && && && && && && && && & 所有GDRAM 写0x00
参 数:& && && && && && && && && && && & 无
返回值 :& && && && && && && && && && &&&无
******************************************************************************/
void Clear_RDRAM() //使用图形模式时,应对所有GDRAM 写0x00 才算清屏,清屏命令(write_cmd(0x01))是对使用自带字库显示时用的
&&uchar i, j,
&&Write_Cmd(0x34); //打开扩展指令集,绘图显示关
&&Write_Cmd(0x36); //打开扩展指令集,绘图显示开
&&for( i = 0 ; i & 2 ; i++ ) //分上下两屏写
& & for( j = 0 ; j & 32 ; j++ )
& && &Write_Cmd( 0x80 + j ) ; //写Y 坐标
& && &Delay_1ms();
& && &if( i == 0 ) //写X 坐标
& && &&&Write_Cmd( 0x80 ) ;
& && &&&Delay_1ms();
& && &else //写下半屏
& && &&&Write_Cmd( 0x88 ) ;
& && &&&Delay_1ms();
& && &for( k = 0 ; k & 16 ; k++ ) //写一整行数据
& && &&&Write_Data(0x00) ;
& && &&&Delay_1ms();
&&Write_Cmd( 0x30 ) ; //关闭扩展指令集
/******************************************************************************
函数名称:& && && && && && && && && && & Picture_Display
功 能:& && && && && && && && && && && & 显示图片
参 数:& && && && && && && && && && && & bmp
返回值 :& && && && && && && && && && &&&无
******************************************************************************/
void Picture_Display(uchar *bmp)& & & &
&&uchar i,j;
&&Write_Cmd(0x34);& && &&&//写数据时,关闭图形显示
&&for(i=0;i&32;i++)
&&{
& & Write_Cmd(0x80+i);& & //先写入水平坐标值
& & Write_Cmd(0x80);& && &//写入垂直坐标值
& & for(j=0;j&16;j++)& &//再写入两个8位元的数据& &
& & Write_Data(*bmp++);& &&&
& & delay_ms(1);
&&}
&&for(i=0;i&32;i++)
&&{
& & Write_Cmd(0x80+i);
& & Write_Cmd(0x88);
& & for(j=0;j&16;j++)& && && &
& & & & Write_Data(*bmp++);& &
& & & & delay_ms(1);
&&}
&&Write_Cmd(0x36);& && & //写完数据,开图形显示
}
/******************************************************************************
函数名称:& && && && && && && && && && & Clear_Screen
功 能:& && && && && && && && && && && & 清屏
参 数:& && && && && && && && && && && & 无
返回值 :& && && && && && && && && && &&&无
******************************************************************************/
void&&Clear_Screen()
{
& &Write_Cmd(0x34);& && &//扩充指令操作
& &Delay_Nms(3);& &
& &Write_Cmd(0x30);& && &//基本指令操作
& &Delay_Nms(3);
& &Write_Cmd(0x01);& && &//清屏
& &Delay_Nms(3);& &&&
}
/*******************************************************/
uchar Y_wz(uchar a)
{
& & & &
& & & & for(i=0;i&64;i++)
& & & & {& & & &
& & & & & & & & if((a&(i*4))&&(a&=((i+1)*4)))
& & & & }
& & & &
}
/*******************************************************************************
函数名:& && && && && &&&Draw_Point
函数说明:& && && && && &画点
传入参数:& && && && && &打点位置(x0,y0);color=1,点亮;color=0,擦除
& && && && && && && && & x0为列作标,y0为行坐标
传出参数:& && && && && &无
返回值:& && && && && &&&无
*******************************************************************************/
void Draw_Point(unsigned char x,unsigned char y,unsigned char color)
& & & & unsigned char row,collum,
& & & & unsigned char tempH,tempL;
& & & & Write_Cmd(0x34);& & & &&&//设置扩充指令集,关闭绘图
& & & & Write_Cmd(0x36);& & & &&&//扩充指令集,打开绘图
& & & & collum=x&&4;& & & &&&//列& &左移四位
& & & & cbite=x&0x0f;
& & & & if(y&32)
& && && & row=y;
& & & & else
& & & & {
& & & && &row=y-32;
& & & && &collum+=8;
& & & & }
& & & & Write_Cmd(0x80+row);& & & &
& & & & Write_Cmd(0x80+collum);
& & & & Read_Data();
& & & & tempH=Read_Data();
& & & & tempL=Read_Data();& & & &
& & & & Write_Cmd(0x80+row);
& & & & Write_Cmd(0x80+collum);
& & & & if (color)
& & & & {
& & & && &if(cbite&8)
& & & && &{
& & & && &&&tempH|=(1&&(7-cbite));
& & & && &&&//tempL=(1&&(7-cbite));
& & & && & }
& & & && &else
& & & && &{
& & & && &&&//tempH=(1&&(15-cbite));& & & &
& & & && &&&tempL|=(1&&(15-cbite));
& & & && &}
& & & & }
& & & & else
& & & & {
& & & && &if(cbite&8)
& & & && &{
& & & && &&&tempH&=~(1&&(7-cbite));
& & & && &&&//tempL=(1&&(7-cbite));
& & & && &}
& & & && &else
& & & && &{
& & & && &&&//tempH=(1&&(15-cbite));
& & & && &&&tempL&=~(1&&(15-cbite));
& & & && &}
& & & & }
& & & & Write_Data(tempH);
& & & & Write_Data(tempL);
& & & & Write_Cmd(0x30);
}
/*******************************************************************************
函数名:& && && && && &&&Write_LineX
函数说明:& && && && && &画水平线
传入参数:& && && && && &x0为列作标,y0为行坐标
传出参数:& && && && && &无
返回值:& && && && && &&&无
*******************************************************************************/
void Write_LineX( unsigned char X0, unsigned char X1, unsigned char Y)
{& & unsigned char T
& & if( X0 & X1 )
& & {
& && &&&Temp = X1 ;
& && &&&X1&&= X0 ;
& && &&&X0&&= T
& & }
& & for( ; X0 &= X1 ; X0++ )
& & Draw_Point( X0, Y,1 ) ;& &
}
/*******************************************************************************
函数名:& && && && && &&&Write_LineY
函数说明:& && && && && &画水平线
传入参数:& && && && && &x0为列作标,y0为行坐标
传出参数:& && && && && &无
返回值:& && && && && &&&无
*******************************************************************************/
void Write_LineY( unsigned char X, unsigned char Y0, unsigned char Y1 )
{
& & unsigned char T
& & if( Y0 & Y1 )
& & {
& && &&&Temp = Y1 ;
& && &&&Y1&&= Y0 ;
& && &&&Y0&&= T
& & }
& & for(; Y0 &= Y1 ; Y0++)
& & Draw_Point( X, Y0,1);
}
/*******************************************************************************
函数名:& && && && && &&&Write_LineY
函数说明:& && && && && &画水平线
传入参数:& && && && && &x0为列作标,y0为行坐标
传出参数:& && && && && &无
返回值:& && && && && &&&无
*******************************************************************************/
void Write_Line( unsigned char StartX, unsigned char StartY, unsigned char EndX, unsigned char EndY)
{
& & signed int t,& && &/*根据屏幕大小改变变量类型(如改为int型)*/
& & signed int x = 0 , y = 0 , delta_x, delta_
& & signed char incx,
& & delta_x = EndX - StartX ;
& & delta_y = EndY - StartY ;
& & if( delta_x & 0 )
& & {
& && &&&incx = 1;
& & }
& & else if( delta_x == 0 )
& & {
& && &&&Write_LineY( StartX, StartY, EndY ) ;
& && &&&
& & }
& & else
& & {
& && &&&incx = -1 ;
& & }
& & if( delta_y & 0 )
& & {
& && &&&incy = 1 ;
& & }
& & else if(delta_y == 0 )
& & {
& && &&&Write_LineX( StartX, EndX, StartY ) ;& &
& && &&&
& & }
& & else
& & {
& && &&&incy = -1 ;
& & }
& & delta_x = abs( delta_x );& &
& & delta_y = abs( delta_y );
& & if( delta_x & delta_y )
& & {
& && &&&distance = delta_
& & }
& & else
& & {
& && &&&distance = delta_
& & }
& & Draw_Point( StartX, StartY ,1) ;& &
& & /* Draw Line*/
& & for( t = 0 ; t &= distance+1&&; t++ )
& & {
& && &&&Draw_Point( StartX, StartY,1 ) ;
& && &&&x += delta_
& && &&&y += delta_
& && &&&if( x & distance )
& && &&&{
& && && && &x -=
& && && && &StartX +=
& && &&&}
& && &&&if( y & distance )
& && &&&{
& && && && &y -=
& && && && &StartY +=
& && &&&}
& & }
}
/*******************************************************************************
函数名:& && && && && &&&Lcd_Init
函数说明:& && && && && &LCD初始化
传入参数:& && && && && &无
传出参数:& && && && && &无
返回值:& && && && && &&&无
*******************************************************************************/
void Lcd_Init(void)
&&Delay_Nms(500);
&&Write_Cmd(0x30); //基本指令集
&&Delay_1ms();
&&Write_Cmd(0x02); // 地址归位
&&Delay_1ms();
&&Write_Cmd(0x0c); //整体显示打开,游标关闭
&&Delay_1ms();
&&Write_Cmd(0x01); //清除显示
&&Delay_1ms();
&&Write_Cmd(0x06); //游标右移
&&Delay_1ms();
&&Write_Cmd(0x80); //设定显示的起始地址
/*******************************************************************************
函数名:& && && && && &&&main
函数说明:& && && && && &主函数
传入参数:& && && && && &无
传出参数:& && && && && &无
返回值:& && && && && &&&无
*******************************************************************************/
void main( void )
&&Port_Init();
&&WDTCTL = WDTPW + WDTHOLD; //关狗
& &uchar i,*a,x,y,z=0;
& &uint nn=0,mm=9;
& &y=0x00;
& &Delay_Nms(100);& && && && && &&&//上电,等待稳定
&&Lcd_Init(); //初始化液晶
&&a=Photo1;
&&while(1)
&&{
& &
&&Lcd_Pos(1,6);& && && && & //设置显示位置为第一行
& &&&for(i=0;i&4;i++)
& &&&{
& && & Write_Data(DIS1[i]);
& &&&}
& &&&Lcd_Pos(3,6);& && && && & //设置显示位置为第3行
& &&&for(i=0;i&2;i++)
& &&&{
& && & Write_Data(DIS2[i]);
& &&&}
& &&&
& & & &&&
& & & &&&
& & & &&&Lcd_Pos(2,6);& && && && & //设置显示位置为第2行
& & & &&&if(nn==10)nn=0;
& &&&for(i=0;i&4;i++)
& &&&{
& && &
& & & && & DIS3[0]=D1[nn];
& & & && & Write_Data(DIS3[i]);
& &&&}
& &&&nn++;
& & & &&&
& & & &&&Lcd_Pos(4,6);& && && && & //设置显示位置为第四行
& & & &&&if(mm==0)mm=9;
& &&&for(i=0;i&4;i++)
& &&&{
& && &
………余下代码请下载附件………
复制代码
//************************************************************************ void xian_shi(void) {& &&&int i,j,k,l;& &&&Temp=(caltmp[0]*;//计算十进制的电压值& &&&ptr[0]=Temp/1000;& && && && && &&&ptr[2]=Temp%;& &&&ptr[3]=Temp%100/10;& &&&ptr[4]=Temp%10;& &&&ptr[5]=11;& &&&ptr[1]=10;& &&&LCD_write_com(0x80);& &&&DisplayCgrom(0x80,&一通道电压&);& &&&for(i=0;i&6;i++)& &&&{& && & delay_ms(10);& && & LCD_write_data(shuzi[ptr]);& && &}& && && &Temp=(caltmp[1]*;& &&&ptr[0]=Temp/1000;& && && && && &&&ptr[2]=Temp%;& &&&ptr[3]=Temp%100/10;& &&&ptr[4]=Temp%10;& &&&ptr[5]=11;& &&&ptr[1]=10;& &&&LCD_write_com(0x90);& &&&DisplayCgrom(0x90,&二通道电压&);& &&&for(j=0;j&6;j++)& &&&{& && & delay_ms(10);& && & LCD_write_data(shuzi[ptr[j]]);& && &}& && && &Temp=(caltmp[2]*;& &&&ptr[0]=Temp/1000;& && && && && &&&ptr[2]=Temp%;& &&&ptr[3]=Temp%100/10;& &&&ptr[4]=Temp%10;& &&&ptr[5]=11;& &&&ptr[1]=10;& &&&LCD_write_com(0x88);& &&&DisplayCgrom(0x88,&三通道电压&);& &&&for(k=0;k&6;k++)& &&&{& && & delay_ms(10);& && & LCD_write_data(shuzi[ptr[k]]);& && &}& &&&Temp=(caltmp[3]*;& &&&ptr[0]=Temp/1000;& && && && && &&&ptr[2]=Temp%;& &&&ptr[3]=Temp%100/10;& &&&ptr[4]=Temp%10;& &&&ptr[5]=11;& &&&ptr[1]=10;& &&&LCD_write_com(0x98);& &&&DisplayCgrom(0x98,&四通道电压&);& &&&for(l=0;l&6;l++)& &&&{& && & delay_ms(10);& && & LCD_write_data(shuzi[ptr[l]]);& && &}&&}
无效楼层,该帖已经被删除
& &&&不错!!!
楼主可否贴个效果图看看?
楼主可否贴个效果图看看?
Powered by

我要回帖

更多关于 msp430 的文章

 

随机推荐