⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 RT12864M的MSP430F149的并口驱动和应用,作者:AltKKs
💻 C
字号:
#include  <msp430x14x.h>
#include "RT12864_LCD.h"
#include "declare.h"
unsigned char flag,tmptype,tmpcmd,tmpdat1,tmpdat2,tmpi,tmpj;
unsigned char rebyte[4];
unsigned char tmpn=0;
void main(void)
{
/*
	unsigned char *str1,*str2,*str3,*str4,*str5;
	str1="国外公司申请难易程度排行由易到难";
	str2="RS-PA1 RW-PA2";
	str3="EN-PA3 DAT-PB0~7";
	str4="Www.AltKKs.Com";
	str5="接线表";
*/	
/*系统时钟配置
	WDTCTL = WDTPW + WDTHOLD;
	BCSCTL1 &= ~XT2OFF;							// 启用XT2
	while((IFG1&OFIFG)!=0)
	{
		IFG1&=~OFIFG;
		delay_nus(128);
	}
	BCSCTL2 = SELM_2 + SELS + DIVS_3;			// MCLK = XT2 = 8M SMCLK = 2M
	delay_nus(20000);							// 等待时钟建立
系统时钟配置结束*/
  volatile unsigned int iq0;
  WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer 
  BCSCTL1 &= ~XT2OFF; //启动时钟2,ACLK不分频,32768k
  do
   {
     IFG1 &=~ OFIFG;
     for(iq0 = 0xff;iq0 > 0;iq0--);
   }
  while ((IFG1&OFIFG) != 0);
  BCSCTL2 = SELM_2 + SELS + DIVS_2;//MCLK = XT2 = 8M SMCLK = 2M
                 
  delay_nus(20000);                   // Delay for crystal stabilization
/*系统时钟配置结束*/
	P1DIR |= 0x01;								// Set P1.0 to output direction
	LCD_DATA_DIR |= LCD_DATA;					//set output 0xff
	CONTROL_DIR |= LCD_RS | LCD_EN | LCD_RW;	//设置控制输出

  /*USART0异步通讯初始化*/
  P3DIR |= 0x10;   //P3.4输出,其他输入
  P3SEL |= 0x30;   //P3.4,5为异步通讯口USART0,其他为普通IO
  P3OUT = 0x00;    //485处于接收状态
  ME1 |= UTXE0 + URXE0;                     // Enabled USART0 TXD/RXD
  U0CTL |= PENA + PEV + CHAR;               // 校验允许,偶校验,8-bit character
  U0TCTL |= SSEL1;                          // SMCLK=2M
  U0BR0 = 0x68;                             // 波特率 19200
  U0BR1 = 0x00;                             //
  U0MCTL = 0x00;                            // 调整波特率
  UCTL0 &= ~SWRST;                          // Initialize USART state machine
  IE1 |= URXIE0; 
  	
	LCD_Init();
    _EINT();       //开总中断	
    
	while(1)
	{
		P1OUT ^= 0x01;
		/*
		ST7920_SendCmd(0x01);		//display clear
		delay_nms(1000);
		LCD_WriteString(2,1,str1);
		delay_nms(4000);
		ST7920_SendCmd(0x01);		//display clear
		LCD_WriteString(2,0,str5);
		LCD_WriteString(0,1,str2);
		LCD_WriteString(0,2,str3);
		LCD_WriteString(0,3,str4);
		delay_nms(4000);
		*/
		if(flag==9)
		{
		tmptype=rebyte[0];
		tmpcmd=rebyte[1];
		tmpdat1=rebyte[2];
		tmpdat2=rebyte[3];
		switch(tmptype)
		{
		  case 0:
		    {
		      ST7920_SendCmd(tmpcmd);
		      break;
		    }
		  case 1:
		    {
		      ST7920_SendData(tmpdat1);		      
		      break;
		    }
		  case 2:
		    {
		      ST7920_SendCmd(tmpcmd);
		      ST7920_SendData(tmpdat1);		      
		      break;
		    }
		  case 3:
		    {
		      ST7920_SendCmd(tmpcmd);
		      ST7920_SendData(tmpdat1);		      
		      ST7920_SendData(tmpdat2);				      
		      break;
		    }
		  case 4:
		    {
		      ST7920_SendData(tmpdat2);
		      ST7920_SendData(tmpdat1);		      
		      break;
		    }		
		  case 5:
		    {
		      for(tmpi=0;tmpi<32;tmpi++)
		        {
		          ST7920_SendCmd(0x34);
		          ST7920_SendCmd(0x80+tmpi);
		          ST7920_SendCmd(0x80);
		          ST7920_SendCmd(0x30);
		          for(tmpj=0;tmpj<16;tmpj++)
		            {
		              ST7920_SendData(tmpcmd);
		              ST7920_SendData(tmpcmd);
		            }
		        }
		      ST7920_SendCmd(0x36); 
		      break;
		    }
		  case 6:
		    {
    		      LCD_DrawPoint(tmpdat1,tmpdat2,tmpcmd);
		      break;
		    }			    		    		    		        		    
		  default:
		    {
		      ST7920_SendCmd(0x30);
		      ST7920_SendCmd(0x01);		      
		      break;
		    }
		}		    		  
		flag=0;
		}
		delay_nms(1000);
	}
}

#pragma vector = UART0RX_VECTOR
__interrupt void usart0_rx (void)
{
rebyte[tmpn] = RXBUF0;
tmpn++;
if(tmpn == 4)
{
tmpn = 0;
flag = 9;
}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -