标题: 51单片机矩阵键盘数码管显示 Proteus仿真代码 数码管显示不完整 [打印本页]

作者: 1348689336    时间: 2021-10-23 22:06
标题: 51单片机矩阵键盘数码管显示 Proteus仿真代码 数码管显示不完整
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


单片机源程序如下:

  1. #include<reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int

  4. void delay1(int x){
  5.         uint i,j;
  6.         for(i=0;i<123;i++)
  7.                 for(j=0;j<x;j++);
  8. }

  9. //uchar led[]={0x00,0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0X77,0X7C,0X39,0X5e,0X79,0X71};
  10. uchar led[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0X71 };


  11. unsigned int num[]={0xee,0xed,0xeb,0xe7,0xde,0xdd,0xdb,0xd7,
  12.                                         0xbe,0xbd,0xbb,0xb7,0x7e,0x7d,0x7b,0x77};

  13. unsigned char hang[]={0xef,0xdf,0xbf,0x7f};   
  14.         uchar key_scan(){  
  15.                 uchar a,i,n;
  16.                 for(a=0;a<4;a++){         
  17.                         P1=hang[a];     
  18.                         if(P1!=hang[a]){                  
  19.                                 delay1(100);
  20.                                 if(P1!=hang[a]){                        
  21.                                         for(i=0;i<4;i++){  
  22.                                                 if(P1==num[4*a+i]){                                                
  23.                                                         n=4*a+i+1;  
  24.                                                 }               
  25.                                         }
  26.                                 }
  27.                         }
  28.         }
  29.         return n;  
  30. }

  31. main()      
  32. {
  33.         P2=0XFE;
  34.         while(1)
  35.         {
  36.                 P0=led[key_scan()];
  37.         }
  38. }
  39.         
  40.         
复制代码

Proteus7.5版本的dsn工程文件下载:
51单片机_矩阵键盘.zip (66.34 KB, 下载次数: 79)



作者: 19863998098    时间: 2022-6-15 12:52
请问为什么我的仿真数码管显示不完整啊
作者: yovh    时间: 2023-6-7 23:47
19863998098 发表于 2022-6-15 12:52
请问为什么我的仿真数码管显示不完整啊

可以检查一下电阻
作者: xianfajushi    时间: 2023-6-8 16:38
编号数组={119,183,215,231,123,187,219,235,125,189,221,237,126,190,222,238}这样就完成了对矩阵键盘的重编正好用上前些天写的对无序数组四分快速查找算法.
作者: xianfajushi    时间: 2023-6-9 10:18
依据不同电路图重新排列

1.png (3.92 KB, 下载次数: 76)

1.png





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1