12864LCD智能Word文档下载推荐.docx

上传人:b****1 文档编号:5184896 上传时间:2023-05-04 格式:DOCX 页数:22 大小:19.20KB
下载 相关 举报
12864LCD智能Word文档下载推荐.docx_第1页
第1页 / 共22页
12864LCD智能Word文档下载推荐.docx_第2页
第2页 / 共22页
12864LCD智能Word文档下载推荐.docx_第3页
第3页 / 共22页
12864LCD智能Word文档下载推荐.docx_第4页
第4页 / 共22页
12864LCD智能Word文档下载推荐.docx_第5页
第5页 / 共22页
12864LCD智能Word文档下载推荐.docx_第6页
第6页 / 共22页
12864LCD智能Word文档下载推荐.docx_第7页
第7页 / 共22页
12864LCD智能Word文档下载推荐.docx_第8页
第8页 / 共22页
12864LCD智能Word文档下载推荐.docx_第9页
第9页 / 共22页
12864LCD智能Word文档下载推荐.docx_第10页
第10页 / 共22页
12864LCD智能Word文档下载推荐.docx_第11页
第11页 / 共22页
12864LCD智能Word文档下载推荐.docx_第12页
第12页 / 共22页
12864LCD智能Word文档下载推荐.docx_第13页
第13页 / 共22页
12864LCD智能Word文档下载推荐.docx_第14页
第14页 / 共22页
12864LCD智能Word文档下载推荐.docx_第15页
第15页 / 共22页
12864LCD智能Word文档下载推荐.docx_第16页
第16页 / 共22页
12864LCD智能Word文档下载推荐.docx_第17页
第17页 / 共22页
12864LCD智能Word文档下载推荐.docx_第18页
第18页 / 共22页
12864LCD智能Word文档下载推荐.docx_第19页
第19页 / 共22页
12864LCD智能Word文档下载推荐.docx_第20页
第20页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

12864LCD智能Word文档下载推荐.docx

《12864LCD智能Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《12864LCD智能Word文档下载推荐.docx(22页珍藏版)》请在冰点文库上搜索。

12864LCD智能Word文档下载推荐.docx

unsignedcharkey;

delay(100);

//上电,等待稳定

lcd_init();

//初始化LCD

sys_init();

while

(1)

{

if(dot)

{

DACconversion(PCF8591,0x40,A*dat/5.0);

dot=0;

}

if(change)

EA=0;

display();

f_sta=65536-(1000000/255.0)/f;

RCAP2H=f_sta/256;

//定时器2的16位捕捉/自动重载寄存器

RCAP2L=f_sta%256;

EA=1;

change=0;

if(key=got_key())//若有键,则处理按键

{

key_charge(key);

}

}

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

/****系统初始化****/

voidsys_init()

{

RCAP2L=0X00;

RCAP2H=0XFF;

ET2=1;

TR2=1;

EA=1;

/****键处理函数定义****/

voidkey_charge(unsignedcharkey)

switch(key)

case1:

if(++A>

5)A=0;

break;

case2:

if(++f>

10)f=1;

case3:

if(++wave>

2)wave=0;

change=1;

/****填充显示缓冲区****/

voidfil_buf()

ucharx,y,i,h,l;

memset(disp,0,64*16);

//disp的前64*16清零

DIS4[5]=A+'

0'

;

DIS4[13]=f/10+'

DIS4[14]=f%10+'

for(x=0;

x<

128;

x++)

{

switch(wave)

{

case0:

y=A*sin_code[(2*x*f)%255]/(255*5/48)+24-A*4.8;

break;

case1:

y=A*(x%32)/(32*5/48)+24-A*4.8;

//sanjiao

y=((x%64/32)?

48-y:

y);

case2:

l=24-A*4.8;

//juxing

h=(A*46/5+24-A*4.8);

y=(x%64/32)?

l:

h;

if(!

(x%32))

for(i=l;

i<

h;

i++)

{

set_dot(x,i);

}

}

set_dot(x,y);

/****显示函数定义****/

voiddisplay()

uchari;

clr_screen();

fil_buf();

lcd_pos(4,0);

for(i=0;

i<

16;

lcd_wdat(DIS4[i]);

delay(30);

photodisplay(disp);

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

/*LCD初始化设定*/

voidlcd_init()

LCD_PSB=1;

//并口方式

LCD_RST=0;

//液晶复位

delay(3);

LCD_RST=1;

lcd_wcmd(0x34);

//扩充指令操作

delay(5);

lcd_wcmd(0x30);

//基本指令操作

lcd_wcmd(0x0C);

//显示开,关光标

lcd_wcmd(0x01);

//清除LCD的显示内容

voidtimer2(void)interrupt5using2//该中断程序中使用第3组工作寄存器串行

staticunsignedcharx;

TF2=0;

//溢出标志

if(x++>

=255)x=0;

switch(wave)

case0:

dat=sin_code[x];

dat=x/128?

2*(255-x):

2*x;

if(x==1)dat=0;

if(x==128)dat=A*(255/5);

dot=1;

2、12864lcd头文件

#ifndef_12864_H

#define_12864_H

#include<

#defineucharunsignedchar

#defineuintunsignedint

/*************12864LCD引脚定义*************/

#defineLCD_dataP0//数据口

sbitLCD_RS=P2^5;

//寄存器选择输入

sbitLCD_RW=P2^6;

//液晶读/写控制

sbitLCD_EN=P2^7;

//液晶使能控制

sbitLCD_PSB=P2^2;

//串/并方式控制

sbitLCD_RST=P2^4;

//液晶复位端口

 

externxdatauchardisp[65][16];

voidset_dot(ucharx,uchary);

//voidclr_dot(ucharx,uchary);

voiddelay(intms);

bitlcd_busy();

voidlcd_wcmd(ucharcmd);

voidlcd_wdat(uchardat);

voidlcd_pos(ucharX,ucharY);

//voidlcdflag();

voidphotodisplay(uchar*bmp);

voidclr_screen();

#endif

3、12864lcd程序

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

*描述:

*

*12864标准字库液晶演示数据p0,控制p2*

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

intrins.h>

#include"

#definedelayNOP();

{_nop_();

_nop_();

xdatauchardisp[65][16];

voidset_dot(ucharx,uchary)

disp[y][x/8]|=0x80>

>

(x%8);

//voidclr_dot(ucharx,uchary)

//{

//disp[y][x/8]&

=~(0x80>

(x%8));

//}

/*延时函数*/

voiddelay(intms)

while(ms--)

uchary;

for(y=0;

y<

100;

y++);

}

/*检查LCD忙状态*/

/*lcd_busy为1时,忙,等待。

lcd-busy为0时,闲,可写指令与数据。

*/

/**/

bitlcd_busy()

{

bitresult;

LCD_RS=0;

LCD_RW=1;

LCD_EN=1;

delayNOP();

result=(bit)(P0&

0x80);

LCD_EN=0;

return(result);

/*写指令数据到LCD*/

/*RS=L,RW=L,E=高脉冲,D0-D7=指令码。

voidlcd_wcmd(ucharcmd)

while(lcd_busy());

LCD_RW=0;

_nop_();

P0=cmd;

/*写显示数据到LCD*/

/*RS=H,RW=L,E=高脉冲,D0-D7=数据。

voidlcd_wdat(uchardat)

LCD_RS=1;

P0=dat;

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

/*设定显示位置*/

voidlcd_pos(ucharX,ucharY)

ucharpos;

if(X==1)

{X=0x80;

elseif(X==2)

{X=0x90;

elseif(X==3)

{X=0x88;

elseif(X==4)

{X=0x98;

pos=X+Y;

lcd_wcmd(pos);

//显示地址

*图形显示*

voidphotodisplay(uchar*bmp)

uchari,j;

//写数据时,关闭图形显示

32;

lcd_wcmd(0x80+i);

//先写入水平坐标值

lcd_wcmd(0x80);

//写入垂直坐标值

for(j=0;

j<

j++)//再写入两个8位元的数据

lcd_wdat(*bmp++);

delay

(1);

lcd_wcmd(0x88);

j++)

lcd_wcmd(0x36);

//写完数据,开图形显示

lcd_wcmd(0x32);

*清屏函数*

voidclr_screen()

//清屏

4、DA-PCF8591头文件

#ifndef_PCF8591_H

#define_PCF8591_H

bitDACconversion(unsignedcharsla,unsignedcharc,unsignedcharVal);

5、DA-PCF8591程序

I2C.H"

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

DAC变换,转化函数

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

bitDACconversion(unsignedcharsla,unsignedcharc,unsignedcharVal)

Start_I2c();

//启动总线

SendByte(sla);

//发送器件地址

if(ack==0)return(0);

SendByte(c);

//发送控制字节

SendByte(Val);

//发送DAC的数值

Stop_I2c();

//结束总线

return

(1);

杨晖晖(09042315)

机械与电子工程学院

2012.07.02

6、正弦波函数及256点

#ifndef_SINCODE_H

#define_SINCODE_H

codeunsignedcharsin_code[]=

128,131,134,137,140,143,146,149,152,156,159,162,165,168,171,174,

176,179,182,185,188,191,193,196,199,201,204,206,209,211,213,216,

218,220,222,224,226,228,230,232,234,236,237,239,240,242,243,245,

246,247,248,249,250,251,252,252,253,254,254,255,255,255,255,255,

255,255,255,255,255,255,254,254,253,252,252,251,250,249,248,247,

246,245,243,242,240,239,237,236,234,232,230,228,226,224,222,220,

218,216,213,211,209,206,204,201,199,196,193,191,188,185,182,179,

176,174,171,168,165,162,159,156,152,149,146,143,140,137,134,131,

128,124,121,118,115,112,109,106,103,99,96,93,90,87,84,81,

79,76,73,70,67,64,62,59,56,54,51,49,46,44,42,39,

37,35,33,31,29,27,25,23,21,19,18,16,15,13,12,10,

9,8,7,6,5,4,3,3,2,1,1,0,0,0,0,0,

0,0,0,0,0,0,1,1,2,3,3,4,5,6,7,8,

9,10,12,13,15,16,18,19,21,23,25,27,29,31,33,35,

37,39,42,44,46,49,51,54,56,59,62,64,67,70,73,76,

79,81,84,87,90,93,96,99,103,106,109,112,115,118,121,124

7、I2C头文件声明

#ifndef_I2C_H

#define_I2C_H

I2C.H>

#defineNOP()_nop_()/*定义空指令*/

#define_Nop()_nop_()/*定义空指令*/

sbitSCL=P1^5;

//I2C时钟

sbitSDA=P3^6;

//I2C数据

externbitack;

//起动总线函数

externvoidStart_I2c();

//结束总线函数

externvoidStop_I2c();

//应答子函数

8、I2C总线的驱动程序

/**********************I2C总线的驱动程序*****************/

bitACK;

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

起动总线函数

函数原型:

voidStart_I2c();

功能:

启动I2C总线,即发送I2C起始条件.

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

voidStart_I2c()

SDA=1;

/*发送起始条件的数据信号*/

_Nop();

SCL=1;

/*起始条件建立时间大于4.7us,延时*/

SDA=0;

/*发送起始信号*/

/*起始条件锁定时间大于4μs*/

SCL=0;

/*钳住I2C总线,准备发送或接收数据*/

结束总线函数

voidStop_I2c();

结束I2C总线,即发送I2C结束条件.

voidStop_I2c()

SDA=0

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

当前位置:首页 > PPT模板 > 商务科技

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

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