单片机 > 单片机程序设计 > 详情

Atmega16的12864液晶使用

发布时间:2020-08-24 发布时间:
|
#include

#include
#include"12864.h"
#define BIT(bit) (1< uchar L[]="L 我想你了";
uchar L7[]="Miss You Much";
void display()//显示函数
{
 set_position(0,0);
 show_string(L);//显示字符串
 set_position(1,0);
 show_string(L7);//显示字符串
 set_position(2,0);
 show_string("L I Miss You");
 set_position(3,0);
 show_string("很想你");
}

void Bee()
{
 uchar i,j;
 for(j=0;j<3;j++)
 {
  for(i=0;i<100;i++)
  {
   PORTB^=BIT(PB0);
   _delay_ms(3);
  }
 }
}
void init()//初始化函数
{
 DDRC=0xff;//全部设置为输出
 DDRA|=(1<<7)|(1<<6)|(1<<5);//设置PA口的第6位(12864的rs控制脚)和第7位(12864的en控制脚)为输出
 DDRB|=BIT(PB0);//设置PB0口为输出,控制蜂鸣器和LED
 PORTB&=~BIT(PB0);//PB0口输出0,关闭蜂鸣器和LED
 init_12864();//12864液晶初始化 
}
int main()
{
 init();
 display();
 Bee();
 while(1);
}

//12864液晶显示头文件

#define uchar unsigned char
#define uint unsigned int
//PA口的第5位(12864的并/串接口选择控制脚)
#define PSB PORTA |= (1 << 5)//第5位输出高电平 并口方式
//PA口的第6位(12864的rs控制脚)和第7位(12864的en控制脚)
//数据命令端
#define lcdrs_L PORTA &= ~(1 << 6)//第6位输出低电平  命令
#define lcdrs_H PORTA |= (1 << 6)//第6位输出高电平  数据
//使能端
#define lcden_L PORTA &= ~(1 << 7)//第7位输出低电平  关使能
#define lcden_H PORTA |= (1 << 7)//第7位输出高电平 开使能
void write_com(uchar com)//写命令函数
{
 lcdrs_L;
 PORTC=com;
 _delay_ms(5);
 lcden_H;
 _delay_ms(5);
 lcden_L;
}
void write_date(uchar date)//写数据函数
{
 lcdrs_H;
 PORTC=date;
 _delay_ms(5);
 lcden_H;
 _delay_ms(5);
 lcden_L;
}
void init_12864()//12864液晶初始化函数
{
 PSB;//并口方式
 lcden_L;//先关使能
 write_com(0x30);//基本指令集 扩充指令集为0x34
 _delay_ms(5);
 write_com(0x01);//清屏
 _delay_ms(5);
 write_com(0x0c);//开显示,不显示光标,光标不闪烁
 _delay_ms(5);
 write_com(0x02);//把地址计数器清零,把光标放回原点
 _delay_ms(5);
 write_com(0x80);//从该地址开始显示 从原点开始显示
 _delay_ms(5);
 //write_com(0x18);执行一次,整屏左移一次
 //write_com(0x1c);执行一次,整屏右移一次

}
void set_position(uchar x, uchar y)
{
 uchar position=0;
 switch(x%4)
  {
  case 0: position=0x80;break; //第一行开始地址
  case 1: position=0x90;break; //第二行
  case 2: position=0x88;break; //第三行
  case 3: position=0x98;break; //第四行
  }
 position+=y;//要显示的坐标
 write_com(position);
}
void show_string(uchar *string)//显示字符串函数
{
 while(*string)
 {
  write_date(*string++);
 }
}



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
PIC单片机基础知识之二