找回密码
 立即注册
楼主: wugqsh

各位大佬给些建议,关于加热器温度控制器的开发。

[复制链接]
  • 打卡等级:偶尔看看III
  • 打卡总天数:51
  • 最近打卡:2025-04-27 14:40:11
已绑定手机

16

主题

468

回帖

2165

积分

版主

积分
2165
QQ
发表于 2024-12-25 10:03:01 | 显示全部楼层
zwf3*** 发表于 2024-12-25 09:32
非常感谢您,提供的这些注意事项,我按照您的提示调试,另外还请教一个,STC8H1K28的EEPROM的大小由下载 ...

截图202412251002283871.jpg
您参考这个资料,应该可以明白哈
www.STCAI.com
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2024-12-10 18:14:16

0

主题

29

回帖

156

积分

注册会员

积分
156
发表于 2024-12-26 02:12:04 | 显示全部楼层
8H8K*** 发表于 2024-12-25 10:03
您参考这个资料,应该可以明白哈

谢谢、谢谢
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:520
  • 最近打卡:2025-05-01 08:06:21

109

主题

1897

回帖

5204

积分

论坛元老

积分
5204
发表于 2024-12-26 08:49:35 | 显示全部楼层
用MAX6675比较好用、方便
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:375
  • 最近打卡:2025-04-26 15:51:33
已绑定手机

27

主题

301

回帖

822

积分

高级会员

积分
822
发表于 2024-12-26 08:52:43 | 显示全部楼层
zwf3*** 发表于 2024-12-25 09:32
非常感谢您,提供的这些注意事项,我按照您的提示调试,另外还请教一个,STC8H1K28的EEPROM的大小由下载 ...

起始地址都是从0x0000开始的
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2024-12-10 18:14:16

0

主题

29

回帖

156

积分

注册会员

积分
156
发表于 2025-1-3 19:54:40 | 显示全部楼层
小*** 发表于 2024-12-26 08:52
起始地址都是从0x0000开始的

感谢您,但现在还没存储上啊
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2024-12-10 18:14:16

0

主题

29

回帖

156

积分

注册会员

积分
156
发表于 2025-1-3 20:03:46 | 显示全部楼层
8H8K*** 发表于 2024-12-25 10:03
您参考这个资料,应该可以明白哈

版主老师,又遇到一个问题,上电时,输出端误动作一下,程序端口都关闭了,上电还是动一下,我把电路图图片传上去,请教您看是哪里问题,谢谢,DC电源接的是24V电压
电路图.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:375
  • 最近打卡:2025-04-26 15:51:33
已绑定手机

27

主题

301

回帖

822

积分

高级会员

积分
822
发表于 2025-1-4 08:36:29 | 显示全部楼层
小*** 发表于 2024-12-26 08:52
起始地址都是从0x0000开始的

