液晶键盘.docx

上传人:b****2 文档编号:17920693 上传时间:2023-08-04 格式:DOCX 页数:19 大小:19.09KB
下载 相关 举报
液晶键盘.docx_第1页
第1页 / 共19页
液晶键盘.docx_第2页
第2页 / 共19页
液晶键盘.docx_第3页
第3页 / 共19页
液晶键盘.docx_第4页
第4页 / 共19页
液晶键盘.docx_第5页
第5页 / 共19页
液晶键盘.docx_第6页
第6页 / 共19页
液晶键盘.docx_第7页
第7页 / 共19页
液晶键盘.docx_第8页
第8页 / 共19页
液晶键盘.docx_第9页
第9页 / 共19页
液晶键盘.docx_第10页
第10页 / 共19页
液晶键盘.docx_第11页
第11页 / 共19页
液晶键盘.docx_第12页
第12页 / 共19页
液晶键盘.docx_第13页
第13页 / 共19页
液晶键盘.docx_第14页
第14页 / 共19页
液晶键盘.docx_第15页
第15页 / 共19页
液晶键盘.docx_第16页
第16页 / 共19页
液晶键盘.docx_第17页
第17页 / 共19页
液晶键盘.docx_第18页
第18页 / 共19页
液晶键盘.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

液晶键盘.docx

《液晶键盘.docx》由会员分享,可在线阅读,更多相关《液晶键盘.docx(19页珍藏版)》请在冰点文库上搜索。

液晶键盘.docx

液晶键盘

#include/*commondefinesandmacros*/

#include"derivative.h"/*derivative-specificdefinitions*/

#defineucharunsignedchar

#defineuintunsignedint

//液晶

#defineLCD_RSTPTM_PTM2

#defineLCD_CEPTM_PTM0

#defineLCD_DCPTT_PTT1

#defineSDINPTT_PTT3

#defineSCLKPTT_PTT5

//键盘

#defineSET_KEYPTT_PTT6

#defineUP_KEYPTT_PTT4

#defineDOWN_KEYPTT_PTT2

#defineRESET_KEYPTT_PTT0

/***********12*12的汉字*********/

ucharchinese[]={

/*--文字:

车--*/

/*--TrebuchetMS9;此字体下对应的点阵为:

宽x高=12x12--*/

/*--高度不是8的倍数,现调整为:

宽度x高度=12x16--*/

0x04,0x64,0x54,0x4C,0x47,0xF4,0x44,0x44,0x44,0x44,0x04,0x00,0x02,0x02,0x02,0x02,

0x02,0x0F,0x02,0x02,0x02,0x02,0x02,0x00,

/*--文字:

速--*/

/*--TrebuchetMS9;此字体下对应的点阵为:

宽x高=12x12--*/

/*--高度不是8的倍数,现调整为:

宽度x高度=12x16--*/

0x11,0xF2,0x00,0x7A,0x4A,0xCA,0xFF,0xCA,0x4A,0x7A,0x02,0x00,0x08,0x07,0x08,0x0A,

0x09,0x08,0x0F,0x08,0x09,0x0A,0x08,0x00,

};

/***************ACSII码表***************/

ucharfont6x8[92][6]=

{

{0x00,0x00,0x00,0x00,0x00,0x00},//sp0

{0x00,0x00,0x00,0x2f,0x00,0x00},//!

1

{0x00,0x00,0x07,0x00,0x07,0x00},//"2

{0x00,0x14,0x7f,0x14,0x7f,0x14},//#3

{0x00,0x24,0x2a,0x7f,0x2a,0x12},//$4

{0x00,0x62,0x64,0x08,0x13,0x23},//%5

{0x00,0x36,0x49,0x55,0x22,0x50},//&6

{0x00,0x00,0x05,0x03,0x00,0x00},//'7

{0x00,0x00,0x1c,0x22,0x41,0x00},//(8

{0x00,0x00,0x41,0x22,0x1c,0x00},//)9

{0x00,0x14,0x08,0x3E,0x08,0x14},//*10

{0x00,0x08,0x08,0x3E,0x08,0x08},//+11

{0x00,0x00,0x00,0xA0,0x60,0x00},//,12

{0x00,0x08,0x08,0x08,0x08,0x08},//-13

{0x00,0x00,0x60,0x60,0x00,0x00},//.14

{0x00,0x20,0x10,0x08,0x04,0x02},///15

{0x00,0x3E,0x51,0x49,0x45,0x3E},//016

{0x00,0x00,0x42,0x7F,0x40,0x00},//117

{0x00,0x42,0x61,0x51,0x49,0x46},//218

{0x00,0x21,0x41,0x45,0x4B,0x31},//319

{0x00,0x18,0x14,0x12,0x7F,0x10},//420

{0x00,0x27,0x45,0x45,0x45,0x39},//521

{0x00,0x3C,0x4A,0x49,0x49,0x30},//622

{0x00,0x01,0x71,0x09,0x05,0x03},//723

{0x00,0x36,0x49,0x49,0x49,0x36},//824

{0x00,0x06,0x49,0x49,0x29,0x1E},//925

{0x00,0x00,0x36,0x36,0x00,0x00},//:

26

{0x00,0x00,0x56,0x36,0x00,0x00},//;27

{0x00,0x08,0x14,0x22,0x41,0x00},//<28

{0x00,0x14,0x14,0x14,0x14,0x14},//=29

{0x00,0x00,0x41,0x22,0x14,0x08},//>30

{0x00,0x02,0x01,0x51,0x09,0x06},//?

31

{0x00,0x32,0x49,0x59,0x51,0x3E},//@32

{0x00,0x7C,0x12,0x11,0x12,0x7C},//A33

{0x00,0x7F,0x49,0x49,0x49,0x36},//B34

{0x00,0x3E,0x41,0x41,0x41,0x22},//C35

{0x00,0x7F,0x41,0x41,0x22,0x1C},//D36

{0x00,0x7F,0x49,0x49,0x49,0x41},//E37

{0x00,0x7F,0x09,0x09,0x09,0x01},//F38

{0x00,0x3E,0x41,0x49,0x49,0x7A},//G39

{0x00,0x7F,0x08,0x08,0x08,0x7F},//H40

{0x00,0x00,0x41,0x7F,0x41,0x00},//I41

{0x00,0x20,0x40,0x41,0x3F,0x01},//J42

{0x00,0x7F,0x08,0x14,0x22,0x41},//K43

{0x00,0x7F,0x40,0x40,0x40,0x40},//L44

{0x00,0x7F,0x02,0x0C,0x02,0x7F},//M45

{0x00,0x7F,0x04,0x08,0x10,0x7F},//N46

{0x00,0x3E,0x41,0x41,0x41,0x3E},//O47

{0x00,0x7F,0x09,0x09,0x09,0x06},//P48

{0x00,0x3E,0x41,0x51,0x21,0x5E},//Q49

{0x00,0x7F,0x09,0x19,0x29,0x46},//R50

{0x00,0x46,0x49,0x49,0x49,0x31},//S51

{0x00,0x01,0x01,0x7F,0x01,0x01},//T52

{0x00,0x3F,0x40,0x40,0x40,0x3F},//U53

{0x00,0x1F,0x20,0x40,0x20,0x1F},//V54

{0x00,0x3F,0x40,0x38,0x40,0x3F},//W55

{0x00,0x63,0x14,0x08,0x14,0x63},//X56

{0x00,0x07,0x08,0x70,0x08,0x07},//Y57

{0x00,0x61,0x51,0x49,0x45,0x43},//Z58

{0x00,0x00,0x7F,0x41,0x41,0x00},//[59

{0x00,0x55,0x2A,0x55,0x2A,0x55},//5566

{0x00,0x00,0x41,0x41,0x7F,0x00},//]61

{0x00,0x04,0x02,0x01,0x02,0x04},//^62

{0x00,0x40,0x40,0x40,0x40,0x40},//_63

{0x00,0x00,0x01,0x02,0x04,0x00},//'64

{0x00,0x20,0x54,0x54,0x54,0x79},//a65

{0x00,0x7F,0x48,0x44,0x44,0x38},//b66

{0x00,0x38,0x44,0x44,0x44,0x20},//c67

{0x00,0x38,0x44,0x44,0x48,0x7F},//d68

{0x00,0x38,0x54,0x54,0x54,0x58},//e69

{0x00,0x08,0x7E,0x09,0x01,0x02},//f70

{0x00,0x18,0xA4,0xA4,0xA4,0x7C},//g71

{0x00,0x7F,0x08,0x04,0x04,0x79},//h72

{0x00,0x00,0x44,0x7D,0x40,0x00},//i73

{0x00,0x40,0x80,0x84,0x7D,0x00},//j74

{0x00,0x7F,0x10,0x28,0x44,0x00},//k75

{0x00,0x00,0x41,0x7F,0x40,0x00},//l76

{0x00,0x7C,0x04,0x18,0x04,0x79},//m77

{0x00,0x7C,0x08,0x04,0x04,0x79},//n79

{0x00,0x38,0x44,0x44,0x44,0x38},//o79

{0x00,0xFC,0x24,0x24,0x24,0x18},//p80

{0x00,0x18,0x24,0x24,0x18,0xFC},//q81

{0x00,0x7C,0x08,0x04,0x04,0x08},//r82

{0x00,0x48,0x54,0x54,0x54,0x20},//s83

{0x00,0x04,0x3F,0x44,0x40,0x20},//t84

{0x00,0x3C,0x40,0x40,0x20,0x7C},//u85

{0x00,0x1C,0x20,0x40,0x20,0x1C},//v86

{0x00,0x3C,0x40,0x30,0x40,0x3C},//w87

{0x00,0x44,0x28,0x10,0x28,0x44},//x88

{0x00,0x1C,0xA0,0xA0,0xA0,0x7C},//y89

{0x00,0x44,0x64,0x54,0x4C,0x44},//z90

{0x14,0x14,0x14,0x14,0x14,0x14}//horizlines

};

intSPEED_SET=200;

intP=500;

intI=100;

intSPEED_ST=300;

//***********PLL初始化**************//

voidPLL_Init(void)

{

CLKSEL=0X00;

PLLCTL_PLLON=1;//turnonPLL

SYNR=0xc0|0x07;

REFDV=0x80|0x01;

POSTDIV=0x00;//pllclock=2*osc*(1+SYNR)/(1+REFDV)=128MHz;

_asm(nop);//BUSCLOCK=64M

_asm(nop);

while(!

(CRGFLG_LOCK==1));//锁相环输出稳定

CLKSEL_PLLSEL=1;//engagePLLtosystem;

}

//******IO初始化*******//

voidIO_Init()

{

/////液晶

DDRM_DDRM0=1;

DDRM_DDRM2=1;

PTM_PTM0=0;

PTM_PTM2=0;

DDRT_DDRT1=1;

DDRT_DDRT3=1;

DDRT_DDRT5=1;

PTT_PTT1=0;

PTT_PTT3=0;

PTT_PTT5=0;

//////按键

DDRT_DDRT0=0;

DDRT_DDRT2=0;

DDRT_DDRT4=0;

DDRT_DDRT6=0;

PTT_PTT0=1;

PTT_PTT2=1;

PTT_PTT4=1;

PTT_PTT6=1;

DDRA_DDRA6=0;

PORTA_PA6=1;

DDRA_DDRA4=0;

PORTA_PA4=0;

DDRA_DDRA2=1;

PORTA_PA2=1;

}

//***************延时函数1******************//

voidDelay_250ns(uchartt)//约250ns

