IAP15W413AS焊管机切割控制程序
/*********焊管机切割控制程序************//***L667 CODE3565 2026 8 29 IAP15W413AS*//*********位置 启动 自动 手动***********//*********电机 气缸 手动 自动***********/#include REG52.H // cutting 切割#include intrins.h //#include string.h //#include stdio.h //#define uint unsigned int //#define uchar unsigned char //sfr INT_CLKO0x8F; //外部中断2 P3.6 扩展寄存器#define CMD_IDLE 0 //空闲模式#define CMD_READ 1 //IAP字节读命令#define CMD_PROGRAM 2 //IAP字节编程命令#define CMD_ERASE 3 //IAP扇区擦除命令#define ENABLE_IAP 0x83 // SYSCLK 12MHz#define IAP_ADDRESS 0x1200 // 选择一段不会与用户程序重叠的 Flash 地址typedef unsigned char BYTE; //Catch_Up接上Catch_Dwon接下typedef unsigned int WORD;bit Signauto0; /*退出循环检测*/bit Rst_Bit0; /**/bit MODE_FLAG; /*工作模式*/bit AutoCut_FLAG; //自动切割bit ManualCut_FLAG; //手动切割bit TableBack_FLAG; //台板退到位sbit MotorP2^6; //电机sbit Cutting_dwonP2^7; //切割机下降sbit ManualP1^0; //手动指示sbit AutomaticP1^1; //自动指示sbit OUT2P1^2; //台板sbit OUTAP1^3; //备用sbit OUTBP1^5; //时间模式 位置模式 指示sbit OUT0P1^6; //手动循环信号指示sbit OUT1P1^7; //定时中断 指示// sbit INTPUT0P3^5; //气缸退// sbit INTPUT1P3^3; //自动P3^3// sbit INTPUT2P3^2; //手动P3^2// sbit INTPUT3P3^4; //临时切割3^4// sbit INTPUT4P3^5; //定长切割3^5sbit INTPUT0P3^2; //定长红外信号sbit INTPUT1P3^3; //临时切割sbit INTPUT2P3^4; //手动sbit INTPUT3P3^5; //自动sbit INTPUT4P3^6; //气缸退到位uint Ad_data;uint Run_TIME; //uint DELAY_A,DELAY_B,DELAY_C; //切割延时uint MODEMARK;uint aa0; /****RUN FLAG****/uint a[10]; //定义数组auchar i; //串口接收计数器uchar k; //信号输入高电平计数器uint counter; //产量计数器bit Receive_Flag; //串口接收标志bit Run_Flag; //自动运行标志uint FLAG_S; //触摸屏显示标志uchar kcounter,kstatus; //按键计数标志 按键状态标志/*----关闭IAP----------------------------*/void IapIdle(){IAP_CONTR 0; //关闭IAP功能IAP_CMD 0; //清除命令寄存器IAP_TRIG 0; //清除触发寄存器IAP_ADDRH 0x80; //将地址设置到非IAP区域IAP_ADDRL 0;}/*-从ISP/IAP/EEPROM区域读取一字节-*/BYTE IapReadByte(WORD addr){BYTE dat; //数据缓冲区IAP_CONTR ENABLE_IAP; //使能IAPIAP_CMD CMD_READ; //设置IAP命令IAP_ADDRL addr; //设置IAP低地址IAP_ADDRH addr 8; //设置IAP高地址IAP_TRIG 0x5a; //写触发命令(0x5a)IAP_TRIG 0xa5; //写触发命令(0xa5)_nop_(); //等待ISP/IAP/EEPROM操作完成dat IAP_DATA; //读ISP/IAP/EEPROM数据IapIdle(); //关闭IAP功能return dat; //返回}/*-写一字节数据到ISP/IAP/EEPROM区域-*/void IapProgramByte(WORD addr, BYTE dat){IAP_CONTR ENABLE_IAP; //使能IAPIAP_CMD CMD_PROGRAM; //设置IAP命令IAP_ADDRL addr; //设置IAP低地址IAP_ADDRH addr 8; //设置IAP高地址IAP_DATA dat; //写ISP/IAP/EEPROM数据IAP_TRIG 0x5a; //写触发命令(0x5a)IAP_TRIG 0xa5; //写触发命令(0xa5)_nop_(); //等待ISP/IAP/EEPROM操作完成IapIdle();}/*---扇区擦除---------------*/void IapEraseSector(WORD addr){IAP_CONTR ENABLE_IAP; //使能IAP valIapReadByte(IAP_ADDRESS1);IAP_CMD CMD_ERASE; //设置IAP命令IAP_ADDRL addr; //设置IAP低地址IAP_ADDRH addr 8; //设置IAP高地址IAP_TRIG 0x5a; //写触发命令(0x5a)IAP_TRIG 0xa5; //写触发命令(0xa5)_nop_(); //等待ISP/IAP/EEPROM操作完成IapIdle();}/*------------------------------------------*/void delay(uint t){uint i,j;for(i0;it;i)for(j0;j1000;j);}/*-----------(1)延时子程序12MHz 加千百十个显示--------*/void Delay100ms(uint x) //{uint i,j;for(i0;ix;i)for(j0;j11000;j);}/********************************************/void resrt_io(){FLAG_S1; //1待 机2切 割printf(va0.val%d\xff\xff\xff,FLAG_S); //Motor1; //电机关Cutting_dwon1; //切割机下降OUTA1; //OUTB1; //Manual0; //手动指示Automatic1; //自动指示}/****************按键计数器状态寄存器归零*************/void RstKey(){kcounter0; //按键计数器归零kstatus0; //状态寄存器归零}/*****************按键低电平检测函数*****************/void LowVoltKey(void) //按键计数器状态标志加一{kcounter;kstatus;}/*****************按键高电平检测函数*****************/void HighVoltKey(void) //按键计数器加一 状态标志归零{kcounter; //按键计数器加一kstatus0; //按键状态标志归零}/******************************************/void red_eeprom(void){uint m,n;mIapReadByte(IAP_ADDRESS); //时间前八位nIapReadByte(IAP_ADDRESS1); //时间后八位DELAY_Am*256n; //排气一段延时时间mIapReadByte(IAP_ADDRESS2); //时间前八位nIapReadByte(IAP_ADDRESS3); //时间后八位DELAY_Bm*256n; //排气一段延时时间MODEMARKIapReadByte(IAP_ADDRESS4);//工作模式DELAY_CIapReadByte(IAP_ADDRESS5);//电机启动后延时切割}/******************************************/void Write_EepromTime(){IapEraseSector(IAP_ADDRESS); //扇区擦除IapProgramByte(IAP_ADDRESS,DELAY_A/256); // 高位IapProgramByte(IAP_ADDRESS1,DELAY_A%256); // 低位IapProgramByte(IAP_ADDRESS2,DELAY_B/256); // 高位IapProgramByte(IAP_ADDRESS3,DELAY_B%256); // 低位IapProgramByte(IAP_ADDRESS4,MODEMARK); // 工作模式IapProgramByte(IAP_ADDRESS5,DELAY_C%256); // 电机启动后延时切割}/*****************************************//***产量 工作模式 自动手动 启动Run_TIME***/void start(){Manual1; //手动指示Automatic0; //自动指示Run_TIME0; //初始化if(MODE_FLAG1) //{/*一:启动无输入为1,永久循环*/FLAG_S2; // 位置模式printf(va2.val%d\xff\xff\xff,FLAG_S); //定时器刷新标志do{ //INTPUT3 启动信号if(ManualCut_FLAG1) //手动临时切割标志{ManualCut_FLAG0;FLAG_S2; //1待 机2切 割printf(va0.val%d\xff\xff\xff,FLAG_S); //定时器刷新标志Motor0; //电机开Delay100ms(DELAY_C); //电机启动后延时切割Cutting_dwon0; //切割机下降Delay100ms(DELAY_B);Motor1; //电机关Delay100ms(10); //延时1秒OUT20; //台板返回TableBack_FLAG1; //台板退标志Cutting_dwon1; //切割机上升FLAG_S1; //1待 机2切 割printf(va0.val%d\xff\xff\xff,FLAG_S); //定时器刷新标志Delay100ms(100); //延时 启动按键释放}//INTPUT3 临时切割if(AutoCut_FLAG1) //按键低电平{AutoCut_FLAG0;FLAG_S2; //1待 机2切 割printf(va0.val%d\xff\xff\xff,FLAG_S); //定时器刷新标志Motor0; //电机开Delay100ms(DELAY_C); //电机启动后延时切割Cutting_dwon0; //切割机下降Delay100ms(DELAY_B);Motor1; //电机关Delay100ms(10); //延时1秒OUT20; //台板返回TableBack_FLAG1; //台板退标志//Cutting_dwon1; //切割机上升FLAG_S1; //1待 机2切 割printf(va0.val%d\xff\xff\xff,FLAG_S); //定时器刷新标志counter; //产量加1printf(n0.val%d\xff\xff\xff,counter); //产量计数Delay100ms(100); //延时 启动按键释放}//INTPUT4 定长切割RstKey(); //for(;kcounter5;) //按键循环5次{if(!INTPUT2) //手动按键低电平 INTPUT2P3^4{LowVoltKey(); //按键低电平 计数器加一状态标志加一}else if(~!INTPUT2) //手动按键高电平{HighVoltKey(); //按键计数器加一 状态标志归零}}if(kstatus3) /*按键状态标志大于等于3为有效值*/{FLAG_S1; //1待 机2切割printf(va0.val%d\xff\xff\xff,FLAG_S); //FLAG_S1; //1手 动2自 动printf(va1.val%d\xff\xff\xff,FLAG_S); //va1触摸屏变量 发送第一次resrt_io();Signauto0; /*行程输入信号连续检测到3次Signauto0退出循环*/Run_Flag0;break;}//手动退出位置循环}while(Run_Flag);}//位置模式else{FLAG_S1; //时间模式printf(va2.val%d\xff\xff\xff,FLAG_S); //定时器刷新标志do{Delay100ms(10);Run_TIME;printf(n3.val%d\xff\xff\xff,Run_TIME); //计时器显示RstKey();for(;kcounter5;) //按键循环5次{if(!INTPUT3) //按键低电平{LowVoltKey(); //按键低电平 计数器加一状态标志加一}else if(~!INTPUT3) //按键高电平{HighVoltKey(); //按键计数器加一 状态标志归零}}if(kstatus3) /*按键状态标志大于等于3为有效值*/{FLAG_S2; //1待 机2切 割printf(va0.val%d\xff\xff\xff,FLAG_S); //定时器刷新标志Motor0; //电机开Delay100ms(DELAY_C); //电机启动后延时切割Cutting_dwon0; //切割机下降Delay100ms(DELAY_B);Motor1; //电机关Cutting_dwon1; //切割机上升FLAG_S1; //1待 机2切 割printf(va0.val%d\xff\xff\xff,FLAG_S); //定时器刷新标志Run_TIME0; //临时切割 计时器归零}if(Run_TIMEDELAY_A){FLAG_S2; //1待 机2切 割printf(va0.val%d\xff\xff\xff,FLAG_S); //定时器刷新标志Motor0; //电机开Delay100ms(DELAY_C); //电机启动后延时切割Cutting_dwon0; //切割机下降Delay100ms(DELAY_B);Motor1; //电机关Cutting_dwon1; //切割机上升FLAG_S1; //1待 机2切 割printf(va0.val%d\xff\xff\xff,FLAG_S); //定时器刷新标志Run_TIME0; //计时器归零counter; //产量加1printf(n0.val%d\xff\xff\xff,counter);//产量计数}RstKey(); //for(;kcounter5;) //按键循环5次{if(!INTPUT2) //手动按键低电平{LowVoltKey(); //按键低电平 计数器加一状态标志加一}else if(~!INTPUT2) //手动按键高电平{HighVoltKey(); //按键计数器加一 状态标志归零}}if(kstatus3) /*按键状态标志大于等于3为有效值*/{FLAG_S1; //1待 机2切割printf(va0.val%d\xff\xff\xff,FLAG_S); //Delay100ms(2);FLAG_S1; //1手 动2自 动printf(va1.val%d\xff\xff\xff,FLAG_S); //va1触摸屏变量 发送第一次Run_TIME0; //计时器归零printf(n4.val%d\xff\xff\xff,Run_TIME);//计时器归零resrt_io();Signauto0; /*行程输入信号连续检测到3次Signauto0退出循环*/Run_Flag0;break;}}while(Run_Flag);}//时间模式}/*------------初始化串口---------------------*/void InitUart(){SCON0X50; //8位数据可变波特率AUXR|0x01; //串口1选择定时器2为波特率发生器AUXR|0X04; //定时器2时钟为Fosc即1TT2L0XE0; //设置定时器处置 110592》9600T2H0XFE; //设置定时器处置 110592》9600AUXR|0X10; //启动定时器2TI1;ES1; //EA1;}/*×--------UART 中断服务程序-------------------**//**×**把接收到的数据存进数组a[i]**i开机初始化****//***×*接收到触摸屏结束码Receive_Flag标志位置1****/void Uart() interrupt 4 using 1{if(RI){if(SBUF0XFA) //触摸屏结束码{Receive_Flag1; //接收数据标志置一RI0; //i0; //数组计数器归零}else{a[i]SBUF; //数组下标位置的数据等于SBUFRI0; //i;}}}/**************定时中断*************************/void timer0() interrupt 1{TH00X53;TL00X32;aa;if(aa300){OUT1~OUT1;aa0;}}//---------外部中断0服务程序 红外检测位置到-----------void Exint0_Routine(void) interrupt 0 // INT0中断入口中断号0{uchar j,q;for(;j8;) //按键循环5次{if(!INTPUT0) //按键低电平{j;q;}else if(~!INTPUT0) //按键高电平{j;q0;}if(q6) //按键低电平AutoCut_FLAG1;elseAutoCut_FLAG0;}}//----------外部中断1服务程序 手动临时切割-------------------void Exint1_Routine(void) interrupt 2 // INT1中断入口中断号2{uchar j,q;for(;j8;) //按键循环5次{if(!INTPUT1) //按键低电平{j;q;}else if(~!INTPUT1) //按键高电平{j;q0;}if(q6) //按键低电平ManualCut_FLAG1;elseManualCut_FLAG0;}}//----------外部中断2服务程序 气缸退到位-------------------void Exint2_Routine(void) interrupt 10 // INT2中断入口中断号10{uchar j,q;if(TableBack_FLAG1) //台板退{for(;j8;) //按键循环8次{if(!INTPUT4) //按键低电平 P3^6;{j;q;}else if(~!INTPUT4) //按键高电平{j;q0;}if(q6) //检测有效值{OUT21; //台板TableBack_FLAG0; //台板退到位}}}}/*************************************************///E0 00 循环时间//E0 01 切割时间//B0 00 显示参数//printh F0 00 00 00 00 00 FA 电机开启//printh F0 01 00 00 00 00 FA 电机关闭//printh F0 02 00 00 00 00 FA 切割开启//printh F0 03 00 00 00 00 FA 切割关闭void main( ) /*主程序开始*/{INTPUT01; //定长红外信号 P3.2INTPUT11; //临时切割 P3.3INTPUT41; //气缸退到位 P3.6AutoCut_FLAG0; //自动切割ManualCut_FLAG0; //手动切割TableBack_FLAG0; //台板退到位AUXR0X80; //STC系列的1T 设置TMOD0X01;TH00X53;TL00X32;ET01;TR01;P_SW10x00; //RXD/P3.0, TXD/P3.1/* 4. 开启中断 */EX01; /* 允许INT0中断 */EX11; /* 允许INT1中断 */IT0 1; //设置INT0的中断类型 (1:仅下降沿 0:上升沿和下降沿)EX0 1; //使能INT0中断IT1 1; //设置INT1的中断类型 (1:仅下降沿 0:上升沿和下降沿)EX1 1; //使能INT1中断INT_CLKO | 0x10; //(EX2 1)使能INT2中断Receive_Flag0;delay(20);InitUart(); //初始化串口resrt_io();Delay100ms(20);red_eeprom(); //printf(XFF,XFF,XFF); //if(MODEMARK0X55) //工作模式{MODE_FLAG0; // 时间模式FLAG_S1; // 时间模式printf(va2.val%d\xff\xff\xff,FLAG_S); //定时器刷新标志}else //{MODE_FLAG1; // 位置模式FLAG_S2; // 位置模式printf(va2.val%d\xff\xff\xff,FLAG_S); //定时器刷新标志} //i0; //数据接收计数器等于0Run_Flag0; //自动标志等于0counter0; //产量归零printf(n0.val%d\xff\xff\xff,counter); // 产量计数printf(n0.val%d\xff\xff\xff,counter); // 产量计数printf(n1.val%d\xff\xff\xff,DELAY_A); // 延时切割时间printf(n2.val%d\xff\xff\xff,DELAY_B); // 切割时间printf(n4.val%d\xff\xff\xff,DELAY_C);//切割时间 校对printf(n5.val%d\xff\xff\xff,MODEMARK);//切割时间 校对while(1){OUT0~OUT0; //手动循环信号指示Delay100ms(20);////////////////////////////////RstKey(); //按键复位for(;kcounter5;) //按键循环5次{if(!INTPUT3) //自动 INTPUT3 P3^5;按键低电平{LowVoltKey();}else if(~!INTPUT3) //按键高电平{HighVoltKey();}}if(kstatus4) /*按键状态标志大于等于3为有效值*/{ /*循环检测 */Run_Flag1; //自动运行标志}//自动if(Receive_Flag1) //串口数据更新标志{Receive_Flag0;if(a[0]0XE0) //EEPROM参数存储{OUT00; //写EEPROM指示if(a[1]0X00){DELAY_Aa[3]*256a[2]; //延时切割时间}else if(a[1]0X01){DELAY_Ba[3]*256a[2]; //延时切割时间}else if(a[1]0X02){DELAY_Ca[3]*256a[2]; //延时切割时间}Write_EepromTime();red_eeprom();printf(n1.val%d\xff\xff\xff,DELAY_A);//切割循环时间 校对printf(n1.val%d\xff\xff\xff,DELAY_A);//切割循环时间 校对printf(n2.val%d\xff\xff\xff,DELAY_B);//切割时间 校对printf(n4.val%d\xff\xff\xff,DELAY_C);//切割时间 校对printf(n5.val%d\xff\xff\xff,MODEMARK);//切割时间 校对}//else if(a[0]0XB0) //B0 00发送主画面 内容{if(a[1]0X00) //{red_eeprom();printf(n1.val%d\xff\xff\xff,DELAY_A);//切割循环时间 校对printf(n1.val%d\xff\xff\xff,DELAY_A);//切割循环时间 校对printf(n2.val%d\xff\xff\xff,DELAY_B);//切割时间 校对printf(n4.val%d\xff\xff\xff,DELAY_C);//切割时间 校对printf(n5.val%d\xff\xff\xff,MODEMARK);//切割时间 校对if(MODEMARK0X55) //工作模式{MODE_FLAG0; // 时间模式FLAG_S1; // 时间模式printf(va2.val%d\xff\xff\xff,FLAG_S); //定时器刷新标志}else //{MODE_FLAG1; // 位置模式FLAG_S2; // 位置模式printf(va2.val%d\xff\xff\xff,FLAG_S); //定时器刷新标志} //}if(a[1]0X01) //{if(MODE_FLAG0) // 时间模式{FLAG_S1;printf(r0.val%d\xff\xff\xff,FLAG_S);//printf(bt0.val%d\xff\xff\xff,FLAG_S);//FLAG_S0; // 时间模式printf(r1.val%d\xff\xff\xff,FLAG_S);//FLAG_S1;printf(n3.val%d\xff\xff\xff,1);// 时间模式}else if(MODE_FLAG1) // 位置模式{FLAG_S0;printf(r0.val%d\xff\xff\xff,FLAG_S);//printf(bt0.val%d\xff\xff\xff,FLAG_S);//FLAG_S1;printf(r1.val%d\xff\xff\xff,FLAG_S);//FLAG_S2;printf(n3.val%d\xff\xff\xff,2);// 位置模式}}}//发送参数到触摸屏else if(a[0]0XC0) //控制模式{if(a[1]0X00) //{OUTB0;MODE_FLAG0; /*时间模式*/MODEMARK0X55;Write_EepromTime();FLAG_S1; // 时间模式printf(va2.val%d\xff\xff\xff,FLAG_S); //定时器刷新标志}else if(a[1]0X01) //{OUTB1;MODE_FLAG1; /*位置模式*/MODEMARK0XAA;Write_EepromTime();FLAG_S2; // 时间模式printf(va2.val%d\xff\xff\xff,FLAG_S); //定时器刷新标志}}//工作模式else if(a[0]0XF0) //B0 00发送主画面 内容{if(a[1]0X00) //电机开启{Motor0;}else if(a[1]0X01) //电机关闭{Motor1;}else if(a[1]0X02) //电机开启{Cutting_dwon0; //切割机下降}else if(a[1]0X03) //电机关闭{Cutting_dwon1; //切割机下降}}}//if(Run_Flag1) //自动运行标志{printf(page 0\XFF\XFF\XFF); //自动界面显示Manual1; //手动指示Automatic0; //自动指示FLAG_S2; //1手 动2自 动printf(va1.val%d\xff\xff\xff,FLAG_S); //va1触摸屏变量 发送第一次Delay100ms(5);start(); //自动运行循环子程序}}} //L667 CODE3565 2026 8 29

