MSP430 12864显示

发布者:Jinyu521最新更新时间:2017-09-28 来源: eefocus关键字:MSP430  12864显示 手机看文章 扫描二维码
随时随地手机看文章

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

//DM430开发板控制带字库型12864液晶模块显示测试程序 

//显示模式为汉字模式,直接将12864插入12864接口即可 

//注意选择液晶的电源,位于电位器附近,可选5V或3.3V,根据液晶电压进行选择 

//调试环境:EW430 V5.30 

// 

 

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

#include  

  

#define CPU_F ((double)8000000)   

#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))   

#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  

  

/*12864应用指令*/  

#define CLEAR_SCREEN    0x01            //清屏指令:清屏且AC值为00H  

#define AC_INIT     0x02            //将AC设置为00H。且游标移到原点位置  

#define CURSE_ADD   0x06            //设定游标移到方向及图像整体移动方向(默认游标右移,图像整体不动)  

#define FUN_MODE    0x30            //工作模式:8位基本指令集  

#define DISPLAY_ON  0x0c            //显示开,显示游标,且游标位置反白  

#define DISPLAY_OFF 0x08            //显示关  

#define CURSE_DIR   0x14            //游标向右移动:AC=AC+1  

#define SET_CG_AC   0x40            //设置AC,范围为:00H~3FH  

#define SET_DD_AC   0x80  

  

#define P10 0  

#define P11 1  

#define P12 2  

#define P13 3  

#define P14 4  

#define P15 5  

#define P16 6  

#define P17 7  

  

#define RS_CLR  P3OUT &= ~(1 << P13)        //RS置低  

#define RS_SET  P3OUT |= (1 << P13)         //RS置高  

  

#define RW_CLR  P3OUT &= ~(1 << P16)        //RW置低  

#define RW_SET  P3OUT |= (1 << P16)         //RW置高  

  

#define EN_CLR  P3OUT &= ~(1 << P17)        //E置低  

#define EN_SET  P3OUT |= (1 << P17)         //E置高  

  

#define PSB_CLR P5OUT &= ~(1 << P11)        //PSB置低,串口方式  

#define PSB_SET P5OUT |= (1 << P11)         //PSB置高,并口方式  

  

#define RST_CLR P5OUT &= ~(1 << P12)        //RST置低  

#define RST_SET P5OUT |= (1 << P12)         //RST置高  

  

#define DataPort      P4OUT                 //P4口为数据口  

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

//                    系统时钟初始化  

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

void Clock_Init()  

{  

  uchar i;  

  BCSCTL1&=~XT2OFF;                 //打开XT振荡器  

  BCSCTL2|=SELM1+SELS;              //MCLK为8MHZ,SMCLK为8MHZ  

  do{  

    IFG1&=~OFIFG;                   //清除震荡标志  

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

       _NOP();                      //延时等待  

  }  

  while((IFG1&OFIFG)!=0);           //如果标志为1,则继续循环等待  

  IFG1&=~OFIFG;   

}  

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

//              MSP430内部看门狗初始化  

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

void WDT_Init()  

{  

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

}  

  

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

//          初始化IO口子程序  

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

void Port_init()  

{  

  

        P4SEL = 0x00;  

        P4DIR = 0xFF;  

          

        P3SEL = 0x00;  

        P3DIR|= BIT3 + BIT6 + BIT7;  

        P5SEL = 0x00;  

        P5DIR|= BIT1 + BIT2;  

        PSB_SET;          //液晶并口方式  

        RST_SET;          //复位脚RST置高  

}  

  

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

//  显示屏命令写入函数  

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

void LCD_write_com(unsigned char com)   

{     

    RS_CLR;  

    RW_CLR;  

    EN_SET;  

    DataPort = com;  

    delay_ms(5);  

    EN_CLR;  

}  

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

//  显示屏数据写入函数  

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

  

void LCD_write_data(unsigned char data)   

{  

    RS_SET;  

    RW_CLR;  

    EN_SET;  

    DataPort = data;  

    delay_ms(5);  

    EN_CLR;  

}  

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

//  显示屏清空显示  

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

  

void LCD_clear(void)   

{  

    LCD_write_com(0x01);  

    delay_ms(5);  

}  

  

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

//函数名称:DisplayCgrom(uchar hz)显示CGROM里的汉字  

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

