打铁小肥罗 发表于 2016-8-23 23:31:13

用矩阵键盘在数码管上输出十六进制和十进制数

用矩阵键盘在数码管上输出十六进制和十进制数一.如题,要用矩阵键盘在数码管上显示十六进制数和十进制数,肯定要用到键盘输入和数码管,顶层可以这样搭建:
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5CFB.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D0C.tmp.jpg
顶层包含Keyboard(键盘输入模块)和smg(数码管模块)两个子模块。
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D1D.tmp.jpg
以上信号为顶层的输入和输出。
二.接下来看键盘输入模块。
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D1E.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D1F.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D20.tmp.jpg
按照电路顺序为:
1.scankey(键盘扫描模块)→2.key_xd(键盘消抖模块)→3.key_reg(数据寄存模块)
1.scankey(键盘扫描模块)
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D21.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D31.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D32.tmp.jpg
键盘扫描模块又分两个子模块a.        key_switch(进制切换模块)和b.        scan(扫描模块).
a.        Key_switch(进制切换模块)
我们输入的是两种进制,所以在输入的时候要有一个选择,作为我们输入进制的标志,我们在这里用板子上四位按键之中的S4按键作为我们的switch输入,控制输入进制状态state,为了便于观察,我外接了一盏LED灯(pio_led),亮的时候表示输入十进制,灭的时候表示输入十六进制。
b.        Scan(扫描模块)
矩阵键盘的扫描,用FPGA向键盘发送扫描列电平col,与FPGA从键盘接收过来的行电平row,以及我们的进制状态state组成扫描码scancode={state,col,row},用一个case语句,把我们的按键扫描出来。
注意:我的程序由外部键盘输入的十六进制数是8421码
十进制输入的直接是BCD码!
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D43.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D44.tmp.jpg




2.key_xd(键盘消抖模块)
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D54.tmp.jpg
消抖模块大概思路:
先对键盘连续输出的N个数字进行取值,在进行判断,如果这连续的N个数值相同,则为真实输出,否则为抖动,在每一次按键按下且有真实输出的情况下,我们将keynum_vld拉高为高电平,知道按键放开再将为低电平,我们认为这是一次有效输出。

3.key_reg(数据寄存器模块)
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D55.tmp.jpg
我们以keynum_vld(按键输出脉冲信号)为基准,向寄存器中写入数据。
上面三个步骤即为键盘输入模块的思路。下面我们来探讨数码管模块的思路。
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D56.tmp.jpg


三.数码管模块
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D67.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D68.tmp.jpg
数码管模块分为:
1.smg_light(数码管亮灭控制模块)→2.smg_display(数码管显示模块)。
1.smg_light(数码管亮灭控制模块)
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D69.tmp.jpg
思路:
从最高位开始,从第一个不是零的开始点亮数码管。用到一个csaex语句。
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D7A.tmp.jpg
2.smg_display(数码管显示模块)
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D7B.tmp.jpg
一共六个数码管(3’b000~3’b101)分分别对应数码管十万,万,千,百,十,个位。再把我们在上一模块的数码管点亮使能信号与六个数码管一一对照,如图file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D7C.tmp.jpg
再扫入数码管即可:
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D8C.tmp.jpgfile:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D8D.tmp.jpg


用矩阵键盘在数码管上输出十六进制和十进制数
一.如题,要用矩阵键盘在数码管上显示十六进制数和十进制数,肯定要用到键盘输入和数码管,顶层可以这样搭建:
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5CFB.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D0C.tmp.jpg
顶层包含Keyboard(键盘输入模块)和smg(数码管模块)两个子模块。
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D1D.tmp.jpg
以上信号为顶层的输入和输出。
二.接下来看键盘输入模块。
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D1E.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D1F.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D20.tmp.jpg
按照电路顺序为:
1.scankey(键盘扫描模块)→2.key_xd(键盘消抖模块)→3.key_reg(数据寄存模块)
1.scankey(键盘扫描模块)
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D21.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D31.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D32.tmp.jpg
键盘扫描模块又分两个子模块a.        key_switch(进制切换模块)和b.        scan(扫描模块).
a.        Key_switch(进制切换模块)
我们输入的是两种进制,所以在输入的时候要有一个选择,作为我们输入进制的标志,我们在这里用板子上四位按键之中的S4按键作为我们的switch输入,控制输入进制状态state,为了便于观察,我外接了一盏LED灯(pio_led),亮的时候表示输入十进制,灭的时候表示输入十六进制。
b.        Scan(扫描模块)
矩阵键盘的扫描,用FPGA向键盘发送扫描列电平col,与FPGA从键盘接收过来的行电平row,以及我们的进制状态state组成扫描码scancode={state,col,row},用一个case语句,把我们的按键扫描出来。
注意:我的程序由外部键盘输入的十六进制数是8421码
十进制输入的直接是BCD码!
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D43.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D44.tmp.jpg




2.key_xd(键盘消抖模块)
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D54.tmp.jpg
消抖模块大概思路:
先对键盘连续输出的N个数字进行取值,在进行判断,如果这连续的N个数值相同,则为真实输出,否则为抖动,在每一次按键按下且有真实输出的情况下,我们将keynum_vld拉高为高电平,知道按键放开再将为低电平,我们认为这是一次有效输出。

3.key_reg(数据寄存器模块)
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D55.tmp.jpg
我们以keynum_vld(按键输出脉冲信号)为基准,向寄存器中写入数据。
上面三个步骤即为键盘输入模块的思路。下面我们来探讨数码管模块的思路。
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D56.tmp.jpg


三.数码管模块
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D67.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D68.tmp.jpg
数码管模块分为:
1.smg_light(数码管亮灭控制模块)→2.smg_display(数码管显示模块)。
1.smg_light(数码管亮灭控制模块)
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D69.tmp.jpg
思路:
从最高位开始,从第一个不是零的开始点亮数码管。用到一个csaex语句。
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D7A.tmp.jpg
2.smg_display(数码管显示模块)
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D7B.tmp.jpg
一共六个数码管(3’b000~3’b101)分分别对应数码管十万,万,千,百,十,个位。再把我们在上一模块的数码管点亮使能信号与六个数码管一一对照,如图file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D7C.tmp.jpg
再扫入数码管即可:
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D8C.tmp.jpgfile:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D8D.tmp.jpg


用矩阵键盘在数码管上输出十六进制和十进制数
一.如题,要用矩阵键盘在数码管上显示十六进制数和十进制数,肯定要用到键盘输入和数码管,顶层可以这样搭建:
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5CFB.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D0C.tmp.jpg
顶层包含Keyboard(键盘输入模块)和smg(数码管模块)两个子模块。
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D1D.tmp.jpg
以上信号为顶层的输入和输出。
二.接下来看键盘输入模块。
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D1E.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D1F.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D20.tmp.jpg
按照电路顺序为:
1.scankey(键盘扫描模块)→2.key_xd(键盘消抖模块)→3.key_reg(数据寄存模块)
1.scankey(键盘扫描模块)
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D21.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D31.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D32.tmp.jpg
键盘扫描模块又分两个子模块a.        key_switch(进制切换模块)和b.        scan(扫描模块).
a.        Key_switch(进制切换模块)
我们输入的是两种进制,所以在输入的时候要有一个选择,作为我们输入进制的标志,我们在这里用板子上四位按键之中的S4按键作为我们的switch输入,控制输入进制状态state,为了便于观察,我外接了一盏LED灯(pio_led),亮的时候表示输入十进制,灭的时候表示输入十六进制。
b.        Scan(扫描模块)
矩阵键盘的扫描,用FPGA向键盘发送扫描列电平col,与FPGA从键盘接收过来的行电平row,以及我们的进制状态state组成扫描码scancode={state,col,row},用一个case语句,把我们的按键扫描出来。
注意:我的程序由外部键盘输入的十六进制数是8421码
十进制输入的直接是BCD码!
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D43.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D44.tmp.jpg




2.key_xd(键盘消抖模块)
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D54.tmp.jpg
消抖模块大概思路:
先对键盘连续输出的N个数字进行取值,在进行判断,如果这连续的N个数值相同,则为真实输出,否则为抖动,在每一次按键按下且有真实输出的情况下,我们将keynum_vld拉高为高电平,知道按键放开再将为低电平,我们认为这是一次有效输出。

3.key_reg(数据寄存器模块)
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D55.tmp.jpg
我们以keynum_vld(按键输出脉冲信号)为基准,向寄存器中写入数据。
上面三个步骤即为键盘输入模块的思路。下面我们来探讨数码管模块的思路。
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D56.tmp.jpg


三.数码管模块
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D67.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D68.tmp.jpg
数码管模块分为:
1.smg_light(数码管亮灭控制模块)→2.smg_display(数码管显示模块)。
1.smg_light(数码管亮灭控制模块)
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D69.tmp.jpg
思路:
从最高位开始,从第一个不是零的开始点亮数码管。用到一个csaex语句。
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D7A.tmp.jpg
2.smg_display(数码管显示模块)
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D7B.tmp.jpg
一共六个数码管(3’b000~3’b101)分分别对应数码管十万,万,千,百,十,个位。再把我们在上一模块的数码管点亮使能信号与六个数码管一一对照,如图file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D7C.tmp.jpg
再扫入数码管即可:
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D8C.tmp.jpgfile:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D8D.tmp.jpg


用矩阵键盘在数码管上输出十六进制和十进制数
一.如题,要用矩阵键盘在数码管上显示十六进制数和十进制数,肯定要用到键盘输入和数码管,顶层可以这样搭建:
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5CFB.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D0C.tmp.jpg
顶层包含Keyboard(键盘输入模块)和smg(数码管模块)两个子模块。
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D1D.tmp.jpg
以上信号为顶层的输入和输出。
二.接下来看键盘输入模块。
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D1E.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D1F.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D20.tmp.jpg
按照电路顺序为:
1.scankey(键盘扫描模块)→2.key_xd(键盘消抖模块)→3.key_reg(数据寄存模块)
1.scankey(键盘扫描模块)
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D21.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D31.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D32.tmp.jpg
键盘扫描模块又分两个子模块a.        key_switch(进制切换模块)和b.        scan(扫描模块).
a.        Key_switch(进制切换模块)
我们输入的是两种进制,所以在输入的时候要有一个选择,作为我们输入进制的标志,我们在这里用板子上四位按键之中的S4按键作为我们的switch输入,控制输入进制状态state,为了便于观察,我外接了一盏LED灯(pio_led),亮的时候表示输入十进制,灭的时候表示输入十六进制。
b.        Scan(扫描模块)
矩阵键盘的扫描,用FPGA向键盘发送扫描列电平col,与FPGA从键盘接收过来的行电平row,以及我们的进制状态state组成扫描码scancode={state,col,row},用一个case语句,把我们的按键扫描出来。
注意:我的程序由外部键盘输入的十六进制数是8421码
十进制输入的直接是BCD码!
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D43.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D44.tmp.jpg




2.key_xd(键盘消抖模块)
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D54.tmp.jpg
消抖模块大概思路:
先对键盘连续输出的N个数字进行取值,在进行判断,如果这连续的N个数值相同,则为真实输出,否则为抖动,在每一次按键按下且有真实输出的情况下,我们将keynum_vld拉高为高电平,知道按键放开再将为低电平,我们认为这是一次有效输出。

3.key_reg(数据寄存器模块)
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D55.tmp.jpg
我们以keynum_vld(按键输出脉冲信号)为基准,向寄存器中写入数据。
上面三个步骤即为键盘输入模块的思路。下面我们来探讨数码管模块的思路。
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D56.tmp.jpg


三.数码管模块
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D67.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D68.tmp.jpg
数码管模块分为:
1.smg_light(数码管亮灭控制模块)→2.smg_display(数码管显示模块)。
1.smg_light(数码管亮灭控制模块)
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D69.tmp.jpg
思路:
从最高位开始,从第一个不是零的开始点亮数码管。用到一个csaex语句。
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D7A.tmp.jpg
2.smg_display(数码管显示模块)
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D7B.tmp.jpg
一共六个数码管(3’b000~3’b101)分分别对应数码管十万,万,千,百,十,个位。再把我们在上一模块的数码管点亮使能信号与六个数码管一一对照,如图file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D7C.tmp.jpg
再扫入数码管即可:
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D8C.tmp.jpgfile:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D8D.tmp.jpg


用矩阵键盘在数码管上输出十六进制和十进制数
一.如题,要用矩阵键盘在数码管上显示十六进制数和十进制数,肯定要用到键盘输入和数码管,顶层可以这样搭建:
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5CFB.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D0C.tmp.jpg
顶层包含Keyboard(键盘输入模块)和smg(数码管模块)两个子模块。
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D1D.tmp.jpg
以上信号为顶层的输入和输出。
二.接下来看键盘输入模块。
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D1E.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D1F.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D20.tmp.jpg
按照电路顺序为:
1.scankey(键盘扫描模块)→2.key_xd(键盘消抖模块)→3.key_reg(数据寄存模块)
1.scankey(键盘扫描模块)
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D21.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D31.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D32.tmp.jpg
键盘扫描模块又分两个子模块a.        key_switch(进制切换模块)和b.        scan(扫描模块).
a.        Key_switch(进制切换模块)
我们输入的是两种进制,所以在输入的时候要有一个选择,作为我们输入进制的标志,我们在这里用板子上四位按键之中的S4按键作为我们的switch输入,控制输入进制状态state,为了便于观察,我外接了一盏LED灯(pio_led),亮的时候表示输入十进制,灭的时候表示输入十六进制。
b.        Scan(扫描模块)
矩阵键盘的扫描,用FPGA向键盘发送扫描列电平col,与FPGA从键盘接收过来的行电平row,以及我们的进制状态state组成扫描码scancode={state,col,row},用一个case语句,把我们的按键扫描出来。
注意:我的程序由外部键盘输入的十六进制数是8421码
十进制输入的直接是BCD码!
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D43.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D44.tmp.jpg