相关新闻

graphify在FastAPI代码库上的实战演示:每个节点都是可点击的概念

graphify在FastAPI代码库上的实战演示:每个节点都是可点击的概念

graphify在FastAPI代码库上的实战演示:每个节点都是可点击的概念 【免费下载链接】graphify Turn any codebase, with its docs, SQL schemas, configs, and PDFs, into a queryable knowledge graph. A /graphify skill for Claude Code, Cursor, Codex, and Gemin…

2026/8/29 15:16:44 阅读更多 →
QtPromise:基于Promises/A+的C++异步编程实践

QtPromise:基于Promises/A+的C++异步编程实践

1. 这不是JavaScript的Promise,而是C里真正能落地的异步契约 你有没有在Qt项目里写过这样的代码:一个HTTP请求发出去,回调嵌套三层,最后还要手动检查 QNetworkReply* 是否为空、状态码是否200、响应体是否有效?更糟的…

2026/8/29 15:16:44 阅读更多 →
3分钟把法律合同PDF变成Markdown,MinerU文档解析效率提升10倍

3分钟把法律合同PDF变成Markdown,MinerU文档解析效率提升10倍

3分钟把法律合同PDF变成Markdown,MinerU文档解析效率提升10倍 【免费下载链接】MinerU Transforms complex documents like PDFs and Office docs into LLM-ready markdown/JSON for your Agentic workflows. 项目地址: https://gitcode.com/GitHub_Trending/mi/M…

2026/8/30 17:58:44 阅读更多 →

最新新闻

Embench:构建Embedding模型与检索栈对比评估平台

Embench:构建Embedding模型与检索栈对比评估平台

在检索系统选型时,最容易被低估的工作不是搭建向量库,也不是写召回接口,而是回答一个问题:在同一批业务数据上,不同 embedding 模型和不同检索栈放到一起比较,结果到底差多少?Embench 这个名字代…

2026/8/30 18:00:09 阅读更多 →
航空业Rave Developer修炼指南:航班系统开发实战与架构设计

航空业Rave Developer修炼指南:航班系统开发实战与架构设计

最近在技术社区看到一个很有意思的标题:“Show HN: Learn to become a Rave Developer for the airline industry”。这里的 Rave 并不是电子音乐节里的那个 Rave,而是描述一种对技术保持狂热、快速进入状态、能持续输出价值的开发状态。放到航空业这个场…

2026/8/30 18:00:09 阅读更多 →
从Pragmatik Labs看AI创业:务实派如何从研究走向落地

从Pragmatik Labs看AI创业:务实派如何从研究走向落地

林俊旸宣布创业公司 Pragmatik Labs,这消息在 AI 从业者的时间线里,比一般融资新闻更值得停下来看几眼。原因不只是“又一个研究员出来创业”,而是“Pragmatik”这个词把团队态度写在名字上了:务实、实用、不玩虚的。我下面不聊内…

2026/8/30 18:00:09 阅读更多 →
LLM推理轨迹泄露防护:Aileaks扫描代码仓库密钥

LLM推理轨迹泄露防护:Aileaks扫描代码仓库密钥

如果你在做 LLM 应用开发,或者维护过带推理链的 Agent 服务,大概率见过这样的输出:模型在返回最终答案之前,先吐出一段思考过程。这段过程有时候会包含它调用的接口、内部提示词、上下文数据,甚至刚刚读取的 API Key。…

2026/8/30 18:00:09 阅读更多 →
Claude Code Skill/Tag机制详解:从概念到工程落地

Claude Code Skill/Tag机制详解:从概念到工程落地

最近在技术社区里看到不少关于 Claude Code 的讨论,其中一个被反复提起的词是 Tag。很多开发者第一反应是“这应该类似于给工程打标签”,真正上手才发现完全不是这回事。Claude Code 本身已经能完成不少自动化编码任务,但不少人在真实项目里会…

2026/8/30 18:00:09 阅读更多 →
AI歌声合成从零开始:数据、模型与混音的完整创作流程

AI歌声合成从零开始:数据、模型与混音的完整创作流程

最近一段时间,刷到「AI优香&小桃」这类标题的歌曲视频时,我总会多看几眼。不是因为“AI”这个标签新鲜,而是因为这类作品拼的早已不是“机器会唱歌”这个噱头,而是「声音角色有没有辨识度」「歌曲处理有没有情绪」「整个作品能…

2026/8/30 17:59:09 阅读更多 →

日新闻

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

每年校招季我都会接触不少准备数据库方向笔试的同学,看到最多的状态就是:简历上写着“熟悉 MySQL”“了解索引优化”,一碰到数据库管理工程师的笔试卷,却在索引、事务、锁、备份恢复这些题目上翻车。网易这套 2018 校园招聘数据库…

2026/8/30 0:00:01 阅读更多 →
数字电路时序基石:深入理解建立时间与保持时间

数字电路时序基石:深入理解建立时间与保持时间

1. 这不是“背公式”的事:时间参数到底在约束什么你翻过数字电路教材,一定见过这两个词:建立时间(Setup Time)和保持时间(Hold Time)。它们常被并列写在触发器(Flip-Flop&#xff09…

2026/8/30 0:00:01 阅读更多 →
蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

1. 项目缘起:从赛题到超声波测距机的诞生第八届蓝桥杯单片机设计与开发国赛的题目,我至今记忆犹新。它没有直接给出一个花哨的名字,而是用“超声波测距机”这个朴实无华的功能描述,精准地勾勒出了考核的核心。对于当时备赛的我而言…

2026/8/30 0:00:01 阅读更多 →

周新闻

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

每年校招季我都会接触不少准备数据库方向笔试的同学,看到最多的状态就是:简历上写着“熟悉 MySQL”“了解索引优化”,一碰到数据库管理工程师的笔试卷,却在索引、事务、锁、备份恢复这些题目上翻车。网易这套 2018 校园招聘数据库…

2026/8/30 0:00:01 阅读更多 →
数字电路时序基石:深入理解建立时间与保持时间

数字电路时序基石:深入理解建立时间与保持时间

1. 这不是“背公式”的事:时间参数到底在约束什么你翻过数字电路教材,一定见过这两个词:建立时间(Setup Time)和保持时间(Hold Time)。它们常被并列写在触发器(Flip-Flop&#xff09…

2026/8/30 0:00:01 阅读更多 →
蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

1. 项目缘起:从赛题到超声波测距机的诞生第八届蓝桥杯单片机设计与开发国赛的题目,我至今记忆犹新。它没有直接给出一个花哨的名字,而是用“超声波测距机”这个朴实无华的功能描述,精准地勾勒出了考核的核心。对于当时备赛的我而言…

2026/8/30 0:00:01 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/29 4:34:53 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/28 17:43:04 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/29 2:05:18 阅读更多 →