void DisplayCgrom(uchar addr,uchar *hz)  

{  

    LCD_write_com(addr);  

        delay_ms(5);  

    while(*hz != '\0')  

    {  

        LCD_write_data(*hz);  

        hz++;  

                delay_ms(5);  

    }  

  

}   

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

//函数名称:Display()显示测试结果  

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

void Display(void)  

{  

    DisplayCgrom(0x80,"启程电子欢迎你");  

    DisplayCgrom(0x88," QQ: 617889341 ");  

    DisplayCgrom(0x90," TodayStart2016  ");  

//  DisplayCgrom(0x98,"电话18782911298");  

  

}  

  

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

//  显示屏初始化函数  

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

  

void LCD_init(void)   

{  

    LCD_write_com(FUN_MODE);            //显示模式设置  

    delay_ms(5);  

    LCD_write_com(FUN_MODE);            //显示模式设置  

    delay_ms(5);  

        LCD_write_com(DISPLAY_ON);          //显示开  

    delay_ms(5);  

        LCD_write_com(CLEAR_SCREEN);            //清屏  

    delay_ms(5);  

}  

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

//      主程序  

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

void main(void)  

{  

        WDT_Init();                                   //看门狗设置  

        Clock_Init();                                 //系统时钟设置  

        Port_init();                                  //系统初始化,设置IO口属性  

    delay_ms(100);                                //延时100ms  

    LCD_init();                                   //液晶参数初始化设置  

    LCD_clear();                                  //清屏  

    while(1)  

    {  

          LCD_write_com(0x98);  

          LCD_write_data('2');  

          LCD_write_data('2');  

          Display();                                    //显示汉字  

    }  

}  


关键字:MSP430  12864显示 引用地址:MSP430 12864显示

上一篇:单片机IO相关
下一篇:MSP430 IIC通信

推荐阅读最新更新时间:2024-03-16 15:39

