




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、此文檔共包含三個(gè)程序。第一個(gè)程序最簡(jiǎn)單易懂,看懂了基本就會(huì)讀寫51 單片機(jī)內(nèi)部EEPROM了。第二個(gè)程序和第一個(gè)讀寫EEPROM原理差不多,包含有LCD1602操作方法,有寫字符串的方法。第三個(gè)程序在原有基礎(chǔ)上增加了外部中斷功能,細(xì)心的人會(huì)發(fā)現(xiàn),操作內(nèi)部EEPROM過程會(huì)將總中斷關(guān)閉,實(shí)際上程序要用到中斷時(shí)只需在原有的EEPROM操作后加上開總中斷即可。驗(yàn)證第二、第三個(gè)程序時(shí)需按程序內(nèi)主程序中的操作說明進(jìn)行燒錄單片機(jī),以驗(yàn)證是否成功操作單片機(jī)內(nèi)部EEPRO。M程序 1:/*作品:EEPROM實(shí)驗(yàn),開機(jī)還原關(guān)電前 LED的亮滅狀況單片機(jī):STC89C52RC晶振:12M編譯環(huán)境:Keil uVi
2、sion4 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 = P20;/按鈕
3、1/按鈕2sbit LED2 = P21;sbit K1 = P32;sbit K2 = P33;void cc(uint addr);void xcx(uint addr,uchar dat);uchar dcx(uint addr);void Q0();/* 函數(shù):主程序*/ /*void main(void)uchar V;V = dcx(0x2002);/ 開機(jī)讀取EEPROM區(qū) 2002h 數(shù)據(jù) , 還原關(guān)電前LED的亮滅狀況if(V = 2)LED1=0;LED2=1;else if(V = 6)LED1=0;LED2=0;while(1)if(!K1)while(!K1);/ 擦
4、除第 1 個(gè)扇區(qū)(2000h21FFh)/ 對(duì) EEPROM區(qū) 2002h 寫入 2/ 擦除第 1 個(gè)扇區(qū)(2000h21FFh)/對(duì) EEPROM區(qū) 2002h 寫入 6LED1=0;LED2=1;cc(0x2000);xcx(0x2002,2);if(!K2)while(!K2);LED1=0;LED2=0;cc(0x2000);xcx(0x2002,6);*/ /* 函數(shù):擦除某一扇區(qū)(每個(gè)扇區(qū)512 字節(jié))入口: addr = 某一扇區(qū)首地址*/void cc(uint addr)/ 打開 IAP 功能 (ISP_CONTR.7)=1: 允許編程改變Flash, 設(shè)置 Flash 操作
5、等待時(shí)間/ 0x83( 晶振 <5M) 0x82( 晶振 <10M) 0x81( 晶振 <20M) 0x80( 晶振 <40M)ISP_CONTR = 0x81;ISP_CMD = 0x03;/ 用戶可以對(duì)"Data Flash/EEPROM 區(qū) "進(jìn)行扇區(qū)擦除ISP_ADDRL = addr; / ISP/IAP操作時(shí)的地址寄存器低八位,ISP_ADDRH = addr>>8; / ISP/IAP操作時(shí)的地址寄存器高八位。EA =0;ISP_TRIG = 0x46;/在 ISPEN(ISP_CONTR.7)=1 時(shí) , 對(duì) ISP_TR
6、IG 先寫入46h,ISP_TRIG = 0xB9;/再寫入 B9h,ISP/IAP 命令才會(huì)生效。_nop_();Q0();/ 關(guān)閉 ISP/IAP/* 函數(shù):寫一字節(jié)入口: addr = 扇區(qū)單元地址, dat = 待寫入數(shù)據(jù)*/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();/* / 用戶可以對(duì)
7、"Data Flash/EEPROM 區(qū) "進(jìn)行字節(jié)編程數(shù)據(jù)進(jìn) ISP_DATA/ 關(guān)閉 ISP/IAP函數(shù):讀一字節(jié)入口:addr = 扇區(qū)單元地址出口:dat = 讀出的數(shù)據(jù)*/uchar dcx(uint addr) uchar dat;用戶可以對(duì)"Data Flash/EEPROM 區(qū) "進(jìn)行字節(jié)讀ISP_CONTR = 0x81;ISP_CMD = 0x01;/ISP_ADDRL = addr;ISP_ADDRH = addr>>8;EA = 0;ISP_TRIG = 0x46;ISP_TRIG = 0xB9;_nop_();dat
8、 = ISP_DATA;/取出數(shù)據(jù)Q0();/關(guān)閉ISP/IAPreturn dat;/* 函數(shù):關(guān)閉ISP/IAP 操作*/void Q0()ISP_CONTR = 0;/ISP_CMD = 0;/ISP_TRIG = 0;/關(guān)閉IAP 功能待機(jī)模式,無ISP 操作關(guān)閉IAP 功能, 清與 ISP 有關(guān)的特殊功能寄存器/*STC89C52RC內(nèi)部EEPROM詳細(xì)地址表:第一扇區(qū)第四扇區(qū)起始地址結(jié)束地址起始地址束地址第二扇區(qū)第三扇區(qū)結(jié)束地址起始地址結(jié)束地址起始地址結(jié)2000h 21FFh 2200h 23FFh27FFH第五扇區(qū)第八扇區(qū)起始地址結(jié)束地址起始地址結(jié)束地址2800h 29FFh 2
9、A00h 2BFFh2400h 25FFh 2600h第六扇區(qū)結(jié)束地址起始地址結(jié)束地址2C00h 2DFFh 2E00h第七扇區(qū)起始地址2FFFh*/程序 2:/*作品:EEPROM實(shí)驗(yàn),開機(jī)還原關(guān)電前 LED的亮滅狀況單片機(jī):STC89C52RC晶振:12M編譯環(huán)境:Keil uVision4 V9.00*/#include <STC89C52RC.H>#include <reg52.h> #include <intrins.h>#define uchar unsigned char#define uint unsigned int/*特殊功能寄存器聲明*
10、/ 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 = P20;/按鈕1/按鈕2sbit LED2 = P21;sbit K1 = P32;sbit K2 = P33;void cc(uint addr);void xcx(uint addr,uchar dat);uchar dcx(uint addr);void Q0();#ifndef uchar#define uchar u
11、nsigned char#endif#ifndef uint#define uint unsigned int#endif/* PIN 口定義*/#define LCD1602_DATAPINS P0 sbit LCD1602_E=P27;sbit LCD1602_RW=P25;sbit LCD1602_RS=P26;/*函數(shù)聲明*/誤差 0us/* 在 51 單片機(jī)12MHZ時(shí)鐘下的延時(shí)函數(shù)*/ void Lcd1602_Delay1ms(uint c); /*LCD1602 寫入8 位命令子函數(shù)*/void LcdWriteCom(uchar com);/*LCD1602 寫入8 位數(shù)據(jù)子
12、函數(shù)*/void LcdWriteData(uchar dat) /*LCD1602 初始化子程序*/void LcdInit();/*LCD1602 寫入字符串*/void LCDWrite_String(uchar x, uchar y,uchar z, uchar *s);/* 設(shè)置 LCD1602寫入字符串的位置*/void LCD_set_xy(uchar x, uchar y, uchar z);uchar ON_Hour=0x07; / 初始開燈時(shí)間07 : 001 uchar Warning_TempH=32; / 高溫報(bào)警溫度 5 /* 函數(shù):主程序*/ /*void mai
13、n(void) uchar V;V = dcx(0x2002);/ 開機(jī)讀取EEPROM區(qū) 2002h 數(shù)據(jù) , 還原關(guān)電前LED的亮滅狀況if(V = 2)LED1=0;LED2=1;else if(V = 6)LED1=0;LED2=0;while(1)if(!K1)while(!K1);/ 擦除第 1 個(gè)扇區(qū)(2000h21FFh)/ 對(duì) EEPROM區(qū) 2002h 寫入 2/ 擦除第 1 個(gè)扇區(qū)(2000h21FFh)/對(duì) EEPROM區(qū) 2002h 寫入 6LED1=0;LED2=1;cc(0x2000);xcx(0x2002,2);if(!K2)while(!K2);LED1=0;
14、LED2=0;cc(0x2000);xcx(0x2002,6);*/ void main(void)LcdInit();/ 不注銷下面三句,燒錄一次/ 注銷小面三句,再燒錄一次/ 若兩次燒錄后現(xiàn)象一致,則操作內(nèi)部EEPROM成功/cc(0x2000);/ 擦除第 1 個(gè)扇區(qū)(2000h21FFh)xcx(0x2000,ON_Hour); / 對(duì) EEPROM區(qū)2002h 寫入 2xcx(0x2001,Warning_TempH);/ 對(duì)EEPROM區(qū) 2002h 寫入 2/ON_Hour = dcx(0x2000);Warning_TempH = dcx(0x2001);if(ON_Hour=
15、0x07)|(Warning_TempH=32)LcdWriteCom(0x80);LCDWrite_String(0, 1, 7, "SUCCESS");elseLCDWrite_String(0, 1, 5, "ERROR");while(1); /* 函數(shù):擦除某一扇區(qū)(每個(gè)扇區(qū)512 字節(jié))入口: addr = 某一扇區(qū)首地址*/void cc(uint addr)/ 打開 IAP 功能 (ISP_CONTR.7)=1: 允許編程改變Flash, 設(shè)置 Flash 操作等待時(shí)間/ 0x83( 晶振 <5M) 0x82( 晶振 <10M
16、) 0x81( 晶振 <20M) 0x80( 晶振 <40M)ISP_CONTR = 0x81;ISP_CMD = 0x03;/ 用戶可以對(duì)"Data Flash/EEPROM 區(qū) "進(jìn)行扇區(qū)擦除ISP_ADDRL = addr; / ISP/IAP操作時(shí)的地址寄存器低八位,ISP_ADDRH = addr>>8; / ISP/IAP操作時(shí)的地址寄存器高八位。EA =0;ISP_TRIG = 0x46;/在 ISPEN(ISP_CONTR.7)=1 時(shí) , 對(duì) ISP_TRIG 先寫入46h,ISP_TRIG = 0xB9;/再寫入 B9h,ISP/
17、IAP 命令才會(huì)生效。_nop_();Q0();/ 關(guān)閉 ISP/IAP/* 函數(shù):寫一字節(jié)入口: addr = 扇區(qū)單元地址, dat = 待寫入數(shù)據(jù)*/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();/ 用戶可以對(duì)"Data Flash/EEPROM 區(qū) "進(jìn)行字節(jié)編程數(shù)據(jù)進(jìn)
18、ISP_DATA/ 關(guān)閉 ISP/IAP/*函數(shù):讀一字節(jié)入口:addr = 扇區(qū)單元地址出口:dat = 讀出的數(shù)據(jù)*/uchar 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;/* 用戶可以對(duì)"Data Flash/EEPROM 區(qū) "進(jìn)行字節(jié)讀/ 取出數(shù)據(jù)/ 關(guān)閉
19、 ISP/IAP函數(shù):關(guān)閉ISP/IAP 操作*/void Q0()ISP_CONTR = 0;ISP_CMD = 0;ISP_TRIG = 0;/關(guān)閉IAP 功能待機(jī)模式,無ISP 操作關(guān)閉IAP 功能, 清與 ISP 有關(guān)的特殊功能寄存器/*STC89C52RC內(nèi)部EEPROM詳細(xì)地址表:第一扇區(qū)第四扇區(qū)起始地址結(jié)束地址起始地址束地址第二扇區(qū)第三扇區(qū)結(jié)束地址起始地址結(jié)束地址起始地址結(jié)2000h 21FFh 2200h 23FFh 2400h 25FFh 2600h27FFH第五扇區(qū)第八扇區(qū)起始地址結(jié)束地址結(jié)束地址第六扇區(qū)第七扇區(qū)起始地址結(jié)束地址起始地址結(jié)束地址起始地址2800h 29FFh
20、 2A00h 2BFFh2C00h 2DFFh 2E00h2FFFh*/* 函 數(shù) 名 : Lcd1602_Delay1ms* 函數(shù)功能: 延時(shí)函數(shù),延時(shí)1ms* 輸入: c* 輸出:無*說名:該函數(shù)是在12MHZ晶振下,12 分頻單片機(jī)的延時(shí)。*/void Lcd1602_Delay1ms(uint c) / 誤差 0usuchar a,b;for (; c>0; c-)for (b=199;b>0;b-)for(a=1;a>0;a-);/* 函 數(shù) 名 : void LCDWrite_String(uchar x, uchar y, uchar *s)* 函數(shù)功能: 向L
21、CD寫入一個(gè)字符串* 輸入: 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)LcdWriteData(*s); s+; /* 函 數(shù) 名 : void LCD_set_xy(uchar x, uchar y,uchar z)* 函數(shù)功能: 指定向LCD寫入字符串的位置* 輸 入 : x,y,z/x: 橫坐標(biāo) y: 縱坐標(biāo) z: 字符串長度* 輸 出 :無*/void LCD_set_xy(uchar x,uch
22、ar 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=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=
23、3) LcdWriteCom(0xd4+x);for(i=0;i<z;i+)LcdWriteData(' ');LcdWriteCom(0xd4+x);/* 函 數(shù) 名 : LcdWriteCom* 函數(shù)功能: 向 LCD寫入一個(gè)字節(jié)的命令* 輸入: com* 輸出:無/#ifndef LCD1602_4PINS / 當(dāng)沒有定義這個(gè)LCD1602_4PINS時(shí)void LcdWriteCom(uchar com) / 寫入命令 LCD1602_E = 0;/使能LCD1602_RS = 0; /選擇發(fā)送命令/放入命令/ 等待數(shù)據(jù)穩(wěn)定LCD1602_RW = 0; /選擇寫
24、入LCD1602_DATAPINS = com;Lcd1602_Delay1ms(1);LCD1602_E = 1;/ 寫入時(shí)序Lcd1602_Delay1ms(5); / 保持時(shí)間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 =
25、1;/ 寫入時(shí)序Lcd1602_Delay1ms(5);LCD1602_E = 0;/ Lcd1602_Delay1ms(1);LCD1602_DATAPINS = com << 4; / 發(fā)送低四位Lcd1602_Delay1ms(1);LCD1602_E = 1;/ 寫入時(shí)序Lcd1602_Delay1ms(5);LCD1602_E = 0;#endif/* 函 數(shù) 名: LcdWriteData* 函數(shù)功能: 向 LCD寫入一個(gè)字節(jié)的數(shù)據(jù)* 輸入: dat* 輸出:無* /#ifndef LCD1602_4PINSvoid LcdWriteData(uchar dat)/ 寫
26、入數(shù)據(jù)LCD1602_E = 0;/ 使能清零LCD1602_RS = 1; / 選擇輸入數(shù)據(jù)LCD1602_RW = 0; / 選擇寫入LCD1602_DATAPINS = dat; / 寫入數(shù)據(jù)Lcd1602_Delay1ms(1);LCD1602_E = 1; / 寫入時(shí)序Lcd1602_Delay1ms(5); / 保持時(shí)間LCD1602_E = 0;#elsevoid LcdWriteData(uchar dat)/ 寫入數(shù)據(jù)LCD1602_E = 0;/ 使能清零LCD1602_RS = 1; / 選擇寫入數(shù)據(jù)LCD1602_RW = 0; / 選擇寫入LCD1602_DATAPI
27、NS = dat; / 由于 4 位的接線是接到P0口的高四位,所以傳送高四位不用改Lcd1602_Delay1ms(1);LCD1602_E = 1;/ 寫入時(shí)序Lcd1602_Delay1ms(5);LCD1602_E = 0;LCD1602_DATAPINS = dat << 4; / 寫入低四位 Lcd1602_Delay1ms(1);LCD1602_E = 1;/ 寫入時(shí)序Lcd1602_Delay1ms(5);LCD1602_E = 0;#endif函數(shù)名 函數(shù)功能 輸入 輸出/*: LcdInit(): 初始化LCD屏:無:無/#ifndefLCD16024PINSv
28、oid LcdInit()LcdWriteCom(0x38); /LcdWriteCom(0x0c); /LcdWriteCom(0x06); /LcdWriteCom(0x01); /LcdWriteCom(0x80); /#elsevoid LcdInit()/LCD 初始化子程序開顯示開顯示不顯示光標(biāo)寫一個(gè)指針加1清屏設(shè)置數(shù)據(jù)指針起點(diǎn)/LCD 初始化子程序LcdWriteCom(0x32);LcdWriteCom(0x28);LcdWriteCom(0x0c); /LcdWriteCom(0x06); /LcdWriteCom(0x01); /LcdWriteCom(0x80); / 將
29、 8 位總線轉(zhuǎn)為4 位總線/ 在四位線下的初始化開顯示不顯示光標(biāo)寫一個(gè)指針加1清屏設(shè)置數(shù)據(jù)指針起點(diǎn)#endif程序 3:/*作品:EEPROM實(shí)驗(yàn),開機(jī)還原關(guān)電前LED的亮滅狀況單片機(jī):晶振: 編譯環(huán)境:STC89C52RC12MKeil uVision4 V9.00*/#include <STC89C52RC.H>#include <reg52.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned int/*特殊功能寄存器聲明*/sfr ISP_DATA = 0xe2;
30、sfr ISP_ADDRH = 0xe3;sfr ISP_ADDRL = 0xe4;sfr ISP_CMD = 0xe5;sfr ISP_TRIG = 0xe6;sfr ISP_CONTR = 0xe7;sbit LED1 = P20;sbit LED2 = P21;sbit K1 = P32;sbit K2 = P33;/按鈕1/按鈕2void cc(uint addr);void xcx(uint addr,uchar dat);uchar dcx(uint addr);void Q0();#ifndef uchar#define uchar unsigned char#endif#ifn
31、def uint#define uint unsigned int#endif/*PIN 口定義*/ #define LCD1602_DATAPINS P0 sbit LCD1602_E=P27;sbit LCD1602_RW=P25;sbit LCD1602_RS=P26;/*函數(shù)聲明*/* 在 51 單片機(jī)12MHZ時(shí)鐘下的延時(shí)函數(shù)*/void Lcd1602_Delay1ms(uint c);/*LCD1602 寫入8 位命令子函數(shù)void LcdWriteCom(uchar com);/*LCD1602 寫入8 位數(shù)據(jù)子函數(shù)void LcdWriteData(uchar dat)/*L
32、CD1602 初始化子程序*/void LcdInit();/*/*/誤差 0us/*LCD1602 寫入字符串*/void LCDWrite_String(uchar x, uchar y,uchar z, uchar *s);/* 設(shè)置 LCD1602寫入字符串的位置*/void LCD_set_xy(uchar x, uchar y, uchar z);void IntConfiguration();/*uchar ON_Hour=0x07; / 初始開燈時(shí)間07 : 001 uchar Warning_TempH=32; / 高溫報(bào)警溫度5*/uchar ON_Hour; / 初始開燈
33、時(shí)間07 : 00uchar Warning_TempH;/ 高溫報(bào)警溫度/* 函數(shù):主程序*/void main(void)LcdInit();IntConfiguration();/*cc(0x2000);/ 擦除第 1 個(gè)扇區(qū)(2000h21FFh)xcx(0x2000,ON_Hour); / 對(duì)EEPROM區(qū)2002h 寫入 2xcx(0x2001,Warning_TempH);/ 對(duì)EEPROM區(qū)2002h 寫入 2*/while(1)ON_Hour = dcx(0x2000);Warning_TempH = dcx(0x2001);if(ON_Hour=0x07)|(Warning
34、_TempH=32) LcdWriteCom(0x80);LCDWrite_String(0, 1, 7, "SUCCESS");elseLcdWriteCom(0x80);LCDWrite_String(0, 1, 5, "ERROR");/*uchar V;V = dcx(0x2002);/ 開機(jī)讀取EEPROM區(qū) 2002h 數(shù)據(jù) , 還原關(guān)電前LED的亮滅狀況if(V = 2)LED1=0;LED2=1;else if(V = 6)LED1=0;LED2=0;while(1)if(!K1)while(!K1);/ 擦除第 1 個(gè)扇區(qū)(2000h2
35、1FFh)/ 對(duì) EEPROM區(qū) 2002h 寫入 2LED1=0;LED2=1;cc(0x2000);xcx(0x2002,2);if(!K2)while(!K2);LED1=0;LED2=0;cc(0x2000);/ 擦除第 1 個(gè)扇區(qū)(2000h21FFh)xcx(0x2002,6);/對(duì) EEPROM區(qū) 2002h 寫入 6*/ /* 函數(shù):擦除某一扇區(qū)(每個(gè)扇區(qū)512 字節(jié))入口: addr = 某一扇區(qū)首地址*/void cc(uint addr)/ 打開 IAP 功能 (ISP_CONTR.7)=1: 允許編程改變Flash, 設(shè)置 Flash 操作等待時(shí)間/ 0x83( 晶振
36、<5M) 0x82( 晶振 <10M) 0x81( 晶振 <20M) 0x80( 晶振 <40M)ISP_CONTR = 0x81;ISP_CMD = 0x03;/ 用戶可以對(duì)"Data Flash/EEPROM 區(qū) "進(jìn)行扇區(qū)擦除ISP_ADDRL = addr; / ISP/IAP操作時(shí)的地址寄存器低八位,ISP_ADDRH = addr>>8; / ISP/IAP操作時(shí)的地址寄存器高八位。EA =0;ISP_TRIG = 0x46;/在 ISPEN(ISP_CONTR.7)=1 時(shí) , 對(duì) ISP_TRIG 先寫入46h,ISP_T
37、RIG = 0xB9;/再寫入 B9h,ISP/IAP 命令才會(huì)生效。_nop_();Q0();/ 關(guān)閉 ISP/IAP /* 函數(shù):寫一字節(jié) 入口: addr = 扇區(qū)單元地址, dat = 待寫入數(shù)據(jù)*/void xcx(uint addr,uchar dat)ISP_CONTR = 0x81;ISP_CMD = 0x02;/ 用戶可以對(duì)"Data Flash/EEPROM 區(qū) "進(jìn)行字節(jié)編程ISP_ADDRL = addr;ISP_ADDRH = addr>>8;ISP_DATA = dat; /數(shù)據(jù)進(jìn) ISP_DATAEA = 0;ISP_TRIG =
38、0x46;ISP_TRIG = 0xB9;_nop_();Q0();/ 關(guān)閉 ISP/IAP/* 函數(shù):讀一字節(jié)入口:addr = 扇區(qū)單元地址出口:dat = 讀出的數(shù)據(jù)*/uchar 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;/* 用戶可以對(duì)"Data Flash/EEP
39、ROM 區(qū) "進(jìn)行字節(jié)讀/ 取出數(shù)據(jù)/ 關(guān)閉 ISP/IAP函數(shù):關(guān)閉ISP/IAP 操作*/void Q0()ISP_CONTR = 0;ISP_CMD = 0;ISP_TRIG = 0;EA=1;/關(guān)閉IAP 功能待機(jī)模式,無ISP 操作關(guān)閉IAP 功能, 清與 ISP 有關(guān)的特殊功能寄存器/*STC89C52RC內(nèi)部EEPROM詳細(xì)地址表:第一扇區(qū)第四扇區(qū)起始地址結(jié)束地址起始地址束地址第二扇區(qū)第三扇區(qū)結(jié)束地址起始地址結(jié)束地址起始地址結(jié)2000h 21FFh 2200h 23FFh 2400h 25FFh 2600h27FFH第五扇區(qū)第八扇區(qū)起始地址結(jié)束地址起始地址結(jié)束地址280
40、0h 29FFh 2A00h 2BFFh第六扇區(qū)結(jié)束地址起始地址結(jié)束地址2C00h 2DFFh 2E00h第七扇區(qū)起始地址2FFFh*/* 函 數(shù)名: Lcd1602_Delay1ms* 函數(shù)功能: 延時(shí)函數(shù),延時(shí)1ms* 輸入: c* 輸出:無* 說名:該函數(shù)是在12MHZ晶振下,12 分頻單片機(jī)的延時(shí)。void Lcd1602_Delay1ms(uint c) / uchar a,b;for (; c>0; c-)誤差 0usfor (b=199;b>0;b-)for(a=1;a>0;a-);/* 函 數(shù) 名 : void LCDWrite_String(uchar x,
41、 uchar y, uchar *s)* 函數(shù)功能: 向LCD寫入一個(gè)字符串* 輸入: 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)LcdWriteData(*s);s+;/* 函 數(shù) 名 : void LCD_set_xy(uchar x, uchar y,uchar z)* 函數(shù)功能: 指定向LCD寫入字符串的位置* 輸 入 : x,y,z/x: 橫坐標(biāo) y: 縱坐標(biāo) z: 字符串長度* 輸 出 :無*/
42、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=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);* 函數(shù) 名* 函數(shù)功能* 輸 入* 輸 出/*: LcdWriteC
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 民航安全知識(shí)培訓(xùn)課件
- 電信運(yùn)營商基站建設(shè)進(jìn)度表
- 房地產(chǎn)底價(jià)包銷合同書
- 快速加載網(wǎng)頁資源管理措施
- 促進(jìn)跨部門合作提高迭代產(chǎn)出
- 金融風(fēng)險(xiǎn)管理基本原理與操作指南
- 五金配件銷售合同
- 農(nóng)產(chǎn)品種植收購合同
- 2025年梧州貨運(yùn)從業(yè)資格證模擬考試駕考
- 委托人力資源協(xié)議
- 《中小學(xué)科學(xué)教育工作指南》解讀與培訓(xùn)
- 跨學(xué)科主題學(xué)習(xí)的意義與設(shè)計(jì)思路
- 2025年浙江國企臺(tái)州黃巖站場(chǎng)管理服務(wù)有限公司招聘筆試參考題庫附帶答案詳解
- 教科版三年級(jí)下冊(cè)科學(xué)全冊(cè)單元教材分析
- 2025年國家鐵路局工程質(zhì)量監(jiān)督中心招聘歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 加快形成農(nóng)業(yè)新質(zhì)生產(chǎn)力
- 2025年中糧集團(tuán)招聘筆試參考題庫含答案解析
- 湖北省七市2025屆高考數(shù)學(xué)一模試卷含解析
- 數(shù)字電子技術(shù)(廣東工業(yè)大學(xué))知到智慧樹章節(jié)測(cè)試課后答案2024年秋廣東工業(yè)大學(xué)
- 安徽省淮北一中2025屆高三沖刺模擬數(shù)學(xué)試卷含解析
- 2024年四川省綿陽市中考語文試卷(附真題答案)
評(píng)論
0/150
提交評(píng)論