12864液晶(AVR_Mega128)的头文件

发布者:电子创新者最新更新时间:2015-10-26 来源: eefocus关键字:12864液晶  AVR  Mega128  头文件 手机看文章 扫描二维码
随时随地手机看文章
大家使用时把这段代码保存成.h的头文件,在主程序中包含这个头文件就行
 
根据你们液晶电路更改下面的端口宏定义即可
 
 
 
//CPU:ATmega128;  时钟频率为16MHz
//编译环境为ICCAVR
//头文件
#include
#include
#include
 
//数据端口定义
#define Dat_Port_Write PORTA
#define Dat_Port_Read PINA
 
//控制端口及相应的位
#define RS_RW_EN_Control PORTG
#define LCM_RS 0
#define LCM_RW 1
#define LCM_EN 2
 
#define uchar unsigned char
#define uint unsigned int
 
 
//延时函数
void Delay_Ms(unsigned int ms)
{
 for(;ms>1;ms--);
 
 
//写数据
void Write_Data_LCM(unsigned char WDLCM)
{
 Read_Status_LCM(); //检测忙
 Delay_Ms(100);
 RS_RW_EN_Control|=BIT(LCM_RS);       //RS=1   
 Delay_Ms(100);
 RS_RW_EN_Control&=~BIT(LCM_RW);      //RW=0
 Delay_Ms(100);
 RS_RW_EN_Control|=BIT(LCM_EN);       //EN=1
 Delay_Ms(100);
 Dat_Port_Write=WDLCM;     //输出数据
 Delay_Ms(100);
 RS_RW_EN_Control&=~BIT(LCM_EN);      //EN=0
 Delay_Ms(100);
}
 
//写指令
void Write_Command_LCM(unsigned char WCLCM)
{
 Read_Status_LCM(); //根据需要检测忙
 Delay_Ms(100);
 RS_RW_EN_Control&=~BIT(LCM_RS);      //RS=0
 Delay_Ms(100);
 RS_RW_EN_Control&=~BIT(LCM_RW);      //RW=0
 Delay_Ms(100);
 RS_RW_EN_Control|=BIT(LCM_EN);       //EN=1
 Delay_Ms(100);
 Dat_Port_Write=WCLCM;     //输出指令
 Delay_Ms(100);
 RS_RW_EN_Control&=~BIT(LCM_EN);      //EN=0
 Delay_Ms(100);
}
 
//读状态:检测忙
void Read_Status_LCM(void)
{
 uchar temp;
    uchar flag = 1;
    while(flag==1)
 {
     DDRA=0x00;      //端口A改为输入
  Dat_Port_Write = 0xff;   
  Delay_Ms(100);
  RS_RW_EN_Control&=~BIT(LCM_RS);     //RS=0
  Delay_Ms(100);
  RS_RW_EN_Control|=BIT(LCM_RW);      //RW=1
  Delay_Ms(100);
  RS_RW_EN_Control|=BIT(LCM_EN);      //EN=1
  Delay_Ms(100);
  temp = Dat_Port_Read;    //读端口A
  Delay_Ms(100);
  DDRA=0xff;      //端口A改为
  Delay_Ms(100);
  RS_RW_EN_Control&=~BIT(LCM_EN);     //EN=0
  Delay_Ms(100);
  if(temp>>7==0)
  flag = 0;
 }
}
 
//LCM初始化
void LCM_Init(void)
{
 Write_Command_LCM(0x38);    //三次显示模式设置,不检测忙信号
 Delay_Ms(1000);
 Write_Command_LCM(0x38);
 Delay_Ms(1000);
 Write_Command_LCM(0x38);
 Delay_Ms(1000);
 Write_Command_LCM(0x38);    //显示模式设置,开始要求每次检测忙信号
 Write_Command_LCM(0x08);    //关闭显示
 Write_Command_LCM(0x01);    //显示清屏
 Write_Command_LCM(0x06);    //显示光标移动设置
 Write_Command_LCM(0x0C);    //显示开及光标设置
}
 
 /
 
关键字:12864液晶  AVR  Mega128  头文件 引用地址:12864液晶(AVR_Mega128)的头文件

上一篇:AVR单片机的TC0定时溢出例程
下一篇:单片机的卷取机张力控制系统分析

推荐阅读最新更新时间:2024-03-16 14:37

CEPARK AVR单片机 之HC595驱动数码管显示
这里我用的CEPARK 的M64 AVR开发板,这一课的重点是学会如何使用74HC595来驱动数码管。 74HC595是具有8位移位寄存器和一个存储器,三态输出功能。移位寄存器和存储器是分别的时钟。数据在SHcp的上升沿输入,在STcp的上升沿进入的存储寄存器中去。如果两个时钟连在一起,则移位寄存器总是比存储寄存器早一个脉冲。移位寄存器有一个串行移位输入(Ds),和一个串行输出(Q7 ),和一个异步的低电平复位,存储寄存器有一个并行8位的,具备三态的总线输出,当使能 OE时(为低电平),存储寄存器的数据输出到总线。 引脚说明: QA--QH: 八位并行输出端,可以直接控制数码管的8个段。 QH': 级联输出端。我将它接下
[单片机]
AVR单片机C语言程序设计中的位操作
在标准C语言的的教材中,对于位运算的操作是基本不涉及的,但是在单片机系统的程序中,需要经常操作各类以字节为单位的寄存器,而这些寄存器通常都是以二进制中的位为控制单位的数据组合。往往一个8位寄存器中的每一位都有各自的控制对象,例如端口B的方向寄存器DDRB,如下图所示 它实际上控制着PB口的8个端口PB0-PB7的方向,也就是说它的每一位都控制一个端口的方向,如果我们要把端口PB0-PB3设置为输出口,而把PB4-PB7设置为输入口,在不用位运算符的情况下,我们可以直接使用赋值语句DDRB=0x0f来实现,这样是完全可以实现的。 但是如果出现下面的情况:在程序中PB口的8位端口的状态本来是1、3、5、7为输入。0、2
[单片机]
AVR单片机的熔丝应该如何设置
初学者对熔丝经常不解,AVR芯片使用熔丝来设定时钟、启动时间、一些功能的使能、BOOT区设定、当然还有最让初学者头疼的保密位,设不好锁了芯片很麻烦。要想使MCU功耗最小也要了解一些位的设定。 1:未编程 0:编程 1、BOD(Brown-out Detection) 掉电检测电路 BODLEVEL(BOD电平选择): 1: 2.7V电平; 0:4.0V电平 BODEN(BOD功能控制): 1:BOD功能禁止;0:BOD功能允许 使用方法:如果BODEN使能(复选框选中)启动掉电检测,则检测电平由BODLEVEL决定。一旦VCC下降到触发电平(2.7v或4.0v)以下,MCU复位;当VCC电平大于触发电平后,经过tTOUT 延时
[单片机]
<font color='red'>AVR</font>单片机的熔丝应该如何设置
C51单片机头文件和启动文件
STARTUP.A51//启动文件. 清理RAM.设置堆栈等.即执行完start.a51后跳转到.c文件的main函数 reg51.h //特殊寄存器的字节地址和位地址,sfr定义字节变量、sbit定义位变量,用通俗名作为变量名,并赋地址值,从而用名称来使用这些特殊寄存器。 intrins.h //定义了一些外部函数,在 C51 单片机编程中,头文件INTRINS.H的函数使用起来,就会让你像在用 汇编 时一样简便. /*-- REG51.H Header file for generic 80C51 and 80C31 microcontroller. Copyright (c) 1988-2002 Keil Ele
[单片机]
AVR单片机的T0使用
本文介绍ATmega 16 单片机的T0使用 M16中的T0是8位定时器/计数器 以下内容摘至ATmega 16 Datasheet 注意,使用前要将OC0设置输出,上拉电阻 使用CTC方式产生38K方波。红外常用的 void timer0_init(void) //CTC模式输出38KHz方波,用于红外检测 { OCR0 = 11; //设定TOP值 //TOP=7372800/(2*8*38000)-1=11 选11 38.397KHz(13uS) TCCR0 = (1 WGM01)|(0 WGM00)|(0 COM01)|(1 COM00)|(0 CS02)|(1 CS01)|(0 CS00); //
[单片机]
<font color='red'>AVR</font>单片机的T0使用
单片机的比较(avr 8051 stc 等)
1、AVR 单片机 与8051的比较: 主要区别是内核不同,指令集不同,io结构不同,外设不同。 优点是速度快,IO强大,性价比高。 AVR单片机比8051的硬件资源多得多,AVR单片中的MEGA系列内部还有AD转换器,在一些简单的电路中 ,有了AVR单片机就甚至是零外部元件了,使用非常方便,是主流的单片机,而价格又不贵! 2、STC是改进型51。内部的EEPROM, 对于参数的保存还是很方便的,EMC性能也要好一点,价格也相对便宜 PIC是自己的结构,MICROCHIP开发 AVR是自己的结构,ATMEL开发的 3、8051单片机 : 8051单片机最早由INTEL公司推出,其后,多家公司购买了8051的内核,使
[单片机]
基于AVR的PCB板雕刻机的设计
随着通信、计算机、消费电子等产业的飞速发展,印刷电路板(PCB)行业也在快速发展,并给电子制造装备提出越来越高的要求。在现代电子产品中,PCB成为电子产品的重要组成部分。在现代电子产品中,PCB成为电子产品的重要组成部分。 目前,电路板制作技术通常采用的是化学腐蚀制板工艺,并且这种制板技术仍在继续沿着大批量生产的方向发展。然而,并不是所有的产品、机构都需要这样的量产成果,他们需要的是小批量或者极小批量PCB制作能力,需要柔性的随需制作能力。所以,有必要对PCB板雕刻机进行研究。 鉴于此,本文设计了一款使用机械仿形铣制作电路板的方法,大大缩短了研发周期,提高了设计成功率。 1 系统的总体设计 根据对PCB板雕刻机的分析
[单片机]
基于<font color='red'>AVR</font>的PCB板雕刻机的设计
关于AVR单片机如何入门以及学习单片机的一些建议
学习单片机对于我来说是一个痛苦的过程因为第一次接触单片机是大一的时候,那时候还没有学习数字电路和模拟电路这两本基础课,所以第一次接触连高低电平都没看懂,我第一次想把那几个数码管驱动起来又不知道译码器,因为还没学74系列的器件,还记得大一第一个寒假我借来了很多书其实那会儿也不知道怎么学,图书馆单片机的书很多但让一个什么都没学的人去看那本比较好更本就是空话,我把AVR,51,PIC都借来了,那时也没想到在网上看教学视频,其实后来才知道很多东西网上资料非常丰富,那都是后来才发现的了,我真正学懂单片机是大二上学期,虽然我刚开始时从51开始学的但后来因为一些原因我学习了AVR所以说从入门到真正理解单片机我是从AVR开始的。
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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