51单片机读写内部EEPROM详解_第1页
51单片机读写内部EEPROM详解_第2页
51单片机读写内部EEPROM详解_第3页
51单片机读写内部EEPROM详解_第4页
51单片机读写内部EEPROM详解_第5页
免费预览已结束,剩余25页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、此文档共包含三个程序。第一个程序最简单易懂,看懂了基本就会读写51单片机内部EEPROM第二个程序和第一个读写 EEPROM(理差不多,包含有 LCD1602操作方法,有写字符串 的方法。第三个程序在原有基础上增加了外部中断功能,细心的人会发现,操作内部EEPROlMi程会将总中断关闭,实际上程序要用到中断时只需在原有的EEPRO臊作后加上开总中断即可。验证第二、第三个程序时需按程序内主程序中的操作说明进行烧录单片机,以验证是否成功操作单片机内部 EEPRO M程序1:/*作品:EEPRO睢验,开机还原关电前LED的亮灭状况单片机:STC89C52RC晶振:12M编译环境:Keil uVisi

2、on4 V9.00*/#include <STC89C52RC.H>#include <reg52.h> #include <intrins.h>#define uchar unsigned char/*#define uint unsigned int特殊功能寄存器声明*/ sfr ISP_DATA = 0xe2;sfr ISP_ADDRH = 0xe3;sfr ISP_ADDRL = 0xe4;sfr ISP_CMD = 0xe5;sfr ISP_TRIG = 0xe6;sfr ISP_CONTR = 0xe7;sbit LED1 = P2A0;/按钮1

3、/按钮2sbit LED2 = P2A1;sbit K1 = P3A2;sbit K2 = P3A3;void cc(uint addr);void xcx(uint addr,uchar dat);uchar dcx(uint addr);void Q0();/*函数:主程序 */ /*void main(void) (uchar V;V = dcx(0x2002);/ 开机读取 EEPROIML 2002h数据,还原关电前 LED的亮灭状况if(V = 2)LED1=0;LED2=1;else if(V = 6)LED1=0;LED2=0;while(1)if(!K1)while(!K1)

4、;/ 擦除第1个扇区(2000h21FFh)/ 对 EEPRO鼠 2002h 写入 2/ 擦除第1个扇区(2000h21FFh)/对 EEPROIML 2002h 写入 6LED1=0;LED2=1;cc(0x2000);xcx(0x2002,2);if(!K2)while(!K2);LED1=0;LED2=0;cc(0x2000);xcx(0x2002,6);*/*函数:擦除某一扇区(每个扇区512字节)入口: addr = 某一扇区首地址*/void cc(uint addr)(/打开IAP功能(ISP_CONTR.7)=1:允许编程改变 Flash,设置Flash操作等待时间/ 0x83

5、( 晶振 <5M) 0x82( 晶振 <10M) 0x81( 晶振 <20M) 0x80( 晶振 <40M)ISP_CONTR = 0x81;ISP_CMD = 0x03;/ 用户可以对"Data Flash/EEPROM 区”进行扇区擦除ISP_ADDRL = addr; / ISP/IAP操作时的地址寄存器低八位,ISP_ADDRH = addr>>8; / ISP/IAP操作时的地址寄存器高八位。EA =0;ISP_TRIG = 0x46;/在 ISPEN(ISP_CONTR.7)=1 时,对 ISP_TRIG 先写入 46h ,ISP_TR

6、IG = 0xB9;/再写入 B9h,ISP/IAP 命令才会生效。_nop_();Q0();/ 关闭 ISP/IAP/*函数:写一字节入口: addr = 扇区单元地址,dat =待写入数据 */void xcx(uint addr,uchar dat)(ISP_CONTR = 0x81;ISP_CMD = 0x02;ISP_ADDRL = addr;ISP_ADDRH = addr>>8;ISP_DATA = dat; /EA = 0;ISP_TRIG = 0x46;ISP_TRIG = 0xB9;_nop_();Q0();/*/用户可以对"Data Flash/EE

7、PROM区"进行字节编程数据进ISP_DATA/ 关闭 ISP/IAP函数:读一字节入口 : addr = 扇区单元地址 出口: dat = 读出的数据*/uchar dcx(uint addr) (uchar dat;用户可以对"Data Flash/EEPROM区”进行字节读ISP_CONTR = 0x81;ISP_CMD = 0x01;/ISP_ADDRL = addr;ISP_ADDRH = addr>>8;EA = 0;ISP_TRIG = 0x46;ISP_TRIG = 0xB9;_nop_(); dat = ISP_DATA;/取出数据Q0();/

8、关闭 ISP/IAPreturn dat; /*函数:关闭ISP/IAP操作 */ void Q0()关闭IAP功能待机模式,无ISP操作关闭IAP功能,清与ISP有关的特殊功能寄存器ISP_CONTR = 0;/ISP_CMD = 0;/ISP_TRIG = 0;/*STC89C52R吾B EEPRO降细地址表:第一扇区第四扇区起始地址结束地址起始地址束地址第二扇区第三扇区结束地址起始地址结束地址起始地址结2000h 21FFh 2200h 23FFh27FFH第五扇区第八扇区起始地址结束地址起始地址结束地址2800h 29FFh 2A00h 2BFFh2400h 25FFh 2600h第六

9、扇区结束地址起始地址结束地址2C00h 2DFFh 2E00h第七扇区起始地址2FFFh*/程序2:/*作品:EEPRO睢验,开机还原关电前LED的亮灭状况单片机:STC89C52RC晶振:12M编译环境:Keil uVision4 V9.00*/#include <STC89C52RC.H>#include <reg52.h> #include <intrins.h>#define uchar unsigned char/*#define uint unsigned int特殊功能寄存器声明*/ sfr ISP_DATA = 0xe2;sfr ISP_AD

10、DRH = 0xe3;sfr ISP_ADDRL = 0xe4;sfr ISP_CMD = 0xe5;sfr ISP_TRIG = 0xe6;sfr ISP_CONTR = 0xe7;sbit LED1 = P2A0;/按钮1/按钮2sbit LED2 = P2A1;sbit K1 = P3A2;sbit K2 = P3A3;void cc(uint addr);void xcx(uint addr,uchar dat);uchar dcx(uint addr);void Q0();#ifndef uchar#define uchar unsigned char#endif#ifndef ui

11、nt#define uint unsigned int#endif/*PIN 口定义*/#define LCD1602_DATAPINS P0 sbit LCD1602_E=P2”sbit LCD1602_RW=P2A5;sbit LCD1602_RS=P2A6;/*函数声明*/*在51单片机12MHz寸钟下的延时函数*/误差0usvoid Lcd1602_Delay1ms(uint c); / /*LCD1602写入8位命令子函数*/void LcdWriteCom(uchar com);/*LCD1602写入8位数据子函数*/ void LcdWriteData(uchar dat) /*

12、LCD1602初始化子程序*/void LcdInit();/*LCD1602写入字符串*/void LCDWrite_String(uchar x, uchar y,uchar z, uchar *s);/*设置LCD1602写入字符串的位置*/void LCD_set_xy(uchar x, uchar y, uchar z);uchar ON_Hour=0x07; /初始开灯时间 07 : 001uchar Warning_TempH=32; /高温报警温度5/*函数:主程序 */ /*void main(void) uchar V;V = dcx(0x2002);/ 开机读取 EEPR

13、OIML 2002h数据,还原关电前 LED的亮灭状况if(V = 2)LED1=0;LED2=1;else if(V = 6)LED1=0;LED2=0;while(1)/ 擦除第1个扇区(2000h21FFh)/ 对 EEPROM: 2002h 写入 2/ 擦除第1个扇区(2000h21FFh)/对 EEPROM: 2002h 写入 6if(!K1) while(!K1); LED1=0;LED2=1; cc(0x2000);xcx(0x2002,2);if(!K2) while(!K2); LED1=0;LED2=0; cc(0x2000);xcx(0x2002,6);*/ void m

14、ain(void)LcdInit();/不注销下面三句,烧录一次/注销小面三句,再烧录一次/若两次烧录后现象一致,则操作内部EEPRO城功/cc(0x2000);/ 擦除第 1 个扇区(2000h21FFh)xcx(0x2000,ON_Hour); /对 EEPROIM: 2002h 写入 2xcx(0x2001,Warning_TempH);/ 对 EEPROIM: 2002h 写入 2/ON_Hour = dcx(0x2000);Warning_TempH = dcx(0x2001);if(ON_Hour=0x07)|(Warning_TempH=32)LcdWriteCom(0x80);

15、LCDWrite_String(0, 1,7, "SUCCESS");elseLCDWrite_String(0, 1,5, "ERROR");while(1);/*函数:擦除某一扇区(每个扇区 512字节)入口: addr = 某一扇区首地址 */void cc(uint addr)/打开IAP功能(ISP_CONTR.7)=1:允许编程改变 Flash,设置Flash操作等待时间/ 0x83( 晶振 <5M) 0x82( 晶振 <10M) 0x81( 晶振 <20M) 0x80( 晶振 <40M)ISP_CONTR = 0x8

16、1;ISP_CMD = 0x03;/ 用户可以对"Data Flash/EEPROM 区”进行扇区擦除ISP_ADDRL = addr; ISP/IAP操作时的地址寄存器低八位,ISP_ADDRH = addr>>8; ISP/IAP操作时的地址寄存器高八位。EA =0;ISP_TRIG = 0x46;/在 ISPEN(ISP_CONTR.7)=1 时,对 ISP_TRIG 先写入 46h ,ISP_TRIG = 0xB9;/再写入 B9h,ISP/IAP 命令才会生效。_nop_();Q0();/ 关闭 ISP/IAP/*函数:写一字节入口: addr = 扇区单元地址

17、,dat =待写入数据 */void xcx(uint addr,uchar dat)ISP_CONTR = 0x81;ISP_CMD = 0x02;ISP_ADDRL = addr;ISP_ADDRH = addr>>8;ISP_DATA = dat; /EA = 0;ISP_TRIG = 0x46;ISP_TRIG = 0xB9;_nop_();Q0();/用户可以对"Data Flash/EEPROM区"进行字节编程数据进ISP_DATA/ 关闭 ISP/IAP/*函数:读一字节入口 : addr = 扇区单元地址 出口: dat = 读出的数据 */uc

18、har dcx(uint addr)(uchar dat;ISP_CONTR = 0x81;ISP_CMD = 0x01;/ISP_ADDRL = addr;ISP_ADDRH = addr>>8;EA = 0;ISP_TRIG = 0x46;ISP_TRIG = 0xB9;_nop_();dat = ISP_DATA;Q0();return dat;/*用户可以对"Data Flash/EEPROM区”进行字节读/取出数据/ 关闭 ISP/IAP函数:关闭ISP/IAP操作*/void Q0()(ISP_CONTR = 0;ISP_CMD = 0;ISP_TRIG =

19、0;/关闭IAP功能待机模式,无ISP操作关闭IAP功能,清与ISP有关的特殊功能寄存器/*STC89C52RB EEPRO降细地址表:第一扇区第四扇区起始地址结束地址起始地址束地址第二扇区第三扇区结束地址起始地址结束地址起始地址结2000h 21FFh 2200h 23FFh 2400h 25FFh 2600h27FFH第五扇区第八扇区起始地址结束地址结束地址第六扇区第七扇区起始地址结束地址起始地址结束地址起始地址2800h 29FFh 2A00h 2BFFh2C00h 2DFFh 2E00h2FFFh*/* 函数名 :Lcd1602_Delay1ms* 函数功能:延时函数,延时 1ms*

20、输入:c* 输出:无*说名:该函数是在12MHz晶振下,12分频单片机的延时。*/void Lcd1602_Delay1ms(uint c) / 误差 0usuchar a,b;for (; c>0; c-)for (b=199;b>0;b-)for(a=1;a>0;a-);/* 函数名 :void LCDWrite_String(uchar x, uchar y, uchar *s)* 函数功能:向LCD写入一个字符串* 输入:x,y,*s*输出: 无*/void LCDWrite_String(uchar x, uchar y, uchar z, uchar *s)/x

21、015 , y 0,1,2,3LCD_set_xy(x,y,z);while(*s) LcdWriteData(*s); s+; /* 函数名 :void LCD_set_xy(uchar x, uchar y,uchar z)* 函数功能:指定向LCD写入字符串的位置* 输 入 :x,y,z/x:横坐标y:纵坐标z:字符串长度* 输 出 : 无*/void LCD_set_xy(uchar x,uchar y,uchar z)uchar i;if(y=0)LcdWriteCom(0x80+x);for(i=0;i<z;i+)LcdWriteData('');LcdWri

22、teCom(0x80+x);if(y=1)LcdWriteCom(0xc0+x);for(i=0;i<z;i+)LcdWriteData('');LcdWriteCom(0xc0+x);if(y=2)LcdWriteCom(0x94+x);for(i=0;i<z;i+)LcdWriteData('');LcdWriteCom(0x94+x); if(y=3) LcdWriteCom(0xd4+x);for(i=0;i<z;i+)LcdWriteData('');LcdWriteCom(0xd4+x);/* 函数名 :LcdWri

23、teCom* 函数功能:向LCD写入一个字节的命令* 输入:com* 输出:无*/#ifndef LCD1602_4PINS / 当没有定义这个 LCD1602_4PINS时 void LcdWriteCom(uchar com) /写入命令LCD1602_E = 0;/使能LCD1602_RS = 0; /选择发送命令LCD1602_RW = 0; /选择写入LCD1602_DATAPINS = com;Lcd1602_Delay1ms(1);/放入命令/等待数据稳定LCD1602_E = 1;/写入时序Lcd1602_Delay1ms(5); / 保持时间 LCD1602_E = 0;#e

24、lsevoid LcdWriteCom(uchar com) /写入命令LCD1602_E = 0;/ 使能清零LCD1602_RS = 0; / 选择写入命令LCD1602_RW = 0; / 选择写入LCD1602_DATAPINS = com; /由于4位的接线是接到 P0 口的高四位,所以传送高四位不用改Lcd1602_Delay1ms(1);LCD1602_E = 1;/ 写入时序Lcd1602_Delay1ms(5);LCD1602_E = 0;/ Lcd1602_Delay1ms(1);LCD1602_DATAPINS = com << 4; 发送低四位 Lcd160

25、2_Delay1ms(1);LCD1602_E = 1;/ 写入时序Lcd1602_Delay1ms(5);LCD1602_E = 0;#endif/*函数名:LcdWriteData*函数功能: 向LCD写入一个字节的数据*输入:dat*输出:无*/#ifndef LCD1602_4PINSvoid LcdWriteData(uchar dat)/ 写入数据LCD1602_E = 0;/ 使能清零LCD1602_RS = 1; / 选择输入数据LCD1602_RW = 0; / 选择写入LCD1602_DATAPINS = dat; 写入数据 Lcd1602_Delay1ms(1);LCD1

26、602_E = 1; /写入时序Lcd1602_Delay1ms(5); /保持时间LCD1602_E = 0;#elsevoid LcdWriteData(uchar dat)/ 写入数据LCD1602_E = 0;/ 使能清零LCD1602_RS = 1; /选择写入数据LCD1602_RW = 0; / 选择写入LCD1602_DATAPINS = dat; 由于4位的接线是接到 P0 口的高四位,所以传送高四位 不用改Lcd1602_Delay1ms(1);LCD1602_E = 1;/ 写入时序Lcd1602_Delay1ms(5);LCD1602_E = 0;LCD1602_DAT

27、APINS = dat << 4; /写入低四位Lcd1602_Delay1ms(1);LCD1602_E = 1;/ 写入时序Lcd1602_Delay1ms(5);LCD1602_E = 0;#endif函数名 函数功能 输入输出/*:LcdInit():初始化LCD屏:无:无*/#ifndefLCD1602 4PINSvoid LcdInit()LcdWriteCom(0x38); /LcdWriteCom(0x0c); /LcdWriteCom(0x06); /LcdWriteCom(0x01); /LcdWriteCom(0x80); /#elsevoid LcdInit

28、()/LCD初始化子程序开显示开显示不显示光标 写一个指针加1清屏设置数据指针起点/LCD初始化子程序/将8位总线转为4位总线/在四位线下的初始化开显示不显示光标写一个指针加1清屏设置数据指针起点LcdWriteCom(0x32);LcdWriteCom(0x28);LcdWriteCom(0x0c); /LcdWriteCom(0x06); /LcdWriteCom(0x01); /LcdWriteCom(0x80); /#endif程序3:/*作品:EEPRO睢验,开机还原关电前 LED的亮灭状况单片机:晶振:编译环境:STC89C52RC12MKeil uVision4 V9.00*/#

29、include <STC89C52RC.H> #include <reg52.h> #include <intrins.h>#define uchar unsigned char/*#define uint unsigned int特殊功能寄存器声明*/ sfr ISP_DATA = 0xe2;sfr ISP_ADDRH = 0xe3;sfr ISP_ADDRL = 0xe4;sfr ISP_CMD = 0xe5;sfr ISP_TRIG = 0xe6;sfr ISP_CONTR = 0xe7;sbit LED1 = P2A0;/按钮1/按钮2sbit LE

30、D2 = P2A1;sbit K1 = P3A2;sbit K2 = P3A3;void cc(uint addr);void xcx(uint addr,uchar dat);uchar dcx(uint addr);void Q0();#ifndef uchar#define uchar unsigned char#endif#ifndef uint#define uint unsigned int#endif/*PIN 口定义*/ #define LCD1602_DATAPINS P0 sbit LCD1602_E=P2” sbit LCD1602_RW=P2A5;sbit LCD160

31、2_RS=P2A6;/*函数声明*/*在51单片机12MHz寸钟下的延时函数*/void Lcd1602_Delay1ms(uint c); /*LCD1602写入8位命令子函数 void LcdWriteCom(uchar com);/*LCD1602写入8位数据子函数 void LcdWriteData(uchar dat) /*LCD1602初始化子程序*/ void LcdInit();/*/*/误差0us/*LCD1602写入字符串*/void LCDWrite_String(uchar x, uchar y,uchar z, uchar *s);/*设置LCD1602写入字符串的位

32、置*/void LCD_set_xy(uchar x, uchar y, uchar z);void IntConfiguration();/*uchar ON_Hour=0x07; / 初始开灯时间 07 : 00 1uchar Warning_TempH=32; /高温报警温度5*/uchar ON_Hour; / 初始开灯时间 07 : 00uchar Warning_TempH;/高温报警温度/*函数:主程序 */void main(void)LcdInit();IntConfiguration();/*cc(0x2000);/ 擦除第 1 个扇区(2000h21FFh)xcx(0x2

33、000,ON_Hour); / 对 EEPROlM: 2002h 写入 2xcx(0x2001,Warning_TempH);/ 对 EEPROIM: 2002h 写入 2*/while(1)ON_Hour = dcx(0x2000);Warning_TempH = dcx(0x2001);if(ON_Hour=0x07)|(Warning_TempH=32) LcdWriteCom(0x80);LCDWrite_String(0, 1,7, "SUCCESS");elseLcdWriteCom(0x80);LCDWrite_String(0, 1,5, "ERR

34、OR");/*uchar V;V = dcx(0x2002);/开机读取 EEPROM: 2002h数据,还原关电前 LED的亮灭状况if(V = 2)LED1=0;LED2=1;else if(V = 6)LED1=0;LED2=0;while(1)(if(!K1)(/ 擦除第1个扇区(2000h21FFh)/ 对 EEPRO鼠 2002h 写入 2while(!K1); LED1=0;LED2=1; cc(0x2000);xcx(0x2002,2);)if(!K2)(while(!K2);LED1=0;LED2=0;cc(0x2000);/ 擦除第 1 个扇区(2000h21FF

35、h)xcx(0x2002,6);/对 EEPROIML 2002h 写入 6) )*/)/*函数:擦除某一扇区(每个扇区 512字节)入口: addr = 某一扇区首地址 */void cc(uint addr)(/打开IAP功能(ISP_CONTR.7)=1:允许编程改变 Flash,设置Flash操作等待时间/ 0x83( 晶振 <5M) 0x82( 晶振 <10M) 0x81( 晶振 <20M) 0x80( 晶振 <40M)ISP_CONTR = 0x81;ISP_CMD = 0x03;/ 用户可以对"Data Flash/EEPROM 区”进行扇区擦除

36、ISP_ADDRL = addr; ISP/IAP操作时的地址寄存器低八位,ISP_ADDRH = addr>>8; ISP/IAP操作时的地址寄存器高八位。EA =0;ISP_TRIG = 0x46;/在 ISPEN(ISP_CONTR.7)=1 时,对 ISP_TRIG 先写入 46h ,ISP_TRIG = 0xB9;/再写入 B9h,ISP/IAP 命令才会生效。_nop_();Q0();/ 关闭 ISP/IAP) /*函数:写一字节入口: addr = 扇区单元地址,dat =待写入数据*/void xcx(uint addr,uchar dat)(ISP_CONTR =

37、 0x81;ISP_CMD = 0x02;/ 用户可以对"Data Flash/EEPROM 区"进行字节编程ISP_ADDRL = addr;ISP_ADDRH = addr>>8;ISP_DATA = dat; /数据进 ISP_DATAEA = 0;ISP_TRIG = 0x46;ISP_TRIG = 0xB9;_nop_();Q0();/ 关闭 ISP/IAP/*函数:读一字节入口 : addr = 扇区单元地址出口: dat = 读出的数据 */uchar dcx(uint addr)(uchar dat;用户可以对"Data Flash/E

38、EPROM区”进行字节读/取出数据/ 关闭 ISP/IAPISP_CONTR = 0x81;ISP_CMD = 0x01;/ISP_ADDRL = addr;ISP_ADDRH = addr>>8;EA = 0;ISP_TRIG = 0x46;ISP_TRIG = 0xB9;_nop_();dat = ISP_DATA;Q0();return dat;/*函数:关闭ISP/IAP操作*/void Q0()/关闭IAP功能待机模式,无ISP操作关闭IAP功能,清与ISP有关的特殊功能寄存器(ISP_CONTR = 0;ISP_CMD = 0;ISP_TRIG = 0;EA=1;/*S

39、TC89C52R吾B EEPRO降细地址表:第一扇区第四扇区起始地址结束地址起始地址束地址第二扇区第三扇区结束地址起始地址结束地址起始地址结2000h 21FFh 2200h 23FFh 2400h 25FFh 2600h27FFH第五扇区第八扇区起始地址结束地址起始地址结束地址2800h 29FFh 2A00h 2BFFh第六扇区结束地址起始地址结束地址2C00h 2DFFh 2E00h第七扇区起始地址2FFFh*/*函娄攵名:Lcd1602_Delay1ms*函数功能: 延时函数,延时 1ms*输入:c*输出:无*说名:该函数是在12MHz晶振下,*12分频单片机的延时。误差0usvoid

40、 Lcd1602_Delay1ms(uint c) / uchar a,b;for (; c>0; c-)for (b=199;b>0;b-)for(a=1;a>0;a-);/* * 函数名 :void LCDWrite_String(uchar x, uchar y, uchar *s)* 函数功能:向LCD写入一个字符串* 输入:x,y,*s* 输出: 无*/void LCDWrite_String(uchar x, uchar y, uchar z, uchar *s)/x 015 , y 0,1,2,3LCD_set_xy(x,y,z);while(*s)LcdWri

41、teData(*s);s+;/* * 函数名 :void LCD_set_xy(uchar x, uchar y,uchar z)* 函数功能:指定向LCD写入字符串的位置* 输 入 :x,y,z/x:横坐标y:纵坐标z:字符串长度* 输 出 : 无*/void LCD_set_xy(uchar x,uchar y,uchar z)uchar i;if(y=0)LcdWriteCom(0x80+x);for(i=0;i<z;i+)LcdWriteData('');LcdWriteCom(0x80+x);if(y=1) LcdWriteCom(0xc0+x); for(i=

42、0;i<z;i+) LcdWriteData('');LcdWriteCom(0xc0+x);if(y=2) LcdWriteCom(0x94+x); for(i=0;i<z;i+) LcdWriteData('');LcdWriteCom(0x94+x);if(y=3)LcdWriteCom(0xd4+x); for(i=0;i<z;i+) LcdWriteData('');LcdWriteCom(0xd4+x); /*函数名*函数功能*输入*输出*:LcdWriteCom: 向LCD写入一个字节的命令:com:无*/#ifn

43、def LCD1602_4PINS / 当没有定义这个 LCD1602_4PINS时 void LcdWriteCom(uchar com) /写入命令LCD1602_E = 0;/使能LCD1602_RS = 0; /选择发送命令LCD1602_RW = 0; /选择写入LCD1602_DATAPINS = com;Lcd1602_Delay1ms(1);/放入命令/等待数据稳定LCD1602_E = 1;/ 写入时序Lcd1602_Delay1ms(5); / 保持时间LCD1602_E = 0;#elsevoid LcdWriteCom(uchar com) / 写入命令LCD1602_E = 0;/ 使能清零LCD1602_RS = 0; / 选择写入命令LCD1602_RW = 0; / 选择写入LCD1602_DATAPINS = com; /由于4位的接线是接到 P0 口的高四位,所以传送高四位 不用改Lcd1602_Delay1ms(1);LCD1602_E = 1;/ 写入时序Lcd1602_Delay1ms(5);L

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论