51单片机程序存储器.docx

上传人:b****5 文档编号:7265986 上传时间:2023-01-22 格式:DOCX 页数:14 大小:16.16KB
下载 相关 举报
51单片机程序存储器.docx_第1页
第1页 / 共14页
51单片机程序存储器.docx_第2页
第2页 / 共14页
51单片机程序存储器.docx_第3页
第3页 / 共14页
51单片机程序存储器.docx_第4页
第4页 / 共14页
51单片机程序存储器.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

51单片机程序存储器.docx

《51单片机程序存储器.docx》由会员分享,可在线阅读,更多相关《51单片机程序存储器.docx(14页珍藏版)》请在冰豆网上搜索。

51单片机程序存储器.docx

51单片机程序存储器

IIC存储器读写

1、LCD.c

#include

#include

unsignedcharcodenumber_X[]=

{//宽x高=8x16,纵向字节倒序

0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,//0

0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,

0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,//1

0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,

0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,//2

0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,

0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,//3

0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,

0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,//4

0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,

0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,//5

0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,

0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,//6

0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,

0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,//7

0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,

0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,//8

0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,

0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,//9

0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//.

0x00,0x00,0x00,0x00,0x00,0x60,0x60,0x00,

0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x00,//-

0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//nop

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,//:

0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00

};

voidLCD_WriteCommandE1(unsignedcharcom)

{

while(CRADD1&0x80);

CWADD1=com;

}

voidLCD_WriteDataE1(unsignedchardat)

{

while(CRADD1&0x80);

DWADD1=dat;

}

voidLCD_WriteCommandE2(unsignedcharcom)

{

while(CRADD2&0x80);

CWADD2=com;

}

voidLCD_WriteDataE2(unsignedchardat)

{

while(CRADD2&0x80);

DWADD2=dat;

}

voidLCD_Init()

{

LCD_WriteCommandE1(0xe2);

LCD_WriteCommandE2(0xe2);

LCD_WriteCommandE1(0xa4);

LCD_WriteCommandE2(0xa4);

LCD_WriteCommandE1(0xa9);

LCD_WriteCommandE2(0xa9);

LCD_WriteCommandE1(0xa0);

LCD_WriteCommandE2(0xa0);

LCD_WriteCommandE1(0xc0);

LCD_WriteCommandE2(0xc0);

LCD_WriteCommandE1(0xaf);

LCD_WriteCommandE2(0xaf);

}

voidLCD_Clear(void)

{

unsignedchari,j;

for(i=0;i<4;i++)

{

LCD_WriteCommandE1(i+0xb8);

LCD_WriteCommandE2(i+0xb8);

LCD_WriteCommandE1(0x00);

LCD_WriteCommandE2(0x00);

for(j=0;j<0x50;j++)

{

LCD_WriteDataE1(0x00);

LCD_WriteDataE2(0x00);

}

}

}

voiddisplay_cn(unsignedcharlin,unsignedintcol,unsignedintlen,unsignedchar*p)

{

unsignedintseg,i,j;

unsignedchara,L,n;

switch(lin)

{

case0:

n=0xba;break;

case1:

n=0xb8;break;

}

for(i=0;i

{

for(j=0;j<2;j++)

{

L=col;

LCD_WriteCommandE1(n+j);

LCD_WriteCommandE2(n+j);

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

{

if(L<61)

{

a=L;

LCD_WriteCommandE1(a);

LCD_WriteDataE1(*p++);

}

else

{

a=L-61;

LCD_WriteCommandE2(a);

LCD_WriteDataE2(*p++);

}

L++;

}

}

col=col+16;

}

}

voiddisplay_number(unsignedcharlin,unsignedintcol,unsignedcharnum)

{

unsignedintseg,i,j;

unsignedchara,L,n,k;

switch(lin)

{

case0:

n=0xba;break;

case1:

n=0xb8;break;

}

k=num*16;

for(j=0;j<2;j++)

{

L=col;

LCD_WriteCommandE1(n+j);

LCD_WriteCommandE2(n+j);

for(seg=0;seg<8;seg++)

{

if(L<61)

{

a=L;

LCD_WriteCommandE1(a);

LCD_WriteDataE1(number_X[k++]);

}

else

{

a=L-61;

LCD_WriteCommandE2(a);

LCD_WriteDataE2(number_X[k++]);

}

L++;

}

}

}

voiddisplay_unsigned_int(unsignedcharlin,unsignedintcol,unsignedintdat)

{

unsignedintseg;

unsignedchark[4];

k[3]=dat%10;

k[2]=((dat/10)%10);

k[1]=((dat/100)%10);

k[0]=((dat/1000)%10);

if(k[0]==0){k[0]=12;}

if((k[0]==12)&&(k[1]==0)){k[0]=12;k[1]=12;}

if((k[0]==12)&&(k[1]==12)&&(k[2]==0)){k[0]=12;k[1]=12;k[2]=12;}

for(seg=0;seg<4;seg++)

{

display_number(lin,col,k[seg]);

col=col+10;

}

}

voiddisplay_signed_int(unsignedcharlin,unsignedintcol,signedintdat)

{

unsignedintseg;

unsignedchark[5],a;

k[0]=12;

if(dat<0)

{

dat=(~dat)+1;

k[0]=11;

}

k[4]=dat%10;

k[3]=((dat/10)%10);

k[2]=((dat/100)%10);

k[1]=((dat/1000)%10);

a=k[0];

if(k[1]==0){k[0]=12;k[1]=a;}

if((k[1]==a)&&(k[2]==0)){k[0]=12;k[1]=12;k[2]=a;}

if((k[1]==12)&&(k[2]==a)&&(k[3]==0)){k[0]=12;k[1]=12;k[2]=12;k[3]=a;}

for(seg=0;seg<5;seg++)

{

display_number(lin,col,k[seg]);

col=col+10;

}

}

voiddisplay_unsigned_char(unsignedcharlin,unsignedintcol,unsignedchardat)

{

unsignedintseg;

unsignedchark[3];

k[1]=dat%10;

k[0]=((dat/10)%10);

for(seg=0;seg<2;seg++)

{

display_number(lin,col,k[seg]);

col=col+10;

}

}

2、LCD.h

#include

#include

#ifndef__LCD__

#define__LCD__

#defineCWADD1XBYTE[0x8000]

#defineDWADD1XBYTE[0x8001]

#defineCRADD1XBYTE[0x8002]

#defineDRADD1XBYTE[0x8003]

#defineCWADD2XBYTE[0x8004]

#defineDWADD2XBYTE[0x8005]

#defineCRADD2XBYTE[0x8006]

#defineDRADD2XBYTE[0x8007]

externvoidLCD_Init();

externvoiddisplay_cn(unsignedcharlin,unsignedintcol,unsignedintlen,unsignedchar*p);

externvoiddisplay_signed_int(unsignedcharlin,unsignedintcol,signedintdat);

externvoiddisplay_unsigned_int(unsignedcharlin,unsignedintcol,unsignedintdat);

externvoiddisplay_unsigned_char(unsignedcharlin,unsignedintcol,unsignedchardat);

externvoidLCD_Clear(void);

#endif

1、IIC.c

#include

#include"IIC.h"

sbitSCL_IIC=P1^0;

sbitSDA_IIC=P1^1;

voidwait_IIC(unsignedintn)

{//ok

unsignedinti;

for(i=0;i

}

voidstart_IIC(void)

{

SDA_IIC=1;

SCL_IIC=1;

SDA_IIC=0;

SCL_IIC=0;

}

voidstop_IIC(void)

{

SCL_IIC=0;

SDA_IIC=0;

SCL_IIC=1;

SDA_IIC=1;

}

voidAck()

{

SDA_IIC=0;

SCL_IIC=1;

SCL_IIC=0;

SDA_IIC=1;

}

voidNoAck()

{

SDA_IIC=1;

SCL_IIC=1;

SCL_IIC=0;

}

bitTestAck()

{

SDA_IIC=1;

SCL_IIC=1;

CY=SDA_IIC;

SCL_IIC=0;

return(CY);

}

voidsend_IIC(unsignedcharI_data)

{

unsignedchari;

for(i=0;i<8;i++)

{

SDA_IIC=(bit)(I_data&0x80);

SCL_IIC=1;

SCL_IIC=0;

I_data=I_data<<1;

}

}

charreceive_IIC(void)

{

unsignedchari,rbyte=0;

for(i=0;i<8;i++)

{

SCL_IIC=1;

rbyte=rbyte<<1;

rbyte=rbyte|((unsignedchar)(SDA_IIC));

SCL_IIC=0;

}

return(rbyte);

}

voidwrite_IIC(unsignedcharw_add,unsignedcharw_data)

{

start_IIC();

send_IIC(0xa0);

TestAck();

send_IIC(w_add);

TestAck();

send_IIC(w_data);

TestAck();

stop_IIC();

wait_IIC(60000);

wait_IIC(60000);

}

unsignedcharread_IIC(unsignedcharr_add)

{

unsignedchardatar_data,i;

start_IIC();

send_IIC(0xa0);

TestAck();

send_IIC(r_add);

TestAck();

start_IIC();

send_IIC(0xa1);

TestAck();

r_data=receive_IIC();

NoAck();

stop_IIC();

return(r_data);

}

2、IIC.h

#ifndef__IIC__

#define__IIC__

externvoidwrite_IIC(unsignedcharw_add,unsignedcharw_data);

externunsignedcharread_IIC(unsignedcharr_add);

#endif

3、MAIN.c

#include

#include

#include

#include"IIC.h"

voidwait(unsignedintx)

{

unsignedinti;

i=0;

for(i=0;i

}

voiddisplay(void)

{

unsignedchari,col;

col=18;

for(i=0;i<4;i++)

{

display_unsigned_char(0,col,RD_buf[i]);

col=col+28;

}

col=18;

for(i=0;i<4;i++)

{

display_unsigned_char(1,col,TD_buf[i]);

col=col+28;

}

}

voidRD_DATA(unsignedchar*buf,unsignedcharlen)

{

unsignedchari;

for(i=0;i

{

buf[i]=read_IIC(i);

}

}

voidWD_DATA(unsignedchar*buf,unsignedcharlen)

{

unsignedchari;

for(i=0;i

{

write_IIC(i,buf[i]);

}

}

voidCL_DATA(unsignedchar*buf,unsignedcharlen)

{

unsignedchari;

for(i=0;i

{

buf[i]=i+count;

}

}

voidmain(void)

{

unsignedchari;

LCD_Init();

LCD_Clear();

display_cn(0,0,1,RD_dat);

display_cn(1,0,1,TD_dat);

for(i=0;i<4;i++)

{

TD_buf[i]=i;

}

while

(1)

{

display();

if(KEY0==0)

{

wait(100);

if(KEY0==0)

{

WD_DATA(TD_buf,4);

count++;

if(count>95)count=0;

CL_DATA(TD_buf,4);

display();

wait(60000);

RD_DATA(RD_buf,4);

}

}

}

}

4、MAIN.h

#ifndefMAIN_H__

#defineMAIN_H__

//中文字模库16x16点阵

codeunsignedcharRD_dat[]={//纵向字节倒序

//读

};

codeunsignedcharTD_dat[]={

//写

};

sbitKEY0=P1^2;

unsignedcharRD_buf[5],TD_buf[5];

unsignedcharcount;

#endif

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

当前位置:首页 > 求职职场 > 面试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1