MSP430单片机对12864液晶模块显示的测试设计

发布者:快乐的旅程最新更新时间:2020-09-17 来源: elecfans关键字:MSP430  单片机  12864液晶模块显示 手机看文章 扫描二维码
随时随地手机看文章

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


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



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


//调试环境:EW430 V5.30


MSP430单片机对12864液晶模块显示的测试设计


//


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


#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 != ‘’)


{


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();


关键字:MSP430  单片机  12864液晶模块显示 引用地址:MSP430单片机对12864液晶模块显示的测试设计

上一篇:如何快速设计红外体温检测仪?TI来支招!
下一篇:基于MSP430系统时钟低功耗模式的设置

推荐阅读最新更新时间:2024-11-16 23:53

开发STM8单片机,需要哪些开发工具?
使用STM8单片机开发自己的系统,在硬件开发工具方面,一般需要:仿真器、编程器,对于新手来说可能还需要开发板、学习板。软件方面需要对应的开发软件。 STM8的开发软件下载地址 STM8仿真器,编程器的介绍网址(点击查看),STM8开发板、学习板的介绍网址(点击查看) 下面先介绍一些与STM8开发工具相关的关键述语,在后面的使用中,您将会接触到。 问:STM8的仿真方式有哪些? 答:一般来说,STM8所有系列的单片机都是通过SWIM接口仿真。 问:STM8的编程方式有哪些? 答:一般来说,STM8所有系列的单片机都是通过SWIM接口编程。 问:什么是SWIM接口? 答:SWIM接口是STM8的调试系统的调试和
[单片机]
新型微控制器ADμC812的P1口的应用
    摘要: ADμC812是一种新型的高度集成的12位数据采集系统,它在单个芯片内包含了高性能的自校准多通道ADC、两个12位的DAC以及可编程的8位MCU(与8051兼容)。与MCS51系列单片机相似,它有P0~P3四个端口,其中P1口可实现多种功能,例如多通道的ADC、能爱畜输入端口和用于特殊功能的输入控制等。介绍了ADμC812的P1口的结构原理和应用。     关键词: 端口 A/D转换 定时器 SPI串口 1 AD μC812 的通用数据端口 AD μC812 是一种新型的高度集成的高精度12位数据采集系统。在其片内,不仅包含了可重新编程的非易失性闪速/电擦除程序存储器的高性能8位(与8
[嵌入式]
单片机和PLC应该怎样去理解和区分
区别: 从编程语言角度看,单片机起初用的是汇编语言,后期用的是C语言;PLC方面,一般小型机,比如:三菱FX系列,西门子200等,用的是T型图,大机型用的是顺序控制语言,也有的用C语言(不等同于单片机的C语言),比如:西门子300或者三菱Q系列! 从程序灵活度上看,单片机不灵活,程序写好以后烧入芯片以后无法更改,如果更改程序就要重新写,重新烧,运用起来不是很方面,PLC俗称可编程控制器,程序可以随着控制设备的不同而随便更改程序,运用很方面! 从成本上看,单片机成本很低,一个单片机只需几毛钱,PLC成本很高,最低几千块,最高有几万几十万,几百万都有! 从难易程度上讲,单片机的难度比较高,开发语言属于高级语言,基础的是51单片机,
[单片机]
MSP430F5438 看门狗实验
简介: 1,学会在定时器和看门狗模式下操作 WDT,了解 WDT 寄存器的配置 2,编程实现WDT 定时功能,WDT 时钟源来自 ACLK,且 ACLK 无失效来自 XT1 晶体 3,实现功能:250ms 定时,每 250ms LED1 亮灭交替闪烁 1,看门狗介绍 看门狗定时器是一个32位的定时器它可以作为看门狗或定时器使用所有F5XX系列的器件中都有增强型看门狗定时器—WDT_A。 什么是看门狗? 从字面的意思理解,看门狗帮我的系统看门,防止我的系统到处乱跑。在实际嵌入式系统中看门狗也是充当这个角色的。看门狗,简称WDT,很明显它实际上是一个定时器,就如同我们所讲的Timer_A3亦或是Timer_B7系统一样,
[单片机]
<font color='red'>MSP430</font>F5438 看门狗实验
51单片机制作红外遥控器
你的生活中是否也有这样的场景,要打开电视,满屋子找遥控器,翻了一大堆遥控器却愣是没找到哪个是电视机的?我们走访了不少家庭,得到了一个惊人的数据,至少一个三口之家的家庭会有6个遥控板,更多的甚至达到了10多个。越来越多的电器为了让操作更简便,更方便人们使用而采用了遥控的技术,以一般的家庭为例,一台电视就有一个遥控器、机顶盒一个遥控器,空调也是一个房间一个,也有三个遥控器、DVD也有一个遥控器。如果再加上客厅的电灯、风扇、音响等等那就更多了。常用的就由5,6个。许多的市民都面临着遥控器太多的烦恼。 迫切需要有一个能代替家里遥控器的装置。用单片机模拟遥控器发射红外线。 一、红外发射管电路 二、红外发射
[单片机]
基于单片机的网络控制实现温控系统的设计
网络控制系统(NCSs)已经成为学术和工业领域的主要研究中心之一,随着日益增加的研究趋势和研究需要,能够成功应用最新的知识和信息则显得格外的重要。随着社会发展的需求,人们对温箱的应用和需求越来越广泛,在工业生产和日常生活或科学实验中,我们随处都可以看到温箱的应用。本文是将嵌入式技术和网络控制技术结合起来实现了基于网络控制系统的嵌入式温箱控制系统的设计。网络控制系统就是通过控制系统元件(传感器、控制器、执行器等),使用共享的网络而实现信息(标准输入和输出、控制输入等)的交换。通过TCP协议将嵌入式系统采集到的温度信息发送到网络化控制与协调系统和网络监测系统并进行计算和判断后控制和协调单片机的行为。网络化检测系统通过以太网发布对单片
[单片机]
基于<font color='red'>单片机</font>的网络控制实现温控系统的设计
学习单片机1
1、何谓单片机一台能够工作的计算机要有这样几个部份构成:CPU(进行运算、控制)、RAM(数据存储)、ROM(程序存储)、输入/输出设备(例如:串行口、并行输出口等)。在个人计算机上这些部份被分成若干块芯片,安装一个称之为主板的印刷线路板上。而在单片机中,这些部份,全部被做到一块集成电路芯片中了,所以就称为单片(单芯片)机,而且有一些单片机中除了上述部份外,还集成了其它部份如A/D,D/A等。 天!PC中的CPU一块就要卖几千块钱,这么多东西做在一起,还不得买个天价!再说这块芯片也得非常大了。 不,价格并不高,从几元人民币到几十元人民币,体积也不大,一般用40脚封装,当然功能多一些单片机也有引脚比较多的,如68引脚,功能少的只有10
[单片机]
51单片机的串口中断设置
首先,你要用软件允许中断, 即C语言中EA = 1; 允许总中断ES = 1; //允许串口中断汇编中可用 SETB EA ;允许总中断 SETB ES ;允许串口中断 当单片机接收到一帧数据后,RI会置1,向CPU申请中断,若之前有中断允许,则产生了中断,进入中断服务程序。 当然,单片机发送完一帧数据,TI也会置1,同样会产生中断! 一般我们在发送数据时要关中断,因为一般你不用在发送时不用处理数据; 接收数据时要开中断,以便你在中断服务程序中将接收到的数据进行存储并处理。 补充:其实,不管你有没有允许中断,上位机(此时即给单片机发送信息的机器)只要给单片机发送数据,单片机就会自动接收数据,并把它放在数据缓冲器S
[单片机]
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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