Presentation is loading. Please wait.

Presentation is loading. Please wait.

第3章 单片机的输出与输入 教学要点 3.1 项目四流水灯 3.2 项目五单键控制数码显示(静态) 3.3 知识链接 返回.

Similar presentations


Presentation on theme: "第3章 单片机的输出与输入 教学要点 3.1 项目四流水灯 3.2 项目五单键控制数码显示(静态) 3.3 知识链接 返回."— Presentation transcript:

1 第3章 单片机的输出与输入 教学要点 项目四流水灯 项目五单键控制数码显示(静态) 知识链接 返回

2 第3章 单片机的输出与输入 教学要点: 单片机的硬件资源 输出控制 输入检侧 编程与调试 Proteu、软件的使用 返回

3 第3章 单片机的输出与输入 3. 1项目四流水灯 3. 1 .1任务要求
第3章 单片机的输出与输入 3. 1项目四流水灯 任务要求 用AT89 SS 1的某端口做输出,接八个发光二极管D0, D1, D2, D3, D4,D5, D6, D7,通过编程控制发光二极管的亮、灭状态,每一时刻只能有一个发光二极管处于被点亮状态,时间间隔为0. 2秒点亮顺序为D0, D1, D2, D3,D4, D5, D6, D7, D6, D5, D4, D3, D2, D1,重复循环(12MHz晶振,如不说明外接晶振默认为12MHz) 下一页 返回

4 第3章 单片机的输出与输入 3. 1 .2任务分析与电路设计 1.硬件资源分配
第3章 单片机的输出与输入 任务分析与电路设计 1.硬件资源分配 AT89 SS 1单片机有四个端口,对于PO口,由于其输出时漏极开路,故经常需要外接上拉电阻,而Pl , P2和P3口内部均已有上拉电阻任务要求控制八个发光二极管,其中一个端口就能满足要求,本设计采用P2口做输出硬件电路图如图3.1.1所示(本图没画出晶振与复位电路,在Proteus仿真软件中不影响使用)。 2.输出控制 从硬件电路图可以知道,要想使发光二极管点亮,需要相应端口置高电平,例如要使D1点亮,那么对应的P2. 1就要为高电平,如表3.1.1所示,对应的C语言语句为P2 = 0 x02 ; 上一页 下一页 返回

5 第3章 单片机的输出与输入 上一页 下一页 返回

6 第3章 单片机的输出与输入 语句“P2 = 0x02 ;”完成的功能是将数据从P2口输出,数据“0x02”的二进制数是“ ”,对应P2口的P2. 7到P2. 0 ,所以只有P2. 1 = 1,其他七位都为“0”,由硬件电路 图3.1.1可知,端口输出高电平,对应发光二极管被点亮,且发光二极管D1与P2. 1相连接,因此点亮了D1。 若执行“P2 = 095 ;”语句,点亮哪些发光二极管? “0x95”的二进制数是“ ”,它和P2口的对应关系以及P2与八个发光二极管的对应关系如表 所示。 由表 可知发光二极管D7, D4, D2, DO点亮若想使其他发光二极管点亮只需把相应的数据送到P2口P2. 7一P2. 4构成高四位,P2. 3一P2. 0构成低四位。 上一页 下一页 返回

7 第3章 单片机的输出与输入 思考:DO和D7同时点亮应送什么数据到P2 3.任务分析数据表
第3章 单片机的输出与输入 思考:DO和D7同时点亮应送什么数据到P2 3.任务分析数据表 通过上述分析,按任务要求顺序点亮发光二极管的数据如表 所示。 4.延时程序编写 当系统加电后,单片机就开始工作,程序开始一条接一条地执行,单片机每执行一条指令就要花一定的时间,单片机执行一条指令的执行时间是指令周期,指令周期是以机器周期为单位的MCS -51单片机规定,一个机器周期为单片机振荡器的12个振荡周期如果单片机时钟电路中的晶振频率为12MHz,则一个机器周期为1μs 单片机的指令运行速度是很快的,要想获得一定的延时,就要编写合适的程序,程序的执行时间等于所需的延时时间。 上一页 下一页 返回

8 第3章 单片机的输出与输入 任务中要求获得0. 2s的时间长度,当卑片机的指令周期是1μs时,0. 2s就是1μs的200000倍在程序编写中常用循环语句来完成计数和时间延迟,从而获得需要的延时时间。 上一页 下一页 返回

9 第3章 单片机的输出与输入 上一页 下一页 返回

10 第3章 单片机的输出与输入 3. 1 .3程序调试与电路仿真 1.流水灯程序 方法一:直接输出法
第3章 单片机的输出与输入 程序调试与电路仿真 1.流水灯程序 方法一:直接输出法 按照任务分析数据表 提供的数据,分步顺序编写程序程序流程图如图 所示,源程序如下: 上一页 下一页 返回

11 第3章 单片机的输出与输入 上一页 下一页 返回

12 第3章 单片机的输出与输入 上一页 下一页 返回

13 第3章 单片机的输出与输入 1 上一页 下一页 返回

14 第3章 单片机的输出与输入 上一页 下一页 返回

15 第3章 单片机的输出与输入 上一页 下一页 返回

16 第3章 单片机的输出与输入 方法二:数组法 将用于点亮流水灯的数据放在数组中,让程序每隔一定时间依次读取数组中的数据,并将数据送到端口,控制发光二极管的点亮就实现了流水灯的控制假设有N个数据,当程序读完N个数据后,程序又从头开始执行,不断循环,具体的程序流程图如图 所示可以修改数组里的数据实现任意变化的流水灯。 上一页 下一页 返回

17 第3章 单片机的输出与输入 上一页 下一页 返回

18 第3章 单片机的输出与输入 上一页 下一页 返回

19 第3章 单片机的输出与输入 关于上述两种方法的讨论:
第3章 单片机的输出与输入 关于上述两种方法的讨论: 方法一编程结构简单、易学,但程序条数多,方法二采用数组使程序大大地简化,两种方法都可通过修改数据实现任意花样流水灯,在后面的编程中会更多的使用数组的方法,是重点掌握的内容,也是进一步学习的基础。 上一页 下一页 返回

20 第3章 单片机的输出与输入 2.程序调试:以方法二为例 (1)进入调试
第3章 单片机的输出与输入 2.程序调试:以方法二为例 (1)进入调试 点击工具栏“调试”,弹出界面如图3.1.4所示,再点击“Start/Stop”进入调试。 (2)观测语句或函数执行时间 点击工具栏“外围设备”,弹出界面如图3.1.5所示;点击“I/ 0Parts选择P2端口进行观测; 上一页 下一页 返回

21 第3章 单片机的输出与输入 点击工具栏里的 “步越”进行单步执行,可以看到端口P2的变化,同时在底部状态栏里可以看到执行每条语句所用的累计时间,通过前后两次的累计时间差算出执行每条语句所用的时间。 继续点击 “步越”,如图3.1.6所示,观测累计运行时间,此时显示的时间是 sec。

22 第3章 单片机的输出与输入 再点击“步越”,如图3.1.7所示。此时程序执行了yanshi()2s()函数,我们看到的累积时间是 sec,由此可知执行一次yanshi()2s()函数所用的时间是: sec sec= sec,近似于0.2s。通过这样的办法可以计算出执行每一条语句所用的时间。

23 第3章 单片机的输出与输入 不断点击“步越”,通过P2口可以观察输出数据的变化,若和设计的方案不一样,可进一步修改该程序,再调试,直到满足要求。 (3)观测变量。点击“查看” →“观察与堆栈调用视窗” →“watch #1”,再按提示点F2输入要观察的变量,不断点击“步越”,观察变量jishu的变化过程以及P2口的变化,如图3.1.8所示。 上一页 下一页 返回

24 第3章 单片机的输出与输入 Proteus仿真软件的使用 运行Proteus仿真软件,按要求如图3.1.1所示的硬件电路图。
第3章 单片机的输出与输入 Proteus仿真软件的使用 运行Proteus仿真软件,按要求如图3.1.1所示的硬件电路图。 双击电脑桌面上的ISIS7 Professional图标或者单击屏幕左下方的“开始” →“程序” →“Protesu 7 Professional” →“ISIS7 Professional”,几秒钟后进入Proteus ISIS的工作界面,如图3.1.9所示。 界面窗口中包括:标题栏、主菜单、标准工具栏、绘图工具栏、状态栏、对象选择按钮、预览对象方位控制按钮、仿真进程控制按钮、预览窗口、对象选择器窗口、图形编辑窗口等。 1.建立一个新的设计项目 上一页 下一页 返回

