?? 6963.c
字號(hào):
#include <stdio.h>
#include <init.c>
#include <ziku.c>
#include <zimu.c>
#include <hanzi2.c>
#include <zimu2.c>
#include <interface.c>
#define width 0x20 //顯示區(qū)寬度
#define addr_t 0x0000 //圖形顯示區(qū)首地址
#define addr_w 0x0000
#define uchar unsigned char
#define uint unsigned int
sbit CD =P3^0;//數(shù)據(jù)/指令
sbit RD =P3^1; //讀
sbit CE =P3^2;//使能
sbit WR =P3^3; //寫
sbit LCD_C= P2^4;////液晶背光管腳
void wr_comm (uchar comm);
void wr_data (uchar dat);
void chk_busy (uchar autowr);
//void _nop_(void);
//void delay_nop(void);
void xianshi(void);
void chk_busy (uchar autowr) //測(cè)狀態(tài)
{
uchar PPA;
CD=1; //C/D 1
RD=0; //RD 0
WR=1; //WR 1
// delay_nop();
PPA=P5;
// delay_nop();
RD=1;
// delay_nop();
if(autowr)
{
while(P5&0X08==0X00);
}
else
{
while((P5&0X01==0X00)|(P5&0X02==0X00));
}
}
void wr_comm(uchar comm) //寫命令
{
chk_busy (0);
CD=1; //RS 數(shù)據(jù)指令 P3^0
// delay_nop();
P5=comm;
WR=0; //WR
// delay_nop();
RD=1;
// delay_nop();
WR=1;
// delay_nop();
}
void wr_data(uchar dat) //寫數(shù)據(jù)
{
chk_busy (0);
CD=0; //C/D 數(shù)據(jù)指令
// delay_nop();
P5=dat;
WR=0;
// delay_nop();
RD=1;
// delay_nop();
WR=1;
// delay_nop();
}
/*------------寫命令或數(shù)據(jù)到LCD-一字節(jié)參數(shù)指令寫入函數(shù) -------------*/
void wr_od (uchar dat,uchar comm) //寫一個(gè)數(shù)據(jù)和一個(gè)命令
{
wr_data(dat);
wr_comm(comm);
}
void wr_td (uchar datl,uchar dath,uchar comm) //寫兩個(gè)數(shù)據(jù)和一個(gè)命令
{
wr_data(datl);
wr_data(dath);
wr_comm(comm);
}
void wr_xd(uint dat,uchar comm) //寫一個(gè)16進(jìn)制數(shù)據(jù)和一個(gè)命令
{
uchar datl,dath;
datl=dat;
dath=dat>>8;
wr_data(datl);
wr_data(dath);
wr_comm(comm);
}
void wr_auto (uchar dat) //自動(dòng)寫數(shù)據(jù)
{
chk_busy (1);
CD=0; //C/D
P5=dat;
WR=0; //WR
RD=1; ///RD
WR=1;
}
/*------------------初始化-----------------*/
void init_lcd (void)
{
CE=0;
wr_xd(addr_w,0x40); //文本顯示區(qū)首地址
wr_xd(addr_t,0x42); //圖形顯示區(qū)首地址
wr_td(width,0x00,0x41); //文本顯示區(qū)寬度
wr_td(width,0x00,0x43); //圖形顯示區(qū)寬度
wr_td(0x03,0x00,0x22); //CGRAM偏置地址設(shè)置
wr_comm(0x88); //邏輯"異或"
wr_comm(0x98); //啟用文本顯示,啟用圖形顯示
}
/*--------------清RAM------------------*/
void clrram (void)
{
uchar i,j;
wr_td(0x00,0x00,0x24); //設(shè)置顯示存儲(chǔ)器首地址
wr_comm(0xb0);
for(j=0;j<144;j++)
{
for(i=0;i<20;i++)
wr_auto(0x00);
}
wr_comm(0xb2);
}
void disp_c(unsigned int addr,unsigned int xl,unsigned int yl,unsigned char code1)
{
uint i,j;
const unsigned char *img;
img=&HZTable[code1][0];
for(j=0;j<yl;j++)
{
for(i=0;i<xl;i++)
{
wr_xd(addr+j*width+i,0x24);
wr_od(img[j*xl+i],0xc0);
}
}
}
void disp_c2(unsigned int addr,unsigned int xl,unsigned int yl,unsigned char code2)
{
uint i,j;
const unsigned char *img;
img=&HZTable2[code2][0];
for(j=0;j<yl;j++)
{
for(i=0;i<xl;i++)
{
wr_xd(addr+j*width+i,0x24);
wr_od(img[j*xl+i],0xc0);
}
}
}
void disp_e(unsigned int addr,unsigned int xl,unsigned int yl,unsigned char code3)
{
uint i,j;
const unsigned char *img;
img=&ZMTable[code3][0];
for(j=0;j<yl;j++)
{
for(i=0;i<xl;i++)
{
wr_xd(addr+j*width+i,0x24);
wr_od(img[j*xl+i],0xc0);
}
}
}
void disp_e2(unsigned int addr,unsigned int xl,unsigned int yl,unsigned char code4)
{
uint i,j;
const unsigned char *img;
img=&ZMTable2[code4][0];
for(j=0;j<yl;j++)
{
for(i=0;i<xl;i++)
{
wr_xd(addr+j*width+i,0x24);
wr_od(img[j*xl+i],0xc0);
}
}
}
/*void delay_nop()
{ _nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}*/
/*------------------演示程序--------------------*/
void main ()
{
WDTCN = 0xde; // 禁止看門狗定時(shí)器
WDTCN = 0xad;
SYSCLK_Init();
// delay_nop();
PORT_Init();
// delay_nop();
init_lcd();
// delay_nop();
clrram();
xianshi();
while (1) ;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -