Atmega16的12864液晶使用

发布者:梦想启航最新更新时间:2016-10-24 来源: eefocus关键字:Atmega16  12864液晶 手机看文章 扫描二维码
随时随地手机看文章
#include

#include
#include"12864.h"
#define BIT(bit) (1<<(bit))
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++);
 }
}

关键字:Atmega16  12864液晶 引用地址:Atmega16的12864液晶使用

上一篇:Atmega16的串口通信使用
下一篇:Atmega16的1602液晶使用

推荐阅读最新更新时间:2024-03-16 15:17

ATmega16的lcd12864显示程序及proteus仿真工程文件
#include iom16v.h #include macros.h #include 12864.h #include main.h void port_init(void) { DDRC=0xFF; //12864数据口,置为输出 PORTC=0xFF; en_out; //置EN输出 rw_out; //置rw输出 rs_out; //置rs输出 cs1_out;//置cs1输出 cs2_out;//置cs2输出 } /*** ******12864写命令函数 ***/ void lcd_write_com(uchar com) { rw_clr;
[单片机]
<font color='red'>ATmega16</font>的lcd<font color='red'>12864</font>显示程序及proteus仿真工程文件
QC12864液晶屏串行时序驱动程序解
串行时序不能读操作的情况下可绘制任意函数曲线 //程序格式粗糙,无暇整理,若参考有疑问请留言 完整的源代码下载:http://www.51hei.com/f/12864c5.rar //12864串行时序的实现 ///**************************************/ #include reg51.h #include intrins.h #include math.h /**************************************/ #define uchar unsigned char #define uint unsigned int #define cle
[单片机]
QC<font color='red'>12864</font><font color='red'>液晶</font>屏串行时序驱动程序解
基于ATmega16单片机控制液晶显示屏的程序设计
在掌握了对LCD的控制显示之后,我们需要将LCD综合入密码保管箱,使之成为一个独立工作的系统。 在本期配刊光盘中有上一期用ATmega16控制液晶显示屏的源程序,将其中的ICd.c和lod.H拷贝到第7期例程psmanager的目录里,并用ICCAVR打开工程psrnanager,然后分别将Icd.c和Icd.h加入工程,如下图所示。 在Icd.c中去掉以下代码: /*时钟为8MHz*/ void delay_1us(void) { asm(“nod”); } void delay_us(unsigned int itimes) { unsigned int itemp; for(itemp=0;itemp { delay_1
[单片机]
基于<font color='red'>ATmega16</font>单片机控制<font color='red'>液晶</font>显示屏的程序设计
基于ATmega16的无线传感网络节点设计
1 引言、  无线传感网络广泛应用于军事侦察、环境监测、目标定位等领域。一般来说,无线传感网络节点的设计要求具有功耗低、成本低、寿命长等特点。本文以ATMEGA16 AVR单片机为核心元件,以常见的315射频模块作为无线收发模块设计了一种无线传感网络节点。该系统充分利用了ATMEGA16单片机丰富的片上资源和315模块较好的抗干扰特性,并可在达到设计要求的前提下,有效地降低硬件成本,具有较高的实用价值。 2 无线传感网络节点系统结构 无线传感网络节点通常由4个子系统构成。 2.1 计算子系统   计算子系统通常是由一个微处理器和相应的通信协议、数据采集等程序组成。为了降低节点的功耗,要求微处理器以一种突发式的发送方案将采集
[工业控制]
B001-Atmega16-16位寄存器的读写步骤
临时寄存器TEMP 8位总线一次只能读写取8位数据,所以读写16位寄存器时、使用8位的临时寄存器TEMP来保存另一半的8位数据。 一个定时器只有1个临时寄存器TEMP,所以读写其他16位寄存器时,临时寄存器TEMP将被修改成当前的16位寄存器的高字节或低字节。 所以读取16位寄存器的过程中需要禁止中断,避免中断处理过程中有读写其他16位寄存器的操作, 这会修改临时寄存器TEMP的当前值,导致中断返回后临时寄存器TEMP已被修改。 读写低字节、将触发16位的读写。 -- 为了简化问题,在中断中不要读写16位寄存器 读16位定时器的步骤: in r18,SREG ; 保存全局中断标志 cli
[单片机]
B001-Atmega16-16位寄存器的读写步骤
理工男的浪漫,12864液晶表白
#include reg51.h #include intrins.h #include stdlib.h #define uchar unsigned char #define uint unsigned int /*端口定义*/ #define data P0 sbit rw=P2^5; sbit rs=P2^6; sbit en=P2^7; sbit psb=P3^7; uchar dis1 ={ 520 1314 }; uchar dis2 ={ 孙家欣 }; uchar dis3 ={ I LOVE YOU }; uchar dis4 ={ --齐秋阳 }; void delayms(uint xms) { u
[单片机]
基于nRF905的智能道路照明节能系统
目前,国内大部分城市的道路照明管理系统至今仍在沿用相对单一的光控、时控等传统控制方式。这些系统普遍存在着难以反馈路灯运行状态信息、难以进行远程控制等局限,节电效果不理想。另外我国大部分城市路灯采用“全夜灯”的方式进行照明,普遍存在的问题有两点:一方面,后半夜行人稀少,采用“全夜灯”的方式浪费太大,因此,有的地方采取前半夜全亮,后半夜全灭的“半夜灯”照明方式;有的地方在后半夜采取“亮一隔一”或“亮一隔二”的节电措施,此种方式虽然节约了电费支出,却带来了社会治安和交通安全问题,不利于城市形象。 1 系统方案概述 该系统由照明区域控制器与智能节点组成,照明区域控制器负责所辖路段的智能化照明控制,而智能节点负责单个路灯的控制和状
[单片机]
基于nRF905的智能道路照明节能系统
ATmega16 引脚功能
[单片机]
<font color='red'>ATmega16</font> 引脚功能
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved