123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- #include "drive_12864.h"
- #include <stdarg.h> // 标准头文件
- #include "stdio.h"
- #include "public.h"
- void Senbyte(unsigned char command);
- void Write_lcd_com(unsigned char command);
- void Write_lcd_date(unsigned char date);
- void lcd128_init(void);
- void Senbyte(unsigned char command)//向12864串行发送1byte数据
- {
- unsigned char i;
- for(i=0;i<8;i++)
- {
- if((command<<i)&0x80)
- {
- LCD128_RW_PIN=1;
- }
- else
- {
- LCD128_RW_PIN=0;
- }
- LCD128_EN_PIN=0;//sclk =0
- system_delay_us(2);
- LCD128_EN_PIN=1;//sclk=1
- }
- }
- void Write_lcd_com(unsigned char command)//向12864写指令函数
- {
- LCD128_RW_PIN=1;
- Senbyte(0xf8);
- Senbyte(command&0xf0);
- Senbyte((command<<4)&0XF0);
- system_delay_us(110);
- }
- void Write_lcd_date(unsigned char date)//向12864写数据函数
- {
- LCD128_RW_PIN=1;
- Senbyte(0xfa);
- Senbyte(date & 0xf0);
- Senbyte((date<<4) & 0xf0);
- system_delay_us(110);
- }
- void lcd128_init(void)//12864初始化函数
- {
- LCD128_EN_PIN_OUT();
- LCD128_RW_PIN_OUT();
- Write_lcd_com(0x30);//设置8位数据口 基本指令模式
- system_delay_us(110);
- Write_lcd_com(0xc0);//整体显示开 游标关 反白关
- system_delay_us(110);
- Write_lcd_com(0x30); //设置8位数据接口,基本指令模式
- Write_lcd_com(0x20); //清DDRAM
- Write_lcd_com(0x06); //游标及显示右移一位
- Write_lcd_com(0x0c); //整体显示开,游标关,反白关
- Write_lcd_com(0x01); //写入空格清屏
- system_delay_us(110);
- Write_lcd_com(0x80); //设置首次显示位置
- system_delay_us(110);
- }
- /************ 写字符数据函数 *****************
- 功能:在带字库12864指定位置上显示字符;
- 参数
- p: 指向待显示数据指针
- x: X坐标
- y: Y坐标
- ************ *********** *****************/
- void WriteLcd128_String(char x,char y,char *p)
- {
- switch(y) // 设置显示地址
- {
- case 0:Write_lcd_com(0x80 + x); // 第一行
- break;
- case 1:Write_lcd_com(0x90 + x); // 第二行
- break;
- case 2:Write_lcd_com(0x88 + x); // 第三行
- break;
- case 3:Write_lcd_com(0x98 + x); // 第四行
- break;
- }
- while(*p != 0) // 循环显示字符,直到检测到结束字符
- {
- Write_lcd_date(*p);
- // system_delay_us(5);
- p++;
- }
- }
- //void L128printf(char x,char y,char *p,...)
- //{
- // char LcdBuff[16];
- // va_list ap;
- // va_start(ap,p);
- // vsprintf(LcdBuff,p,ap);
- // va_end(ap);
- // WriteLcd128_String(x,y,LcdBuff);
- //}
- //
|