HNU小学期BSP软件编程基础十道测试题

http://t.csdnimg.cn/Yv0R1 文章参考了这位大佬的代码,在他的基础上进行了纠错、完善等处理。

配置

编程前的准备工作按大佬的流程即可,稍有不同的是学习通课程网站的资料里没有头文件的整个压缩包了,但我们可以下载某个BSP版的工程文件,并在里面找到inc文件夹,里面包含所有头文件。

后面把这个文件夹复制到你想要的地方,然后配置的时候引用这个路径就好。

库文件也在刚刚的BSP版的工程文件里面的source里,选择全部文件类型才能看到库文件STCBSP_V3.6.LIB。

不同之处就以上两点,其余的按大佬文中的配置流程即可。

测试题(持续更新中)

1、Display: 在数码管指定位置显示指定内容。编写程序,在数码管显示"  12HL- 21" 。
#include "STC15F2K60S2.H"
#include "displayer.H" 
#include "sys.H"code unsigned long SysClock=11059200L;        //必须。 (定义系统工作时钟频率,用户可以修改,且必须与实际工作频率(下载时选择的)一致#ifdef _displayer_H_                          //显示模块选用时必须。(数码管显示译码表,用戶可修改、增加等) 
code char decode_table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x08,0x40,0x01,0x77,0x7c,0x39,0x5e,0x79,0x78,0x76,0x38,0x54,0x5c,0x73,0x67,0x3e,0x6e};  /* 序号:   0    1    2    3    4    5    6    7    8    9    10     11	 12   13   14   15   16   17   18   19   20   21   22   23   24   25   26   27 *//* 显示:   0    1    2    3    4    5    6    7    8    9    (无)   下-  中-  上-   A    b    C    d    E    F    H    L    n    o    P    q    U    y */  
#endifvoid main()
{  				displayerInit();                              LedPrint(0);SetDisplayerArea(0,6);                           Seg7Print(1,2,20,21,12,2,1);	 MySTC_Init();while(1)MySTC_OS();
}

按老师要求加上了其他一些字母的编码,修改在decode_table[]中。


2、按键:按下K1,数码管灯显示"H"。松开后灭掉。
#include "STC15F2K60S2.H"
#include "sys.H"
#include "displayer.H"            
#include "key.H" code unsigned long SysClock=11059200;#ifdef _displayer_H_                          
code char decode_table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x08,0x40,0x01,0x76,0x38};/* 序号:   0    1    2    3    4    5    6    7    8    9    10     11	 12   13   14   15  *//* 显示:   0    1    2    3    4    5    6    7    8    9    (无)   下-  中-  上-   H    L  */  #endifchar a=10;void myKey_callback()
{ char k;k=GetKeyAct(enumKey1);if( k == enumKeyPress ) a=14;else if( k == enumKeyRelease ) a=10;Seg7Print(10,10,10,10,10,10,10,a);}
}void my10mS_callback(){
Seg7Print(10,10,10,10,10,10,10,a);}void main(){DisplayerInit();   KeyInit(); LedPrint(0);SetDisplayerArea(0,7);//SetEventCallBack(enumEventSys10mS, my10mS_callback);SetEventCallBack(enumEventKey, myKey_callback);MySTC_Init();while(1){MySTC_OS();}
}

在系统事件10ms即SetEventCallBack(enumEventSys10mS, my10mS_callback)那里进行了修改,去掉了那句语句,实际上对应的处理函数也可以去掉。因为系统事件10ms会耗费系统资源,不如只用按键事件,并对按键事件处理函数稍作修改即可。

同时注意,当前版本按键初始化KeyInit();中间没有下横线_

3、蜂呜器:开机后发出指定频率。开机后发出1.2KHz 1.8S的声音。
#include "STC15F2K60S2.H"
#include "sys.H"
#include "beep.H"code unsigned long SysClock=11059200L;int main(){BeepInit();SetBeep(1200,180);MySTC_Init();while(1)MySTC_OS();}

