sunguest
发表于 2025-3-5 19:33:43
第六课上冲哥介绍了花式点灯和灯光闪烁
延时函数的用法,使灯 闪烁
讲了dowhile和while的区别,while是先判断后
执行,do while是先执行后判断
介绍了--a和a--的区别,--a是先运算,后输出;a--是
先输出后运算。
https://www.stcaimcu.com/forum.php?mod=image&aid=86925&size=300x300&key=6ac86118fb4e2a62&nocache=yes&type=fixnone
上面语句的
结果是10,9,9和10,10,9
sunguest
发表于 2025-3-5 19:48:08
第六课下讲了函数的使用
模块化编程,后缀带c的文件进行函数定义,
后缀带h的文件对变量类型进行定义
后缀带h的文件用来声明,
后缀带c的文件用来定义函数
sunguest
发表于 2025-3-5 22:20:46
第7课上学习了按键的输入程序
按键的消抖程序
按键判断是否按下
根据按键的按下与否点亮灯
sunguest
发表于 2025-3-5 22:20:50
第7课下学习了按键的输入程序
灯的移位及闪烁程序
数组的使用
利用数组来实现流水灯的功能
定义数组
sunguest
发表于 2025-3-6 09:08:20
第8课介绍了蜂鸣器
sunguest
发表于 2025-3-6 19:51:37
第8集作业,学习总结
增加按键,使功能键可以循环亮
在h文件里定义按键,在c文件里定义函数
sunguest
发表于 2025-3-6 20:15:22
第9课,学习总结
数码管的认识、
数字的循环显示
sunguest
发表于 2025-3-6 20:51:00
第10集,数码管的动态显示
位籹码管16进制的计算表
程序数组定义
显示所需要的数字的方法
sunguest
发表于 2025-3-7 21:34:08
今天 下午收到了,可以说是梦寐以求的实验箱,迫不急待的想试试不停电下载这个功能{:ciya:}
当然首先要感谢宏晶科技对学习的支持,的确这是个实践的,跟着冲哥一起码代码会有更深刻的认识
看到这个新的板子一下子又忘记了如何下载了,翻了会儿说明,才找到p32键(不是复位键,我在这里浪费了好久时间),按下,再按电源键,松开,再松开p32,
就检测到实验箱了。神速的下载
可惜的是,第一次下载好后,弹出驱动程序安装失败,折腾了好久,感觉只有重启一个办法了,重启后,识别成功了。
看到编译好的文件嗖嗖的下载,只有一个字,大开眼界了。
还有一种用复位键下载的方法。就是下载程序时把复位引脚做i/o口用这个选择框不选,实验箱断次电,然后按复位键,进入下载
模式。
sunguest
发表于 2025-3-8 23:51:11
研究了一下板子的接线和冲哥的课程已经有很大的差别了。。
1.2板的数码管是用2个74hc595驱动的。冲哥的程序运行不了。
可以看出,3.2,3.4,3.5脚分别是数据的sck,rck,data.
/*************IO口定义 **************/
sbit P_HC595_SER = P3^4; //pin 14 SER data input
sbit P_HC595_RCLK= P3^5; //pin 12 RCLk store (latch) clock锁存器
sbit P_HC595_SRCLK = P3^2; //pin 11 SRCLK Shift data clock寄存器
向74hc595发送数据的函数,可以看出是一个16位的字节,前8位是并行输出,后8位
是串行输出,通过595的和第9脚输出,所以还要一个595进行解码。本板中并行输出码
为位码,串行输出码为段码。发送时是先送段码,后发送位码,说明是段码8位是串行,位码8位后发是并行。
void Send_595(u8 dat)
{
u8i;
for(i=0; i<8; i++)
{
dat <<= 1;
P_HC595_SER = CY;//单片机CY(Carry): 用于表示加法进算中的进位和减法运算中的借位,
加法运算中有进位或减法运算中有借位则CY位置1,否则为0。CY位是累加器的进位、借位标志。
对于无符号数的运算,CY位就可以表示其是否溢出。但如果是有符号数,则不能按CY标志来判断了。
P_HC595_SRCLK = 1;
P_HC595_SRCLK = 0;
}
/********************** 显示扫描函数 ************************/
void DisplayScan(void)
{
Send_595(t_display]); //输出段码
Send_595(~T_COM); //输出位码
P_HC595_RCLK = 1;
P_HC595_RCLK = 0;
if(++display_index >= 8) display_index = 0;//8位结束回0
}