|
發表於 2025-1-4 10:13:20
|
顯示全部樓層
本帖最後由 xiaolaba 於 2025-1-4 11:33 AM 編輯
逆向工程完畢, 以後就可以每樁賺一萬, 你值得的, 或者是直接開發替代品, 全台的都給他接單
https://www.drive2.ru/b/583315383742640976/
https://patentimages.storage.goo ... 10/CN105041545A.pdf
參考看看
測試用的源碼大致可用, 沒有開關去抖動, 實際上機要另行加入或者大電容徬路.
- #include <mc68hc908.h> // Cosmic C 提供的標頭文件
- #define TEMP_MIN 14
- #define TEMP_MAX 20
- #define HEAT_MIN_TIME 4
- #define HEAT_MAX_TIME 20
- // 定義引腳
- #define START_BUTTON PTAD_PTAD0 // START 接在 PTA0
- #define HEATER_RELAY PTBD_PTBD0 // 繼電器接在 PTB0
- #define INDICATOR_LED PTBD_PTBD1 // 指示燈接在 PTB1
- // 函數原型
- void delay_seconds(unsigned int seconds);
- unsigned int read_temperature();
- // 主程序
- void main(void) {
- unsigned int temp;
- unsigned int heat_time;
- // 初始化引腳
- DDRA = 0x00; // 設置PORTA為輸入 (START按鈕)
- DDRB = 0x03; // 設置PORTB前兩位為輸出 (繼電器和指示燈)
- while (1) {
- if (START_BUTTON == 1) { // 檢查 START 按鈕是否按下
- temp = read_temperature(); // 讀取溫度數值
- if (temp < (TEMP_MIN * 1023) / 1024) { // 若溫度低於14°C
- HEATER_RELAY = 1; // 啟動加熱繼電器
- INDICATOR_LED = 1; // 點亮指示燈
- // 計算預熱時間
- heat_time = HEAT_MIN_TIME +
- ((TEMP_MIN - temp * 1024 / 1023) * (HEAT_MAX_TIME - HEAT_MIN_TIME)) / (TEMP_MIN - TEMP_MAX);
- if (heat_time > HEAT_MAX_TIME) {
- heat_time = HEAT_MAX_TIME;
- } else if (heat_time < HEAT_MIN_TIME) {
- heat_time = HEAT_MIN_TIME;
- }
- delay_seconds(heat_time); // 等待指定時間
- HEATER_RELAY = 0; // 關閉加熱繼電器
- INDICATOR_LED = 0; // 熄滅指示燈
- }
- }
- }
- }
- // 模擬讀取溫度數據
- unsigned int read_temperature() {
- // 模擬 MAX6675 測量,應實際使用 SPI 通訊讀取
- // 返回值範圍 0~1023 (正規化值)
- unsigned int temp_raw = 0; // 例如讀取的模擬數據
- return temp_raw;
- }
- // 簡單的延遲函數 (秒)
- void delay_seconds(unsigned int seconds) {
- volatile unsigned int i, j;
- for (i = 0; i < seconds; i++) {
- for (j = 0; j < 1000; j++) {
- __asm NOP; // 無操作指令,用於耗時
- }
- }
- }
複製代碼 |
評分
-
1
查看全部評分
-
|