PIC单片机及FPGA实验系统设计 第13页
图 6 12
原理说明:本程序实现的功能是:第一次按键的时候,显示D1,第二次按下的时候显示D1D2…..显示完5个数据的时候,再按,给出提示声音。
基本原理介绍:⒈定义一个位选数组,定义一个显示码数组,定义一个key值存储缓冲器,定义一个位数的记录标志,定义一个报警标志。主程序重要是键盘处理和按键盘处理,和中断程序。
⒉首先系统通过键盘扫描程序扫描键盘,当某个按键被按下的时候,系统检测到此按键,然后通过按键处理程序来处理按键,首先调用转化子程序,将上一次的按键值放到暂存器的下一位,然后将本次扫描的结果放到缓冲器的首位。样当按下5次后,缓冲器中就依次有5次按下的按键值。
⒊本次软件设计通过T0产生一个硬件延时,件延时不占用CPU时间,可以节约资源,硬件延时到,产生中断,中断中调用显示程序按照动态显示,次按照缓冲器里面的内容来显示数据。
(三)键盘扫描程序:keyscan.c(附录五)
功能说明:4×4矩阵键盘控制发光二级管亮灭。
原理:⒈键盘扫描原理,次使用的键盘扫描是行和列的同时扫描,有上拉,扫描行,扫描列,后按照行列扫描的结果确定按下的是哪个键。
⒉每个按键都有对应的值,如key=1的时候,表0x01,只有最后一个灯是灭的,他都亮。
注意:(1)键盘按下时候是真按下还是机械抖动不确定,所以键盘扫描要注意消键盘抖动,这是可靠性设计的要求,键盘消抖主要的方法有两个一个是硬件上的,一个是软件上的,硬件上做的处理是加基本RS触发器,利用RS触发器保持这一特点来消除抖动。这里不做过多介绍,软件上的处理是做适当延时后在扫描,看两次结果是否一致。一致则有按键按下,不一致则继续扫描。
(2)关于键盘的编码设定,比较简单的办法是做个数组,还有就是比较麻烦的就是每次确定有按键按下的时候就执行按键处理程序,这样虽然比较麻烦,但是当处理有特殊按键的时候就比较有必要了,比如Del,Enter等功能或者有第二功能。比如计算器上的附加功能,这些按键的处理用这种处理也比较合适,当然按键的功能越多处理也越复杂。
程序流程图(图 6 13):
图 6 13
(四)LED点阵实验:
LED点阵原理:上面已经介绍(硬件介绍5.2.3)
(1)柱子的移动实验:文件matrix-zhu.c(附录八)
功能:在点阵上实现”柱子”的移动,分别实现柱子从左到右,从右到左,从上到下,从下到上各三次。
实验原理:LED点阵是由发光二级管构成,每个发光二级管都是放置在行线和列线的交叉上的,当对应的某一列设置为高电平,某一行设置为低电平,则相应的二级管亮,因此,要实现一个柱子的形状,横柱:对应的行设置为0,而列则采用扫描的方法实现,竖柱:对应的列设置为1,而行采用扫描方法来实现。
程序流程图(图6-14):
图 6 14
(2)LED点阵的0-9数字显示,文件matrix_num.c(见附录九)
原理:以显示0为例子,选择第三列到第七列显示,如图(图 6 15)
图 6 15
因此形成的列代码为00H,00H,3EH,41H,41H,3EH,00H,00H(按列写的),把这些代码送到相应的列线上,依次扫描显示,既可实现0的数字显示。显示1~9原理同上。
流程图(图 6 16):
图 6 16
(五)AD转换实验:文件AD.C(附录十一)
程序流程图(图 6 17):
①AD相关的寄存器:ADCON0控制寄存器,ADCON1控制寄存器,ADREH和ADREL结果存储器。
②AD中断:ADIF中断溢出标志,ADIE中断使能,GIE全局中断,AD转换开始的时候要设置ADIF=0,ADIE=1,GIE=1,AD转换结束的时候ADIF=1,为了进行中断服务处理,要设置ADIF=0,ADIE=0,然后进行中断处理,处理完毕设置ADIE=1。
<< 上一页 [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] ... 下一页 >>
PIC单片机及FPGA实验系统设计 第13页下载如图片无法显示或论文不完整,请联系qq752018766