MSP430单片机理论复习知识点
纵观微处理器的发展,一是朝着具有复杂数据运算、高速通信、信息处理等功能的高性能计算机系统方向发展;二是产生了一种将中央处理器,存储器,I/O接口电路以及连接他们的总线都集成一块芯片上的计算机。单片机在设计上主要突出了控制功能,调整了接口配置,在单一芯片上制成了结构完整的计算机。 目前最常用的3中可编程处理器:微控制器(MCU)、微处理器(MPU)、数字信号处理器(DSP); 单片机可应用的领域:工业控制(工业机器人)、智能化仪器仪表(温度湿度的测量)、日常生活钟的电器产品(MP3)、计算机网络与通信(以太网)、计算机外部设备(微型打印机); 单片机的结构特点:时钟频率比通用MPU和DSP低;功耗低;字长一般为8-32位
[单片机]
MSP430 ADC模数例程
下面以路灯控制器的设计为例说明 ADC12 的使用方法。路灯在一定的亮度值以上将熄 灭,而在亮度低于某个数值时亮起来。下面是简图。当亮度较大、光线较强时,光敏电阻的电阻值比较小,这时它与下面 10K 分压,则送达 ADC12 的电压比较高;而当亮度较小、光线较弱时,光敏电阻的电阻值比较大,这时它与下面 10K 分压,则送达 ADC12 的电压比较低。通过 ADC12 模块转换出具体的表示光强度的数值(光线越强,转换后的数值越大,但不成正比例),再设定一个开启路灯的阀值数据,则可以通过实际测量的光强度数据与阀值数据比较得到是否开启路灯的目的。 下面是具体示例程序:(使用单通道单次定时转换)。 #include msp430x44x
[单片机]
<font color='red'>MSP430</font> ADC模数例程
基于MSP430F4250的高精度电子天平设计
摘要: 本文介绍了一种利用内部带S-D模数转换器的单片机MSP430F4250构成的电子天平设计方案,这可以大大降低产品的成本,同时又能满足设计的要求。 关键词: 电子天平;MSP430;S-D模数转换 引言 随着现代电子技术和微电脑技术的迅速发展,应用到天平领域,出现了电子天平。从上世纪七十年代末期出现世界上第一台电子天平起,短短三十几年中,发展出了各种规格,门类齐全的系列电子天平,广泛应用于各行各业的质量计量。 我国电子天平的发展,紧随国际发达国家之后,于上世纪八十年代初期开始,现已形成规模化生产并广泛应用到国内各领域,同时也部分出口世界上许多国家。 电子天平具有数字显示,直接读数、快速称量、重量轻、操作
[应用]
MSP430 G2553 矩阵键盘 无源蜂鸣器 电子琴
伪代码: while (1) { key = get_key(); //获取按键 if (key) { //设置蜂鸣器鸣叫频率 可以定时器中断做 可以PWM做 while (get_key()) ; //等待按键松开 //关闭蜂鸣器 } }
[单片机]
采用MSP430设计低功耗RF/红外控制器
   0 引言   在智能化家居控制系统应用中,无线通信和控制已经越来越广泛地被运用。为了实现对居室电器设备的集中无线控制,可采用电话遥控、手持遥控器进行远程或短距离的无线控制,但所控制和传输的信号都是RF信号。然而有些被控对象本身是用红外信号遥控的,例如电视机、空调,由于各种品牌的空调都有自己的红外编码信号,相互不能通用,这就给智能化家居控制系统中红外遥控器的集中无线控制带来了极大的不便。本文就基于MSP430的低功耗RF/红外控制器的设计与实现进行介绍。   1 工作原理   大多数红外遥控信号的输出都是用编码后串行数据对38~40KHz的方波进行脉冲幅度调制而产生的PWM信号,如图1所示。各种品牌的红外遥控器的
[单片机]
采用<font color='red'>MSP430</font>设计低功耗RF/红外控制器
基于MSP430F149单片机的GPS定位数据采集系统设计
  0 引言   GPS(Global PosiTIoning System,全球卫星定位系统)以其高精度、全天候、全天时的特点,在定位、导航、测距、授时遥感等领域广泛应用,并得到了快速的发展。设计一种基于嵌入式系统的GPS定位数据采集系统,根据GPS信号接收原理和嵌入式技术,该设计完成了基于单片机和计算机实现GPS数据采集,并以良好的人机界面显示出系统所处的经纬度、海拔高度、X,Y坐标以及日期等信息,该系统已应用于某外场的车载定位试验中,代替了以前人工记录定位数据的烦琐,提高了效率。   1 系统描述   本设计利用TI的低功耗MSP430F149单片机的双串行接口,一路将GPS接收模块接收的定位信息数据传送至单片机,由单片
[单片机]
基于<font color='red'>MSP430</font>F149单片机的GPS定位数据采集系统设计
基于MSP430单片机的虚拟I2C总线软件包VIIC_M1.0
一、VIIC_M1.0软件包的组成 根据归一化设计的要求,主方式下虚拟I2CC总线由下列10个子程序组成: 1、时序模拟子程序4个 I2C_sta,I2C _stop,I2C _mack ,I2C _mnack 2、操作模拟子程序3个 I2C_ackn,I2C _wr_byte,I2C _rd_byte 3、数据读写子程序3个 I2C_wr_nbyte,I2C _rd_nbyte,I2C_wr_addr 二、应用对象 1、MSP430单片机 MSP430单片机为低功耗的16位单片机,有MSP430X11、MSP430X112、MSP430X1101、MSP430X13X、MSP430X14X、MSP430X31X/32X/33
[单片机]
基于<font color='red'>MSP430</font>单片机的虚拟I2C总线软件包VIIC_M1.0
温度湿度监控系统的设计
随着信息社会的发展,信息家电、智能仪表和智能安保系统等产品已经越来越多地出现在人们的生活中。可以预见,为了满足人们对舒适、便捷、安全生活环境的需求,嵌进式信息产品的设计、应用将得到快速发展。 单片机作为嵌进式信息产品的一个重要应用方面,其使用、设计面临着全新的挑战。一方面,人们对嵌进式产品的要求越来越高,稳定可靠、功能丰富、物美价廉的信息产品将成为人们的首选。另一方面,随着微电子工艺水平的发展,单片机处理器的能力不断进步,从最初的8位单片机到16位,进而32位单片机,功能越来越强大,执行速度越来越快,集成度、精确度也越来越高,应用领域进一步拓宽。可以说,单片机芯片的性能已经能够满足现代人们对嵌进式信息产品的更高要求。为了能将二
[单片机]
温度湿度监控系统的设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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