暂无修改。

4、音乐:开机后A调,每分钟100拍,播放1、2、3、4、5 (给简谱)。
#include "STC15F2K60S2.H"
#include "sys.H"
#include "displayer.H" 
#include "Beep.H"
#include "music.H"code unsigned long SysClock=11059200;#ifdef _displayer_H_ 
code char decode_table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x08,0x40,0x01,0x76,0x38};/* 序号:   0    1    2    3    4    5    6    7    8    9    10     11	 12   13   14   15  *//* 显示:   0    1    2    3    4    5    6    7    8    9    (无)   下-  中-  上-   H    L  */  #endifcode unsigned char arr[]={0x31,0x10,0x32,0x10,0x33,0x10,0x34,0x10,0x35,0x10};int main(){DisplayerInit();LedPrint(0);SetDisplayerArea(0,7);BeepInit();MusicPlayerInit();SetPlayerMode(enumModePlay);SetMusic(100,0xFA,arr,10,enumMscDrvSeg7andLed);MySTC_Init();while(1){MySTC_OS();}}

增加了用7段数码管Seg7显示信息和用Led指示灯打拍的功能。

记得添加dispalyer模块,并且指定数码管范围即语句SetDisplayerArea(0,7);

数码管左侧显示每分钟拍数;右侧横线前的数字表示音调,如1代表A调等;横线后数字代表当前音是do、re、mi、fa、so、la、si中的哪一个,如1代表do等。

修改SetMusic(100,0xFA,arr,10,enumMscDrvSeg7andLed);的最后一个参数即可设置是否显示,具体可以看学习板说明文档。


5、秒表:数码管显示分、秒、毫秒。
#include "STC15F2K60S2.H"
#include "sys.H"
#include "displayer.H"  code unsigned long SysClock=11059200L;#ifdef _displayer_H_
code char decode_table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x08,0x40,0x01,0x76,0x38};   /* 序号:   0    1    2    3    4    5    6    7    8    9    10     11	 12   13   14   15  *//* 显示:   0    1    2    3    4    5    6    7    8    9    (无)   下-  中-  上-   H    L  */  
#endiflong min=0,sec=0,ms=0,temp=0;
char oput[8]={0};void fun(){temp++;ms=temp;sec=(temp/1000)%60;min=temp/60000;oput[0]=ms%10;oput[1]=(ms/10)%10;oput[2]=(ms/100)%10;oput[3]=12;oput[4]=sec%10;oput[5]=(sec/10)%10;oput[6]=12;oput[7]=min;Seg7Print(oput[7],oput[6],oput[5],oput[4],oput[3],oput[2],oput[1],oput[0]);
}int main(){DisplayerInit(); 	SetDisplayerArea(0,7);Seg7Print(1,1,1,1,1,1,1,1);LedPrint(0);SetEventCallBack(enumEventSys1mS, fun);MySTC_Init();while(1)MySTC_OS();
}

大佬的原代码中,sec=(temp/1000)%60000;这一行不太对,一分钟是60s,因此temp除了1000以后应该是对60取余而不是60000。

此外,大佬代码中的if(sec>59) sec=sec-60;也不对,由于上面他的代码是取余60000,所以sec可能会比59大,因此需要用到这个if。但是这又带来了另一个问题,就是如果上面计算得到的sec>=120的话,比如sec=121,if语句也只减了一个60,会导致数码管显示秒的部分在2分钟后变为从60开始,61、62、63...而不是从00开始,这也是个bug。

因此,简化代码即可。对应代码改为sec=(temp/1000)%60;并把后面的if语句删去,即可得到正确的逻辑。

由于数码管位数限制,这个程序只能显示10分钟以内的计时。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/869077.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

磁力搜索引擎是什么?为什么有些资源喜欢用磁力链接?

磁力链接是什么东西?在日常生活中,我们接触的比较多的下载链接是直链。 所谓的直链简单来说就是直接指向服务器文件资源的链接,如B站app的下载链接,这种链接有统一的服务器提供保障,通常比较稳定,可以追溯源…

python调用qt编写的dll

报错:FileNotFoundError: Could not find module F:\pythonProject\MINGW\sgp4Lib.dll (or one of its dependencies). Try using the full path with constructor syntax. 只有两种情况: 1.路径不对 2.库的依赖不全 1、如果是使用了qt库的&#xff0…

JAVA Tesseract OCR引擎

Tess4j是一个基于Tesseract OCR引擎的Java库, Tesseract库最初由惠普实验室于1985年开发&#xff0c;后来被Google收购并于2006年开源。识别效果不好&#xff0c;速度还慢&#xff0c;但是好早好早了。 一、POM依赖 <!--OCR识别https://digi.bib.uni-mannheim.de/tesserac…

一文洞悉巴基斯坦电子游戏出海引流获客广告风口不容忽视

一文洞悉巴基斯坦电子游戏出海引流获客广告风口不容忽视 随着全球数字经济的蓬勃发展&#xff0c;电子游戏行业也迎来了前所未有的机遇。巴基斯坦&#xff0c;这个拥有庞大人口基数和日益增长的消费能力的国家&#xff0c;其电子游戏市场潜力巨大。本文旨在探讨巴基斯坦电子游戏…

springboot驾校管理系统-计算机毕业设计源码49777

驾校管理系统 摘 要 驾校管理系统是一个基于Spring Boot框架开发的系统&#xff0c;旨在帮助驾校提高管理效率和服务水平。该系统主要实现了用户管理、年月类型管理、区域信息管理、驾校信息管理、车辆信息管理、报名信息管理、缴费信息管理、财务信息管理、教练分配管理、更换…

探索未知,悦享惊喜 —— 您的专属盲盒APP开发之旅

在这个充满无限可能的数字时代&#xff0c;每一份期待都值得被精心打造。我们诚邀您一同踏入盲盒APP开发的奇妙世界&#xff0c;共同开启一场融合趣味、惊喜与社交的全新体验。 【概念启航&#xff1a;盲盒文化的数字化演绎】 盲盒&#xff0c;这一源自传统玩具的趣味玩法&am…

python爬虫基础入门

步骤 获取网页内容&#xff1a; http请求 python的Requests库 解析网页内容 html网页结构 python的Beautiful Soup库 储存或分析数据 储存进数据库 作为ai分析的数据 转化为图表显示出来 DDoS攻击 通过给服务器发送海量高频请求&#xff0c;大量消耗网页资源&#…

昇思25天学习打卡营第12天|基于MindSpore的GPT2文本摘要

基于MindSpore的GPT2文本摘要 数据集加载 使用nlpcc2017摘要数据&#xff0c;共包含5万个样本&#xff0c;内容是新闻正文及其摘要。 from mindnlp.utils import http_get from mindspore.dataset import TextFileDataset# 下载数据集 url https://download.mindspore.cn/t…

MVC 可以把通用命名空间放在配置文件

这种方式的引入,是将命名空间引入到所有视图中了,不需要在使用using单独引用了。

MATLAB实现-基于CNN-LSTM卷积神经网络结合长短期记忆神经网络数据分类预测(多输入多分类)

MATLAB实现-基于CNN-LSTM卷积神经网络结合长短期记忆神经网络数据分类预测&#xff08;多输入多分类&#xff09; 基于CNN-LSTM卷积神经网络结合长短期记忆神经网络数据分类预测&#xff08;多输入多分类&#xff09; 1.数据均为Excel数据&#xff0c;直接替换数据就可以运行…

【ASSEHR出版】第四届现代教育技术与社会科学国际学术会议(ICMETSS 2024)

第四届现代教育技术与社会科学国际学术会议&#xff08;ICMETSS 2024&#xff09;将于2024年8月23-25日在马来西亚 吉隆坡举行。 会议旨在为从事教育相关领域的专家学者、工程技术人员、技术研发人员提供一个共享科研成果和前沿技术&#xff0c;了解学术发展趋势&#xff0c;拓…

非升即走保命刊:审稿速度堪比“水刊”的1区Top,国人优势大,无爆雷风险,2个月可录!

本周投稿推荐 SCI • 地质遥感类&#xff0c;1.0-2.0&#xff08;34天沾边可录&#xff09; • CCF推荐&#xff0c;4.5-5.0&#xff08;2天见刊&#xff09; • 生物医学制药类&#xff08;2天逢投必中&#xff09; EI • 各领域沾边均可&#xff08;2天录用&#xff09…

人工智能+病理组学的交叉课题,患者的临床特征如何收集与整理|顶刊专题汇总·24-07-09

小罗碎碎念 本期文献主题&#xff1a;人工智能病理组学的交叉课题&#xff0c;患者的临床特征如何收集与整理 我们在阅读文献的时候会发现&#xff0c;有的文章会详细给出自己的数据集分析表&#xff0c;分别列出训练集、验证集的数量&#xff0c;以及每个特征对应的患者人数。…

解码技术债:AI代码助手与智能体的革新之道

技术债 技术债可能来源于多种原因&#xff0c;比如时间压力、资源限制、技术选型不当等。它可以表现为代码中的临时性修补、未能彻底解决的设计问题、缺乏文档或测试覆盖等。虽然技术债可以帮助快速推进项目进度&#xff0c;但长期来看&#xff0c;它会增加软件维护的成本和风险…

无线充电宝哪个牌子好?绿联、西圣、小米充电宝测评对比!

随着科技的不断进步和智能设备的普及&#xff0c;无线充电宝逐渐成为了现代人生活中的必需品。它们不仅方便了我们的日常充电需求&#xff0c;更减少了线缆的束缚&#xff0c;提高了使用的便捷性。在众多品牌中&#xff0c;绿联、西圣和小米作为市场上广受好评的无线充电宝品牌…

【FreeRTOS】freeRTOS的版本号在哪个源文件定义

在task.h中定义 可以通过宏 tskKERNEL_VERSION_NUMBER 找到&#xff0c; 具体如下图&#xff1a;记录一下

【系统架构设计】计算机组成与体系结构(一)

计算机组成与体系结构 计算机系统组成计算机硬件组成控制器运算器主存储器辅助存储器输入设备输出设备 计算机系统结构的分类存储程序的概念Flynn分类 复杂指令集系统与精简指令集系统总线 存储器系统流水线 兜兜转转&#xff0c;最后还是回到了4大件&#xff0c;补基础&#x…

通证经济促进企业数字化转型

在数字化时代的大潮中&#xff0c;通证经济犹如一股新兴力量&#xff0c;以其前所未有的创新模式和深远潜力&#xff0c;正悄然重塑着全球经济格局。通证经济生态体系&#xff0c;作为这一变革的核心驱动力&#xff0c;正逐步构建起一个高效、透明且充满创新活力的新经济生态系…

转型之路:从G端项目到梦想领域的跨越

在职业生涯的十字路口&#xff0c;面对公司G端项目减少与潜在的降薪危机&#xff0c;我毅然决定踏上转型之旅&#xff0c;不再让环境的不确定性左右我的未来。毕业两年间&#xff0c;我深耕于建筑行业的G端项目招标投标解决方案&#xff0c;但内心的声音告诉我&#xff0c;是时…

汇川伺服 (2)DDR、MSI电机、SV510、SV520、SV660软件简单调试

一、DDR DDR 简介 应用场合 二、MSI电机系列 综合概述 三、SV510压合伺服 四、SV520 相序辨识 角度辨识 五、SV660 六、简单调试 两种不同的显示状态 状态显示参数 调试案例 设置账户密码 面板JOG功能 DO强制输出 惯量辨识 计算驱动器电阻 负载惯量比 计算案例&#…