25 第3章 单片机的输出与输入 单击“File”菜单,选择下拉菜单中的New Design选项,在弹出的对话框中选择设计文件的纸张,本项目选择了“DEFAULT”,得到如图 所示的设计页面。 2.保存设计项目 选择你要保存的文件路径,输入工程项目文件的名称,如保存的路径为“第三章”文件夹,工程项目的名称为“流水灯”,单击保存,如图 所示。 上一页 下一页 返回

26 第3章 单片机的输出与输入 3.为设计项目选择电路元器件
第3章 单片机的输出与输入 3.为设计项目选择电路元器件 将所需元器件加入到对象选择器窗口,单击对象选择器按钮,在为设计项目添加元件时,可以在“Keywords”栏中输入需要的元件名称,对于不熟悉元件名称的元件,可以在“Pick Devices”页面中的“Lategory‘栏下选择元件所在的系列附录B列出了一些常用元件的所在系列选择Microprocessor ICs系列,选择51核单片机中使用较多的89 CS 1,选定型号后,单击确定,出现如图 所示的开发平台界面。 在“Results”栏中的列表项中,双击“AT89 G51 ”,则可将“AT89 G51”添加至对象选择器窗口用同样的方法添加RO-R7 , DO-D7 ( LED)在绘图工具栏中选择按钮,选中“GROUND”,为设计添加接地得到如图3.1.13所示的设计界面。 上一页 下一页 返回

27 第3章 单片机的输出与输入 4.编辑电路原理图元件
第3章 单片机的输出与输入 4.编辑电路原理图元件 对于电路中的元件,必要时需对其进行属性或参数进行修改,右键选中需要编辑的元件,出现选择菜单,在菜单中选择“Edit Pr叩erties”左键单击,打开编辑窗,可以修改元件的名称、值和PCB封装等属性如图 所示是编辑LE D元件的元件编辑窗,可将D1修改为DO,选择“H1C1C1PT1”选项,隐藏元件值“ LE D一YELLOW ”,用同样的方法将需要修改参数值的元件修改。 上一页 下一页 返回

28 第3章 单片机的输出与输入 5.编辑设计原理图界面
第3章 单片机的输出与输入 5.编辑设计原理图界面 在原理图界面中,将不需要显示的一些项目隐藏,把界面编辑成简洁清爽的界面如界面中的网格,单击“View”菜单,在下拉菜单中将选中的“Crid”选项去掉单击“Template”,在下拉菜单中选择“Set Design Defaults”,在弹出的对话框中将选中的“Show hidden text”选项去掉选择绘图。工具栏中的“A”为单片机添加名称“AT85S51”。界面如图3.1.15所示。 上一页 下一页 返回

29 第3章 单片机的输出与输入 6.设计电路元器件的布局与连线
第3章 单片机的输出与输入 6.设计电路元器件的布局与连线 在图形编辑窗中选择需要移动的元件,放置到合适的位置单击右键选中元件,单击并拖动左键,就可以将需要移动的元件移到合适的位置元件连线时将鼠标移到需连线的元件节点单击左键,移到到下一连线节点再单击左键,就可将两个节点连接了用同样的方法将所有需要连接的节点连接得到如图 所示的电路原理图。

30 第3章 单片机的输出与输入 7.保存设计的原理图电路文件
第3章 单片机的输出与输入 7.保存设计的原理图电路文件 单击 保存原理图电路文件。到此,流水灯电路原理图就设计完成了。接下来需要做的就是将在Keil C51软件中编译生成的.Hex文件添加到原理图的单片机中就可以了。 8.为单片机添加.Hex程序文件 在原理图中右键选中单片机,单击左键,在弹出的对话框中选中Program File 选项,再单击 ,添加.Hex文件。保存后就可以进行电路仿真了,根据仿真现象,不断进行源程序调试,完善设计。 上一页 下一页 返回

31 第3章 单片机的输出与输入 3. 1 .4任务扩展:静态数码显示 1.任务要求
第3章 单片机的输出与输入 任务扩展:静态数码显示 1.任务要求 用AT89 SS 1的P2口做输出口,接一位LED数码管,编写程序,使数码管显示从0到9的加1计数,时间间隔为0. 5 s即每显示一个数字后,保持0. 5 s,再显示下一个,显示到l数字“9”之后再从“0”开始.不断循环。 2.任务分析与电路设计 (1)硬件电路 上一页 下一页 返回

32 第3章 单片机的输出与输入 电路组成:这里选择具有内部程序存储器的AT89 SS 1单片机作为控制电路,P2口接一个一位共阴数码管,其中P2. 0到P2. 6分别连接数码管的a~f引脚,硬件简化电路原理图如图 所示。 电路分析:要使LE D数码管依次显示数字,则P2口对应输出七段数码管数字显示对应的编码即可为了限制流过LED的电流使其不至于超载,一般需要在回路中接入合适的限流电阻根据驱动LE D的电流电压可计算出限流电阻,在这里取限流电阻为150当P2.输出为高电平时,对应的LED亮,输出低电平时,对应的LE D不亮在后面的电路图中为简化电路,没有加上限流电阻。 (2)设计思想 实现任务的思路是:如同采用数组方法编写的流水灯程序一样,先将显示0. 上一页 下一页 返回

33 第3章 单片机的输出与输入 到9的显示段码放到数组duanma[]里,再依次读取。由任务分析数据 表3.1.4可得到数组里的数据。
第3章 单片机的输出与输入 到9的显示段码放到数组duanma[]里,再依次读取。由任务分析数据 表3.1.4可得到数组里的数据。 1)程序开始时,给数组元素的变量赋初始值0,duanma[0]是第一个数据,并将数组中第一个元素送P2端口; 2)延时0.5s后,将变量jishu加1,并判断是否已读取到第10个元素;duanma[9]是第十个shuju; 3)如果已经读取完,则对变量jishu重新赋值0,如果没有,则继续读取数组中第jishu个元素送到P2端口,依次循环。 上一页 下一页 返回

34 第3章 单片机的输出与输入 注意:上述任务分析表给出的段码是根据图3.1.17得到的,硬件连接的不同段码值也会不同;同样的硬件连接共阴、共阳的段码值可以通过取反互相得到。 3.任务编程及调试 程序流程图如图3.1.18所示,源程序如下: 上一页 下一页 返回

35 第3章 单片机的输出与输入 上一页 下一页 返回

36 第3章 单片机的输出与输入 上一页 下一页 返回

37 第3章 单片机的输出与输入 上一页 下一页 返回

38 第3章 单片机的输出与输入 任务练习 DO到D7依次点亮,然后再从DO到D7点亮,不断循环,延时间为0.2秒(两种方法)。硬件简化电路如图3.1.19所示。 上一页 下一页 返回

39 第3章 单片机的输出与输入 上一页 下一页 返回

40 第3章 单片机的输出与输入 上一页 下一页 返回

41 第3章 单片机的输出与输入 为什么用shuju = (shuju + 1) + 1而不是shuju = shuju 《1?由于执行左移指令后变量shuju的最高位被移出,最低位补0,我们设计的硬件电路是低电平点亮的,这样会出现柱状灯效果,而不是流水灯效果可 以将上述软件修改成shuju = shuju 《 1;编译、下载到仿真软件,观察演示效果。 方法二:循环移位法 上一页 下一页 返回

42 第3章 单片机的输出与输入 上一页 下一页 返回

43 第3章 单片机的输出与输入 上一页 下一页 返回

44 第3章 单片机的输出与输入 讨论:方法一和方法二都是采用了移位的方法,只有前后数据有一定的关系,通过移位得到下一位时才能采用在采用高电平点亮发光二极管时用我们的编程方法看不出二者的区别,但在采用低电平点亮的电路时,二者是不一样的例如数据j = Oxfe,二进制数为 B,左移一位(shuju = shuju 《 1 ;) , 高位被移出,低位补0,结果为 B,会有两个发光二极管点亮,而采用循环左移时(shuju = crol (shuju , 1) ;) ,,高位被移到最低位,而不是被移出,结果为 B,只有一个发光二极管点亮. (2)两位数码显示从0到99,然后再从0到99,不断循环,延时时间为0. 5秒硬件简化电路如图 所示。 方法一:十进制法 上一页 下一页 返回

45 第3章 单片机的输出与输入 程序流程图如图3.1.21所示,参考源程序如下: 上一页 下一页 返回

46 第3章 单片机的输出与输入 上一页 下一页 返回

47 第3章 单片机的输出与输入 上一页 下一页 返回

48 第3章 单片机的输出与输入 方法二:数据拆分法 程序流程图如图 所示,参考源程序如下: 上一页 下一页 返回

49 第3章 单片机的输出与输入 上一页 下一页 返回

50 第3章 单片机的输出与输入 上一页 下一页 返回

51 第3章 单片机的输出与输入 上一页 下一页 返回

52 第3章 单片机的输出与输入 方法一中十位、个位是由两个变量jishu2 , jishu分别定义,利用十进制数逢十进一的原则,个位上的变量jishu变化十次,十位上的变量变化一次,可用二重循环完成,里层循环完成个位变化,外层循环完成十位变化。方法二中是由一个变量jishu定义,通过将变量jishu拆分得到数据的十位和个位,方法二中语句“P2=duanma[jishu/10];”中的“jishu/10”完成了对jishu十位上数的分离;“P1=duanma[jishu%10];”中的“jishu%10”完成了对jishu十位上数的分离;分离后的十位、个位数分别查段码表P2、P1口输出,在后面的动态扫描程序中经常 要用到数据拆分法。 上一页 下一页 返回

53 第3章 单片机的输出与输入 思考题 (1)硬件电路图如图 所示,两个灯同时点亮,两端往中间移动,再往两端移动,不断循环,状态表如表 所示,试编写程序实现该功能。 (2)硬件电路图如图 所示,柱状灯的设计,开始一个灯点亮,接着二个、三个到八个灯全亮,然后全灭,再重新开始,不断循环,试编写程序实现该功能. (3)硬件电路图如图3.1.17所示,一位数码显示从9开始递减到0,延时时间为1秒,然后再重9开始,不断循环,试编写程序实现该功能。 上一页 下一页 返回

54 第3章 单片机的输出与输入 (4)硬件电路图如图 所示,二位数码显示从0开始依次加到59,然后再从0开始,模仿数字钟的秒位,延时时间为1秒试编写程序实现该功能。 上一页 返回

55 第3章 单片机的输出与输入 3. 2项目五单键控制数码显示(静态) 3. 2. 1任务要求
第3章 单片机的输出与输入 3. 2项目五单键控制数码显示(静态) 任务要求 用单键(即独立键盘中的按键)实现对两位数码显不进行控制,初始显示为00,每按一次按键,数码显示的值加1,加到59时再加1归0,模仿数字钟的秒位。 下一页 返回

56 第3章 单片机的输出与输入 3. 2. 2任务分析及电路设计 1.硬件资源分配
第3章 单片机的输出与输入 任务分析及电路设计 1.硬件资源分配 按键k1接P1. 0,数码显不十位接P2口,数码显示个位接P3口如图 所示。 2.输入检测 与输出的方向不同,在输出控制中语句是:Pn = shuju; 其中,i是0到3,是把数据送到端口;而输入正相反,是把端口的数据读入语句格式为:saomiao = Pn;执行该语句就把端口的当前状态读到变量saomiao里。 上一页 下一页 返回

57 第3章 单片机的输出与输入 3.去抖动 在软件设计中,当单片机检测到有键按下时,可以先延时一段时间越过抖动过程再对按键识别实际应用中,一般希望按键一次按下单片机只处理一次,但由于单片机执行程序的速度很快,按键一次按下可能被单片机多次处理为避免此问题,可在按键第一次按下时延时lOms(机械特点不同延时时间也不同)之后再次检测按键是否按下,如果此时按键仍然按下,则确定有按键输入执行完按键处理程序后,要等待按键释放,这样便可以避免按键的重复处理. 上一页 下一页 返回

58 第3章 单片机的输出与输入 任务编程及调试 程序流程图如图3.2.2所示,源程序如下 //3一2一1.c 上一页 下一页 返回

