找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5407|回复: 3
收起左侧

虚拟HD7279的位移程序 利用单片机、4*4矩阵键盘和8位数码管

[复制链接]
ID:120703 发表于 2016-5-14 15:41 | 显示全部楼层 |阅读模式
利用单片机、4*4矩阵键盘和8位数码管,虚拟HD7279部分输入功能
按下数字键,将按下键对应位置值(0-9)显示在8位数码管最右边,原先内容依次左移一位

仿真图
0.png

源程序:
  1. #include<reg51.h>
  2. #define KEYPORT P1
  3. #define SEGPORT P0
  4. #define uchar unsigned char
  5. sbit TPORT=P3^0;
  6. sbit SPORT=P3^1;
  7. sbit FPORT=P3^2;
  8. uchar value;
  9. uchar flag=0;
  10. uchar one,two,three,four,five,six,seven,eight;
  11. void JKEY();
  12. void RKEY();
  13. void DISPLAY();
  14. void delay();
  15. void delay2ms();
  16. unsigned char code SEG[17]={
  17. 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
  18. 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x40};                       
  19. void main()
  20. {
  21.         one=two=three=four=five=six=seven=eight=16;
  22.         while(1)
  23.         {
  24.                 RKEY();
  25.                 DISPLAY();
  26.         }
  27. }
  28. void JKEY(void)
  29. {
  30.         KEYPORT=0x0f;
  31.         if(KEYPORT!=0x0f)
  32.         {
  33.                 delay();
  34.                 if(KEYPORT!=0x0f)
  35.                 {
  36.                         KEYPORT=0x0f;
  37.                         switch(KEYPORT)
  38.                         {
  39.                                 case(0x07): value=0;break;
  40.                                 case(0x0b): value=1;break;
  41.                                 case(0x0d): value=2;break;
  42.                                 case(0x0e): value=3;break;
  43.                         }
  44.                         KEYPORT=0xf0;
  45.                         switch(KEYPORT)
  46.                         {
  47.                                 case(0x70): value=value;break;
  48.                                 case(0xb0): value=value+4;break;
  49.                                 case(0xd0): value=value+8;break;
  50.                                 case(0xe0): value=value+12;break;
  51.                         }
  52.                        
  53.                         while(KEYPORT!=0xf0)
  54.                         {
  55.                                 DISPLAY();
  56.                         }
  57.                                 flag=1;
  58.                 }
  59.         }
  60.        
  61. }

  62. void RKEY()
  63. {
  64.         JKEY();
  65.         if(flag)                //当有按键按下 左移
  66.         {
  67.                 flag=0;
  68.                 one=two;
  69.                 two=three;
  70.                 three=four;
  71.                 four=five;
  72.                 five=six;
  73.                 six=seven;
  74.                 seven=eight;
  75.                 eight=value;
  76.         }
  77. }

  78. void DISPLAY()
  79. {
  80.         P2=0X00;
  81.         SEGPORT=SEG[one];
  82.         delay2ms();
  83.         P2=0X01;
  84.         SEGPORT=SEG[two];
  85.         delay2ms();
  86.         P2=0X02;
  87.         SEGPORT=SEG[three];
  88.         delay2ms();
  89.         P2=0X03;
  90.         SEGPORT=SEG[four];
  91.         delay2ms();
  92.         P2=0X04;
  93.         SEGPORT=SEG[five];
  94.         delay2ms();
  95.         P2=0X05;
  96.         SEGPORT=SEG[six];
  97.         delay2ms();
  98.         P2=0X06;
  99.         SEGPORT=SEG[seven];
  100.         delay2ms();
  101.         P2=0X07;
  102.         SEGPORT=SEG[eight];
  103.         delay2ms();
  104. }


  105. void delay(void)
  106. {
  107.     unsigned char a,b;
  108.     for(b=249;b>0;b--)
  109.         for(a=17;a>0;a--);
  110. }

  111. void delay2ms(void)  
  112. {
  113.     unsigned char a,b;
  114.     for(b=133;b>0;b--)
  115.         for(a=6;a>0;a--);
  116. }
复制代码

0.png

仿真文件和与源码下载:
虚拟HD7279.zip (119.95 KB, 下载次数: 52)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:258520 发表于 2019-12-24 14:52 | 显示全部楼层
可以运行!!!!!!!!!!!!!!!!11
回复

使用道具 举报

ID:289013 发表于 2021-4-27 23:02 | 显示全部楼层
好  但是我的没有成功????
回复

使用道具 举报

ID:1134495 发表于 2024-11-3 00:40 | 显示全部楼层
可以!非常感谢大佬!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表