{

uintm,n;

for(n=0;n

for(m=0;m<16;m++)

__asm(nop);//一个时钟周期1/64M

}

//**************延时函数2****************//

voidDelay_1ms(intms)

{

intii,jj;

if(ms<1)ms=1;

for(ii=0;ii

//for(jj=0;jj<2770;jj++);//32MHz--1ms

//for(jj=0;jj<4006;jj++);//48MHz--1ms

for(jj=0;jj<5341;jj++);//64MHz--1ms

}

/**********************************************************************

*函数名称:

LCD_write_byte()

*函数功能:

写一个字节

*入口参数:

data,要写入的字节;command:

0为命令,1为数据

*出口参数:

***********************************************************************/

voidLCD_write_byte(uchardat,ucharcommand)

{

uchari;

LCD_CE=0;//5110片选有效,允许输入数据

if(command==0)//写命令

LCD_DC=0;

elseLCD_DC=1;//写数据

for(i=0;i<8;i++)//传送8bit数据

{

if(dat&0x80)

SDIN=1;

else

SDIN=0;

SCLK=0;

dat=dat<<1;//移位

SCLK=1;

}

LCD_CE=1;//禁止5110

}

/**********************************************************************

*函数名称:

LCD_set_XY()

*函数功能:

光标定位x行y列

*入口参数:

X,Yx行y列

*出口参数:

**********************************************************************/

voidLCD_set_XY(ucharX,ucharY)

{

LCD_write_byte(0x40|Y,0);//column

LCD_write_byte(0x80|X,0);//row

}

/**********************************************************************

*函数名称:

LCD_clear()

*函数功能:

液晶清屏

*入口参数:

*出口参数:

**********************************************************************/

voidLCD_clear(void)

{

uchart,k;

LCD_set_XY(0,0);

for(t=0;t<6;t++)

for(k=0;k<84;k++)

LCD_write_byte(0x00,1);

}

/**********************************************************************

*函数名称:

LCD_Init()

*函数功能:

初始化nokia5110

*入口参数:

*出口参数:

**********************************************************************/

voidLCD_Init(void)

{

LCD_RST=0;//产生一个让LCD复位的低电平脉冲

Delay_250ns(4);

LCD_RST=1;

LCD_CE=0;//关闭LCD

Delay_250ns(4);

LCD_CE=1;//使能LCD

Delay_250ns(4);

LCD_write_byte(0x21,0);//使用扩展命令设置LCD模式

LCD_write_byte(0xC8,0);//设置偏置电压

LCD_write_byte(0x06,0);//温度校正

LCD_write_byte(0x11,0);//1:

80

LCD_write_byte(0x20,0);//使用基本命令

LCD_clear();//清屏

LCD_write_byte(0x0c,0);//设定显示模式,正常显示

LCD_CE=0;//关闭LCD

}

/***********************************************************************

*函数名称:

LCD_Write_Char()

*函数功能:

写入1个字符

*入口参数:

X:

行;Y:

列;asc:

要写入的数据

*出口参数:

*取值范围;X0~83,Y0~5

**********************************************************************/

voidLCD_Write_Char(ucharX,ucharY,ucharasc)

{

ucharline;

LCD_set_XY(X*6,Y);//光标定位

asc=asc-32;//如果想显示a直接输入'a'即可数组行号根据ACSII

for(line=0;line<6;line++)

LCD_write_byte(font6x8[asc][line],1);//从ACSII码表中读取字节,然后写入液晶

}

/***********************************************************************

*函数名称:

LCD_Write_Num()

*函数功能:

显示变亮

*入口参数:

X:

行;Y:

列;num:

变量;N:

要显示的变量的位数

*出口参数:

*取值范围;X0~83,Y0~5num<999999,N<6

**********************************************************************/

voidLCD_Write_Num(ucharX,ucharY,uintnum,ucharN)

{

ucharline;

uchari=0;

uintn[5]={0};

n[0]=num%10;

n[1]=(num/10)%10;

n[2]=(num/100)%10;

n[3]=(num/1000)%10;

n[4]=(num/10000)%10;

for(i=0;i<5;i++)n[i]=n[i]+16;//0是从16开始的

for(i=N;i>0;i--)

{

LCD_set_XY(X+(N-i)*6,Y);//光标定位

for(line=0;line<6;line++)

LCD_write_byte(font6x8[n[i-1]][line],1);//从ACSII码表中读取字节,然后写入液晶

}

}

/************************************************

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 小学教育 > 英语

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2