单片机应用技术项目教程项目7呼叫器

上传人:ra****d 文档编号:252380785 上传时间:2024-11-15 格式:PPT 页数:30 大小:408.50KB
返回 下载 相关 举报
单片机应用技术项目教程项目7呼叫器_第1页
第1页 / 共30页
单片机应用技术项目教程项目7呼叫器_第2页
第2页 / 共30页
单片机应用技术项目教程项目7呼叫器_第3页
第3页 / 共30页
点击查看更多>>
资源描述
,*,出版社 理工分社,单片机应用技术项目教程版,出版社 理工分社,单片机应用技术项目教程版,教学目标,*,出版社 理工分社,单片机应用技术项目教程版,项目分析,*,出版社 理工分社,单片机应用技术项目教程版,项目知识平台,*,出版社 理工分社,单片机应用技术项目教程版,项目实施,*,出版社 理工分社,单片机应用技术项目教程版,工作任务,*,出版社 理工分社,单片机应用技术项目教程版,项目小结,*,出版社 理工分社,单片机应用技术项目教程版,复习思考,*,出版社 理工分社,单片机应用技术项目教程版,项目考核,*,出版社 理工分社,单片机应用技术项目教程版,项目拓展,*,工程7:呼叫器,知识目标:,1,掌握矩阵式键盘的工作原理与接口连接;,2,掌握,C,语言开关语句,switch case,的使用;,3,掌握单片机矩阵键盘接口的程序设计方法。,技能训练目标:,1,熟悉数码管的原理与接口;,2,熟练使用,C,语言开关语句,switch case,;,3,熟悉单片机矩阵键盘接口的程序设计方法。,如下图,用AT89C52的并行口P1接44矩阵键盘,以P1.0P1.3作输入线,以P1.4P1.7作输出线;在两位数码管上显示每个按键的“015序号。对应的按键序号排列如下图。,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,图,7.1,矩阵键盘布局图,制作一个基于单片机的键值显示呼叫器,1.系统组成,本系统功能由硬件和软件两大部份协调完成,硬件局部主要完成信息的显示;软件主要完成信号的处理及控制功能等。,本系统的硬件采用模块化设计,以AT89C52单片机为核心,与数码管接口电路、键盘电路组成控制系统。该系统硬件主要包括以下几个模块:AT89C52主控模块、数码管显示模块、键盘模块等。其中AT89C52主要完成外围硬件的控制以及一些运算功能,数码管显示模块完成字符、数字的显示功能;键盘模块主要完成按键处理功能。系统组成方框图如下图。,一、总体设计,应用软件采用模块化设计方法。该系统软件主要由主程序、按键扫描子程序等模块组成,系统软件结构框图如图,3.3,所示。,数码管显示程序,主程序,按键扫描与功能程序,图,7,3,键值显示控制系统软件结构框图,数码管显示,按键输入电路,复位电路,时钟电路,电源电路,单 片 机,图,7,2,键值显示控制系统组成方框图,键盘的结构与原理,矩阵式键盘,单片机系统中,假设使用按键较多时,通常采用矩阵式键盘,其结构如以下图所示。由图可知,一个44的行、列结构,可以构成一个含有16个按键的键盘,节省了很多I/O口。,控制方式:先判断是否有键按下。如有,再判断哪一键按下,并得到 键码值,然后根据键码值转向不同的功能程序。,最常用的识别方法是键盘扫描法。,switch case,判断语句,switch case,判断语句,switch,语句的一般形式如下:,switch(,表达式,),case,常量表达式,1:,语句,1;break;,case,常量表达式,2:,语句,2;break;,case,常量表达式,3:,语句,3;break;,case,常量表达式,4:,语句,4;break;,default:,语句,N;,2.return,语句:,return,表达式;,或,return,(,表达式,),;,编写函数时,假设求函数值,就要用return,假设函数类型为void,那么不用return语句。,return,从当前的方法中退出,返回到该调用的方法的语句处,继续执行;,return,返回一个值给调用该方法的语句,返回值的数据类型必须与方法的声明中的返回值的类型一致,可以使用强制类型转换来是数据类型一致;,return,当方法说明中用,void,声明返回类型为空时,应使用这种格式,不返回任何值。,格式:,1return语句只能返回一个结果,假设有多个处理结果需返回调用函数,要采用其他方法。,2假设没有return语句,就一直执行到函数体的末尾,然后返回调用函数。,3流程从调用函数中的哪条语句转移到被调函数,返回时仍回到该语句。即从哪来哪回。哪,特点,:,1只能在循环体内和switch语句体内使用break语句。,2当break出现在循环体中的switch语句体内时,其作用只是跳出该switch语句体。,3当break出现在循环体中,但并不在switch语句体内时,那么在执行break后,跳出本层循环体。,4在循环结构中,应用break语句使流程跳出本层循环体,从而提前结束本层循环。,break,语句,1 continue语句的一般形式为:continue;,2其作用是结束本次循环,即跳过本次循环体中余下尚未执行的语句,接着再一次进行循环的条件判定。,3注意:执行continue语句并没有使整个循环终止。在while和do-while循环中,continue语句使得流程直接跳到循环控制条件的测试局部,然后决定循环是否继续进行。,4在for循环中,遇到continue后,跳过循环体中余下的语句,而去对for语句中的“表达式3求值,然后进行“表达式2的条件测试,最后根据“表达式2的值来决定for循环是否执行。在循环体内,不管continue是作为何种语句中的语句成分,都将按上述功能执行,这点与break有所不同。,Continue,语句,矩阵式键盘设计与实现,4X4,小键盘,,16,个键分别对应,116,;,有键按下,数码管显示;,无键按下,数码管显示,00,;,通过输出的列码和读取的行码来判断按下什么键;,有键按下,要有一定的延时,防止由于键盘抖动而引起误操作。,【,活动一,】,硬件电路设计,【,活动二,】,软件设计,1,、算法分析与流程图设计:,判断有无键按下,去除按键的抖动,求按键的键值,判断闭合键是否释放,主程序设计流程图,判断按键按下的方法,判断是否有键按下的方法是:,向所有的行输出口线输出低电平P1=0 x0f;不能为高电平,因为假设为高电平,按键按下与否都不会引起行线电平的变化,然后将行线的电平状态读入tmp=P1。,假设无键按下,所有的行线仍保持高电平状态;if(tmp=0 x0f)continue;,假设有键按下,列线中至少应有一条线为低电平,那么转入键扫描程序,确定键位.,识别按键的方法,按键识别的扫描方法:,往列线上按顺序一列一列的送出低电平。,先送第0列为低电平,其他列为高电平,读入的行的电平状态就说明了第0列的4个键的情况,假设读入的行值全为高电平,那么表示无键按下;,再送第1列为低电平,其他列为高电平,读入的行的电平状态那么显示了该行上的4个按键的情况;,依次轮流给各列送出低电平,直至4列全部送完,再从第0列开始,依此循环。,采用键盘扫描,我们再来观察第2行与第2列交叉点的键按下时的判断过程,当第2列送出低电平时,读第2行为低电平,而其他列送出低电平时,读第2行却为高电平,由此即可断定按下的键应是第2行与第2列交叉点的键。,主程序设计流程图,开始,初始化:系统上电显示,0,键盘扫描:置初始值第,1,列为,0,,即,P1=0 xef,,键值为,0,判断按键有无按下,扫描第一行按下否?,扫描第二行按下否?,扫描第三行按下否?,扫描第四行按下否?,最后一列否,/,?,求键值,显示,求键值,显示,求键值,显示,求键值,显示,扫描下一列,结束,判断有无键按下,P1.4P1.7输出0,然后读P0口;,假设低4位P1.0P1.3全为1,那么键盘上没有键按下;,假设P1.0P1.3不全为1,那么有键按下。,while(tmp=0 x0f)/循环判断是否有键按下,P1=0 x0f;/所有列输出低电平,tmp=P1;/读行信号,去除按键的抖动,当判断到键盘上有键按下后;,延时一段时间再判断键盘的状态;,假设仍为有键按下状态,那么认为有一个键按下,否那么当作按键抖动来处理。,delay10ms();/延时10ms去抖,P1=0 x0f;/所有列输出低电平,tmp=P1;/再次读键盘状态,if(tmp=0 x0f)continue;/如果无键按下那么认为是按键抖动,重新扫描键盘,键盘扫描确定键号,对键盘的列线进行扫描,P1.4P1.7循环输出1110、1101、1011和0111,依次读P1口,假设行低4位全为1,那么断定该列上没有键按下;,初始化:,unsigned char scan_key(void)/键盘扫描子程序,unsigned char n,scan,col,rol,tmp;,bit flag=0;/设有键按下标志位,scan=0 xef;/对键盘第0列扫描为0,即P1.40,P1=0 x0f;/行全为1,列扫描:,for(n=0;n4;n+),P1=scan;/逐列送出低电平,tmp=P1;/读行值,并取反,tmp=tmp /tmp=0,无键按下;否那么 有键按下,求按键的键值,否那么,该列上就有键按下,并且就是行线为0,列线为0的交叉点,行号和列号按公式:rol*4+col 计算得到按下键的键值。,例如,P1.4P1.7输出1101时,P1口的低四位读入的值为1011,不全为1,就可以断定有键按下,并且是第2行和第1列交叉点的键。于是,该键的键值=24+1=9。按照相同的方法可以得到所有键的键值。如:return(rol*4+col);,求按键的键值,col=n;,/,保存列号到,col,flag=1;,/,有键按下标志;有为,1,,无为,0,/*,判断哪一行有键按下,并保存行号到,rol*/,if(tmp=0 x01),rol=0;break;,/,第,0,行有键按下,else if(tmp=0 x02),rol=1;break;,/,第,1,行有键按下,else if(tmp=0 x04),rol=2;break;,/,第,2,行有键按下,else if(tmp=0 x08),rol=3;break;,/,第,3,行有键按下,else,flag=0;,scan=(scan1)+1;,if(flag=0),return-1;,else,return(rol*4+col);,【,活动三,】,系统仿真调试,启动Keil uVision4软件,创立新工程:CH7.UVPROJ,CPU选择Atmel 89C52。,对工程的属性进行设置:目标属性中选择“生成HEX文件。,编写参考源程序CH7.c,以C为扩展名保存在工程文件夹中。,将参考源程序参加程序组:鼠标右键单击程序组图标,参加文件组。,调试:进入调试状态,期间可能需要修改参考源程序,直到没有语法错误为止。翻开相应窗口,运行程序,观察运行结果。,【,活动四,】,实物制作,键值显示系统实物图,独立式按键,接口电路:,特点:一线一键,按键,识别,(编程)简单;但占用较多口线,适合,8,键以下使用。,考核项目,考核内容,技术要求,评分,标准,得分,备注,总体设计,任务分析,方案设计,软件和硬件功能划分,任务明确(,5分);,方案设计合理、有新意(,10分);,软件和硬件功能划分合理(,5分);,20分,硬件设计,片内器件分配,;,电路原理图设计;,电路板制作;,片内器件分配正确、合理(,5分);,电路原理图设计正确(,10分);,电路板制作:布线正确、整齐、合理(,5分);,20分,软件设计,算法和数据结构设计;,流程图设计;,编程;,算法和数据结构设计正确、合理(,5分);,流程图设计正确、简明;(,5分);,编程正确、有新意(,10分);,20分,系统仿真与调试,调试顺序;,错误排除;,调试结果;,调试顺序正确(,5分);,能熟练排除错误(,10分);,调试后运行正确(,5分);,20分,实训报告,书写;,内容;,图形绘制;,结果分析,书写规范整齐(,5分);,内容翔实具体(,5分);,图形绘制正确、完整、全面(,5分);,能正确分析实验结构(,5分);,20分,合计,100分,矩阵式按键,关键:如何判断键号?,3,2,1,0,4,7,6,5,11,10,9,8,15,14,13,12,+5V,P1.4,P1.3,P
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业管理 > 商业计划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!