59 第3章 单片机的输出与输入 上一页 下一页 返回

60 第3章 单片机的输出与输入 上一页 下一页 返回

61 第3章 单片机的输出与输入 上一页 下一页 返回

62 第3章 单片机的输出与输入 3. 2. 4任务扩展:八键控制数码显示(独立按键) 1.任务要求
第3章 单片机的输出与输入 任务扩展:八键控制数码显示(独立按键) 1.任务要求 八位按键,任一按键按下,数码管显示该键的键号,例如k6键按下,数码显示6。 2.任务分析及电路设计 上一页 下一页 返回

63 第3章 单片机的输出与输入 硬件简化电路如图 所示,八位按键接到P1口,数码显示接到P2口按键检测方法同单键,如何判断是哪一键按下呢?首先判断是否有键按下,无键按下时P1口的值为:0 xff,可有键按下,P1口的值不再是0 xff,依此可判断是否有键按下;其次判断是哪一键按下,由硬件电路可知如果有键按下,例如k6按下,那么P1. 5就与地接通,从而使P1. 5 =0,此时P1端口的值变为 (二进制),十六进制为0 xdf,哪一键按下对应的那一位就为0我们可以通过计算得到每一键按下的键值,从k1到k8分别为“Oxfe, Oxfd, Oxfb, Oxf7, Oxef,Oxdf, Oxbf, Ox7f”可有键按下,读取端口的状态,再到键值表里去查找所在位置,从而识别出是哪一键按下也可通过移位的方法识别出按下的键值下面用两种方法实现. 上一页 下一页 返回

64 第3章 单片机的输出与输入 3.任务编程及调试 方法一:查表法 //3一2一2 .c程序流程图如图3. 2. 4所示,源程序如下: 上一页
第3章 单片机的输出与输入 3.任务编程及调试 方法一:查表法 //3一2一2 .c程序流程图如图 所示,源程序如下: 上一页 下一页 返回

65 第3章 单片机的输出与输入 上一页 下一页 返回

66 第3章 单片机的输出与输入 上一页 下一页 返回

67 第3章 单片机的输出与输入 上一页 下一页 返回

68 第3章 单片机的输出与输入 方法二:移位法 程序流程图如图 所示,源程序如下: 上一页 下一页 返回

69 第3章 单片机的输出与输入 上一页 下一页 返回

70 第3章 单片机的输出与输入 上一页 下一页 返回

71 第3章 单片机的输出与输入 上一页 下一页 返回

72 第3章 单片机的输出与输入 上一页 下一页 返回

73 第3章 单片机的输出与输入 上一页 下一页 返回

74 第3章 单片机的输出与输入 方法一与方法二的主要区别是查找按键的方法不同,方法一是查表法,将可能的按键值放到数组jianma[8]里,扫描得到的键值saomiao与键值表里的数据进行对比,找到在数组里的位置,再加1得到键号jianhao,再将键号值查段码表,结果送P2口显示;方法二是通过移位,通过计算移动几次能将0移到最低位,移动的次数就是键号jianhao,然后送显示。也可以通过一位一位地查询,和单键判断一样,用sbit定义每一位,需要判断8次。 上一页 下一页 返回

75 第3章 单片机的输出与输入 任务练习 (1)双键控制LED左移、右移,k1使点亮的LE D左移一位,k2使点亮的LE D右移一位硬件电路如图3.2.6所示。 程序流程图如图 所示,参考源程序如下: 上一页 下一页 返回

76 第3章 单片机的输出与输入 上一页 下一页 返回

77 第3章 单片机的输出与输入 上一页 下一页 返回

78 第3章 单片机的输出与输入 上一页 下一页 返回

79 第3章 单片机的输出与输入 上一页 下一页 返回

80 第3章 单片机的输出与输入 关闭合的数量,硬件电路图如图3.2.8所示,参考源程序如下: 上一页 下一页 返回

81 第3章 单片机的输出与输入 上一页 下一页 返回

82 第3章 单片机的输出与输入 上一页 下一页 返回

83 第3章 单片机的输出与输入 上一页 下一页 返回

