找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2417|回复: 1
打印 上一主题 下一主题
收起左侧

简易单片机矩阵计算器Proteus仿真源代码

[复制链接]
跳转到指定楼层
楼主
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)

#include <reg52.h>
#include <intrins.h>
#define uchar  unsigned char
#define uint   unsigned int
//数码管段码端口
#define PP  P1
//共阳极数码管段码
uchar code SEG7[]={/*0,1,2,3,4,5,6,7,8,9,*/
0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,};
//数码管显示缓冲
uchar num[2];
//数码管位码端口
sbit      q1=P3^0;
sbit      q2=P3^1;
//延时函数ms
void _delay_ms(uint t)
{
   uint i,j;
   for(i=0;i<t;i++)
     for(j=0;j<120;j++);
}
//数码管显示
void dis()
{
//显示第1位
  PP=num[0];
  q1=1;
  _delay_ms(2);
  q1=0;
//显示第2位
  PP=num[1];
  q2=1;
  _delay_ms(2);
  q2=0;
}
uchar  keyn1=16;//按键值
uchar  keyn=16;//缓冲
#define PK P2
void key_z()
{
PK=0X0F;
if(!(PK==0X0F))
{
    if(!(PK==0X0F))
   {
    keyn1=0;
    keyn=0;
    PK=0X0F; //扫描行
    if(PK==0X0E)  keyn1=0;
    if(PK==0X0D)  keyn1=1;
    if(PK==0X0B)  keyn1=2;
    if(PK==0X07)  keyn1=3;
    PK=0XF0; //扫描列
    if(PK==0XE0)  keyn=0+keyn1;
    if(PK==0XD0)  keyn=4+keyn1;
    if(PK==0XB0)  keyn=8+keyn1;
    if(PK==0X70)  keyn=12+keyn1;
//获取按键值
    switch(keyn)
    {
     case 0: keyn1=1; break;
     case 4: keyn1=2; break;
     case 8: keyn1=3; break;
     case 12:keyn1=10; break;
     case 1: keyn1=4; break;
     case 5: keyn1=5; break;
     case 9: keyn1=6; break;
     case 13:keyn1=11; break;
     case 2: keyn1=7; break;
     case 6: keyn1=8; break;
     case 10:keyn1=9;break;
     case 14:keyn1=12;break;
   case 3: keyn1=14;break;//*
     case 7: keyn1=0;break;
     case 11:keyn1=15;break;//#
     case 15:keyn1=13;break;
     }
    }
  else   keyn1=16;
  PK=0X0F;while((!(PK==0X0F)));
}
}
uint  shuju1;//计算数据1
uint  shuju2;//计算数据2
uint  res; //计算
uint  bz; //运行标志
uint  bzbu;//运行步骤
//显示控制
void dispaly()
{
  if(bzbu==0) //数据1
  {
   num[0]=0xff;
   num[1]=SEG7[shuju1%10];
  }
  if(bzbu==1)//符号
  {
   num[0]=0xff;
   if(bz==0)num[1]=0xb9;
   if(bz==1)num[1]=0xbf;
   if(bz==2)num[1]=0x89;
   if(bz==3)num[1]=0xcf;
  }
  if(bzbu==2)//数据2
  {
   num[0]=0xff;
   num[1]=SEG7[shuju2%10];
  }
  if(bzbu==3) //结果
  {
   num[0]=SEG7[res%100/10];
   num[1]=SEG7[res%10];
  }
}


全部资料51hei下载地址:
简易矩阵计算器.rar (60.1 KB, 下载次数: 39)
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:74649 发表于 2023-9-9 08:36 | 只看该作者
慢慢学习中
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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