单片机应用技术的项目教程的项目5 数字显示器.ppt

单片机应用技术的项目教程的项目5 数字显示器.ppt

  1. 1、本文档共39页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机应用技术的项目教程的项目5 数字显示器

例如:有参数传递的延时子程序:可以随时改变k的传递值以达到不同的延时。 void delay(unsigned int k) { unsigned int i,j; for(i=0;ik;i++) for(j=0;j200;j++) ; } 有参函数 #include “reg51.h” void delay(unsigned int xms ) //延时子函数 { unsigned int i,j; for(i=0;ixms;i++) for(j=0;j115;j++) ; } void main() { P1 = 0x00; delay(200); //调用延时函数。 P1 = 0xff; delay(500); … } 实际参数 形式参数 (3)空函数:此种函数体内无语句,在被调用时,无任何操作,是为了以后程序功能的扩充。 空函数的定义形式: 函数类型标识符 函数名() { } 例: int add() { } 无函数体 返回值数据类型 函数调用的一般形式为: 函数名 ( 实际参数列表 ); 在一个函数中需要用到某个函数的功能时,就调用该函数。调用者称为主调函数,被调用者称为被调函数。 若被调函数是有参函数,则主调函数必须把被调函数所需的参数传递给被调函数。传递给被调函数的数据称为实际参数(简称实参),必须与形参在数量、类型和顺序上都一致。实参可以是常量、变量和表达式;实参对形参的数据传递是单向的,即只能将实参传递给形参。 如果调用的是无参函数,则实际参数表可省略,但函数名后面必须有一对空括号。 函数的调用 在一个函数中调用另一个函数必须具有以下条件: (1)被调用函数必须是已经存在的函数(库函数或用户自定义函数)。 (2)如果程序中使用了库函数,或使用了不在同一文件中另外的自定义函数,则应该在程序的开头处使用#include包含语句,将所用的函数信息包括到程序中来。例如: #include 〈stdio.h〉 //将标准输入输出头文件包含到程序中 #include “delay.h” //将用户自定义头文件包含到程序中 程序在编译时,系统就会自动将头文件中有关函数调入到程序中去,编译出完善的程序代码。 (3)如果被调用函数出现在主调函数之后,对被调函数在调用函数之前,应对被调用函数进行声明。函数声明的一般形式有两种: 如 float add(float x, float y); float add(float, float); 函数声明可以放在文件的开头,这时所有函数都可以使用此函数。 对被调用函数的声明 【活动一】 硬件设计 动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。选亮数码管采用动态扫描显示。 所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留(20ms)作用,使人的感觉好像各位数码管同时都在显示。 数码管的动态显示要点提示 1、若干个数码管的段端接一起,通过单片机的I/O口控制数码管的位选端,实现若干个数码管轮流显示 2、单片机的1个I/O口带着若干个数码管,电流小,所以数码管亮度低。所以要加驱动(加三极管、驱动器),增加亮度。 共阳数码管:需要高电平,加PNP三极管(8550) 共阴数码管:需要低电平,加NPN三极管(8050) 3、延时时间合理设置;过长或过慢都不行。 硬件电路设计 动态显示算法分析 开始 数码管1置位 查表取数显示 延时 熄灭(关断显示) 数码管1置位 查表取数显示 延时 熄灭(关断显示) 数码管1置位 查表取数显示 延时 熄灭(关断显示) 【活动二】软件设计 Y 十制数分离 初始化显示 调用显示子程序 显示完毕? N 主程序流程图 开始 结束 送段码 送位码 延时 关数码 最后一位? 移位 N 动态显示扫描流程图 开始 结束 动态显示扫描程序段 void display( ) { tmp=0x01; for(i=0;i4;i++) { P3=tmp; //送位码 P2=tab[i]; //送段码 delay(2); //延时 P2=0xff; //关断数码管 tmp=tmp1; //左移到下一位数码管 } } 程序说明: 延时时间合理设置;过长或过慢都不行。 【活动三】系统仿真调试

您可能关注的文档

文档评论(0)

erterye + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档