2.key_xd(键盘消抖模块)
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D54.tmp.jpg
消抖模块大概思路:
先对键盘连续输出的N个数字进行取值,在进行判断,如果这连续的N个数值相同,则为真实输出,否则为抖动,在每一次按键按下且有真实输出的情况下,我们将keynum_vld拉高为高电平,知道按键放开再将为低电平,我们认为这是一次有效输出。

3.key_reg(数据寄存器模块)
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D55.tmp.jpg
我们以keynum_vld(按键输出脉冲信号)为基准,向寄存器中写入数据。
上面三个步骤即为键盘输入模块的思路。下面我们来探讨数码管模块的思路。
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D56.tmp.jpg


三.数码管模块
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D67.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D68.tmp.jpg
数码管模块分为:
1.smg_light(数码管亮灭控制模块)→2.smg_display(数码管显示模块)。
1.smg_light(数码管亮灭控制模块)
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D69.tmp.jpg
思路:
从最高位开始,从第一个不是零的开始点亮数码管。用到一个csaex语句。
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D7A.tmp.jpg
2.smg_display(数码管显示模块)
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D7B.tmp.jpg
一共六个数码管(3’b000~3’b101)分分别对应数码管十万,万,千,百,十,个位。再把我们在上一模块的数码管点亮使能信号与六个数码管一一对照,如图file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D7C.tmp.jpg
再扫入数码管即可:
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D8C.tmp.jpgfile:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D8D.tmp.jpg


用矩阵键盘在数码管上输出十六进制和十进制数
一.如题,要用矩阵键盘在数码管上显示十六进制数和十进制数,肯定要用到键盘输入和数码管,顶层可以这样搭建:
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5CFB.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D0C.tmp.jpg
顶层包含Keyboard(键盘输入模块)和smg(数码管模块)两个子模块。
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D1D.tmp.jpg
以上信号为顶层的输入和输出。
二.接下来看键盘输入模块。
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D1E.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D1F.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D20.tmp.jpg
按照电路顺序为:
1.scankey(键盘扫描模块)→2.key_xd(键盘消抖模块)→3.key_reg(数据寄存模块)
1.scankey(键盘扫描模块)
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D21.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D31.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D32.tmp.jpg
键盘扫描模块又分两个子模块a.        key_switch(进制切换模块)和b.        scan(扫描模块).
a.        Key_switch(进制切换模块)
我们输入的是两种进制,所以在输入的时候要有一个选择,作为我们输入进制的标志,我们在这里用板子上四位按键之中的S4按键作为我们的switch输入,控制输入进制状态state,为了便于观察,我外接了一盏LED灯(pio_led),亮的时候表示输入十进制,灭的时候表示输入十六进制。
b.        Scan(扫描模块)
矩阵键盘的扫描,用FPGA向键盘发送扫描列电平col,与FPGA从键盘接收过来的行电平row,以及我们的进制状态state组成扫描码scancode={state,col,row},用一个case语句,把我们的按键扫描出来。
注意:我的程序由外部键盘输入的十六进制数是8421码
十进制输入的直接是BCD码!
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D43.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D44.tmp.jpg




2.key_xd(键盘消抖模块)
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D54.tmp.jpg
消抖模块大概思路:
先对键盘连续输出的N个数字进行取值,在进行判断,如果这连续的N个数值相同,则为真实输出,否则为抖动,在每一次按键按下且有真实输出的情况下,我们将keynum_vld拉高为高电平,知道按键放开再将为低电平,我们认为这是一次有效输出。

3.key_reg(数据寄存器模块)
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D55.tmp.jpg
我们以keynum_vld(按键输出脉冲信号)为基准,向寄存器中写入数据。
上面三个步骤即为键盘输入模块的思路。下面我们来探讨数码管模块的思路。
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D56.tmp.jpg


三.数码管模块
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D67.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D68.tmp.jpg
数码管模块分为:
1.smg_light(数码管亮灭控制模块)→2.smg_display(数码管显示模块)。
1.smg_light(数码管亮灭控制模块)
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D69.tmp.jpg
思路:
从最高位开始,从第一个不是零的开始点亮数码管。用到一个csaex语句。
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D7A.tmp.jpg
2.smg_display(数码管显示模块)
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D7B.tmp.jpg
一共六个数码管(3’b000~3’b101)分分别对应数码管十万,万,千,百,十,个位。再把我们在上一模块的数码管点亮使能信号与六个数码管一一对照,如图file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D7C.tmp.jpg
再扫入数码管即可:
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D8C.tmp.jpgfile:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D8D.tmp.jpg


用矩阵键盘在数码管上输出十六进制和十进制数
一.如题,要用矩阵键盘在数码管上显示十六进制数和十进制数,肯定要用到键盘输入和数码管,顶层可以这样搭建:
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5CFB.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D0C.tmp.jpg
顶层包含Keyboard(键盘输入模块)和smg(数码管模块)两个子模块。
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D1D.tmp.jpg
以上信号为顶层的输入和输出。
二.接下来看键盘输入模块。
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D1E.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D1F.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D20.tmp.jpg
按照电路顺序为:
1.scankey(键盘扫描模块)→2.key_xd(键盘消抖模块)→3.key_reg(数据寄存模块)
1.scankey(键盘扫描模块)
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D21.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D31.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D32.tmp.jpg
键盘扫描模块又分两个子模块a.        key_switch(进制切换模块)和b.        scan(扫描模块).
a.        Key_switch(进制切换模块)
我们输入的是两种进制,所以在输入的时候要有一个选择,作为我们输入进制的标志,我们在这里用板子上四位按键之中的S4按键作为我们的switch输入,控制输入进制状态state,为了便于观察,我外接了一盏LED灯(pio_led),亮的时候表示输入十进制,灭的时候表示输入十六进制。
b.        Scan(扫描模块)
矩阵键盘的扫描,用FPGA向键盘发送扫描列电平col,与FPGA从键盘接收过来的行电平row,以及我们的进制状态state组成扫描码scancode={state,col,row},用一个case语句,把我们的按键扫描出来。
注意:我的程序由外部键盘输入的十六进制数是8421码
十进制输入的直接是BCD码!
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D43.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D44.tmp.jpg




2.key_xd(键盘消抖模块)
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D54.tmp.jpg
消抖模块大概思路:
先对键盘连续输出的N个数字进行取值,在进行判断,如果这连续的N个数值相同,则为真实输出,否则为抖动,在每一次按键按下且有真实输出的情况下,我们将keynum_vld拉高为高电平,知道按键放开再将为低电平,我们认为这是一次有效输出。

3.key_reg(数据寄存器模块)
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D55.tmp.jpg
我们以keynum_vld(按键输出脉冲信号)为基准,向寄存器中写入数据。
上面三个步骤即为键盘输入模块的思路。下面我们来探讨数码管模块的思路。
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D56.tmp.jpg


三.数码管模块
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D67.tmp.jpg
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D68.tmp.jpg
数码管模块分为:
1.smg_light(数码管亮灭控制模块)→2.smg_display(数码管显示模块)。
1.smg_light(数码管亮灭控制模块)
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D69.tmp.jpg
思路:
从最高位开始,从第一个不是零的开始点亮数码管。用到一个csaex语句。
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D7A.tmp.jpg
2.smg_display(数码管显示模块)
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D7B.tmp.jpg
一共六个数码管(3’b000~3’b101)分分别对应数码管十万,万,千,百,十,个位。再把我们在上一模块的数码管点亮使能信号与六个数码管一一对照,如图file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D7C.tmp.jpg
再扫入数码管即可:
file:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D8C.tmp.jpgfile:///C:\Users\st\AppData\Local\Temp\ksohtml\wps5D8D.tmp.jpg



芙蓉王 发表于 2016-8-24 09:37:44

                     :):):):):)

Blondie 发表于 2016-8-24 09:47:28

       感谢分享

zhiweiqiang33 发表于 2016-8-24 14:46:29

最好细化一下,

陈飞龙 发表于 2016-8-30 09:05:00

申~同学吧,注意格式,下去多琢磨发帖里面的一些格式设置:P

zxopenljx 发表于 2022-11-16 09:54:35

用矩阵键盘在数码管上输出十六进制和十进制数
页: [1]
查看完整版本: 用矩阵键盘在数码管上输出十六进制和十进制数