51单片机程序(存储器)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00, //:
0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00
};
void LCD_WriteCommandE1(unsigned char com)
{
while(CRADD1 & 0x80);
CWADD1 = com;
LCD_WriteCommandE2(i+0xb8);
LCD_WriteCommandE1(0x00);
LCD_WriteCommandE2(0x00);
for(j=0;j<0x50;j++)
{
LCD_WriteDataE1(0x00);
LCD_WriteDataE2(0x00);
}
}
}
void display_cn(unsigned char lin,unsigned int col,unsigned int len,unsigned char *p)
SDA_IIC = 0;
SCL_IIC = 0;
}
void stop_IIC(void)
{
SCL_IIC = 0;
SDA_IIC = 0;
SCL_IIC = 1;
LCD_WriteDataE1(number_X[k++]);
}
else
{
a = L-61;
LCD_WriteCommandE2(a);
LCD_WriteDataE2(number_X[k++]);
}
L++;
}
}
}
void display_unsigned_int(unsigned char lin,unsigned int col,unsigned int dat)
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++);
extern void display_signed_int(unsigned char lin,unsigned int col,signed int dat);
extern void display_unsigned_int(unsigned char lin,unsigned int col,unsigned int dat);
{
unsigned int seg;
unsigned char k[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);
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,
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;}
extern void display_unsigned_char(unsigned char lin,unsigned int col,unsigned char dat);
extern void LCD_Clear(void);
#endif
1、IIC.c
#include <reg51.h>
#include "IIC.h"
}
L++;
}
}
col=col+16;
}
}
void display_number(unsigned char lin,unsigned int col,unsigned char num)
{
unsigned int seg,i,j;
unsigned char a,L,n,k;
switch(lin)
{
case 0: n=0xba;break;
sbit SCL_IIC = P1^0;
sbit SDA_IIC = P1^1;
void wait_IIC(unsigned int n)
{//ok
unsigned inti;
for(i=0;i<n;i++);
}
void start_IIC(void)
{
SDA_IIC = 1;
SCL_IIC = 1;
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,
#define DWADD2 XBYTE[0x8005]
#define CRADD2 XBYTE[0x8006]
#define DRADD2 XBYTE[0x8007]
extern void LCD_Init();
extern void display_cn(unsigned char lin,unsigned int col,unsigned int len,unsigned char *p);
{
unsigned int seg,i,j;
unsigned char a,L,n;
switch(lin)
{
case 0: n=0xba;break;
case 1: n=0xb8;break;
}
for(i=0;i<len;i++)
{
for(j=0;j<2;j++)
{
L=col;
LCD_WriteCommandE1(n+j);
LCD_WriteCommandE2(0xa4);
LCD_WriteCommandE1(0xa9);
LCD_WriteCommandE2(0xa9);
LCD_WriteCommandE1(0xa0);
LCD_WriteCommandE2(0xa0);
LCD_WriteCommandE1(0xc0);
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,
#ifndef __LCD__
#define __LCD__
#define CWADD1 XBYTE[0x8000]
#define DWADD1 XBYTE[0x8001]
#define CRADD1 XBYTE[0x8002]
#define DRADD1 XBYTE[0x8003]
#define CWADD2 XBYTE[0x8004]
unsigned char k[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 <reg51.h>
#include <absacc.h>
}
void LCD_WriteDataE1(unsigned char dat)
{
while(CRADD1 & 0x80);
DWADD1 = dat;
}
void LCD_WriteCommandE2(unsigned char com)
{
while(CRADD2 & 0x80);
CWADD2Biblioteka = com;LCD_WriteCommandE2(0xc0);
LCD_WriteCommandE1(0xaf);
LCD_WriteCommandE2(0xaf);
}
void LCD_Clear(void)
{
unsigned char i,j;
for(i=0;i<4;i++)
{
LCD_WriteCommandE1(i+0xb8);
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,
}
void LCD_WriteDataE2(unsigned char dat)
{
while(CRADD2 & 0x80);
DWADD2 = dat;
}
void LCD_Init()
{
LCD_WriteCommandE1(0xe2);
LCD_WriteCommandE2(0xe2);
LCD_WriteCommandE1(0xa4);
case 1: 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);
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,
for(seg=0;seg<5;seg++)
{
display_number(lin,col,k[seg]);
col=col+10;
}
}
void display_unsigned_char(unsigned char lin,unsigned int col,unsigned char dat)
{
unsigned int seg;
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;
}
}
void display_signed_int(unsigned char lin,unsigned int col,signed int dat)
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,
IIC存储器读写
1、LCD.c
#include <reg51.h>
#include<LCD.h>
unsigned char code number_X[]=
{ //宽x高=8x16,纵向字节倒序
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00, //0
0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,
{
unsigned int seg;
unsigned char k[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;}
相关文档
最新文档