📄 main.c
字号:
#include "ATmega16.h"
#include "iom16.h"
//#define DAT_PORT P2
//sbit LCD_EP=P1^3;
//sbit LCD_RW = P1^4;
//sbit LCD_A0=P1^0;
//sbit LCD_CS = P1^1;
//sbit LCD_RS=P1^5; //如果您认为有必要在程序里控制LCD的复位,就定义它吧~呵呵
void TimeDelay(int Time)
{
int i;
while(Time > 0)
{
for(i = 0;i < 800;i++)
{
}
Time --;
}
}
void LCD_DataWrite(unsigned char Dat)//
{
PORTD_Bit0 = 1;
// _nop_();
PORTD_Bit1 = 0;
// _nop_();
PORTD_Bit2 = 0;
PORTD_Bit3 = 0;
// _nop_();
PORTA = Dat;
// _nop_();
PORTD_Bit2 = 1;
// _nop_();
PORTD_Bit3 = 1;
// _nop_();
// LCD_RW = 1;
}
void LCD_RegWrite(unsigned char Command)
{
// *COM_W_ADDR = Command;
PORTD_Bit0 = 0;
// _nop_();
PORTD_Bit1 = 0;
// _nop_();
PORTD_Bit2 = 0;
PORTD_Bit3 = 0;
PORTA = Command;
// _nop_();
PORTD_Bit2 = 1;
// _nop_();
PORTD_Bit3 = 1;
// _nop_();
PORTD_Bit0 = 1;
// _nop_();
// LCD_RW = 1;
}
void LCD_Fill(void)
{
unsigned char i,j;
unsigned char uiTemp;
uiTemp = 0x40;
uiTemp = uiTemp>>3;
for(i=0;i<=uiTemp;i++) //往LCD中填充初始化的显示数据
{
LCD_RegWrite(0xb0+i);
LCD_RegWrite(0x00);
LCD_RegWrite(0x10);
for(j=0;j<=0x80;j++)
{
LCD_DataWrite(0xFF);
}
}
}
void LCD_Init(void)
{
TimeDelay(200);
PORTD_Bit6 = 0;
TimeDelay(200);
PORTD_Bit6 = 1;
TimeDelay(20);
LCD_RegWrite(0xaf); //LCD On
LCD_RegWrite(0x2f); //设置上电控制模式
LCD_RegWrite(0x81); //电量设置模式(显示亮度)
LCD_RegWrite(0x27); //指令数据0x0000~0x003f
LCD_RegWrite(0xa2);
LCD_RegWrite(0xc8); //Com 扫描方式设置
LCD_RegWrite(0xa0); //Segment方向选择
LCD_RegWrite(0xa4); //全屏点亮/变暗指令
LCD_RegWrite(0xa6); //正向反向显示控制指令
LCD_RegWrite(0xac); //关闭静态指示器
LCD_RegWrite(0x00); //指令数据
LCD_RegWrite(0x40); //设置显示起始行对应RAM
}
void main(void)
{
DDRA=0XFF;
DDRD=0XFF;
LCD_Init(); //LCD初始化,该函数在LCD_Driver_User.c中定义
LCD_Fill();
LCD_RegWrite(0xb1);
LCD_RegWrite(0x02);
LCD_RegWrite(0x13);
LCD_RegWrite(0xe0);
LCD_DataWrite(0xff);
LCD_RegWrite(0xee);
while(1)
{
;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -