完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 Gramymonk 于 2018-7-12 14:35 编辑 #include "msp430.h"#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 RS_CLR P2OUT &= ~BIT7 //RS置低#define RS_SET P2OUT |= BIT7 //RS置高#define RW_CLR P2OUT &= ~BIT6 //RW置低#define RW_SET P2OUT |= BIT6 //RW置高#define EN_CLR P2OUT &= ~BIT5 //E置低#define EN_SET P2OUT |= BIT5 //E置高#define PSB_CLR P1OUT &= ~BIT5 //PSB置低,串口方式#define PSB_SET P1OUT |= BIT5 //PSB置高,并口方式#define DataPort P3OUT //P3口为数据口//*************************************************************************// 系统时钟初始化//*************************************************************************void Clock_Init(){UCSCTL1 = DCORSEL_2; // 设置DCO范围UCSCTL3 |= SELREF_2; // 选择FLL参考源自REFOUCSCTL4 = SELM_3 + SELA_2 + SELS_4; // 配置 MCLK = DCOC,SMCLK =DCODIV,ACLK=REFOwhile (SFRIFG1 & OFIFG) // 清除 OFIFG,and XT1OFFG ,DCOFFG{UCSCTL7 &= ~( XT1LFOFFG + DCOFFG);SFRIFG1 &= ~OFIFG;}}//*************************************************************************// MSP430内部看门狗初始化//*************************************************************************void WDT_Init(){WDTCTL = WDTPW + WDTHOLD; //关闭看门狗}//*************************************************************************// 初始化IO口子程序//*************************************************************************void Port_init(){P3SEL = 0x00;P3DIR = 0xFF;P2SEL = 0x00;P2DIR|= BIT5 + BIT6 + BIT7;PSB_SET;}//***********************************************************************// 显示屏命令写入函数//***********************************************************************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 != ' |