#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();
}
|