84 第3章 单片机的输出与输入 3. 2. 6思考题 设计硬件电路,编写程序,实现要求的功能
第3章 单片机的输出与输入 思考题 设计硬件电路,编写程序,实现要求的功能 (1)开关决定流水灯流动方向,当开关sw打开时,流水灯向右移动;当开关sw闭合时,流水灯向左移动;每次流动的时间间隔为0. 2秒 (2)双键Kl , K2控制两位数码显示,每次点击K1,数码显示值加1,加至99后,再点击K1,数码显示值为00;每次点击K2,数码显示值减1,减至00后,再点击K2,数码显示值为99,初始显示为00 (3)从40开始倒计时,每秒减1,每次点击按键K1,倒计时值减3,当小于10时不再减;到0后,再重新从40开始倒计时。 上一页 下一页 返回

85 第3章 单片机的输出与输入 (4)可预置初值的倒计时器,八位开关的状态决定倒计时从多少处开始倒计,当开关预置的初值小于20时,从20开始倒计时;当开关预置的初值大于99时,从99开始倒计时;当开关预置的初值介于20和99之间时,从开关预置的初值开始倒计时。 上一页 返回

86 第3章 单片机的输出与输入 3. 3知识链接 3. 3. 1AT89S51单片机的输入/输出端口
第3章 单片机的输出与输入 3. 3知识链接 AT89S51单片机的输入/输出端口 AT89 S51单片机上具有4个8位并行接口,通常把8位即8根引脚合起来称为一个输入、输出口,计作PO , Pl , P2和P3,共32根I/ 0引脚这4个端口既可以按字节寻址,还可以按位寻址。 1.PO端口 PO口是一组8位漏极开路型双向I/0口,也即地址/数据总线复用口。作为输出口用时,每位能驱动8个TTL逻辑门电路,对端口写“1”可作为高阻抗输入端用。 下一页 返回

87 第3章 单片机的输出与输入 在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。
第3章 单片机的输出与输入 在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。 2. P1端口 P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口些“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电路(Iμ)。 Flash编程和程序校验期间,Pl接收低8位地址同时P1. 5 , P1. 6 , P1. 7具有第二功能,如表 所示。 上一页 下一页 返回

88 第3章 单片机的输出与输入 3.P2端口 P2是一个带有内部上拉电阻的8为双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(Iμ)。 在访问外部程序存储器或16位地址的外部数据存储器时,P2口送出高8位地址数据。在访问高8位地址的外部数据存储器时,P2口线上的内容(也即特殊功能寄存器(SFR)区中P2寄存器的内容),在整个访问期间不改变。 Flash编程或校验时,P2亦接收高位地址和其他控制信号。 上一页 下一页 返回

89 第3章 单片机的输出与输入 4.P3端口 P3是一个带有内部上拉电阻的8为双向I/O口,P3的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对P3口写入“1”,它们被内部上拉电阻拉高并可作输入口,作输入口端时,被外部拉低的P3口将用上拉电阻输出一个电流(Iμ)。P3口除了作为一般的I/0口线外,更重要的用途是它的第二个功能,如表3.3.2所示。 P3口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。 上一页 下一页 返回

90 第3章 单片机的输出与输入 位定义 对于需要单独访问SFR(特殊功能寄存器)中的位,C51的扩充关键字shit”口f以访问位寻址对象“shit”定义某些特殊位,并接受任何符号名,“=”号后将绝对地址赋给变量名. k1只有两种可能为0或为1 C51提供关键字“bit”实现位变量的定义及访问 格式为:bit位变量名; 例如bit flag,变量f1ag只有两种可能为0或为1. bit与shit不同bit不能指定位变量的绝对地址,当需要指定位变量的绝对地址(范围必须在0x80一0 off时),需要使用shit。 上一页 下一页 返回

91 第3章 单片机的输出与输入 数码管 按段数可以分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显不);按能显不多少个“8”可以分为1位、2位、4位、6位、8位等数码管;按发光二极管单兀连接方式划分可分为共阳极/共阴极数码管共阳极数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管当某一字段发光二极管的阴极为低电平时,相应字段就点亮共阴极数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管当某一字段发光二极管的阳极为高电平时,相应字段就点亮如图 所示。 上一页 下一页 返回

