📄 lcd.c
字号:
#include <hidef.h> /* common defines and macros */
#include <MC9S12H256.h> /* derivative information */
#include "lcd.h"
void InitLcd()
{
LCDCR0=0xb0; //LCDEN LCLK(488) BIASW duty1/4
//10 110 0 00
FPENR0=0xff; //FP0--FP21
FPENR1=0xff;
FPENR2=0x3f;
FPENR3=0;
}
void DisplayTotalDistance(dword DisTotalDistance)
{
if(DisTotalDistance>999999)
{
//display "ERROR"
DisplayError();
}
else
{
if(DisTotalDistance/100000==0) {
if(DisTotalDistance/10000==0) {
if(DisTotalDistance/1000==0) {
if(DisTotalDistance/100==0) {
if(DisTotalDistance/10==0) {
DisplayNum(9,DisTotalDistance);
}
else{
DisplayNum(9,DisTotalDistance%10);
DisplayNum(8,DisTotalDistance/10);
}
}
else{
DisplayNum(9,DisTotalDistance%10);
DisplayNum(8,(DisTotalDistance%100)/10);
DisplayNum(7,DisTotalDistance/100);
}
}
else{
DisplayNum(9,DisTotalDistance%10);
DisplayNum(8,(DisTotalDistance%100)/10);
DisplayNum(7,(DisTotalDistance%1000)/100);
DisplayNum(6,DisTotalDistance/1000);
}
}
else{
DisplayNum(9,DisTotalDistance%10);
DisplayNum(8,(DisTotalDistance%100)/10);
DisplayNum(7,(DisTotalDistance%1000)/100);
DisplayNum(6,(DisTotalDistance%10000)/1000);
DisplayNum(5,DisTotalDistance/10000);
}
}
else{
DisplayNum(9,DisTotalDistance%10);
DisplayNum(8,(DisTotalDistance%100)/10);
DisplayNum(7,(DisTotalDistance%1000)/100);
DisplayNum(6,(DisTotalDistance%10000)/1000);
DisplayNum(5,(DisTotalDistance%100000)/10000);
DisplayNum(4,DisTotalDistance/100000);
}
}
}
void DisplayTripDistance(dword DistanceBeforePoint, byte DistanceAfterPoint)
{
if(DistanceBeforePoint>999 || DistanceAfterPoint>9)
{
//display "ERROR"
DisplayErr();
}
else
{
DisplayNum(0,DistanceAfterPoint);
if(DistanceBeforePoint/100==0) {
if(DistanceBeforePoint/10==0) {
DisplayNum(1,DistanceBeforePoint);
LCDRAM1|= 0x80; //point
}
else {
DisplayNum(1,DistanceBeforePoint%10);
DisplayNum(2,DistanceBeforePoint/10);
LCDRAM1|= 0x80; //point
}
}
else {
DisplayNum(1,DistanceBeforePoint%10);
DisplayNum(2,(DistanceBeforePoint%100)/10);
DisplayNum(3,DistanceBeforePoint/100);
LCDRAM1|= 0x80; //point
}
}
}
void DisplayA() {
LCDRAM10|=0x01;
}
void DisplayB() {
LCDRAM10|=0x02;
}
void DisplaySpan() {
LCDRAM10|=0x04;
}
void DisplayNum(byte pos, byte num)
{
byte *lcdram;
lcdram=(volatile unsigned char*)(0x0128);
switch(num) {
case 0:
*(lcdram+pos)=0x7d;
break;
case 1:
*(lcdram+pos)=0x60;
break;
case 2:
*(lcdram+pos)=0x3e;
break;
case 3:
*(lcdram+pos)=0x7a;
break;
case 4:
*(lcdram+pos)=0x63;
break;
case 5:
*(lcdram+pos)=0x5b;
break;
case 6:
*(lcdram+pos)=0x5f;
break;
case 7:
*(lcdram+pos)=0x70;
break;
case 8:
*(lcdram+pos)=0x7f;
break;
case 9:
*(lcdram+pos)=0x7b;
break;
}
}
void DisplayError()
{
LCDRAM5=0x1f;//E
LCDRAM6=0x77;//R
LCDRAM7=0x77;//R
LCDRAM8=0x7d;//O
LCDRAM9=0x77;//R
}
void DisplayErr()
{
LCDRAM2=0x1f;//E
LCDRAM1=0x77;//R
LCDRAM0=0x77;//R
}
void DisplayNone()
{
byte *lcdram;
byte i;
lcdram=(volatile unsigned char*)(0x0128);
for(i=0;i<11;i++) {
*(lcdram+i)=0;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -