完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#include
#include #define uint unsigned int #define uchar unsigned char #define set_en PORTB|=BIT(0) #define clr_en PORTB&=~BIT(0) //使能端 #define set_rs PORTB|=BIT(1) #define clr_rs PORTB&=~BIT(1) //rs 数据命令选择P1^7 #define set_rw PORTB|=BIT(2) #define clr_rw PORTB&=~BIT(2) //rw 读写选择P1^6 #define PA PORTA #define PB PORTB uchar table[]=" gao su zi ji"; uchar table1[]=" Never give up"; uchar num; uchar table2[]={ 0xc0,0xf9,0xa4,0xb0, 0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83, 0xc6,0xa1,0x86,0x8e }; void delay() { uint i,j; for(i=110;i>0;i--) for(j=10;j>0;j--); } void write_com(uchar com) { clr_rs; delay(); PA=com; delay(); set_en; delay(); clr_en; delay(); } void write_data(uchar data) { set_rs; delay(); PA=data; delay(); set_en; delay(); clr_en; delay(); } void init() { DDRA=0; PA=0xFF; //数据输入端口 DDRB=0XFF; PB=0XFF; clr_en; delay(); clr_rw; delay(); write_com(0x38); delay(); write_com(0x0c); delay(); write_com(0x06); delay(); write_com(0x01); delay(); } void main() { init(); delay(); write_com(0x80); delay(); for(num=0;num<11;num++) { write_data(table[num]); delay(); } write_com(0x80+0x40); delay(); for(num=0;num<14;num++) { write_data(table1[num]); delay(); } while(1); } |
|
相关推荐
4 个讨论
|
|
/**********************HJ-2G V8.0 专业级AVR开发板例程************************ * 平台:HJ-2G V8 AVR开发板 +ICC7.22 +ATMETA16 * 名称:1602液晶最简单的驱动程式 * 公司:慧净电子科技有限公司 * 淘宝:http://shop37031453.taobao.com * 网站:www.hjmcu.com * 编写:慧净 * 日期:2008-8-08 * QQ : 121350852 398115088 * 晶振:12MHZ * 说明:免费开源,不提供源代码分析,有问题直接到慧净论坛交流 * 论坛:http://hjdz.5d6d.net ******************************************************************/ #include "iom16v.h" #include "macros.h" //定义IO口 #define RS PD4 #define WR PD5 #define EN PD6 #pragrma data:code unsigned char const Japan[]={0xd7,0xb2,0xb5,0xdd,0x00}; //ライオン #pragrma data:code unsigned char const Japan1[]={0xb4,0xdb,0xb4,0xdb,0x00};//エロエロ #pragrma data:code unsigned char const English[]="Raion-May'n"; //字符串 //PD4 RS (1-Data,0-Cmd) //PD5 WR (1-Read,0-Write) //PD6 EN //PB 1602_IO //延迟函数 void Delay() { unsigned int i=10000; while(i--); } //写数据函数 void LCD_Write_Data(unsigned char Data) { PORTD&=~BIT(EN); //EN=0; PORTD|=BIT(RS); //RS=1; PORTB=Data; //送数据 PORTD|=BIT(EN); //EN=1; Delay(); PORTD&=~BIT(EN); //EN=0; } //写命令函数 void LCD_Write_Cmd(unsigned char Cmd) { PORTD&=~BIT(EN); //EN-0; PORTD&=~BIT(RS); //RS=0; PORTB=Cmd; //送命令 PORTD|=BIT(EN); //EN=1; Delay(); PORTD&=~BIT(EN); //EN=0; } //IO初始化湖南书 void LCD_IO_Init() { DDRD|=BIT(RS)|BIT(WR)|BIT(EN); //PD4~PD6位输出 DDRB=0xff; //PB口为输出 PORTD&=~BIT(WR); //WR=0; } //主函数 void main() { int i; LCD_IO_Init(); //调用IO口初始化函数 LCD_Write_Cmd(0x38); //Initial 1602 LCD_Write_Cmd(0x0c); //bit3(1),bit2(1)开显示,bit1(1)显示光标,bit0(1)光标闪耀 LCD_Write_Cmd(0x06); //写一个字节后指针地址自动+1 LCD_Write_Cmd(0x80); //地址指针指向第一行第一列 LCD_Write_Cmd(0x80+2); //第一行从第二列开始 for(i=0;English!=' |