找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1576|回复: 0
打印 上一主题 下一主题
收起左侧

AVR驱动COG液晶代码

[复制链接]
跳转到指定楼层
楼主
ID:322688 发表于 2018-5-5 12:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <iom64v.h>
#include <macros.h>
/*********************************************************************************************************/
#include "lcd.h"
#include "key.h"
#include "uart.h"
/*********************************************************************************************************/
#pragma data:data
/*********************************************************************************************************/
extern float   todao[4];
extern unsigned char wd_shang;
extern unsigned char wd_xia;
extern unsigned char sd_shang;
extern unsigned char sd_xia;
extern unsigned char pf_shang;
extern unsigned char pf_xia;
extern unsigned char Body_Flag;
extern unsigned char rt_gy;
extern unsigned char db_du;
extern unsigned char mima;
extern unsigned char InIt_Para[];
/*********************************************************************************************************/
/**********************************************************************************************************
** 函数名称:delay_nms()
** 函数功能:delay_nms:nms延时函数
** 入口参数:      
** 出口参数:
** 说    明:
*********************************************************************************************************/
void delay_nms(unsigned int ms)
{  
     unsigned int i;
         unsigned int j;
         for (i=0;i<ms;i++)
          {
                   for(j=0;j<0x500;j++) ;
          }
}
/**********************************************************************************************************
** 函数名称:delay()
** 函数功能:186us
** 入口参数:      
** 出口参数:
** 说    明:
*********************************************************************************************************/
void delay(unsigned int n)
{
        unsigned int i;
        for(i=0;i<=n;i++);

}

/**********************************************************************************************************
** 函数名称: wcomd(unsigned char cdat)
** 函数功能: lcd写命令
** 入口参数: cdat:命令字     
** 出口参数: 无
** 说    明:
*********************************************************************************************************/
void wcomd(unsigned char cdat)   
{   
          LCD_CS_OUT0;                                    //CS低电平被激活
          LCD_RS_OUT0;                                    //RS=0写的是命令
          LCD_RW_OUT0;                                    //上升沿数据被锁存
          LCD_ERW_OUT1;                                    //ERW=0低电瓶读状态,ERW=1写
      PORTA = cdat;
          delay(10);
          LCD_RW_OUT1;                                    //上升沿数据被锁存
                LCD_ERW_OUT0;                                    //ERW=0低电瓶读状态,ERW=1写
    LCD_CS_OUT1;
}   
/**********************************************************************************************************
** 函数名称: wdata(unsigned char cdat)
** 函数功能: lcd显示数据
** 入口参数: cdat:命令字     
** 出口参数: 无
** 说    明:写的是显示数据
*********************************************************************************************************/
void wdata(unsigned char ddat)   
{   
    LCD_CS_OUT0;                                       //CS低电平被激活
    LCD_RS_OUT1;                                       //RS=1写的是显示数据
    LCD_RW_OUT0;                                       //上升沿数据被锁存
        LCD_ERW_OUT1;                                       //ERW=0低电瓶读状态,ERW=1写
    PORTA = ddat;
                delay(10);
                LCD_RW_OUT1;                                    //上升沿数据被锁存
                LCD_ERW_OUT0;                                    //ERW=0低电瓶读状态,ERW=1写
                LCD_CS_OUT1;
}  


/**********************************************************************************************************
** 函数名称: LCD_CLS()
** 函数功能: LCD清屏
** 入口参数: 无
** 出口参数: 无
** 说    明:
*********************************************************************************************************/
void LCD_CLS(void)   
{   
  unsigned int i,j;   
  for(j=0;j<16;j++)   
  {   
    wcomd(j|0xb0);                  /*Set Page Address*/   
    wcomd(0x10);                    /*Set Column Address   MSI*/   
    wcomd(0x00);                    /*Set Column Address   LSI*/   
    for(i=0;i<128;i++)   
    {   
      wdata(0x00);  
    }   
  }   
}   
/**********************************************************************************************************
** 函数名称:Lcd_Init()
** 函数功能:lcd对比度调整及lcd初始化
** 入口参数:      
** 出口参数:无
** 说    明:
*********************************************************************************************************/

void Lcd_Init(void)
{
        LCD_RS_OUT1;
        LCD_CS_OUT1;
               
    LCD_RST_OUT0;
    delay_nms(1);
    LCD_RST_OUT1;
    delay_nms(1);
//******************************************************************
    wcomd(0x48);      //* duty 占空比设置*   
    wcomd(128);        //* duty 一次更新96行 占空比1/96 *   

    wcomd(0xa0);      //* 左右反转 ADC=1: SEG reverse direction         SEGMENT方向设置: 7FH 到 00H 为正向  map or Re-map   
    wcomd(0xc8);      //* 上下反转SHL=0: COM normal direction COM输出方向设置: COM0 →COM127 为?   

    wcomd(0x44);      //* com0 register 设置COM0显示的起始行*   
    wcomd(0x00);      //* com0 register PAGE2 为COM0起始显示行*   

    wcomd(0x40);      //set start line
    wcomd(0x00);      //* com0 register PAGE2 为COM0起始显示行*   
//******************************************************************
    wcomd(0xab);      //* oscilator start 晶振开始 *   
    wcomd(0x66);      //* Set 6 dc-dc step-up   DC到 DC变换6倍升压 62*   
    wcomd(0x24);      //* Internal Regulator Resistor Ratio 内部调压电阻比率*   

    wcomd(0x81);      //* Set white mode and 1st/2nd frame   
    wcomd(0x20);      //* gray scal register1   

    wcomd(0x53);          //清晰度53  
//******************************************************************  
    wcomd(0x94);      //  3FRC,9PWM; 0x94  //  

    wcomd(0x88);      //* Set white mode and 1st/2nd frame *   
    wcomd(0x00);      //* gray scal register1 *  
    wcomd(0x89);      //* Set White Mode, Frame 4th, Frame 3rd *   
    wcomd(0x00);      //* gray scal register1 *   

    wcomd(0x8a);      //* Set Dark Mode, Frame 4th & Frame 3rd *   
    wcomd(0x00);      //* gray scal register1 *   
    wcomd(0x8b);      //* Set Dark Mode, Frame 4th & Frame 3rd *   
    wcomd(0x00);      //* gray scal register1 *   

    wcomd(0x8c);      //* Set Dark Mode, Frame 4th & Frame 3rd *   
    wcomd(0x99);      //* gray scal register1 *  
    wcomd(0x8d);      //* Set Dark Mode, Frame 4th & Frame 3rd *   
    wcomd(0x99);      //* gray scal register1 *

    wcomd(0x8e);      //* Set Dark Mode, Frame 4th & Frame 3rd *  
    wcomd(0x99);      //* gray scal register1 *  
        wcomd(0x8f);      //* Set Dark Mode, Frame 4th & Frame 3rd *  
    wcomd(0x09);      //* gray scal register1 *  

    wcomd(0x2c);      //* Set-power VC *   
    delay_nms(10);   
    wcomd(0x2e);      //* Set-power VC VR *   
    delay_nms(10);   
    wcomd(0x2f);      //* Set-power VC VR VF *   
    delay_nms(10);   
    wcomd(0xaf);     //open display

    LCD_CLS();   
}


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表