?? tzqno.c
字號:
#include<stdio.h>
#include <reg52.h>
#include <math.h>
#include <absacc.h>
#include <string.h> //頭文件
/*lcd函數(shù)聲明*/
PR1();
PR11();
PR12();
void ST01(void);
void ST2(void);
void ST3(void);
INT_1();
CCW2_PR();
void DRAW();
W_DOT();
NOP();
//中斷定義函數(shù)聲明
//void initial(void);
//顯示畫面函數(shù)定義
display1();
display2();
display4();
display5();
display6();
display7();
void display();
/* lcd 地址定義 */
sbit cd=P1^7; //定義液晶指令數(shù)據(jù)通道C/D
sbit wr=P3^6; //定義wr
sbit rd=P3^7; //定義rd
sbit yjcs=P2^7; //定義lcd 的cs
/* 常數(shù)定義 */
#define para1 0x10; //顯示寬度16個
unsigned char bei_data=6;
/*宏定義*/
unsigned char lcd_step=1; //讀ram時的讀數(shù)間隔
/*標(biāo)志位*/
char flag,flag1;
/*參數(shù)聲明*/
bit a;
long int ram_wr=0;
unsigned int O_X,O_Y, com,dat1,dat2,adc_sum;//com為液晶屏的指令代碼,dat2顯示文本垂直位置
unsigned char code_1,attr,wave_count=0,adc_t,lb_date,adc_date,keyvalue;
unsigned char xdata RAM[5120]_at_ 0xc400; //外部存儲器,注意必須為0XCxxx,跟P2口有關(guān)
unsigned int timecount;
/******************************/
code unsigned char CCTAB[5][32]={
/*-- 文字: 歡 --*/
/*-- 宋體12; 此字體下對應(yīng)的點(diǎn)陣為:寬x高=16x16 --*/
0x00,0x80,0x00,0x80,0xFC,0x80,0x05,0xFE,0x85,0x04,0x4A,0x48,0x28,0x40,0x10,0x40,
0x18,0x40,0x18,0x60,0x24,0xA0,0x24,0x90,0x41,0x18,0x86,0x0E,0x38,0x04,0x00,0x00,
/*-- 文字: 迎 --*/
/*-- 宋體12; 此字體下對應(yīng)的點(diǎn)陣為:寬x高=16x16 --*/
0x40,0x00,0x21,0x80,0x36,0x7C,0x24,0x44,0x04,0x44,0x04,0x44,0xE4,0x44,0x24,0x44,
0x25,0x44,0x26,0x54,0x24,0x48,0x20,0x40,0x20,0x40,0x50,0x00,0x8F,0xFE,0x00,0x00,
/*-- 文字: 使 --*/
/*-- 宋體12; 此字體下對應(yīng)的點(diǎn)陣為:寬x高=16x16 --*/
0x08,0x40,0x0C,0x40,0x1B,0xFE,0x10,0x40,0x37,0xFC,0x64,0x44,0xA4,0x44,0x27,0xFC,
0x24,0x44,0x22,0x40,0x21,0x80,0x20,0x80,0x21,0x70,0x22,0x1E,0x2C,0x04,0x00,0x00,
/*-- 文字: 用 --*/
/*-- 宋體12; 此字體下對應(yīng)的點(diǎn)陣為:寬x高=16x16 --*/
0x00,0x00,0x1F,0xFC,0x10,0x84,0x10,0x84,0x10,0x84,0x1F,0xFC,0x10,0x84,0x10,0x84,
0x10,0x84,0x1F,0xFC,0x10,0x84,0x10,0x84,0x20,0x84,0x20,0x84,0x40,0x94,0x80,0x88,
/*-- 文字: ! --*/
/*-- 宋體12; 此字體下對應(yīng)的點(diǎn)陣為:寬x高=16x16 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,
0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x00,0x00,0x10,0x00,0x00,0x00,
};
code unsigned char DTAB[11]={ 0x25,0x2e,0x34,0x25,0x32,0x00,0x00,0x00,0x25,0x33,0x23};
code unsigned char DTAB1[32]={ 0x33,0x25,0x2c,0x25,0x23,0x34,0x00,0x00,0x30,0x29,0x23,0x34,0x35,0x32,0x25,0x00,
0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x41,0x42,0x43,0x44,0x45,0x46};
code unsigned char DTAB2[15]={0x33,0x25,0x2c,0x25,0x23,0x34,0x00,0x2f,0x34,0x28,
0x25,0x32,0x33,0x1f};
code unsigned char DTAB3[32]={0x33,0x21,0x36,0x25,0x00,0x27,0x32,0x21,0x30,0x28,0x29,0x23,0x33,0x00,0x00,0x00,
0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x41,0x42,0x43,0x44,0x45,0x46};
/*------------------------------------------------
The main C function. Program execution starts
here after stack initialization.
------------------------------------------------*/
main()
{ unsigned int i=0;
yjcs=0;
INT_1(); /* 屏幕初始化函數(shù) */
display1(); //顯示開機(jī)畫面
NOP();
}
/**************************/
/* 屏幕初始化函數(shù) */
/**************************/
INT_1()
{
dat1=0x00; /*設(shè)文本顯示區(qū)域首地址*/
dat2=0x00;
com=0x40;
PR1();
dat1=para1; /*設(shè)文本顯示區(qū)域?qū)挾?/
dat2=0x00;
com=0x41;
PR1();
dat1=0x00; /*設(shè)圖形顯示區(qū)域首地址*/
dat2=0x08;
com=0x42;
PR1();
dat1=para1; /*設(shè)圖形顯示區(qū)域?qū)挾?/
dat2=0x00;
com=0x43;
PR1();
com=0xa3; /*光標(biāo)形狀設(shè)置*/
PR12();
com=0x80; /*顯示方式設(shè)置邏輯"或"合成*/
PR12();
com=0x9c; /*顯示開關(guān)設(shè)置 開文本和圖形顯示*/
PR12();
}
/*****************************/
/* 漢字寫入(圖形方式)函數(shù) */
/********************************/
CCW2_PR()
{
unsigned int i,j,count1;
i=para1;
j=i*O_Y+O_X+0x0800; /* 圖形顯示區(qū)首地址為
0x0800*/
for(count1=0;count1<16;count1++)
{
dat1=j%256; /* 顯示地址設(shè)置 */
dat2=j/256;
com=0x24;
PR1();
dat2=CCTAB[code_1][count1];
com=0xc0;
PR11();
dat2=CCTAB[code_1][count1+16];
PR11();
j=j+i;
}
}
/********************************/
/* 西文字符寫入(文本屬性)函數(shù) */
/********************************/
CW2_PR()
{
unsigned int i,j;
i=para1;
j=i*O_Y+O_X;
dat1=j%256;
dat2=j/256;
com=0x24; // 顯示地址設(shè)置
PR1();
dat2=code_1;
com=0xc4; // 數(shù)據(jù)寫
PR11();
dat2=0x08;
com=0x24;
PR1();
dat2=attr; // 寫入屬性參數(shù)
com=0xc4;
PR11();
NOP();
}
/****************************/
/* 寫指令和寫數(shù)據(jù)函數(shù) */
/****************************/
PR1() /* 雙字節(jié)參數(shù)指令寫入入口 */
{
ST01();
cd=0; //數(shù)據(jù)通道
P0=0xff; //清一下電平
P0=dat1; /* 取第一參數(shù)單元數(shù)據(jù) */
wr=0;
NOP();
wr=1;
PR11();
}
PR11() /* 單字節(jié)參數(shù)指令寫入入口 */
{
ST01();
cd=0;
P0=0xff;
P0=dat2; /* 取第二參數(shù)單元數(shù)據(jù) */
wr=0;
NOP();
wr=1;
PR12();
}
PR12() /* 無參數(shù)指令代碼寫入入口 */
{
ST01();
cd=1; //指令通道
P0=0xff;
P0=com; /* 寫入指令代碼 */
wr=0;
NOP();
wr=1;
}
/*******************************************/
/*讀取lcd狀態(tài)字 */
/******************************************/
unsigned char readstate(void)
{
unsigned char lcd_state;
P0=0xff; //p0為輸入方式
cd=1; // C/D=1
rd=0; // /RD=0
lcd_state=P0&0xff; // 讀取引腳A物理電平
NOP();
NOP();
rd=1; // /RD=1
return lcd_state;
}
/************************************************/
/* 判狀態(tài)位S1,S0 函數(shù)(讀寫指令和讀寫數(shù)據(jù)狀態(tài)) */
/************************************************/
void ST01(void)
{
while((readstate()&0x03)!=3)
;
}
/************************************/
/* 判狀態(tài)位S2函數(shù)(數(shù)據(jù)自動讀狀態(tài)) */
/************************************/
void ST2(void)
{
while((readstate()&0x04)!=4);
}
/************************************/
/* 判狀態(tài)位S3函數(shù)(數(shù)據(jù)自動寫狀態(tài)) */
/************************************/
void ST3(void)
{
while((readstate()&0x08)!=8)
;
}
/****************/
NOP()
{
unsigned int j;
for(j=0;j<2500;j++)
{;}
}
/*****************************/
/* 顯示顯示波形開機(jī)畫面 */
/*****************************/
display1()
{
code_1=0x05; /* 漢字寫入顯示波形回車確認(rèn)*/
O_X=0x03;
O_Y=0x00;
CCW2_PR();
code_1=0x00;
O_X=0x05;
O_Y=0x00;
CCW2_PR();
code_1=0x01;
O_X=0x07;
O_Y=0x00;
CCW2_PR();
code_1=0x02;
O_X=0x09;
O_Y=0x00;
CCW2_PR();
code_1=0x13;
O_X=0x03;
O_Y=0x10;
CCW2_PR();
code_1=0x14;
O_X=0x05;
O_Y=0x10;
CCW2_PR();
code_1=0x05;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -