|
点击此处下载 ourdev_716696TNG0TB.rar(文件大小:2K) (原文件名:12864.rar)
//=========头文件12864_Init.h=============//
#ifndef _12864_Init_H
#define _12864_Init_H
#include<MC9S12XS128.h>
#include <hidef.h>
#include "derivative.h"
#include <stdio.h>
#define uint unsigned int
#define uchar unsigned char
#define lcdcs PORTA_PA7
#define lcdclk PORTA_PA6
#define lcdsid PORTA_PA0
#define lcdpsb PORTA_PA4
#define lcdrst PORTA_PA3
void lcd_Init(void);
void write_com(uchar comcod);
void write_dat(uchar dat);
void Display(uchar *s);
void Delay(uint t);
void screen_Init(uchar *frequent,uchar *phasemeasure,uchar *amplitude1,uchar *amplitude2);
void screen(uchar *frequent,uchar *phasemeasure,uchar *amplitude1,uchar *amplitude2);
#endif
//=======12864_Init.c文件==========//
#include "12864_Init.h"
//extern Phaseparameters phaseparameters;
//............延时.............
void Delay(uint t)
{
while(t--);
}
//..................写命令..................
void write_com(uchar comcod)
{
uchar i,j;
Delay(500);//必须加延时,且不要太短
lcdcs=1; // 串行片选信号高电平有效
lcdclk=0;
lcdsid=1;
for(i=0;i<5;i++)
{
lcdclk=1;
lcdclk=0;
} // 连续五个1,同步位字符串
lcdsid=0;//写
Delay(8);
lcdclk=1;
lcdclk=0;
lcdsid=0;//命令
Delay(8);
lcdclk=1;
lcdclk=0;
lcdsid=0; //固定格式为0
Delay(8);
lcdclk=1;
lcdclk=0;
for(j=0;j<2;j++)
{
for(i=0;i<4;i++)
{
//lcdsid=(((comcod<<(i+4*j))&&(0x80))?1:0); //串行送数据,一位一位的送
lcdsid=(comcod&0x80)?1:0;
comcod=comcod<<1;
Delay(8);
lcdclk=1;
lcdclk=0;
}
lcdsid=0;
for(i=0;i<4;i++)
{
Delay(8);
lcdclk=1;
lcdclk=0;
}
}
}
//.................写数据............... .
void write_dat(uchar dat)
{
uchar i,j;
Delay(100);//必须加延时,且不要太短
lcdcs=1; // 串行片选信号高电平有效
lcdclk=0;
lcdsid=1;
for(i=0;i<5;i++)
{
Delay(8);
lcdclk=1;
lcdclk=0;
} // 连续五个1,同步位字符串
lcdsid=0;
Delay(8);
lcdclk=1;
lcdclk=0;
lcdsid=1;
Delay(8);
lcdclk=1;
lcdclk=0;
lcdsid=0; //固定格式为0
Delay(8);
lcdclk=1;
lcdclk=0;
for(j=0;j<2;j++)
{
for(i=0;i<4;i++)
{
//lcdsid=((dat<<(i+4*j))&&(0x80))?1:0;
lcdsid=(dat&0x80)?1:0;
dat=dat<<1;
Delay(8);
lcdclk=1;
lcdclk=0;
}
lcdsid=0;
for(i=0;i<4;i++)
{
Delay(8);
lcdclk=1;
lcdclk=0;
}
}
}
//..........液晶初始化...................
void lcd_Init()
{
write_com(0x30); //选择基本指令集,选择8bit数据流
Delay(5000);
write_com(0x0c); //开显示(无游标、不反白)
Delay(5000);
write_com(0x01); //清除显示,并且设定地址指针为00H
Delay(5000);
write_com(0x06); //指定在资料的读取及写入时,设定游标的移动方向及指定显示的移位
Delay(5000);
}
//.................液晶显示.................
void Display(uchar *s)
{
while(*s>0)
{
write_dat(*s);
s++;
Delay(5000);//延时不要太短,要不然效果不好
}
}
//..................液晶显示内容.....................
void screen_Init(uchar *frequent,uchar *phasemeasure,uchar *amplitude1,uchar *amplitude2)
{
write_com(0x01);
Delay(5000);
write_com(0x80); //必须空一个格,要不然乱码
Delay(8);
Display(frequent);
write_com(0x90);
Delay(8);
Display(phasemeasure);
write_com(0x88);
Delay(8);
Display(amplitude1);
write_com(0x98);
Delay(8);
Display(amplitude2);
}
void screen(uchar *frequent,uchar *phasemeasure,uchar *amplitude1,uchar *amplitude2)
{
//write_com(0x01);
/*
sprintf(frequent," %.1fHz",phaseparameters.measurefrequence);
sprintf(phase,"%.1f°",phaseparameters.measurefrequence);
sprintf(amp1,"%.1fV",phaseparameters.measurefrequence);
sprintf(amp2,"%.1fV",phaseparameters.measurefrequence);
*/
Delay(5000);
write_com(0x84); //必须空一个格,要不然乱码
Delay(8);
Display(frequent);
write_com(0x94);
Delay(8);
Display(phasemeasure);
write_com(0x8C);
Delay(8);
Display(amplitude1);
write_com(0x9C);
Delay(8);
Display(amplitude2);
} |
阿莫论坛20周年了!感谢大家的支持与爱护!!
一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。
|