East Wind 41
发表于 2024-12-10 21:43:07
擎天柱-----定时器周期性调度任务.
8H8K64U
发表于 2024-12-11 10:49:25
试验箱昨日已送,请注意查收
East Wind 41
发表于 2024-12-11 11:30:41
8H8K64U 发表于 2024-12-11 10:49
试验箱昨日已送,请注意查收
好的,谢谢版主.谢谢论坛.谢谢STC官方
East Wind 41
发表于 2024-12-11 13:55:48
第8集 定时器周期性调度任务 代码新理解(个人理解,欢迎纠正)
East Wind 41
发表于 2024-12-11 19:31:14
第9集学习内容 (第9集. 数码管)
1.数码管介绍
数码管由多个发光二极管封装在一起组成,他们可以有很多种颜色,很多种外形,很多种样式·都是通过点亮内部的LED来显示的,理论可以显示任意的字符或者图案。共阴(负极),共阳(正极)2种.
2.数码管显示原理
74HC595是一个8位串行输入、并行输出的位移缓存器。
74hc 595工作原理演示
3.数码管静态显示
数码管段码,位码的概念
多个同类型的变量,尽量声明成一个变量数组
ISP数码管工具使用方法演示
数组的大括号后面要加分号
4.数码管动态显示
具体的控制方法:每个数码管延时不能太短,我们这边程序就·以1ms为准,且需要保证一个循环 的时间不能大于20ms,因为人眼的视觉不容易分辨出50HZ以上的动态刷新。
简易时钟的C代码实现,0xFD文字记得要处理,避免出现问题.
5.虚拟显示——LED和数码管
擎天柱调用虚拟接口显示流水灯演示
擎天柱调用虚拟接口秒表显示演示
小知识:static在c语言中的作用
在C语言中,关键字static主要有以下几种作用:
[*]限定变量和函数的作用域:加上static关键字后,变量和函数的作用域通常被限定在定义所在的文件内部,不能在其他文件中被访问和使用,这方便了程序的管理和维护。
[*]防止冲突:在多文件程序中,如果多个文件中定义了同名的静态变量或函数,则它们之间不会产生冲突,这样可以避免命名空间的污染。
[*]初始化:静态变量在程序运行时只会初始化一次,常常用于实现单例模式、缓存等功能。
[*]存储位置:静态变量和函数通常存储在程序的数据段和代码段中,而不是栈内存中,因此它们的访问速度更快。
[*]对象的持久性:静态变量在程序生命周期内一直存在,即使在函数调用结束后也不会被销毁,因此可以用于实现一些需要长期保存数据的功能。
[*]静态局部变量:被static修饰的局部变量只被初始化一次,并且在函数调用之间其值保持不变,作用范围为定义它的函数或语句块。
[*]静态全局变量:被static修饰的全局变量仅在定义它的源文件中有效,防止在其他文件单元中被引用。
[*]静态函数:被static修饰的函数仅在定义它的文件中有效,不能被其他文件调用,实现了对该函数的封装。
East Wind 41
发表于 2024-12-12 20:26:46
感谢 www.STCAI.com , 感谢STCAI论坛,感谢曹经理,赠送的Ai8051U试验箱已收到.
一定认真的学习,把试验箱用好,祝www.STCAI.com越来越强大
East Wind 41
发表于 2024-12-12 22:54:33
Ai8051U的优美音乐响起来,音质刚刚的{:ciya:}
按照梁工的音乐盛宴贴下载的https://www.stcaimcu.com/forum.p ... mp;extra=#pid129736
East Wind 41
发表于 2024-12-21 20:01:04
第10集学习内容 (第十集 虚拟LED和数码管)
1.虚拟显示LED
硬件:擎天柱 AI8051试验箱
软件:AI-ISP
调试接口(擎天柱-LED-DIP40)介绍
2.虚拟显示数码管
在C语言中,‘extern’是一个关键字,用于表示一个变量或函数在其他文件或模块已经定义,也可以在当前文件或模块使用。
具体来说,‘extern’可以有以下俩种用法:
1. 用于声明全局变量或函数,在一个文件中声明一个全局变量或函数为extern,表示该变量或函数在其他文件中定义,这样就可以在当前文件中使用该变量或函数,例如:
extern int count; //声明全局变量count在其他文件中定义
extern void print(); //声明函数print在其他文件中定义
2. 用于引用全局变量或函数:在当前文件中引用其他文件中已经定义的全局变量或函数。例如:
extern int count; //声明全局变量count在其他文件中定义
printf("count=%d\n", count); //引用全局变量count
使用extern关键字的好处是可以在多个文件中共享变量和函数,方便了模块化编程和代码重用。
需要注意的是,如果在同一个文件中定义了变量或函数并使用了extern关键字,这个变量或函数就会变成全局变量或函数,可以被其他文件中的代码访问.
3.虚拟键盘
East Wind 41
发表于 2025-1-26 15:32:36
第11集学习内容
1.矩阵按键的原理
矩阵按键可以减少I/O口的占用,用有效的端口实现更多得按键.缺点:检测慢一些,不能检测多个按键一起按下的状态.
2.矩阵按键的程序代码实现
小插曲:设置代码缩进为4个空格对其.Configuration---Editor选项卡---Tab size:调整为4.
声明变量时:不能赋值,加extern修饰符后,所有C文件中都可以调用.
变量定义时:可以赋初始值
1.所有行端口输出高电平,检测到行端口电平为低时,判断行端口数字.
2.所有列端口输出高电平,检测到列端口电平为低时,判断列端口数字.
3.判断是几号按键按下,赋值变量为对应数值.
3.密码锁的实现.保存键值到数组,然后进行比对处理.
4.思考按键防抖如何实现的..PW_write_Task函数为10毫秒执行一次,Key_Vol3等于5时才会保存键值,相当于50MS防抖.
East Wind 41
发表于 2025-1-28 16:36:11
第12集学习内容
1.Ai8051U复位的意义.
1.确保单片机在开始工作时处于已知的状态,使其能够正确初始化各个寄存器和外设。
2.没有进行复位时,内部控制寄存器的内容可能是随机的,这可能导致定时器溢出、中断异常、外设误操作等不确定行为。
3.系统的初始化,包括清除寄存器、设置默认值、配置时钟等,为系统正常运行做好准备。
4.确保程序从正确的地址开始执行,避免跳转到未知的地址或执行错误的指令。
2.Ai8051U复位方式, 有硬件复位和软件复位两种.
硬件复位:上电复位
勾选上电复位使用较长延时,Ai8051U复位时间约有100多毫秒.
将P3.2 P3.3至少一个上拉一个5.1K电阻到VCC,可以快速复位.时间:几十毫秒内.
低压复位
勾选允许低压复位选项,当VCC电压低于检测电压值时,MCU会产生低压复位。不勾选,当VCC电压低于检测电压值时,MCU会产生低压中断标志。如果使能了低压中断的 话,就会产生低压中断。低电压值可选:2V 2.4V 2.7V 3V.
复位脚复位(低电平复位)
ISP软件去勾复位脚用作I/O口,P4.7脚通过300欧电阻对地接复位开关.
重点:看门狗复位(程序有USB功能记得先加USB复位)
WDT_CONTR=0x24,打开看门狗,12M1S
WDT_CONTR=0x24,清除看门狗计数.
软件复位:通过操作寄存器进行复位
IAP_CONTR = 0x60;复位系统到下载模式
IAP_CONTR = 0x60;复位系统到初始状态