看看这个例子12864的 /****************************************Copyright (c)************************************************** ** Guangzou ZLG-MCU Development Co.,LTD. ** graduate school ** http://www.zlgmcu.com ** **--------------File Info------------------------------------------------------------------------------- ** File name: main.c ** Last modified Date: 2004-09-16 ** Last Version: 1.0 ** Descriptions: The main() function example template ** **------------------------------------------------------------------------------------------------------ ** Created by: Chenmingji ** Created date: 2004-09-16 ** Version: 1.0 ** Descriptions: The original version ** **------------------------------------------------------------------------------------------------------ ** Modified by: ** Modified date: ** Version: ** Descriptions: ** ********************************************************************************************************/ #include "config.h" #define led1 (1<<16) #define led2 (1<<17) #define led3 (1<<18) #define led4 (1<<19) #define CS (1<<21) #define SID (1<<22) #define SCLK (1<<23) #define CS_H() IO1SET=1<<21 #define CS_L() IO1CLR=1<<21 #define SID_H() IO1SET=1<<22 #define SID_L() IO1CLR=1<<22 #define SCLK_H() IO1SET=1<<23 #define SCLK_L() IO1CLR=1<<23
#define ADD_SET 0x34 //定义扩充指令集合 #define MOVE 0x03 //允许垂直滚动 #define FUNC_SET 0x30 //8位数据,基本指令集 #define DISP_ON 0x0f //开显示,开关标,不闪烁 #define CLR_SCREEN 0x01 //清屏幕 #define ENTRY_MODE 0x06 //光标右移动,画面不动 #define S_CMD 0xf8 //启动命令 #define S_DATA 0xfa //启动数据 uint8 hz1[]={"欢迎使用ARM7平台"}; uint8 hz2[]={"版权归刘国华所有"}; uint8 hz3[]={"QQ:158655612 ^_^"}; uint8 hz4[]={"手机:15923522472"};
void delay(uint32 t) { uint32 i; for(i=0;i<t;i++); } void send_byte(uint8 data) { uint8 i; SCLK_L(); //sclk=0 for(i=0;i<8;i++) { if(data&0x80) //判断最高位为1不 SID_H(); else SID_L(); SCLK_H(); //sclk=1 //delay(1000); SCLK_L(); //delay(1000); data=data<<1; } //出来sclk为低电平 delay(1000); } void send_cmd(uint8 cmd) { CS_H(); //cs=1 send_byte(S_CMD); //发送命令启动字节 send_byte(cmd&0xf0); //发送命令字节的高四位 send_byte(cmd<<4); //发送命令字节的低四位 CS_L(); //delay(10000); } void send_data(uint8 data) { CS_H(); //cs=1 send_byte(S_DATA); //发送数据启动字节 send_byte(data&0xf0); //发送数据字节的高四位 send_byte(data<<4); //发送数据字节的低四位 CS_L(); //delay(10000); }
void set_position(uint8 row,uint8 col) { uint8 pos; switch(row) { case 1: pos=0x80+col-1; break; case 2: pos=0x90+col-1; break; case 3: pos=0x88+col-1; break; case 4: pos=0x98+col-1; break; } send_cmd(pos); } void lcd_init() { delay(3000); send_cmd(FUNC_SET); //功能设置 send_cmd(DISP_ON); //开显示 send_cmd(CLR_SCREEN);//请屏幕 send_cmd(ENTRY_MODE);//设置模式 }
int main (void) {// add user source code
uint8 i; IO1DIR=led1|led2|led3|led4|CS|SID|SCLK; //P1.16-P1.19,P1.21-P1.23设置为输出 IO1SET=led1|led2|led3|led4; //灭灯 IO1CLR=led1|led2|led3|led4|CS|SID|SCLK; lcd_init(); set_position(1,1); //第1行第1列 for(i=0;i<16;i++) { send_data(hz1); } set_position(2,1); //第2行第1列 for(i=0;i<16;i++) { send_data(hz2); } set_position(3,1); //第2行第1列 for(i=0;i<16;i++) { send_data(hz3); } set_position(4,1); //第2行第1列 for(i=0;i<16;i++) { send_data(hz4); } //send_cmd(ADD_SET); //改为扩充指令 //send_cmd(MOVE); //send_cmd(0x40); while(1); return 0; } /********************************************************************************************************* ** End Of File ********************************************************************************************************/
|