因为官方给的硬件IIC程序弄起来有点麻烦,索性不如用端口模拟一个IIC程序出来
单片机源程序如下:
- /*
- * LCD12864.C
- *
- * Created on: 2018年7月17日
- * Author: PC100
- */
- #include "LCD12864.h"
- #include "msp430.h"
- //写显示数据
- void LCD_data(unsigned char data_data)
- {unsigned int i;
- P1DIR=0x7c;
- P3DIR=0xff;
- P1OUT=0xff;
- P1OUT=(P1OUT^BIT3);//RW=0
- P1OUT=(P1OUT|BIT2);//RS=1
- // delay50us(1);
- for(i=0;i<4;i++)
- P3OUT=data_data;
- delay_10us();
- P1OUT=(P1OUT|BIT4);//E=1
- // delay50us(10);
- for(i=0;i<40;i++)
- delay_10us();
- P1OUT=(P1OUT^BIT4);//E=0
- // delay50us(2);
- delay_100us();
- }
- //写指令
- void LCD_command(unsigned int com_data)
- {unsigned int i;
- P1DIR=0x7c;
- P3DIR=0xff;
- P1OUT=0xff;
- P1OUT=(P1OUT^BIT3);//RW=0
- P1OUT=(P1OUT^BIT2);//RS=0
- // delay50us(1);
- for(i=0;i<4;i++)
- delay_10us();
- P3OUT=com_data;
- P1OUT=(P1OUT|BIT4);//E=1
- // delay50us(10);
- for(i=0;i<40;i++)
- delay_10us();
- P1OUT=(P1OUT^BIT4);//E=0
- // delay50us(2);
- delay_100us();
- }
- //初始化
- void LCD_Init(void)
- { unsigned int i;
- // delay1ms(100);
- for(i=0;i<100;i++)
- delay_ms();
- LCD_command(0x30);
- // delay50us(4);
- for(i=0;i<16;i++)
- delay_10us();
- LCD_command(0x30);
- // delay50us(4);
- for(i=0;i<16;i++)
- delay_10us();
- LCD_command(0x0c);//开显示屏
- // delay50us(4);
- for(i=0;i<16;i++)
- delay_10us();
- LCD_command(0x01); //清屏指令
- // delay50us(240);
- for(i=0;i<12;i++)
- delay_ms();
- LCD_command(0x06);
- // delay50us(10);
- for(i=0;i<40;i++)
- delay_10us();
- }
复制代码
所有资料51hei提供下载:
IIC.zip
(78.68 KB, 下载次数: 45)
|