?? lcd_fuza_yemiam_kongzhi.c
字號:
//MSP430與12864連接驅動程序
#include "msp430x16x.h" // Standard Equations
#define uchar unsigned char
#include "hztable-2222.h"
#include "math.h"
#define uint unsigned int
//**********************************************
uchar p=1,q=2,l=80,x,m[4]; //p標志頁面,q標志哪個參數
unsigned char keypoint;
uint data_convert[10];
float fasong[4];
uchar shuru[4][4]; //注意在各個庫文件中不能有相同的"自定義變量名稱"
uchar jieguo_BCD[10][10]; //如果多設置變量不用是可以的!!!!
uchar *shd[4][4]; //多定義函數不喲內用是不行的!!!!
uchar *jiguo_BCD_Ma[10][10]; //只有指針或者指針數組才能接收數組傳遞初始地址!!!
uchar data_number[4];
uchar keypst=0;
uchar cradd1,cradd2;
//**********************************************
#define RS BIT3
#define RW BIT2
#define E BIT1
#define CS1 BIT4
#define CS2 BIT5
#define MAX_CP BIT6
#define DA_CP BIT7
#define LPA BIT7
#define BPA BIT6
#define HPA BIT5
#define MAX_313 BIT4
#define BPB BIT3
#define HPB BIT2
#define Sensor_Signal_Importing BIT1
#define LPB BIT0
//數據線:p5口 ,控制線: p3口
//**********************************************
//=======================================================
void short_delay(uint i)
{ uint j;
for(j=0;j<=i;j++);
}
void delayms(uchar tickms)
{ uchar count,i;
_NOP();
_NOP();
_NOP();
for(i=tickms;i>0;i--)
{ for(count=0;count<=58;count++) {;}
_NOP();
}
}
//*****************************************
unsigned char keyscan(void) //鍵盤掃描程序
{
unsigned char x;
P1DIR=0X0F;
P1OUT=0X0e; //掃描第一行
if((P1IN&0Xf0)==0Xe0)
x=15;
else
if((P1IN&0Xf0)==0Xd0)
x=14;
else
if((P1IN&0Xf0)==0xb0)
x=13;
else
if((P1IN&0Xf0)==0x70)
x=12;
else
{
P1OUT=0X0d; //掃描第二行
if((P1IN&0Xf0)==0Xe0)
x=11;
else
if((P1IN&0Xf0)==0Xd0)
x=10;
else
if((P1IN&0Xf0)==0xb0)
x=0;
else
if((P1IN&0Xf0)==0x70)
x=9;
else
{
P1OUT=0X0b; //掃描第三行
if((P1IN&0Xf0)==0Xe0)
x=8;
else
if((P1IN&0Xf0)==0Xd0)
x=7;
else
if((P1IN&0Xf0)==0xb0)
x=6;
else
if((P1IN&0Xf0)==0x70)
x=5;
else
{P1OUT=0x07; //掃描第四行
if((P1IN&0Xf0)==0Xe0)
x=4;
else
if((P1IN&0Xf0)==0Xd0)
x=3;
else
if((P1IN&0Xf0)==0xb0)
x=2;
else
if((P1IN&0Xf0)==0x70)
x=1;
}
}
}
return(x);
}
//***********************************************
unsigned char keyj(void) //判斷是否有鍵按下
{unsigned char k;
P1DIR=0x0f;
P1OUT=0x00; //鍵盤硬件:P10--P13為行線,最下面一根為P10
if((P1IN&0Xf0)!=0xf0)
k=1; // P14--P16為列線,最右邊一根為P14,
else k=0;
return(k); // 無按鍵,返回 0?; 有按鍵返回 非0
}
//**************************************************
void prl0(uchar com1)// 寫指令代碼子程序(左)
{
P3DIR|=0X7F; //P3為輸出口
P3OUT|=CS1; //csa=1
P3OUT&=~CS2; //csb=0
P3OUT&=~RS;
P3OUT|=RW; //RS=0,R/W=1,以便讀液晶狀態
P5DIR=0x00; //P5口為輸入口
do
{
P3OUT|=E; //E=1
cradd1=P5IN;
P3OUT&=~E; //E=0
}
while((cradd1&0x80)!=0);
P3OUT&=~RW; //rw=0
P5DIR=0xff; //P5口為輸出口
P5OUT=com1;
P3OUT|=E; //E=1
P3OUT&=~E; //E=0
}
//**************************************************
void prl1(uchar dat1)// 寫顯示數據子程序(左)
{
P3DIR|=0XFF; //P5為輸出口
P3OUT|=CS1; //csa=1
P3OUT&=~CS2; //csb=0
P3OUT&=~RS;
P3OUT|=RW; //RS=0,R/W=1,以便讀液晶狀態
P5DIR=0x00; //P5口為輸入口
do
{
P3OUT|=E; //E=1
cradd1=P5IN;
P3OUT&=~E; //E=0
}
while((cradd1&0x80)!=0);
P3OUT|=RS; //rs=1
P3OUT&=~RW; //rw=0
P5DIR=0xff; //P5口為輸出口
P5OUT=dat1;
P3OUT|=E; //E=1
P3OUT&=~E; //E=0
}
//**************************************************
void prr0(uchar com2)// 寫指令代碼子程序(右)
{
P3DIR|=0X7F; //P3為輸出口
P3OUT&=~CS1; //csa=0
P3OUT|=CS2; //csb=1
P3OUT&=~RS;
P3OUT|=RW; //RS=0,R/W=1,以便讀液晶狀態
P5DIR=0x00; //P5口為輸入口
do
{
P3OUT|=E; //E=1
cradd1=P5IN;
P3OUT&=~E; //E=0
}
while((cradd1&0x80)!=0);
P3OUT&=~RW; //rw=0
P5DIR=0xff; //P5口為輸出口
P5OUT=com2;
P3OUT|=E; //E=1
P3OUT&=~E; //E=0
}
//*************************************************
void prr1(uchar dat2)// 寫顯示數據子程序(右)
{
P3DIR|=0X7F; //P3為輸出口
P3OUT&=~CS1; //csa=0
P3OUT|=CS2; //csb=1
P3OUT&=~RS;
P3OUT|=RW; //RS=0,R/W=1,以便讀液晶狀態
P5DIR=0x00; //P5口為輸入口
do
{
P3OUT|=E; //E=1
cradd1=P5IN;
P3OUT&=~E; //E=0
}
while((cradd1&0x80)!=0);
P3OUT|=RS; //rs=1
P3OUT&=~RW; //rw=0
P5DIR=0xff; //P5口為輸出口
P5OUT=dat2;
P3OUT|=E; //E=1
P3OUT&=~E; //E=0
}
//**********************************************
void hzw_pr(uchar page2,uchar colum2,uchar *code2)// 寫一個漢字
//page2:頁 colum2:列 code2:代碼 表示哪個漢字
{ uchar i,j,colum;
uchar *hzp;
uchar flag;
hzp=code2;
for(j=0;j<2;j++)
{ prl0(page2|0xb8); //頁
prr0(page2|0xb8);
colum=colum2;
if(colum2>63) //右屏
{ colum=colum-64;
prr0(colum|0x40);
flag=1;
}
else //左屏
{prl0(colum|0x40);
flag=0; }
//*********************
for(i=0;i<16;i++)
{ //a
if(flag==0)
{ prl1(*hzp);
}
else
{prr1(*hzp);}
hzp++;
if(colum==64) //列=64
{ //b
colum=0;
if(flag==0)
{
flag=1;
prr0(colum|0x40);
}
else {break;}
} //b
colum++;
} //a
page2++;
}
}
//**********************************************
void shzw_pr(uchar page1,uchar colum1,uchar *code1)// 寫一個數字
//page式:頁 colum1:列 code1:代碼 表示哪個數字
{ uchar i,j,colum;
uchar *hzp;
uchar flag;
hzp=code1;
for(j=0;j<2;j++)
{ prl0(page1|0xb8); //頁
prr0(page1|0xb8);
colum=colum1;
if(colum1>63) //右屏
{ colum=colum-64;
prr0(colum|0x40);
flag=1;
}
else //左屏
{prl0(colum|0x40);
flag=0; }
//*********************
for(i=0;i<8;i++)
{ //a
if(flag==0)
{ prl1(*hzp);
}
else
{prr1(*hzp);}
hzp++;
if(colum==64) //列=64
{ //b
colum=0;
if(flag==0)
{
flag=1;
prr0(colum|0x40);
}
else {break;}
} //b
colum++;
} //a
page1++;
}
}
//******************************************
void shzw_str(uchar x,uchar **str) //寫數字字符串函數,"二維指針","指針"無法直接接受"指針數組"傳遞來的地址
{ uchar y;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -