找回密码
 立即注册
查看: 1037|回复: 0

荣誉版主 Yim_Hom,2024/5,技术漫步,共享,技术回复 索引

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:213
  • 最近打卡:2025-04-23 20:59:03
已绑定手机

36

主题

560

回帖

1885

积分

荣誉版主

积分
1885
发表于 2024-6-5 16:13:55 | 显示全部楼层 |阅读模式
本帖最后由 Yim_Hom 于 2024-6-5 17:16 编辑

»
STC32位8051交流社区,车规 AEC-Q100 Grade1
技术交流
作品展示
STC15的五轴机械臂Demo






»
STC32位8051交流社区,车规 AEC-Q100 Grade1
技术交流
老鸟反刍/吐槽,新手乐园,毕业设计
STC8H 关于频率的小疑问



#define main_fosc 24000000L仅仅用于计算,计算时用main_fosc。时钟频率用软件设置或者用专门修改时钟频率的函数修改。





»
STC32位8051交流社区,车规 AEC-Q100 Grade1
技术交流
老鸟反刍/吐槽,新手乐园,毕业设计
有没有stc连接8266


写过stc15连esp01s的,
简单给您个思路:
(1)两路串口,一路串口1用于和上位机通信,一路串口2用于和esp01s通信
(2)不同串口可以共用tim2做串口波特率触发器,当然,15及以上的波特率完全可以到119200,这样只需要一个定时器就OK
(3)串口2发送AT指令给esp01s,比如“AT...\r\n”,可以先写出来不判断esp01s不反馈ready或者OK的指令,只要能和esp01s先正常通信就行
(4)AT指令里有发送TCP的那部分,再学点MQTT,实现数据能上传到指定的云
(5)以上实现MCU和云通信正常,再把写好的AD函数结果加进去,必要的时候需要对结果进行处理再上传。
(6)屏幕显示比数据上传要简单,两种方式都要用到AD转换结果,别有冲突就行。
您只要能实现到(3),花点时间就能实现(4)和(5)



»
STC32位8051交流社区,车规 AEC-Q100 Grade1
技术交流
老鸟反刍/吐槽,新手乐园,毕业设计
大神们,在PWM中断中进行脉冲计数,是否可以?急 ...


试试先计数处理,处理完再清标志位呢?


»
STC32位8051交流社区,车规 AEC-Q100 Grade1
技术交流
老鸟反刍/吐槽,新手乐园,毕业设计
proteus+keil联调一个按钮结果失败了


建议放弃proteu,不然后面的坑可能还会更多。


»
STC32位8051交流社区,车规 AEC-Q100 Grade1
技术交流
老鸟反刍/吐槽,新手乐园,毕业设计
求助:stc8H8K64能支持6个独立的pwm输出吗


我用stc15的6路15位pwm能实现,那stc8的肯定能。


»
STC32位8051交流社区,车规 AEC-Q100 Grade1
技术交流
老鸟反刍/吐槽,新手乐园,毕业设计
外部中断使用


没有内部上下拉的话,如果检测外部中断下降沿触发,稳妥的方式可以是外接上拉置高,这样检测到下降沿触发。


»
STC32位8051交流社区,车规 AEC-Q100 Grade1
技术交流
STC开源频谱分析仪-FFT,PID控制,示波器,四轴飞行器,智能小车
STC8G1K08A-36I-SOP8单片机模拟量采集电位器控制舵机同 ...


建议可以直接使用PWM波形发生器来产生PWM驱动舵机,
然后AD转换读取值和舵机角度比例换算,
省掉一个定时器的同时,还用上了更拉风的功能。


»
STC32位8051交流社区,车规 AEC-Q100 Grade1
技术交流
OLED12864-GUI/U8g2-科学计算器
江科大STM32的OLED程序移植到STC15W4K58S4和STC8H8K64U ...


»
STC32位8051交流社区,车规 AEC-Q100 Grade1
技术交流
定时器/计内部时钟,计数器/计外部脉冲,时钟分频输出,软件延时
定时器T1 初始化#define Timer1_HZ 10000UL//10KHz是什 ...


#define Timer1_HZ  10000UL//10KHz//此处,这么定义,是啥意思?

#define是宏定义,宏定义的用法应该知道吧?
Timer1_HZ是名,对应定时器1初始化函数里的Timer1_HZ
10000UL可以根据你的需要随时修改,如果在一个地方用,那可以不用宏定义,
如果在多个地方用,只修改10000UL,就实现了全部修改。
UL的意思表示unsigned long,不然编译器就没法按照你的意图处理了。
//是注释,也就是10K赫兹,10000UL对应10KHz


Yim_Hom 发表于 2024-5-21 16:36
#define Timer1_HZ  10000UL//10KHz//此处,这么定义,是啥意思?

#define是宏定义,宏定义的用法应该知道 ...


感谢老师指点,我想定义1ms中断一次,这里的10KHz应该为多少??


Yim_Hom 发表于 2024-5-22 12:05
周期是频率的倒数啊,所以1/1000啊




理解了,是我计算方法有问题,感谢老师。



380091044 发表于 2024-5-22 17:40
理解了,是我计算方法有问题,感谢老师。


不客气,称不上老师。
可以多看看手册,不懂的多百度多问




»
STC32位8051交流社区,车规 AEC-Q100 Grade1
技术交流
I/O读写及点灯,外部中断 ,所有I/O都支持的普通I/O中断,按键扫描
验证 STC8H8K64U 外部中断 INT0/INT1 上升沿/下降沿中断 ...



»
STC32位8051交流社区,车规 AEC-Q100 Grade1
技术交流
I/O读写及点灯,外部中断 ,所有I/O都支持的普通I/O中断,按键扫描
官方跑马灯程序学习疑问

有简单,有复杂,也可以自己写,用数组 、移位、左右滚动、指针…等等都可以

»
STC32位8051交流社区,车规 AEC-Q100 Grade1
技术交流
ADC/比较器,DMA支持的12位ADC,轨到轨比较器,DAC
sc15w单片机ADC调不出来10位

如果是STC15的话,试试这样写

/**************************************
功能描述:ADC口初始化
入口参数:无
返回值:无
***************************************/
void ADC_config(void)
{
    ADC_CONTR|=0x80;        //开AD转换电源
    Delay_ms(10);           //适当延时等待AD转换供电稳定
    P1ASF|=0x01;            //选择P1.0作为模拟功能AD使用
    ADC_CONTR|=0x00;        //选择P1.0作为AD转换通道输入使用
    ADC_CONTR|=0x60;        //AD转换速度为90个时钟周期转换一次
    ADC_CONTR&=0xEF;        //清AD转换完成标志
    EADC=0;                 //禁止ADC转换中断
    CLK_DIV|=0x20;          //ADC转换结果ADC_RES存高2位,ADC_RESL存低8位
    ADC_CONTR|=0x08;        //启动AD转换,ADC_START=1
}

/**************************************
功能描述:ADC口检测AD转换值函数
入口参数:无
返回值:ADC 10位数据
***************************************/
u16 Get_ADC10bitResult(void)
{
    u16 AD_Dat=0;
    ADC_CONTR&=0xEF;           // 将ADC_FLAG清0
    //10位AD结果的高2位放ADC_RES的低2位,低8位在ADC_RESL
    AD_Dat = ADC_RES;          //将ADC_RES低2位移到应在的第9位和第10位
    AD_Dat <<= 8;
    AD_Dat|= ADC_RESL;         //将ADC_RESL的8位移到应在的低8位
    ADC_CONTR|=0x08;           //重新启动AD转换,ADC_START=1。
    return AD_Dat;
}



前行者 发表于 2024-5-19 18:50
谢谢,我试一下


客气,如果不熟的话,可以先用一种移位方式,能读出来10位AD,说明成功了,然后再用另一种移位方式读成功。如果两种方式都可以了,再去if。。。else。。。选择移位方式。



»
STC32位8051交流社区,车规 AEC-Q100 Grade1
技术交流
综合讨论
STC8h的Delay延时函数 | 已解决


如果只是临时需要延时,直接可以把库函数中的unsigned char里把char改成int,这样肯定比255大,不会出现溢出。
如果使用延时函数,有相对高的要求,可以参考以下三种方案:
第一种,在常用的主频确定的情况下,用STC-ISP里的“软件延时计数器”,分别生成1us和1ms的精确延时,然后改写成对应的Delay_us和Delay_ms函数,如下:
void Delay1ms(void)        //@22.1184MHz
{
        u8 data i, j;

        _nop_();
        _nop_();
        i = 22;
        j = 128;
        do
        {
                while (--j);
        } while (--i);
}

void Delay_ms(u16 ms)
{
    u16 i;
    for(i=0;i<ms;i++)
    {
        Delay1ms();
    }
}

第二种:把一个不经常用的定时器,改写成延时函数,可以实现非常精准的延时。
第三种:二楼那位的回答。

每一种方式都各有优略,但还是推荐第一种,毕竟初学者一般从开始点灯到后期整板成一个小项目,基本不会过多的去改变主频。利用官方isp生成相对精准且可靠的延时满足使用即可。


Yim_Hom 发表于 2024-5-19 11:53
如果只是临时需要延时,直接可以把库函数中的unsigned char里把char改成int,这样肯定比255大,不会出现溢 ...


谢谢大佬,很有帮助

点评 Yim_Hom
客气




»
STC32位8051交流社区,车规 AEC-Q100 Grade1
技术交流
老鸟反刍/吐槽,新手乐园,毕业设计
STC8G,外部中断,如何判断上下边沿

定义一个flag;
然后正常配置上升沿下降沿都触发;
在中断中读你的触发flag=。。。,
然后判断你的flag是1还是0。
不就知道是上升还是下降了吗?



[tr][/tr]
[tr][/tr]
手里有8H的开天斧,这样测试了一下:
P32对应INT0,设置为下降沿触发,初始化P32为准双向口且使能上拉电阻,确保初始电平为1,这样在按键没有按下的情况下读取P32的值,为1;当P32按下的时候,读取P32的值变为0;松开后继续变为1。
P33对应INT1,设置为上升下降沿触发,初始化P33为准双向口且失能上拉电阻,并且P33赋值为0,确保初始电平为0,这样P33在没有外接VCC的情况下读取的值为0;当外接VCC后,P33的值变为1;断开VCC后继续变为0。
这样就绝对验证了是上升沿还是下降沿触发,也从根儿上知道了究竟。





»
STC32位8051交流社区,车规 AEC-Q100 Grade1
技术交流
开源广场及教学视频交流
STC老梁开源示波器尝鲜儿

»
STC32位8051交流社区,车规 AEC-Q100 Grade1
技术交流
综合讨论
求助贴:STC15无法与STC-ISP软件连接,无法检测到芯片【 ...

感觉就像是芯片没断电。。。。
最简单的方式测试,拿任何一种可以正常下载的串口下载工具连一个DIP封装的stc15,插拔下载工具时STC-ISP均可以识别到串口,可以初步确定串口工具正常,然后再单独连接STC15的VCC和GND,能正常下载就说明主控OK。剩下的就去排查板子的问题。


»
STC32位8051交流社区,车规 AEC-Q100 Grade1
技术交流
作品展示
用STC8G1K08A做了一个蓄电池修复充电模块


stb988 发表于 2024-5-12 09:13
可以,你支持一下吧https://x.jlc.com/platform/detai ... 06a8c29f9233d153bc1


不见得开源了就有商业价值,可以的话用于学习,不可以的话也没关系。
主要是我支持了也用不上,这东西对我没啥意义,嘿嘿。。。

»
STC32位8051交流社区,车规 AEC-Q100 Grade1
技术交流
综合讨论
求助!急 键盘扫描串口发送键值不定时异常 ...


班门弄个斧:您说的不稳定是哪个方面?初始化?主循环?按键扫描?状态机还是轮询?还是串口发送?
另外多考虑一个现场地线的问题,我们也经常碰到现场的故障在家里复现不了的情况,首先把程序的问题排除干净,然后考虑干扰,干扰可能是EMC或者其他。
C8051F040都碰到过程序跑飞的情况,分时轮询500ms的程序指示灯没反应,最后判断的是地线问题。



»
STC32位8051交流社区,车规 AEC-Q100 Grade1
技术交流
综合讨论
本来这段代码是这样,全部在demo.c里面。我移另一个文件 ...




这样够直观吗?

Yim_Hom 发表于 2024-5-28 14:49
这样够直观吗?


好像懂了,等会回去电脑上试试
先把那段代码赋值,定义
然后调用tim2这段

点评 Yim_Hom
嗯,我只是举个例子,看懂就好。您可以自己把TIM1的初始化单独写一个,然后包含到UART1的初始化里,模块就很清晰,这样用起来自己一看就明白。[color=rgb(153, 153, 153) !important][color=rgb(153, 153, 153) !important]删除
  详情 回复 [color=#999999 !important]发表于 2024-5-28 16:12





vb2002 发表于 2024-5-28 14:51
好像懂了,等会回去电脑上试试
先把那段代码赋值,定义
然后调用tim2这段 ...


嗯,我只是举个例子,看懂就好。您可以自己把TIM1的初始化单独写一个,然后包含到UART1的初始化里,模块就很清晰,这样用起来自己一看就明白。

Yim_Hom 发表于 2024-5-28 16:12
嗯,我只是举个例子,看懂就好。您可以自己把TIM1的初始化单独写一个,然后包含到UART1的初始化里,模块 ...


非常感谢您的启发,已经弄好了。您看看对吗?
这下主程序里面看着简洁多了。以后要更改配置,直接再.H那里改就好了







点评 Yim_Hom
不用客气。 这不挺好的嘛,干净整洁,再加上注释,就算忘了也分分钟能反应过来。 可以建议您再继续优化一下,模块化到每一步,再配合上官方库函数,哈哈。。。之前没用过STC8,从15换到8了,目前效果还行。 加油。 [[color=rgb(153, 153, 153) !important][color=rgb(153, 153, 153) !important]删除
  详情 回复 [color=#999999 !important]发表于 2024-5-28 23:26
[color=#999999 !important]

[color=#999999 !important]





vb2002 发表于 2024-5-28 18:42
非常感谢您的启发,已经弄好了。您看看对吗?
这下主程序里面看着简洁多了。以后要更改配置,直接再.H那 ...


不用客气。
这不挺好的嘛,干净整洁,再加上注释,就算忘了也分分钟能反应过来。
可以建议您再继续优化一下,模块化到每一步,再配合上官方库函数,哈哈。。。之前没用过STC8,从15换到8了,目前效果还行。
加油。



»
STC32位8051交流社区,车规 AEC-Q100 Grade1
技术交流
老鸟反刍/吐槽,新手乐园,毕业设计
请教STC15串口1与485问题


[color=rgb(153, 153, 153) !important]别叫老师, 没怎么用过中断发送,我都是习惯阻塞。看这意思是发送完TXDATA数组以后num清零啊 ...
  [color=rgb(153, 153, 153) !important]有什么奇怪的,列举出来的还没看明白?开头num直接等于1,所以就一直发送啊。 ...
  [color=rgb(153, 153, 153) !important]前面的uchar flag,num=1; 中断里 num = SBUF; //P0显示串口数据 主程序里 if (num==1) ...
  [color=rgb(153, 153, 153) !important]uchar flag,num=1;
  [color=rgb(153, 153, 153) !important]简单扫了眼您的主程序, 先进行端口初始化,然后串口初始化, 进入wihie循环,判断NUM是否为1, 在中断里只 ...





















































































































































































































































































































































































































































































































































































































































































































回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 04:03 , Processed in 0.193563 second(s), 46 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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