4×4矩阵式键盘识别一、硬件设计单片机的最小系统连接方式比较简单。晶振使用的是12MHz。复位电路设计成上电复位。在单片机系统区域内,把单片机的p1.0-1.7连接到在用2位七段数码管显示时,采用动态扫描的方式将数字直观的显示出来。在设计数码管的驱动电路时,考虑到只是在仿真,并且会使电路显得杂乱,所以为了直观的表达故省去。采用直接连接的方式。完整电路原理图二、软件设计在设计软件时,由于系统的功能比较简单,所以在设计软件时,只用到了三个子函数:unsignedcharadc_0808(void);其函数功能是:在接收模拟电压以后,将其转换为数字量输出。返回值就是模拟电压所对应的数字量。voidxianshi(inta,intb,intc,intd);其函数功能是:将输入的4个整型数用动态扫描的方式显示出来,其显示的并非ADC0808输出的数字量。voiddelayx();其函数功能主要是起延时作用。主函数:主要功能是将ADC0808输出的数字两转换为模拟电压的数值,转换公式为:a=ADC_0808()*19.6。再提取每一位数字(共4位)。然后显示。三、联调为了能清晰的知道所显示的数值是否就是我们输入ADC0808的电压值,在ADC0808的输入端接了一个电压表。在联调的过程中所遇到的问题有如下:1、显示电路的调试问题所在:无法完整显示2位七段数码管,或有闪烁现象。解决方法:调整延时到最佳。2、ADC0808电路的调试(1)、显示数值始终为0000.问题所在:未给ADC0808的CLK接口连接500k的时钟。解决方法:在此接口添加时钟。(2)、显示乱码问题所在:ADC0808的时序不对。解决方法:通过查资料查得时序图如下:ADC0808时序图(3)、能完整显示4位数码管,但是显示的数值与电压表所显示不一致。问题所在:adc0808输出的8位与单片机的P0口连接顺序不一致。解决方法:重新调整连接顺序。四、结果以下为运行结果图,分别截取了三张:一为满输入时候的显示;三为0输入时的显示;二为随意选取的中间电压值。右边的电压表显示的是输入电压值分别为:5.00,2.95,0.00。本组成员:2008080302105尹琬琰,2008080302108张钰婷,2008080302119姜婉婷,2008080302129房伯霖,2008080302137欧阳植彬。(原成员31班郑陌阳已回原班)分工:软件:姜婉婷,房伯霖硬件:尹琬琰,张钰婷联调和报告:欧阳植彬