找回密码
 立即注册
楼主: silas3082

Ai8051U 实验箱 学习开始打卡

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:351
  • 最近打卡:2025-05-05 07:06:46

7

主题

281

回帖

1067

积分

金牌会员

积分
1067
发表于 2024-12-14 16:41:00 | 显示全部楼层

回复

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:85
  • 最近打卡:2025-03-06 07:45:38

7

主题

49

回帖

534

积分

高级会员

积分
534
发表于 2024-12-14 22:35:55 | 显示全部楼层

任务四:虚拟显示——LED和数码管

这部分介绍了用ISP软件虚拟显示led和数码管

微信截图_20241214222252.png

微信截图_20241214222229.png

u8 state_now=0;void PLED_40(void){u8 cod[8];
cod[0] = 0x0f;     //表示开启P0-P3
cod[1] = 0x01;      //P0端口
cod[2] = 0x01;        //P1端口
cod[3] = ~T_NUM[state_now];           //P2端口
cod[4] = 0x01;          //P3端口
LED40_SendData(cod, 5);P2=~T_NUM[state_now];
state_now++;
if(state_now>7){
state_now=0;
}
P2=~T_NUM[state_now];
state_now++;
if(state_now>7){
state_now=0;
}
​}

实现p2端口8个led流水灯

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:85
  • 最近打卡:2025-03-06 07:45:38

7

主题

49

回帖

534

积分

高级会员

积分
534
发表于 2024-12-14 22:56:59 | 显示全部楼层

虚拟显示数码管

void SEG_PC(void){u8 cod[8];
cod[0] = SEG_NUMB[shi/10];     //小时的十位
cod[1] = SEG_NUMB[shi%10];
cod[2] = SEG_NUMB[16];cod[3] = SEG_NUMB[fen/10];
cod[4] = SEG_NUMB[fen%10];
cod[5] = SEG_NUMB[16];cod[6] = SEG_NUMB[miao/10];
cod[7] = SEG_NUMB[miao%10];
SEG7_ShowCode(cod);
}
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:58
  • 最近打卡:2025-05-05 09:21:01

718

主题

1万

回帖

1万

积分

管理员

积分
15694
发表于 2024-12-14 22:58:23 | 显示全部楼层
截图202412142255137458.jpg

截图202412142255422804.jpg

截图202412142256183991.jpg


截图202412142257016556.jpg


截图202412142257576786.jpg


截图202412142258197679.jpg






回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:85
  • 最近打卡:2025-03-06 07:45:38

7

主题

49

回帖

534

积分

高级会员

积分
534
发表于 2024-12-15 23:49:04 | 显示全部楼层

作业:

简易10秒免单计数器

1、在前四位数码管上显示目标时间,即“10.00”表示定时时间10秒钟。
2、后四位显示当前的计时00.00,最小单位为10ms。
3、按下开始按钮后,每10ms最末尾的数字+1;直到按下结束按钮后停止计数。

这一个部分感谢:严西湖***大佬提供的代码思路,他的代码可以实现p34按键按下开始和停止计时,如果在10s的区间,数码管会有相应的显示,没有清零数码管的操作。参照他的代码,完善了一下我自己的代码。

我用p34按钮开始和停止计时,p33按钮进行复位。(这里我试了实验箱上的P32,33,34,35,能正常操作的只有p33\34,代码改为p33/35就不能正常开始计时,不知道哪位大佬知道原因)

挑战成功则数码管下方的led流水灯显示。

数码管数字小数点位=用数字位+小数点位,如:

Display_Seg( SEG_NUMB[0]+SEG_NUMB[18], ~T_NUM[1] )

描述 数字 0 .

这里一个知识点就是用一个暂停标志位pauseTag来控制计数函数计数或者停止

最开始pauseTag==1表示暂停,p34按下时,pauseTag==0,表示开始


void key_task(void){
 if(P34==0){
   key_vol++;
	 if(key_vol==5){
		 
		 if(pauseTag==1){                //如果暂停,则开始
		 pauseTag=0;
		 }
		 else if(pauseTag==0){            //如果开始,则暂停
		 pauseTag=1;

			 if(miao==10 &&haomiao>50||miao==9 && haomiao>50){
			 win=1;
	
			 }
		 }
	 
	 }
	 }
 else if(P33==0){
  key_vol++;
 if(key_vol==5){
	 pauseTag==1;
	 haomiao=0;
	 miao=0;
	 win=0;
	 P0=0xFF;

 }
 
 }
 else {
 key_vol=0;
	 
 }
 
}
void CountUp(void){ 

		if(pauseTag==0){

		 haomiao++;
	if(haomiao>100){
	haomiao=0;
		miao++;
		if(miao>15){
		miao=0;
		}
	}
		}
 
}

upload 附件:test.rar

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:84
  • 最近打卡:2025-04-24 17:04:30

0

主题

3

回帖

368

积分

中级会员

积分
368
发表于 2024-12-16 07:51:16 来自手机 | 显示全部楼层
666
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:126
  • 最近打卡:2025-05-05 09:17:05
已绑定手机

2

主题

106

回帖

278

积分

中级会员

积分
278
发表于 2024-12-16 08:59:14 | 显示全部楼层

这个实验箱很赞 qiang

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:85
  • 最近打卡:2025-03-06 07:45:38

7

主题

49

回帖

534

积分

高级会员

积分
534
发表于 2024-12-16 09:02:05 | 显示全部楼层

确实很好,对学习有很大帮助
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:85
  • 最近打卡:2025-03-06 07:45:38

7

主题

49

回帖

534

积分

高级会员

积分
534
发表于 2024-12-16 11:33:00 | 显示全部楼层

数码管作业拓展:

在此基础上,自己想着之前弄了一个倒计时,当时也是一知半解

的,用现在的方法实现。

目标:按p43开始计时,按p42增加计时时间,按p41减小计时时间,按p53重置。

upload 附件:test.rar

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:85
  • 最近打卡:2025-03-06 07:45:38

7

主题

49

回帖

534

积分

高级会员

积分
534
发表于 2024-12-20 22:20:03 | 显示全部楼层

第十集 虚拟LED和数码管

本集主要延续之前课程知识点,用第虚拟LED和数码管显示输出。

有三个任务:

////任务1:P2口流水灯,P10闪烁u8 p2_state=0x01;
u8 p10_state=0;void Task_1(void){
//////P20端口流水灯///////
LED40_SetPort(2, ~p2_state);       //点亮P20端口
p2_state=(p2_state<<1);if(p2_state==0){

	p2_state=0x01;

}
/////////P10端口闪烁
if(p2_state==0){

	p2_state=0x01;

}
/////////P10端口闪烁
​if(p10_state==0){
LED40_SetBit(1, 0);
}
else{LED40_ClrBit(1, 0);}
p10_state=!p10_state;
}
p10_state=!p10_state;
​}///任务2  左边数码管显示p32按下次数,右边数码管显示p33按下次数u32 Key_Count=0;void Task_2(void){Key_Count=Key1_Count*10000+Key2_Count;SEG7_ShowLong(Key_Count, 10);
SEG7_ShowLong(Key_Count, 10);
​}//////任务3:按下数字按键,在数码管上显示对应的数字u32 Rec_Num=0;void Task_3(void){SEG7_ShowLong(Rec_Num-48, 10);}

upload 附件:test.rar

回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-5 14:51 , Processed in 0.129171 second(s), 119 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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