◇任务要求◇
使用YL-236装置显示模块中的数码管显示器,模拟电子秒表,实现0~999的循环计数。
◇任务准备◇
一、设计仿真电路图
电子秒表仿真电路如图3-5所示。
图3-5 电子秒表仿真电路
二、动态显示程序设计方案
设置循环次数为58次,由于每位数码管延时2×12/11.0592 ms,58次调用显示函数所花时间为58×8×2×12/11.0592=1006.9 ms,接近1 s。
三、任务流程图
任务流程图如图3-6所示。
图3-6 任务流程图
四、电子秒表参考程序
【知识链接】C语言程序结构
从程序流程的角度看,C语言结构程序可以分为三种基本结构,即顺序结构﹑分支结构(选择结构)﹑循环结构(重复结构)。这三种基本结构可以组成所有的复杂程序。C语言提供多种语句来实现这些程序结构。
1.if 语句
if(表达式)语句1;
2.if(表达式)
{
语句1;
语句2;
…
语句n;
}
3.if-else形式
if(表达式) 语句1;
else 语句2;
4.if-else if-else形式
if(表达式1)
语句1;
else if(表达式2)
语句2;
else if(表达式3)
语句3;
…
else
语句n;
5.switch-case
switch(变量)
{
case 常量1:
语句1或空;
case 常量2:
语句2或空;
…
case 常量n:
语句n或空;
default:
语句n+1或空;
}
执行switch开关语句时,首选测试变量的值,并直接跳到与变量值相等的case常量处开始往下执行。若不与任何一个常量相等,则执行default后面的语句。
注意:
(1)switch中变量可以是数值,也可以是字符,但必须是整数。
(2)case的个数可以根据需要增减,也可以不使用default。
(3)每个case或default后的语句可以有很多,但不需要使用“{”“}”括起来。
(4)执行完一个case语句后面的程序后,它并不主动跳出switch的花括号,而是继续往下顺序执行。除非利用break语句跳出。
6.for循环
for(<初始化>;<条件表达式>;<增量>)
{
语句组;
}
For的执行流程是:初始化→条件表达式为“真”→语句组→增量→条件表达式为“真”→…→语句组→增量→条件表达式为“真”→语句组→增量→条件表达式为“假”→结束。
初始化是进入循环时执行的语句,通常是一个赋值语句,它用来给循环控制变量赋初值;条件表达式是一个关系表达式,它决定什么时候退出循环;增量可以控制循环次数,定义循环控制变量每循环一次后按什么方式变化。注意:这三个部分之间用“;”分开,而不是“,”。
例如:
for(i=1;i<=10;i++)
j=i*3;
上例中,先给i 赋初值1,判断i 是否小于等于10,若是则执行语句j=i*3,之后i 值增加1。再重新判断,直到条件为假,即i>10 时,结束循环。(www.daowen.com)
注意:
(1)语句组如果是一条语句,“{”“}”可以省略。
(2)for 循环中的初始化﹑条件表达式和增量都是选择项,即可以缺省,但“;”不能缺省。省略了初始化,表示不对循环控制变量赋初值,省略了条件表达式,则不做判断,便成为死循环,省略了增量,则不对循环控制变量进行操作,这时可在语句组中加入修改循环控制变量的语句。初始化﹑条件表达式和增量可以是对不同的变量进行测试,也可以是复合语句,以期获得特殊的循环效果。
(3)for循环可以有多层嵌套。
7.while循环
while(条件)
{
语句组;
}
while循环表示当条件为真时,便执行语句,直到条件为假时才结束循环,并继续执行循环程序外的后续语句。while循环总是在循环的头部检验条件,这就意味着,循环可能什么也不执行就直接退出。
注意:
(1)在while循环体内允许空语句。
(2)可以有多层循环嵌套。
(3)语句组如果是一条语句,“{”“}”可以省略。
8.do-while循环
do {
语句块;
} while(条件)
这个循环与while循环的不同在于,它先执行循环中的语句,然后再判断条件是否为真,如果为真则继续循环;如果为假,则终止循环。因此,do-while循环至少会执行一次循环语句。
9.循环控制
(1)break语句 。
break语句通常用在循环语句和开关语句中。程序遇上break语句时,会跳出当前循环或switch语句。通常break语句总是与if 语句联在一起使用,即满足某条件时便跳出。
注意:
①break语句对if-else的条件语句不起作用。
②在多层循环中,一个break语句只向外跳一层。
③如果有多层嵌套的循环,想从最里层跳出到最外层之外时,可用goto语句。
(2)continue语句。
continue语句的作用是跳过本次循环本中剩余的语句而强行执行下一次循环,即结束本次循环,根据条件进入下一轮循环。
(3)goto语句。
goto语句是一种无条件转移语句,格式为:
goto 标号;
“标号”,函数内部用一个有效的“标识符”,后面跟一个“:”,这样标识的行可以用goto语句做的跳转目标。执行goto语句后,程序将跳转到该标号处并执行其后的语句。标号必须与goto语句同处于一个函数中,但可以不在一个循环层中。通常,goto语句与if 条件语句连用,当满足某一条件时,程序跳到标号处运行。这里,我们不提倡使用goto语句,因为它会使程序层次不清,但在多层嵌套退出时,用goto语句则比较合理。所有的goto语句其实都是可以用break,continue语句代替的。
五、单片机程序下载
YL-236型单片机实训平台使用YL-ISP在线下载器在线下载程序,操作步骤如下:
(1)连接YL-ISP在线下载器,将在线下载器的排线与主机模块的ISP下载接口相连,并将在线下载器的USB接口与计算机的USB接口相连。
(2)启动YL-ISP在线下载器程序,检测下载器的连接状态。
(3)单击“选择器件”下拉按钮,选择需要的芯片型号。
(4)单击“调入Flash文件”栏中的文件夹图标,调入可执行文件(扩展名为.hex),文件会自动加载。
(5)单击“自动编程”按钮写入程序,写入成功后,信息输出列表框中会反馈“操作成功”字样。
◇任务实施◇
一、硬件电路搭建
分析单片机控制数码管动态显示电路,在YL-236型单片机实训平台上选取主机模块﹑电源模块和显示模块,搭建单片机控制数码管动态显示电路。
1.模块选择
本任务所需要的模块如表3-15所示。
表3-15 本任务所需要的模块
2.工具和器材
本任务所需要的工具和器材如表3-16所示。
表3-16 工具和器材
3.电路搭建
搭建电子秒表仿真电路(如图3-6所示)的连接图。
二、程序代码的编写、编译
(1)启动Keil C51编程软件,新建工程﹑文件并均以“SMG”为名保存在文件夹中。
(2)在SMG.c文件的文本编辑器窗口中输入程序代码。
(3)编译源程序,排除程序输入错误,生成SMG.hex文件。
三、系统调试
系统调试的步骤如下:
(1)使用程序下载专配USB线将计算机的USB接口与单片机主机模块程序下载接口连接起来。
(2)打开电源总开关,启动程序下载软件,下载可执行文件至单片机中。
(3)观察LED状态,若实现任务要求,则系统调试完成;否则,需要进行故障排除。
◇任务评价◇
一、工艺性评分标准
工艺性评分标准如表3-17所示。
表3-17 工艺性评分标准
二、功能评分标准
功能评分标准如表3-18所示。
表3-18 功能评分标准
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。