这个是官方的库函数直接调用,

  1. /*---------------------------------------------------------------------*/
  2. /* --- STC MCU Limited ------------------------------------------------*/
  3. /* --- STC 1T Series MCU Demo Programme -------------------------------*/
  4. /* --- Mobile: (86)13922805190 ----------------------------------------*/
  5. /* --- Fax: 86-0513-55012956,55012947,55012969 ------------------------*/
  6. /* --- Tel: 86-0513-55012928,55012929,55012966 ------------------------*/
  7. /* --- Web: www.STCMCU.com --------------------------------------------*/
  8. /* --- Web: www.STCMCUDATA.com  ---------------------------------------*/
  9. /* --- QQ:  800003751 -------------------------------------------------*/
  10. /* 如果要在程序中使用此代码,请在程序中注明使用了STC的资料及程序            */
  11. /*---------------------------------------------------------------------*/
  12. #include "STC8G_H_EEPROM.h"
  13. //========================================================================
  14. // 函数: void        ISP_Disable(void)
  15. // 描述: 禁止访问ISP/IAP.
  16. // 参数: non.
  17. // 返回: non.
  18. // 版本: V1.0, 2012-10-22
  19. //========================================================================
  20. void        DisableEEPROM(void)
  21. {
  22.         IAP_CONTR = 0;                        //禁止IAP操作
  23.         IAP_CMD   = 0;                        //去除IAP命令
  24.         IAP_TRIG  = 0;                        //防止IAP命令误触发
  25.         IAP_ADDRH = 0xff;                //清0地址高字节
  26.         IAP_ADDRL = 0xff;                //清0地址低字节,指向非EEPROM区,防止误操作
  27. }
  28. //========================================================================
  29. // 函数: void EEPROM_Trig(void)
  30. // 描述: 触发EEPROM操作.
  31. // 参数: none.
  32. // 返回: none.
  33. // 版本: V1.0, 2014-6-30
  34. //========================================================================
  35. void EEPROM_Trig(void)
  36. {
  37.         F0 = EA;    //保存全局中断
  38.         EA = 0;     //禁止中断, 避免触发命令无效
  39.         IAP_TRIG = 0x5A;
  40.         IAP_TRIG = 0xA5;                    //先送5AH,再送A5H到IAP触发寄存器,每次都需要如此
  41.                                                                                                                                                         //送完A5H后,IAP命令立即被触发启动
  42.                                                                                                                                                         //CPU等待IAP完成后,才会继续执行程序。
  43.         _nop_();
  44.         _nop_();
  45.         EA = F0;    //恢复全局中断
  46. }
  47. //========================================================================
  48. // 函数: void EEPROM_read_n(u16 EE_address,u8 *DataAddress,u16 number)
  49. // 描述: 从指定EEPROM首地址读出n个字节放指定的缓冲.
  50. // 参数: EE_address:  读出EEPROM的首地址.
  51. //       DataAddress: 读出数据放缓冲的首地址.
  52. //       number:      读出的字节长度.
  53. // 返回: non.
  54. // 版本: V1.0, 2012-10-22
  55. //========================================================================
  56. void EEPROM_read_n(u16 EE_address,u8 *DataAddress,u16 number)
  57. {
  58.         IAP_ENABLE();                           //设置等待时间,允许IAP操作,送一次就够
  59.         IAP_READ();                             //送字节读命令,命令不需改变时,不需重新送命令
  60.         do
  61.         {
  62.                 IAP_ADDRH = EE_address / 256;       //送地址高字节(地址需要改变时才需重新送地址)
  63.                 IAP_ADDRL = EE_address % 256;       //送地址低字节
  64.                 EEPROM_Trig();                      //触发EEPROM操作
  65.                 *DataAddress = IAP_DATA;            //读出的数据送往
  66.                 EE_address++;
  67.                 DataAddress++;
  68.         }while(--number);
  69.         DisableEEPROM();
  70. }
  71. //========================================================================
  72. // 函数: void EEPROM_SectorErase(u16 EE_address)
  73. // 描述: 把指定地址的EEPROM扇区擦除.
  74. // 参数: EE_address:  要擦除的扇区EEPROM的地址.
  75. // 返回: non.
  76. // 版本: V1.0, 2013-5-10
  77. //========================================================================
  78. void EEPROM_SectorErase(u16 EE_address)
  79. {
  80.         IAP_ENABLE();                       //设置等待时间,允许IAP操作,送一次就够
  81.         IAP_ERASE();                        //宏调用, 送扇区擦除命令,命令不需改变时,不需重新送命令
  82.                                                                                                                                                         //只有扇区擦除,没有字节擦除,512字节/扇区。
  83.                                                                                                                                                         //扇区中任意一个字节地址都是扇区地址。
  84.         IAP_ADDRH = EE_address / 256;       //送扇区地址高字节(地址需要改变时才需重新送地址)
  85.         IAP_ADDRL = EE_address % 256;       //送扇区地址低字节
  86.         EEPROM_Trig();                      //触发EEPROM操作
  87.         DisableEEPROM();                    //禁止EEPROM操作
  88. }
  89. //========================================================================
  90. // 函数: void EEPROM_write_n(u16 EE_address,u8 *DataAddress,u16 number)
  91. // 描述: 把缓冲的n个字节写入指定首地址的EEPROM.
  92. // 参数: EE_address:  写入EEPROM的首地址.
  93. //       DataAddress: 写入源数据的缓冲的首地址.
  94. //       number:      写入的字节长度.
  95. // 返回: non.
  96. // 版本: V1.0, 2012-10-22
  97. //========================================================================
  98. void EEPROM_write_n(u16 EE_address,u8 *DataAddress,u16 number)
  99. {       
  100.        
  101.          EEPROM_SectorErase(EE_address);
  102.        
  103.         IAP_ENABLE();                       //设置等待时间,允许IAP操作,送一次就够
  104.         IAP_WRITE();                        //宏调用, 送字节写命令
  105.         do
  106.         {
  107.                 IAP_ADDRH = EE_address / 256;     //送地址高字节(地址需要改变时才需重新送地址)
  108.                 IAP_ADDRL = EE_address % 256;     //送地址低字节
  109.                 IAP_DATA  = *DataAddress;         //送数据到IAP_DATA,只有数据改变时才需重新送
  110.                 EEPROM_Trig();                    //触发EEPROM操作
  111.                 EE_address++;                     //下一个地址
  112.                 DataAddress++;                    //下一个数据
  113.         }while(--number);                   //直到结束
  114.         DisableEEPROM();
  115. }[code]/*---------------------------------------------------------------------*/
  116. /* --- STC MCU Limited ------------------------------------------------*/
  117. /* --- STC 1T Series MCU Demo Programme -------------------------------*/
  118. /* --- Mobile: (86)13922805190 ----------------------------------------*/
  119. /* --- Fax: 86-0513-55012956,55012947,55012969 ------------------------*/
  120. /* --- Tel: 86-0513-55012928,55012929,55012966 ------------------------*/
  121. /* --- Web: www.STCMCU.com --------------------------------------------*/
  122. /* --- Web: www.STCMCUDATA.com  ---------------------------------------*/
  123. /* --- QQ:  800003751 -------------------------------------------------*/
  124. /* 如果要在程序中使用此代码,请在程序中注明使用了STC的资料及程序            */
  125. /*---------------------------------------------------------------------*/
  126. #ifndef        __EEPROM_H
  127. #define        __EEPROM_H
  128. #include        "config.h"
  129. //========================================================================
  130. //                              定义声明
  131. //========================================================================
  132. #define                STC8X1K08        8
  133. #define                STC8X1K16        16
  134. #define                STC8XxK32        32
  135. #define                STC8XxK60        60
  136. //        选择MCU型号
  137. #define        MCU_Type        STC8X1K08  //STC8X1K08, STC8X1K16, STC8XxK32, STC8XxK32, STC8XxK60
  138. /************************** ISP/IAP *****************************
  139.    型号    大小  扇区数  开始地址    结束地址   MOVC读偏移地址
  140. STC8X1K08   4K   8扇区   0x0000  ~  0x0FFF       0x2000
  141. STC8X1K16  12K   24扇区  0x0000  ~  0x2FFF       0x4000
  142. STC8XxK32  32K   64扇区  0x0000  ~  0x7FFF       0x8000
  143. STC8XxK60   4K   8扇区   0x0000  ~  0x0FFF       0xF000
  144. */
  145. #if   (MCU_Type == STC8X1K08)
  146.       #define   MOVC_ShiftAddress    0x2000
  147. #elif (MCU_Type == STC8X1K16)
  148.       #define   MOVC_ShiftAddress    0x4000
  149. #elif (MCU_Type == STC8XxK32)
  150.       #define   MOVC_ShiftAddress    0x8000
  151. #elif (MCU_Type == STC8XxK60)
  152.       #define   MOVC_ShiftAddress    0xF000
  153. #else
  154.       #define   MOVC_ShiftAddress    0xC000                //用户自定义
  155. #endif
  156. void        DisableEEPROM(void);
  157. void         EEPROM_read_n(u16 EE_address,u8 *DataAddress,u16 number);
  158. void         EEPROM_write_n(u16 EE_address,u8 *DataAddress,u16 number);
  159. void        EEPROM_SectorErase(u16 EE_address);
  160. #endif
复制代码
[/code]
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:375
  • 最近打卡:2025-04-26 15:51:33
已绑定手机

27

主题

301

回帖

822

积分

高级会员

积分
822
发表于 2025-1-4 08:38:01 | 显示全部楼层
zwf3*** 发表于 2025-1-3 19:54
感谢您,但现在还没存储上啊

/*---------------------------------------------------------------------*/
/* --- STC MCU Limited ------------------------------------------------*/
/* --- STC 1T Series MCU Demo Programme -------------------------------*/
/* --- Mobile: (86)13922805190 ----------------------------------------*/
/* --- Fax: 86-0513-55012956,55012947,55012969 ------------------------*/
/* --- Tel: 86-0513-55012928,55012929,55012966 ------------------------*/
/* --- Web: www.STCMCU.com --------------------------------------------*/
/* --- Web: www.STCMCUDATA.com  ---------------------------------------*/
/* --- QQ:  800003751 -------------------------------------------------*/
/* 如果要在程序中使用此代码,请在程序中注明使用了STC的资料及程序            */
/*---------------------------------------------------------------------*/

#include "STC8G_H_EEPROM.h"

//========================================================================
// 函数: void        ISP_Disable(void)
// 描述: 禁止访问ISP/IAP.
// 参数: non.
// 返回: non.
// 版本: V1.0, 2012-10-22
//========================================================================
void        DisableEEPROM(void)
{
        IAP_CONTR = 0;                        //禁止IAP操作
        IAP_CMD   = 0;                        //去除IAP命令
        IAP_TRIG  = 0;                        //防止IAP命令误触发
        IAP_ADDRH = 0xff;                //清0地址高字节
        IAP_ADDRL = 0xff;                //清0地址低字节,指向非EEPROM区,防止误操作
}

//========================================================================
// 函数: void EEPROM_Trig(void)
// 描述: 触发EEPROM操作.
// 参数: none.
// 返回: none.
// 版本: V1.0, 2014-6-30
//========================================================================
void EEPROM_Trig(void)
{
        F0 = EA;    //保存全局中断
        EA = 0;     //禁止中断, 避免触发命令无效
        IAP_TRIG = 0x5A;
        IAP_TRIG = 0xA5;                    //先送5AH,再送A5H到IAP触发寄存器,每次都需要如此
                                                                                                                                                        //送完A5H后,IAP命令立即被触发启动
                                                                                                                                                        //CPU等待IAP完成后,才会继续执行程序。
        _nop_();
        _nop_();
        EA = F0;    //恢复全局中断
}

//========================================================================
// 函数: void EEPROM_read_n(u16 EE_address,u8 *DataAddress,u16 number)
// 描述: 从指定EEPROM首地址读出n个字节放指定的缓冲.
// 参数: EE_address:  读出EEPROM的首地址.
//       DataAddress: 读出数据放缓冲的首地址.
//       number:      读出的字节长度.
// 返回: non.
// 版本: V1.0, 2012-10-22
//========================================================================
void EEPROM_read_n(u16 EE_address,u8 *DataAddress,u16 number)
{
        IAP_ENABLE();                           //设置等待时间,允许IAP操作,送一次就够
        IAP_READ();                             //送字节读命令,命令不需改变时,不需重新送命令
        do
        {
                IAP_ADDRH = EE_address / 256;       //送地址高字节(地址需要改变时才需重新送地址)
                IAP_ADDRL = EE_address % 256;       //送地址低字节
                EEPROM_Trig();                      //触发EEPROM操作
                *DataAddress = IAP_DATA;            //读出的数据送往
                EE_address++;
                DataAddress++;
        }while(--number);

        DisableEEPROM();
}

//========================================================================
// 函数: void EEPROM_SectorErase(u16 EE_address)
// 描述: 把指定地址的EEPROM扇区擦除.
// 参数: EE_address:  要擦除的扇区EEPROM的地址.
// 返回: non.
// 版本: V1.0, 2013-5-10
//========================================================================
void EEPROM_SectorErase(u16 EE_address)
{
        IAP_ENABLE();                       //设置等待时间,允许IAP操作,送一次就够
        IAP_ERASE();                        //宏调用, 送扇区擦除命令,命令不需改变时,不需重新送命令
                                                                                                                                                        //只有扇区擦除,没有字节擦除,512字节/扇区。
                                                                                                                                                        //扇区中任意一个字节地址都是扇区地址。
        IAP_ADDRH = EE_address / 256;       //送扇区地址高字节(地址需要改变时才需重新送地址)
        IAP_ADDRL = EE_address % 256;       //送扇区地址低字节
        EEPROM_Trig();                      //触发EEPROM操作
        DisableEEPROM();                    //禁止EEPROM操作
}

//========================================================================
// 函数: void EEPROM_write_n(u16 EE_address,u8 *DataAddress,u16 number)
// 描述: 把缓冲的n个字节写入指定首地址的EEPROM.
// 参数: EE_address:  写入EEPROM的首地址.
//       DataAddress: 写入源数据的缓冲的首地址.
//       number:      写入的字节长度.
// 返回: non.
// 版本: V1.0, 2012-10-22
//========================================================================
void EEPROM_write_n(u16 EE_address,u8 *DataAddress,u16 number)
{       
       
         EEPROM_SectorErase(EE_address);
       
        IAP_ENABLE();                       //设置等待时间,允许IAP操作,送一次就够
        IAP_WRITE();                        //宏调用, 送字节写命令
        do
        {
                IAP_ADDRH = EE_address / 256;     //送地址高字节(地址需要改变时才需重新送地址)
                IAP_ADDRL = EE_address % 256;     //送地址低字节
                IAP_DATA  = *DataAddress;         //送数据到IAP_DATA,只有数据改变时才需重新送
                EEPROM_Trig();                    //触发EEPROM操作
                EE_address++;                     //下一个地址
                DataAddress++;                    //下一个数据
        }while(--number);                   //直到结束
        DisableEEPROM();
}


/*---------------------------------------------------------------------*/
/* --- STC MCU Limited ------------------------------------------------*/
/* --- STC 1T Series MCU Demo Programme -------------------------------*/
/* --- Mobile: (86)13922805190 ----------------------------------------*/
/* --- Fax: 86-0513-55012956,55012947,55012969 ------------------------*/
/* --- Tel: 86-0513-55012928,55012929,55012966 ------------------------*/
/* --- Web: www.STCMCU.com --------------------------------------------*/
/* --- Web: www.STCMCUDATA.com  ---------------------------------------*/
/* --- QQ:  800003751 -------------------------------------------------*/
/* 如果要在程序中使用此代码,请在程序中注明使用了STC的资料及程序            */
/*---------------------------------------------------------------------*/

#ifndef        __EEPROM_H
#define        __EEPROM_H

#include        "config.h"

//========================================================================
//                              定义声明
//========================================================================

#define                STC8X1K08        8
#define                STC8X1K16        16
#define                STC8XxK32        32
#define                STC8XxK60        60

//        选择MCU型号
#define        MCU_Type        STC8X1K08  //STC8X1K08, STC8X1K16, STC8XxK32, STC8XxK32, STC8XxK60

/************************** ISP/IAP *****************************

   型号    大小  扇区数  开始地址    结束地址   MOVC读偏移地址
STC8X1K08   4K   8扇区   0x0000  ~  0x0FFF       0x2000
STC8X1K16  12K   24扇区  0x0000  ~  0x2FFF       0x4000
STC8XxK32  32K   64扇区  0x0000  ~  0x7FFF       0x8000
STC8XxK60   4K   8扇区   0x0000  ~  0x0FFF       0xF000

*/

#if   (MCU_Type == STC8X1K08)
      #define   MOVC_ShiftAddress    0x2000
#elif (MCU_Type == STC8X1K16)
      #define   MOVC_ShiftAddress    0x4000
#elif (MCU_Type == STC8XxK32)
      #define   MOVC_ShiftAddress    0x8000
#elif (MCU_Type == STC8XxK60)
      #define   MOVC_ShiftAddress    0xF000
#else
      #define   MOVC_ShiftAddress    0xC000                //用户自定义
#endif


void        DisableEEPROM(void);
void         EEPROM_read_n(u16 EE_address,u8 *DataAddress,u16 number);
void         EEPROM_write_n(u16 EE_address,u8 *DataAddress,u16 number);
void        EEPROM_SectorErase(u16 EE_address);


#endif

直接用。

回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 02:35 , Processed in 0.412603 second(s), 97 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表