92 第3章 单片机的输出与输入 数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显不出我们要的数字,因此根据数码管的驱动方式的不同,可分为静态式和动态式两类 静态驱动也称直流驱动静态驱动是指每个数码管的每一个段码都由一个单片机的I/0端口进行驱动,或者使用如BCD码二一十进制译码器译码进行驱动显示数据时,直接将要显示的数字的编码通过单片机送到段码显示端即可。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/0端口多,如驱动6个数码管静态显示则需要6x8=48根I/0端口来驱动,而一个AT89 SS 1单片机芯片口1用的I/ 0端口才32个,实际应用时必须增加译码驱动器进行驱动,硬件电路较复杂。 上一页 下一页 返回

93 第3章 单片机的输出与输入 动态数码管显示一般用在需要多只数码管显示的场合,它采用分时的方法,让每只数码管轮流显示,只要轮流显示的时间间隔选择适当,利用人眼视觉的惰性,就不会感觉到数码管在闪烁采用动态显示,可以大幅度地降低硬件成本和电源功耗,但编程相对较复杂。 上一页 下一页 返回

94 第3章 单片机的输出与输入 按键 在单片机应用系统中,很多系统都需要向单片机输入数据、传送命令等,是人工控制单片机的主要手段键盘要通过接口与单片机相连,分为编码键盘和非编码键盘两类。 键盘上闭合键的识别由专用的硬件编码器实现,并产生键编码号或键值的称为编码键盘非编码键盘又分为:独立键盘和行列式(又称为矩阵式)键盘 本书主要介绍了独立键盘的编程方法。 上电初始化后便循环调用键盘程序、显示程序、功能处理程序等,程序结构如图 所示。 上一页 下一页 返回

95 第3章 单片机的输出与输入 另外,在键盘的软件设计中还要注意按键的去抖动问题由于按键一般是由机械式触点构成的,在按键按下和断开的瞬间均有一个抖动过程,时间大约为10ms(可通过实验进行验证),可能会造成单片机对按键的误识别,即一次按下多次识别。 按键消抖一般有两种方法,即硬件消抖和软件消抖本书主要介绍软件延时去抖动方法,物理按键抖动波形图如图 所示。 上一页 返回

96 图 按键抖动流程图 返回

97 图 按键识别流程图 返回

98 返回

99 表 P3口第二功能(1) 下一页 返回

100 表 P3口第二功能(2) 上一页 返回

101 图3.2.8开关控制显示电路图 返回

102 图 按键控制LED循环移位法流程图 返回

103 图 双键控制LED电路图 返回

104 图 按键控制显示移位法流程图 返回

105 图3.2.4按键控制显示查表示流程图 返回

106 图 八键控制数码显示电路图 返回

107 图 按键控制数码显示流程图 返回

108 图 按键控制数码显示电路图 返回

109 表 LED数据状杰表 返回

110 图 数据拆分法流程图 返回

111 图 十讲制法流程图 返回

112 图 二位静杰数码显示电路图 返回

113 图 LED控制电路图 返回

114 图 一位静杰数码显示加1流程图 返回

115 表3.1.4任冬分析数据 返回

116 图 一位静杰数码显示电路图 返回

117 图 电路原理图 返回

118 图 编辑元器件后的界面 返回

119 图 编辑元器件 返回

120 图 添加元件后的窗口 返回

121 图 洗择元器件窗口 返回

122 图 保存设计项目 返回

123 图 设计页面对话框 返回

124 图 Proteus ISIS工作界面 返回

125 图3.1.8观测iishu畜量 返回

126 图 观测累计运行时间2 返回

127 图 观测累计运行时间1 返回

128 图 观测P2端口 返回

129 图3.1.4调试源程序对话框 返回

130 图 流水灯数组法流程图 返回

131 图 流水灯直接输出法流程图 返回

132 表 项目四流水灯数据表 返回

133 表 P2 = 0 x95数据表 返回

134 图3.1.1流水灯硬件电路图 返回

135 表 Dl点亮数据表 返回


Download ppt "第3章 单片机的输出与输入 教学要点 3.1 项目四流水灯 3.2 项目五单键控制数码显示(静态) 3.3 知识链接 返回."

Similar presentations


Ads by Google