换
读取转换数据值
结束AD转换结束N
Y
图31ADC0832数据读取程序流程
f32单片机与键盘的接口程序设计
AT89C51单片机的P1口用作键盘IO口键盘的列线接到P1口的低4位键盘的行线接到P1口的高4位。列线P10P13分别接有4个上拉电阻到正电源5V并把列线P10P13设置为输入线行线P14P17设置为输出线。4根行线和4根列线形成16个相交点。检测当前是否有键被按下。检测的办法是P14P17输出全“0”读取P10P13的状态若P10P13为全“1”则无键闭合不然有键闭合。去除键抖动。当检测到有键按下后延时一段时间再做下一步的检测判断。若有键被按下应识别出是哪一个键闭合。办法是对键盘的行线进行扫描。P14P17按下述4种组合依次输出P171110P161101P151011P140111在每组行输出时读取P10P13若全为“1”则表示为“0”这一行没有键闭合不然有键闭合。由此得到闭合键的行值和列值然后可采用计算法或查表法将闭合键的行值和列值转换成所定义的键值。为了保证键每闭合一次CPU仅作一次处理必须却除键释放时的抖动。
从以上分析得到单片机键盘扫描程序的流程图如图32所示。程序如下
f
键盘扫描
有键闭合
延时去抖动扫描键盘
计算键值
建立有效标志闭合键键释放
找到闭合键
返回建立无效标志
N
Y
NY
N
Y
图32单片机矩阵式键盘接口流程图
33LED数码管显示程序设计
利用单片机内部的串行接口可以实现静态的显示处理。这样不仅可以节省单片机的并行接口资源而且在大多数不使用串行接口的情况下可以减少或是免去扩展接口。
在这种设计中串行口工作于方式0数据的输入输出都通过RxD实现移位脉冲则由TxD发出。每次传送一个字节数据。每输出一个字节数据单片机自动使串行中断请求标志TI置。通过测试该状态即可确定该字节是否发送完毕。由硬件电路图可知74LS164是串行输入并行输出的移位寄存器。它具有两个串行输入端和8位并行输出端QAQH。
当显示数据从RxD端输出到移位寄存器74LS164的输入端AB时74LS164将串行数据转换成8位输出码QAQH然后加到共阳极LED显示器上。究竟在哪一位上显
f
示还要P1口的状态而定。当某一位为低电平时该位LED显示其他位不显示。由于接口电路中显示模型输出地址和位选信号可一次选中故只要一次输出即可显示一位。
开始初始化取待显示字符
查笔段码
送显示缓冲区
修改缓冲区指针4位显示结束
结束
图33LED的显示流程图
4系统调试
按照实验原理图连线连接好线路后打开电源一个砝码一个砝码放观察万能表示数与数码示数是否一致并观察电压示数变化是否为定值。通过实验r