?? main.c
字號(hào):
#include "reg51.h"
/*****************************************************************************
* 文件說(shuō)明
******************************************************************************
創(chuàng) 建 人:楊宏偉
修 改 人:楊宏偉
創(chuàng)建日期:2003-10-19
最后更新:2004-01-01
描 述:FOR 128DI0,EM65565,8080,并行
*****************************************************************************/
#define DELAY_TIME 1000 // 定義每幅顯示畫面切換的時(shí)間常數(shù),可根據(jù)需要更改
/*****************************************************************************
* 接口定義
******************************************************************************/
sbit CS1 = P3^5; // SELECT CHIP
sbit RES = P3^4;
sbit DC1 = P3^3;
sbit WR1 = P3^1; // 8080:/WR; 6800:R/W
sbit RD1 = P3^0; // 8080:/RD; 6800:E
sbit MI = P3^7; // SELECT 8080 OR 6800
/******************************************************************************
* 函數(shù)聲明及實(shí)現(xiàn)
*******************************************************************************/
void delay(unsigned int n)
{
unsigned int i,j;
for (i=0;i<n;i++)
for (j=0;j<350;j++)
{;}
}
void data_out(unsigned char i)
{
//8080 interface
CS1 = 0;
WR1 = 0;
DC1 = 1;
P1 = i;
WR1 = 1;
CS1 = 1;
}
void comm_out(unsigned char i)
{
//8080 interface
CS1 = 0;
DC1 =0;
WR1 = 0;
P1 = i;
WR1 = 1;
CS1 = 1;
}
void selectSeries(unsigned char i)
{
switch(i)
{
case 0:
MI = 0;//SELECT 8080
RD1 = 1;
WR1 = 1;
break;
case 1:
MI = 1; //SELECT 6800
RD1 = 0;
WR1 = 0;
break;
default:
;
}
}
void reset(void)
{
RES = 0;
delay(100);
RES = 1;
delay(100);
}
void ini_lcd(void)
{
comm_out(0xA0);// ADC select
comm_out(0xA6);// Sets the LCD display normal/reverse
comm_out(0xA2);// Sets the LCD drive voltage bias ratio 1/9
comm_out(0x2F);// Power control set
comm_out(0x24);// V0 Voltage Regulator Internal Resistor Ratio Set
comm_out(0x81);// Electronic volume mode set
comm_out(0x29);// 3F
comm_out(0xAF);// display on
}
void setPageAddress(unsigned char i)
{
comm_out(0xb0+i);
}
void setColAddress(unsigned char i)
{
if(i<=16)
{
comm_out(0x00+i);
comm_out(0x10);
}
else
{
comm_out(0x00+i%16);
comm_out(0x10+i/16);
}
}
void dispData(unsigned char s_page,e_page,s_col,e_col,unsigned char dispdata,unsigned char dly)
{
unsigned char i,j,page_num,col_num;
page_num = e_page - s_page+1;
col_num = e_col - s_col+1;
for (i=s_page;i<(s_page+page_num);i++ )
{
setPageAddress(i);
setColAddress(s_col);
for(j=0;j<col_num;j++)
{
data_out(dispdata);
delay(dly);
}
}
}
/*******************************************************************************
* 主程序
*******************************************************************************/
void main(void)
{
selectSeries(0); // 選擇8080時(shí)序
reset();
CS1 = 0; // 片選有效
ini_lcd();
while(1)
{
dispData(0,8,0,127,0xff,0); //全顯
delay(DELAY_TIME);
dispData(0,7,0,127,0xaa,0); //隔行
delay(DELAY_TIME);
dispData(0,8,0,127,0x00,0); //清屏
delay(DELAY_TIME);
}
}
/******************************************************************************
** 文件結(jié)束
*******************************************************************************/
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -