1、ATmega16液晶12864/* * lcd_12864.c * * Created: 2015/2/16 16:01:32 * Author: Administrator */ /*/* 常用头文件及宏定义 */*/#include #include /延时文件#include /睡眠文件#include /中断文件#include /eeprom#define BIT(x) (1(x)#define uchar unsigned char#define uint unsigned int/*/* 12864 */*/* 并行模式 */* 引脚说明 */* PC 0 RS PC 1 RW
2、PC 2 E PC 3 背光 PC 4 RST */* PA 0PA 7 数据 */ 宏定义 /*#define DDR_SHUJU DDRA#define PORT_SHUJU PORTA#define PIN_SHUJU PINA#define DDR_KZ DDRC#define PORT_KZ PORTC#define RS_H PORT_KZ|=BIT(0)#define RS_L PORT_KZ&=(BIT(0)#define RW_H PORT_KZ|=BIT(1)#define RW_L PORT_KZ&=(BIT(1)#define E_H PORT_KZ|=BIT(2)#d
3、efine E_L PORT_KZ&=(BIT(2)#define BEIGUABG_H PORT_KZ|=BIT(3)#define BEIGUABG_L PORT_KZ&=(BIT(3)#define RESET PORT_KZ&=(BIT(4),PORT_KZ|=BIT(4)uchar lcd_read() /读忙函数 uchar bl; DDR_SHUJU=0; /输入 PORT_SHUJU=0xff; /上拉电阻 RS_L; RW_H; E_H; _delay_ms(1); bl=PIN_SHUJU; E_L; RW_L; PORT_SHUJU=0; DDR_SHUJU=0xff;
4、return bl;void lcd_write_char(uchar shuju) /写字符函数 while(lcd_read()&BIT(7); RS_H; RW_L; PORT_SHUJU=shuju; E_H; E_L; RS_L;void lcd_write_string(char *str) /写字符串函数 while(*str!=0) lcd_write_char(*str); str+; void lcd_write_zhiling(uchar zhiling) /写指令 while(lcd_read()&BIT(7); RS_L; RW_L; PORT_SHUJU=zhili
5、ng; E_H; E_L;/ 指令集宏定义 /#define ZHILINGJI_JIBEN lcd_write_zhiling(0x30) /基本指令集#define ZHILINGJI_KUOZHAN lcd_write_zhiling(0x34) /扩展指令集#define HUITU_OFF lcd_write_zhiling(0x34) /绘图关#define HUITU_ON lcd_write_zhiling(0x36) /绘图开#define QINGPING_WENZI lcd_write_zhiling(0x01) /文字清屏void huitu_qingping() uc
6、har i,j; ZHILINGJI_KUOZHAN;/扩充指令集 HUITU_OFF;/绘图关 for (i=0;i32;i+) lcd_write_zhiling(0x80+i);/y地址 lcd_write_zhiling(0x80);/x地址 ZHILINGJI_JIBEN;/基本指令集 for (j=0;j16;j+) lcd_write_char(0); /数据 lcd_write_char(0); /数据 ZHILINGJI_KUOZHAN;/扩充指令集 HUITU_ON;/开显示void huitu_fenkuai(uchar X,uchar Y,uchar tu) uchar
7、 i; switch(Y) case 1:X+=0;break; case 2:X+=8;break; default:; X-; ZHILINGJI_KUOZHAN; /扩充指令集 HUITU_OFF; /绘图关 for (i=0;i32;i+) lcd_write_zhiling(0x80+i); /y地址 lcd_write_zhiling(0x80+X); /x地址 ZHILINGJI_JIBEN; /基本指令集 lcd_write_char(tu2*i); /数据 lcd_write_char(tu2*i+1); /数据 ZHILINGJI_KUOZHAN; /扩充指令集 HUITU
8、_ON; /绘图开void huitu_quanping(uchar tu,uchar n) int i,j,k=0; ZHILINGJI_KUOZHAN;/扩充指令集 HUITU_OFF;/绘图关 if (n=1) for (i=0;i32;i+) lcd_write_zhiling(0x80+i);/y地址 lcd_write_zhiling(0x80);/x地址 ZHILINGJI_JIBEN;/基本指令集 for (j=0;j8;j+,k+) lcd_write_char(tuk); /数据 k+; lcd_write_char(tuk); /数据 ZHILINGJI_KUOZHAN;
9、/扩充指令集 else for (i=0;i32;i+) lcd_write_zhiling(0x80+i);/y地址 lcd_write_zhiling(0x88);/x地址 ZHILINGJI_JIBEN;/基本指令集 for (j=0;j8;j+,k+) lcd_write_char(tuk); /数据 k+; lcd_write_char(tuk); /数据 ZHILINGJI_KUOZHAN;/扩充指令集 HUITU_ON;/开显示 void chushihua_12864() PORT_SHUJU=0; DDR_SHUJU=0xff; PORT_KZ|=BIT(4); DDR_KZ
10、=0xff; RESET; ZHILINGJI_JIBEN; /基本指令集 lcd_write_zhiling(0x08); /显示关 lcd_write_zhiling(0x01); /清显示 lcd_write_zhiling(0x02); /地址归位 lcd_write_zhiling(0x10); /设置游标 lcd_write_zhiling(0x0c); /开显示 huitu_qingping();void tuxiang_1() uchar tu513= 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0
11、0,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20
12、,0x0E,0x0E,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x11,0x11,0x10,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0xB0,0xA1,0x88,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x01,0x62,0x19,0x10,0x41,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x04,0x07,0x08,0x08,0x02,0x01,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x15,0x40,0x40,0x04,0x04,0x00,0x80,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x41,0x11,0x02,0x08,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xD0,0
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1