完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
/************************************************************************* 12864液晶串行显示测试程序 LCD型号:FYD12864-0402C P2.4模拟SID(接第5脚),P2.5模拟SCLK(接第6脚) 4脚(CS信号)接高电平选通,15脚(PSB信号)接地选择串行方式->和GND焊盘相接 17脚(RST信号)根据注释提示悬空 *************************************************************************/ #include #define uchar unsigned char #define uint unsigned int const unsigned char code[]={"你好世界你好世界"}; void int_port(void) //管脚初始化 { P2SEL&=~BIT4; //P2.4模拟SID,设置为i/o口输出方向 P2DIR|=BIT4; P2OUT&=~BIT4; P2SEL&=~BIT5; //P2.5模拟SCLK,设置为i/o口输出方向 P2DIR|=BIT5; P2OUT&=~BIT5; } /******************************************************************** * 名称 : delay() * * 输入 : t * 输出 : 无 ***********************************************************************/ void delay(uint t) //延时函数 { //粗略延时,满足时序要求 uint i,j; for(i=0; i } /******************************************************************** * 名称 : sendbyte() * 功能 : 按照液晶的串口通信协议,发送数据 * 输入 : zdata * 输出 : 无 ***********************************************************************/ void sendbyte(uchar zdata) //数据传送函数 { uchar code_seg7; uchar serial_clk; uchar serial_shift; code_seg7=zdata; serial_shift=0x80; for(serial_clk=0; serial_clk<8; serial_clk++) { if(code_seg7&serial_shift) { P2OUT|=BIT4; //SID为1 } else { P2OUT&=~BIT4; //SID为0 } P2OUT&=~BIT5; //产生时钟信号下沿 P2OUT|=BIT5; //产生时钟信号上沿 serial_shift=serial_shift>>1; //准备发送下一位数据 } } /******************************************************************** * 名称 : write_com() * 功能 : 写串口指令 * 输入 : cmdcode * 输出 : 无 ***********************************************************************/ void write_com(unsigned char cmdcode) //写命令函数 { //串口控制格式(11111AB0) //A数据方向控制,A=H时读,A=L时写 //B数据类型选择,B=H时为显示数据,B=L时为命令 sendbyte(0xf8); //MCU向LCD发命令 sendbyte(cmdcode & 0xf0); //发高四位数据(数据格式D7D6D5D4_0000) sendbyte((cmdcode << 4) & 0xf0);//发低四位数据(数据格式D3D2D1D0_0000) delay(2); //延时等待 } /******************************************************************** * 名称 : write_data() * 功能 : 写串口数据 * 输入 : Dispdata * 输出 : 无 ***********************************************************************/ void write_data(uchar Dispdata)//写数据函数 { sendbyte(0xfa); //MCU向LCD发数据 sendbyte(Dispdata & 0xf0); //发高四位数据 sendbyte((Dispdata << 4) & 0xf0);//发低四位数据 delay(2); } /******************************************************************** * 名称 : lcdinit() * 功能 : 初始化函数 * 输入 : cmdcode * 输出 : 无 ***********************************************************************/ void lcdinit() //LCD初始化 { delay(20000); //复位等待(内部自带上电复位电路),时间较长 write_com(0x30); //功能设定:基本指令集操作 delay(50); //延时等待 write_com(0x0c); //整体显示,关游标 delay(50); write_com(0x01); //清屏 delay(50); write_com(0x06); //入口设置 delay(50); } /******************************************************************** * 名称 : print_string() * 功能 : 显示字符串 * 输入 : *s * 输出 : 无 ***********************************************************************/ void print_string() //发送字符串 { uchar i; i=0; while(code[i]!=' |