?? signal_show.c
字號:
//波形顯示在第一層,網格坐標顯示在第二層,漢字菜單顯示在第三層.
#include <reg51.h>
#include <absacc.h>
#include <math.h>
#include "constant.h"
#include "iCf.h"
#include "rCf.h"
#include "ziku.h"
#include "f_define.h"//函數定義
//輸入頻率92Hz
/***************************************************************
*名稱:outcode(uchar code_data)
*描述:向液晶屏輸出指令代碼
*參數:指令代碼
*返回:
****************************************************************/
void outcode(uchar code_data)//輸出指令代碼
{
lcd_cs=0;
lcd_a0=1;
lcd_rd=1;lcd_wr=1;lcd_rst=1;
P0=code_data;
lcd_wr=0;
lcd_wr=1;
lcd_cs=1;
}
/***************************************************************
*名稱:outdata(uchar data_data)
*描述:向液晶屏輸出指令參數
*參數:指令參數
*返回:
****************************************************************/
void outdata(uchar data_data)//輸出指令參數
{
lcd_cs=0;
lcd_a0=0;
lcd_rd=1;
lcd_wr=1;
P0=data_data;
lcd_wr=0;
lcd_wr=1;
lcd_cs=1;
}
/***************************************************************
*名稱:uchar indata(void)
*描述:從液晶屏輸入數據
*參數:
*返回:輸入數據
****************************************************************/
uchar indata(void)//輸入數據
{
uchar data_data;
Ram_cs = 1 ;
lcd_cs=0;
lcd_a0=1;
P0=0xff;
lcd_wr=1;
lcd_rd=0;
data_data=P0;
lcd_rd=1;
lcd_cs=1;
return data_data;
}
/***************************************************************
*名稱:turnoff(void)
*描述:關閉液晶屏
*參數:
*返回:
****************************************************************/
void turnoff(void)
{
outcode(0x58);//off screen
outdata(0x00);
}
/***************************************************************
*名稱:turnon(void)
*描述:開啟液晶屏
*參數:
*返回:
****************************************************************/
void turnon(void)
{
outcode(0x59);//on screen
outdata(0x55);
}
/***************************************************************
*名稱:initram(void)
*描述:清屏(3層)
*參數:
*返回:
****************************************************************/
void initram(void)
{//顯示存儲器清零
unsigned int i;
outcode(0x4c);
outcode(0x46);
outdata(0x00);
outdata(0x00);
outcode(0x42);//clear screen memory
for(i=0;i<0x7800;)//24478,32768,0x7800,0x58e5
{
outdata(0x00);
i++;
}
}
/***************************************************************
*名稱:initram_1(void)
*描述:清屏(first1層)
*參數:
*返回:
****************************************************************/
void initram_1(void)
{//顯示存儲器清零
unsigned int i;
outcode(0x4c);
outcode(0x46);
outdata(0x00);
outdata(0x00);
outcode(0x42);//clear screen memory
for(i=0;i<0x2800;)//24478,32768,0x7800,0x58e5
{
outdata(0x00);
i++;
}
}
/***************************************************************
*名稱:init(void)
*描述:初始化程序
*參數:
*返回:
****************************************************************/
void init(void)
{
int n;
outcode(0x40); /*SYSTEM SET 指令代碼*/
for(n=0;n<8;n++)outdata(sys[n]); /*將參數P1-P8 寫入*/
outcode(0x44); /*SCROLL 指令代碼*/
for(n=0;n<10;n++)outdata(scr[n]); /*將參數P1-P10 寫入*/
outcode(0x5a); /*HDOT SCR——P1 清零復位*/
outdata(0);
outcode(0x5b); /*OVLAY—*/
outdata(0x1c);
}
/***************************************************************
*名稱:WriteD(uchar x,uchar y)
*描述:在第一層寫一個點
*參數:點的坐標位置(x,y)
*返回:
****************************************************************/
void WriteD(uchar x,uchar y) //write a dot on the 1nd layer
{
unsigned int address;
uchar addh,addl;
uchar m=0,n;
address=0x01f9+x/8+y*AP;
addh=address/256;
addl=address%256;
n=x%8;
outcode(0x46);
outdata(addl);
outdata(addh);
outcode(0x43);
m=indata();
m=m|arr[n];
outcode(0x46);
outdata(addl);
outdata(addh);
outcode(0x42);
outdata(m);
}
/***************************************************************
*名稱:WriteD2(uchar x,uchar y)
*描述:在第二層寫一個點
*參數:點的坐標位置(x,y)
*返回:
****************************************************************/
void WriteD2(uchar x,uchar y) //write a dot on the 2nd layer
{
unsigned int address;
uchar addh,addl;
uchar m=0,n=0;
address=0x29f9+x/8+y*AP;
addh=address/256;
addl=address%256;
outcode(0x46);
outdata(addl);
outdata(addh);
outcode(0x43);
m=indata();
n=x%8;
m=m|arr[n];
outcode(0x46);
outdata(addl);
outdata(addh);
outcode(0x42);
outdata(m);//m
}
/***************************************************************
*名稱:Hori(uchar y,uchar space)
*描述:在第二層畫水平網格線
*參數:網格的行數、空的點數
*返回:
****************************************************************/
void Hori(uchar y,uchar space) //畫水平網格線
{
uchar i;
outcode(0x4c);
for(i=space;i<LENGTH;i+=space)WriteD2(i,y);
}
/***************************************************************
*名稱:Ver(uchar x,uchar space)
*描述:在第二層畫垂直網格線
*參數:網格的列數、空的點數
*返回:
****************************************************************/
void Ver(uchar x,uchar space) //畫垂直網格線
{
uchar i=0 ;
outcode(0x4f);
if((x==0)|(x==0xfa))i=0;
else i=space;
for(;i<WIDTH;i+=space)WriteD2(x,i);
}
/***************************************************************
*名稱:fixline(uchar y)
*描述:在第二層畫橫線
*參數:橫線的行數
*返回:
****************************************************************/
void fixline(uchar y)
{
unsigned int address;
uchar addh,addl;
uchar i;
address=0x2a18+y*AP;
addh=address/256;
addl=address%256;
outcode(0x46);
outdata(addl);
outdata(addh);
outcode(0x4c);
outcode(0x42);
outdata(0x3f);
for(i=1;i<8;i++)outdata(0xff);
}
/***************************************************************
*名稱:fixline2(uchar y)
*描述:在第二層右半邊畫橫線
*參數:橫線的行數
*返回:
****************************************************************/
void fixline2(uchar y)
{
unsigned int address;
uchar addh,addl;
uchar i;
address=0x29f9+y*AP;
addh=address/256;
addl=address%256;
outcode(0x46);
outdata(addl);
outdata(addh);
outcode(0x4c);
outcode(0x42);
outdata(0x3f);
for(i=1;i<31;i++)outdata(0xff);
}
/***************************************************************
*名稱:DrawFrame(void)
*描述:在第二層畫網格邊框
*參數:
*返回:
****************************************************************/
void DrawFrame(void) //畫網格邊框
{
fixline(0);
fixline(200);
Ver(0,1); //(8,12) --- (8,262)
Ver(LENGTH,1); //(208,12) --- (208,212)
fixline(40);
fixline(80);
fixline(120);
fixline(160);
fixline2(200);
fixline2(0);
}
/***************************************************************
*名稱:DrawGrid(void)
*描述:在第二層畫網格區內的網格線
*參數:
*返回:
****************************************************************/
void DrawGrid(void) //畫網格區內的網格線
{
uchar i;
Hori(1,5);
Hori(2,25);
Hori(WIDTH-2,0x19);
Hori(WIDTH-2,0x05);
Ver(0x02,0x19);
Ver(LENGTH-2,0x19);
for(i=1;i<0x08;i++){
Hori(25*i,5);
if(i==0x04){
Hori(0x19*i-1,5);
Hori(0x19*i+1,5);//
}
}
for(i=0x01;i<0x0a;i++)
{
Ver(0x19*i,5);
if(i==0x05)
{
Ver(0x19*i-1,5);
Ver(0x19*i+1,5);
}
}
}
/***************************************************************
*名稱:vector(uchar x,uchar y1,uchar y2)
*描述:兩個點之間插入若干點,將點顯示轉換為矢量顯示
*參數:坐標x,坐標y1,坐標y2
*返回:
****************************************************************/
void vector(uchar x,uchar y1,uchar y2)
{
char i=y2-y1;
uchar tempy;
if(i>0){
tempy=y2-1;
for(;i>1;i--){
WriteD(x+1,tempy);
tempy--;
}
}
else if(i<0){
tempy=y2+1;
i=-i;
for(;i>1;i--){
WriteD(x+1,tempy);
tempy++;
}
}
else{}
}
/***************************************************************
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -