74LS165求助 点击:294 | 回复:2



周公

    
  • 精华:10帖
  • 求助:0帖
  • 帖子:119帖 | 5549回
  • 年度积分:0
  • 历史总积分:6446
  • 注册:2002年11月26日
发表于:2008-04-26 11:07:09
楼主


硬件这样连的:
8个并行输入上拉10K到电源,并联按键到地;1(LOAD)、2(CLK)、9(Qh)分别接单片机P2.0、2.1、2.2;165的7脚空,10(串行输入)、15(时钟抑制)接地。
程序:
KDAT = 1 ;
KEY = 0 ; /* 变量赋 0 */
KLOAD = 0 ;/*锁存按键状态*/
KLOAD = 1 ;
DO N = 0 TO 7 ;
IF KDAT = 0 THEN KEY = KEY OR 01H ;;/*读口状态*/
KCLK = 1 ;/*时钟变高*/
KEY = ROL ( KEY , 1 ) ;/*字节左移*/
KCLK = 0 ;;/*时钟变低*/
END ;
现在的问题是:H、E、G有变化(对应位变低),其余均看见在最后变低,而不是在相应位置变低。
| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄| /* 没有键按下,8个连续的‘1’ */

|_| ̄ ̄ ̄ ̄ ̄ ̄ ̄| /* 理想状态H键按下 */

| ̄|_| ̄ ̄ ̄ ̄ ̄ ̄| /* 理想状态G键按下 */

| ̄ ̄|_| ̄ ̄ ̄ ̄ ̄| /* 理想状态F键按下 */

| ̄ ̄ ̄|_| ̄ ̄ ̄ ̄| /* 理想状态E键按下 */

| ̄ ̄ ̄ ̄|_| ̄ ̄ ̄| /* 理想状态D键按下 */

| ̄ ̄ ̄ ̄ ̄|_| ̄ ̄| /* 理想状态C键按下 */

| ̄ ̄ ̄ ̄ ̄ ̄|_| ̄| /* 理想状态B键按下 */

| ̄ ̄ ̄ ̄ ̄ ̄ ̄|_| /* 理想状态A键按下 */
现在情况:
| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄| /* 没有键按下 */

|_| ̄ ̄ ̄ ̄ ̄ ̄ ̄| /* H键按下 */

| ̄ ̄ ̄ ̄ ̄ ̄ ̄| /* 后几个键任一按下,‘0’被排在后边 */
哪位出出主意:什么原因、怎么解决?在此致谢。





周公

  • 精华:10帖
  • 求助:0帖
  • 帖子:119帖 | 5549回
  • 年度积分:0
  • 历史总积分:6446
  • 注册:2002年11月26日
发表于:2008-04-26 11:12:20
1楼
其中三个控制线改在P2.0、P2.1、P2.2。

周公

  • 精华:10帖
  • 求助:0帖
  • 帖子:119帖 | 5549回
  • 年度积分:0
  • 历史总积分:6446
  • 注册:2002年11月26日
发表于:2008-05-01 17:45:13
2楼
P2.0上拉10K到电源去掉,行了。

热门招聘
相关主题

官方公众号

智造工程师