理论教育 使用C51单片机实训教程-电子秒表制作

使用C51单片机实训教程-电子秒表制作

时间:2023-11-25 理论教育 版权反馈
【摘要】:◇任务要求◇使用YL-236装置显示模块中的数码管显示器,模拟电子秒表,实现0~999的循环计数。◇任务准备◇一、设计仿真电路图电子秒表仿真电路如图3-5所示。图3-5电子秒表仿真电路二、动态显示程序设计方案软件延时计时主要通过循环语句来实现。图3-6任务流程图四、电子秒表参考程序C语言程序结构从程序流程的角度看,C语言结构程序可以分为三种基本结构,即顺序结构﹑分支结构﹑循环结构。

使用C51单片机实训教程-电子秒表制作

◇任务要求◇

使用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 功能评分标准

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