您现在的位置是:主页 > news > dw网站首页的滚动图片怎么做/站长之家是干什么的

dw网站首页的滚动图片怎么做/站长之家是干什么的

admin2025/5/24 19:13:30news

简介dw网站首页的滚动图片怎么做,站长之家是干什么的,东莞制作公司网站的公司,网站合作建设方案STC单片机大部分内部集成了EEPROM,也有部分单片机没有专门的EEPROM,但可以将用户程序区存储用户程序后剩余的Flash当EEPROM使用,如IAP15W4K61S4,IRC15W4K63S4。EEPROM擦写次数在10万次以上。EEPROM擦写是按扇区擦写的,需要一次擦写…

dw网站首页的滚动图片怎么做,站长之家是干什么的,东莞制作公司网站的公司,网站合作建设方案STC单片机大部分内部集成了EEPROM,也有部分单片机没有专门的EEPROM,但可以将用户程序区存储用户程序后剩余的Flash当EEPROM使用,如IAP15W4K61S4,IRC15W4K63S4。EEPROM擦写次数在10万次以上。EEPROM擦写是按扇区擦写的,需要一次擦写…

       STC单片机大部分内部集成了EEPROM,也有部分单片机没有专门的EEPROM,但可以将用户程序区存储用户程序后剩余的Flash当EEPROM使用,如IAP15W4K61S4,IRC15W4K63S4。EEPROM擦写次数在10万次以上。EEPROM擦写是按扇区擦写的,需要一次擦写的数据尽量放在同一扇区。停电时EEPROM不会丢失数据,可用以保存一些设置参数,或在停电关机前保存本次运行的部分参数,供下次运行时使用。与IAP及EEPROM相关的寄存器如下:

下面寄存器的说明:

下面我们来写ISP/IAP操作的库函数。新建两个文件,分别以stceeprom.h,stceeprom.c存入C51 Template文件夹下Library文件夹中。完成后的头文件如下:

/*stceeprom.hDesigned by Bill LiuVersion 0.0 Modified last by Bill Liu on 12/15/2021
*/
#ifndef __STCEEPROM_H__
#define __SSTCEEPROM_H__#include "stc15w4k.h"
#include "mtype.h"#define CMD_IDLE    0               //idle
#define CMD_READ    1               //IAP command: read 
#define CMD_PROGRAM 2               //IAP command: write
#define CMD_ERASE   3               //IAP command: erase#define ENABLE_IAP 0x80             //if SYSCLK>30MHz
//#define ENABLE_IAP 0x81           //if SYSCLK<24MHz
//#define ENABLE_IAP  0x82          //if SYSCLK<20MHz
//#define ENABLE_IAP 0x83           //if SYSCLK<12MHz
//#define ENABLE_IAP 0x84           //if SYSCLK<6MHz
//#define ENABLE_IAP 0x85           //if SYSCLK<3MHz
//#define ENABLE_IAP 0x86           //if SYSCLK<2MHz
//#define ENABLE_IAP 0x87           //if SYSCLK<1MHz
/***********************************************************
Function:IapIdle();
Return value: void
Discription: configure IAP idle mode
Example:IapIdle();  
***********************************************************************/
void IapIdle();/***********************************************************
Function:IapEraseSector(WORD addr);
Return value: void
Discription: erase section data, addr is head of the section's address
Example:IapEraseSector(0x6200); //erase 50th section
***********************************************************************/
void IapEraseSector(WORD addr);                                      /***********************************************************
Function:IapWritecChar(WORD addr, i8 dat);
Return value: void
Discription: write char to eeprom
Example:
IapWritecChar(0x6200,127); //write 127  addr:0x6200
***********************************************************************/
void IapWritecChar(WORD addr, i8 dat);                             /***********************************************************
Function:IapWriteInt(WORD addr, int dat);
Return value: void
Discription: write int dat to the addr~addr+1
Example:
IapWriteInt(0x6200,5000); //write 5000 to  0x6200~0x6201
***********************************************************************/
void IapWriteInt(WORD addr, int dat);                                /***********************************************************
Function:IapWriteI32(WORD addr, i32 dat); 
Return value: void
Discription: write i32 dat to the addr~addr+3
Example:
IapWriteI32(0x6200,5000); //write 5000 to  0x6200~0x6203
***********************************************************************/
void IapWriteI32(WORD addr, i32 dat);                                /***********************************************************
Function:IapWriteString(WORD addr,BYTE *mString); 
Return value: void
Discription: write string's all character to eeprom, not write end flag of string
Example:
IapWriteString(0x6200,"abcd"); //write 5000 to  0x6200~0x6203
***********************************************************************/
void IapWriteString(WORD addr,BYTE *mString); /***********************************************************
Function:IapReadChar(WORD addr, i8 *dat);
Return value: i8
Discription: read char from eeprom 
Example:
IapReadChar(0x6200,&mbyte); 
***********************************************************************/
i8 IapReadChar(WORD addr, i8 *dat);                                         /***********************************************************
Function:IapReadInt(WORD addr, i16 *dat);
Return value: int
Discription: read integer from eeprom 
Example:
IIapReadByte(0x6200,&mInt); 
***********************************************************************/
i16 IapReadInt(WORD addr, i16 *dat);   /***********************************************************
Function:IapReadInt(WORD addr, i16 *dat);
Return value: int
Discription: read long from eeprom 
Example:
IIapReadByte(0x6200,&mLong); 
***********************************************************************/
i32 IapReadI32(WORD addr, i32 *dat);/***********************************************************
Function:IapReadInt(WORD addr, i16 *dat);
Return value: int
Discription: read n character to string from eeprom 
Example:
IIapReadByte(0x6200,mString,10); 
***********************************************************************/
void IapReadString(WORD addr,BYTE *mString, ui8 n);                        #endif

完成后的源文件如下:

/*stceeprom.cDesigned by Bill LiuVersion 0.0 Modified last by Bill Liu on 12/1/2021
*/
#include "stceeprom.h"
#include <intrins.h>#include <string.h>
//*******************************
void IapIdle() 	
{IAP_CONTR = 0;                  //¹Ø±ÕIAP¹¦ÄÜIAP_CMD = 0;                    //Çå³ýÃüÁî¼Ä´æÆ÷IAP_TRIG = 0;                   //Çå³ý´¥·¢¼Ä´æÆ÷IAP_ADDRH = 0x80;               //½«µØÖ·ÉèÖõ½·ÇIAPÇøÓòIAP_ADDRL = 0;
}
//End of IapIdle()//*****************************************
void IapEraseSector(WORD addr) 
{IAP_CONTR = ENABLE_IAP;         //ʹÄÜIAPIAP_CMD = CMD_ERASE;            //ÉèÖÃIAPÃüÁî Erase sectionIAP_ADDRL = addr;               //ÉèÖÃIAPµÍµØÖ·IAP_ADDRH = addr >> 8;          //ÉèÖÃIAP¸ßµØÖ·IAP_TRIG = 0x5a;                //д´¥·¢ÃüÁî(0x5a)_nop_();IAP_TRIG = 0xa5;                //д´¥·¢ÃüÁî(0xa5)_nop_();                        //µÈ´ýISP/IAP/EEPROM²Ù×÷Íê³ÉIapIdle();
}
//End of IapEraseSector(WORD addr)//*****************************************
void IapWritecChar(WORD addr, i8 dat)
{IAP_CONTR = ENABLE_IAP;         //ʹÄÜIAPIAP_CMD = CMD_PROGRAM;          //ÉèÖÃIAPÃüÁî WriteIAP_ADDRL = addr;               //ÉèÖÃIAPµÍµØÖ·IAP_ADDRH = addr >> 8;          //ÉèÖÃIAP¸ßµØÖ·IAP_DATA = dat;                 //дISP/IAP/EEPROMÊý¾ÝIAP_TRIG = 0x5a;                //д´¥·¢ÃüÁî(0x5a)_nop_();IAP_TRIG = 0xa5;                //д´¥·¢ÃüÁî(0xa5)_nop_();                        //µÈ´ýISP/IAP/EEPROM²Ù×÷Íê³ÉIapIdle();
}
//En of IapWritecChar(WORD addr, i8 dat)//****************************************
void IapWriteInt(WORD addr, int dat)
{ui8 i;typedef union{i16 dat1;char mchar[2];}NEW_DATA;NEW_DATA data1;data1.dat1 = dat;for(i = 0; i < 2; i++){IAP_CONTR = ENABLE_IAP;         //ʹÄÜIAPIAP_CMD = CMD_PROGRAM;          //ÉèÖÃIAPÃüÁî WriteIAP_ADDRL = addr;               //ÉèÖÃIAPµÍµØÖ·IAP_ADDRH = addr >> 8;IAP_DATA = data1.mchar[i];IAP_TRIG = 0x5a;                //д´¥·¢ÃüÁî(0x5a)_nop_();IAP_TRIG = 0xa5;                //д´¥·¢ÃüÁî(0xa5)_nop_();   addr++;}IapIdle();                      //¹Ø±ÕIAP¹¦ÄÜ
}
//End of IapWriteInt(WORD addr, int dat)//***************************************
void IapWriteI32(WORD addr, i32 dat) 
{ui8 i;typedef union{i32 dat1;char mchar[4];}NEW_DATA;NEW_DATA data1;data1.dat1 = dat;for(i = 0; i < 4; i++){IAP_CONTR = ENABLE_IAP;         //ʹÄÜIAPIAP_CMD = CMD_PROGRAM;          //ÉèÖÃIAPÃüÁî WriteIAP_ADDRL = addr;               //ÉèÖÃIAPµÍµØÖ·IAP_ADDRH = addr >> 8;IAP_DATA = data1.mchar[i];IAP_TRIG = 0x5a;                //д´¥·¢ÃüÁî(0x5a)_nop_();IAP_TRIG = 0xa5;                //д´¥·¢ÃüÁî(0xa5)_nop_();		addr++;}IapIdle();                      //¹Ø±ÕIAP¹¦ÄÜ
}
//End of IapWriteI32(WORD addr, i32 dat) //*******************************************
void IapWriteString(WORD addr,BYTE *mString)
{ui8 i;IAP_CONTR = ENABLE_IAP;         //ʹÄÜIAPIAP_CMD = CMD_PROGRAM;          //ÉèÖÃIAPÃüÁîfor(i=0; i<strlen(mString);i++){IAP_ADDRL = (addr + i);               //ÉèÖÃIAPµÍµØÖ·IAP_ADDRH = (addr + i) >> 8;IAP_DATA = mString[i];IAP_TRIG = 0x5a;                //д´¥·¢ÃüÁî(0x5a)_nop_();IAP_TRIG = 0xa5;                //д´¥·¢ÃüÁî(0xa5)_nop_();    }IapIdle();                      //¹Ø±ÕIAP¹¦ÄÜ
}
//End of IapWriteString(WORD addr,BYTE *mString)//***********************************************
i8 IapReadChar(WORD addr, i8 *dat)
{IAP_CONTR = ENABLE_IAP;         //ʹÄÜIAPIAP_CMD = CMD_READ;             //ÉèÖÃIAPÃüÁîIAP_ADDRL = addr;               //ÉèÖÃIAPµÍµØÖ·IAP_ADDRH = addr >> 8;          //ÉèÖÃIAP¸ßµØÖ·IAP_TRIG = 0x5a;                //д´¥·¢ÃüÁî(0x5a)_nop_(); IAP_TRIG = 0xa5;                //д´¥·¢ÃüÁî(0xa5)_nop_();                        //µÈ´ýISP/IAP/EEPROM²Ù×÷Íê³É*dat = IAP_DATA;                 //¶ÁISP/IAP/EEPROMÊý¾ÝIapIdle();                      //¹Ø±ÕIAP¹¦ÄÜreturn *dat;                     //·µ»Ø
}
//End of IapReadChar(WORD addr, i8 *dat)//***********************************
i16 IapReadInt(WORD addr, i16 *dat)
{ui8 i;typedef union{i16 dat1;char mchar[2];}NEW_DATA;NEW_DATA data1;IAP_CONTR = ENABLE_IAP;         //ʹÄÜIAPIAP_CMD = CMD_READ;             //ÉèÖÃIAPÃüÁîfor(i = 0; i < 2; i++){IAP_ADDRL = (addr + i);               //ÉèÖÃIAPµÍµØÖ·IAP_ADDRH = ((addr + i) >> 8);          //ÉèÖÃIAP¸ßµØÖ·IAP_TRIG = 0x5a;                //д´¥·¢ÃüÁî(0x5a)_nop_(); IAP_TRIG = 0xa5;                //д´¥·¢ÃüÁî(0xa5)_nop_();                        //µÈ´ýISP/IAP/EEPROM²Ù×÷Íê³Édata1.mchar[i]= IAP_DATA;                 //¶ÁISP/IAP/EEPROMÊý¾Ý}IapIdle();*dat = data1.dat1;return *dat;
}
//End of IapReadInt(WORD addr, i16 *dat)//***********************************
i32 IapReadI32(WORD addr, i32 *dat)
{ui8 i;typedef union{i32 dat1;char mchar[4];}NEW_DATA;NEW_DATA data1;IAP_CONTR = ENABLE_IAP;         //ʹÄÜIAPIAP_CMD = CMD_READ;             //ÉèÖÃIAPÃüÁîfor(i = 0; i < 4; i++){IAP_ADDRL = (addr + i);               //ÉèÖÃIAPµÍµØÖ·IAP_ADDRH = ((addr + i) >> 8);          //ÉèÖÃIAP¸ßµØÖ·IAP_TRIG = 0x5a;                //д´¥·¢ÃüÁî(0x5a)_nop_(); IAP_TRIG = 0xa5;                //д´¥·¢ÃüÁî(0xa5)_nop_();                        //µÈ´ýISP/IAP/EEPROM²Ù×÷Íê³Édata1.mchar[i] = IAP_DATA;                 //¶ÁISP/IAP/EEPROMÊý¾Ý}IapIdle();*dat = data1.dat1;return *dat;
}
//End of IapReadI32(WORD addr, i32 *dat)//***************************************
void IapReadString(WORD addr,BYTE *mString, ui8 n) read n char to a string
{ui8 i;memset(mString,0,strlen(mString));IAP_CONTR = ENABLE_IAP;         //ʹÄÜIAPIAP_CMD = CMD_READ;             //ÉèÖÃIAPÃüÁîfor(i = 0; i < n; i++){IAP_ADDRL = (addr + i);               //ÉèÖÃIAPµÍµØÖ·IAP_ADDRH = ((addr + i) >> 8);          //ÉèÖÃIAP¸ßµØÖ·IAP_TRIG = 0x5a;                //д´¥·¢ÃüÁî(0x5a)_nop_(); IAP_TRIG = 0xa5;                //д´¥·¢ÃüÁî(0xa5)_nop_();                        //µÈ´ýISP/IAP/EEPROM²Ù×÷Íê³ÉmString[i] = IAP_DATA;                 //¶ÁISP/IAP/EEPROMÊý¾Ý}IapIdle();
}
//End of IapReadString(WORD addr,BYTE *mString, ui8 n)

测试程序,头文件:

/*main.hDesigned by Bill LiuVersion 0.0 Modified last by Bill Liu on 12/15/2021
*/#ifndef __MAIN_H_
#define __MAIN_H_#include "mtype.h"
#include "stcio.h"
//#include "lcd.h"
#include "delay.h"
#include "stctimer.h"
#include "stcuart.h"
#include "myport.h"
#include "stceeprom.h"const FSYSCLOCK FSCLK = F30MHz; //define system clock frequency 30MHz, FSYSCLOCK was defined in mtype.h
const ui32  FSCLK1 = 30000000L; //define system clock frequency 30MHzi8 mstr[25] ="";void SundBuzzerx10ms(ui8 x);#endif

测试程序,源文件:

/*main.cDesigned by Bill LiuVersion 0.0 Modified last by Bill Liu on 12/15/2021
*/#include "main.h" void main()
{STCIO_InitPortsBits(P0|P1|P2|P3|P4, 0xFF, BI_IO);P3 = 0xFF;UartS1_Init(VBAUD_8BITS,G1,T2,9600);STCIO_InitP3Bit(SCT_BIT1, PP_OUT);IapEraseSector(0x6000); IapWriteString(0x6000,"Eeprom & Uart1 test!");IapEraseSector(0x6200); IapWriteI32(0x6200, 123456789);SundBuzzerx10ms(50);Delay10xms(50, FSCLK);SundBuzzerx10ms(50);while(1){memset(mstr,0,strlen(mstr));IapReadString(0x6000,mstr,20); UartS1_SendString(mstr);UartS1_SendString("\r\n");LongToString(IapReadI32(0x6200, &myi),mstr);UartS1_SendString(mstr);UartS1_SendString("\r\n");UartS1_SendString("\r\n");Delay10xms(200, FSCLK);}
}
//End of main()//*********************************************
void SundBuzzerx10ms(ui8 x)
{BUZZER = 0;Delay10xms(x, FSCLK);BUZZER = 1;
}
//End of SundBuzzerx10ms(ui8 x)

编译结果:

 下载到单片机,串口调试助手显示结果:

 以上演示代码及相关库文件已上传到CSDN,文件名为:Stceeprom  Library Source Code.rar。如需离线查看可去下载。