• 大小: 58KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-11
  • 语言: 其他
  • 标签: proteus  keil  数码管  

资源简介

一个基于proteus和keil联全使用的数码管仿真电路。

资源截图

代码片段和文件信息

#include
#define uchar unsigned char
#define uint unsigned int

//0-9A-F的数码管段码最后一个是黑屏
uchar code dsy_code[]={0xc00xf90xa40xb00x990x920x820xf80x800x900x880x830x8c0xal0x860x8e0x00};
sbit BEEP=P3^0;

//上次按键和当前按键序号该矩阵中序号范围为0~1516表示无按键
uchar pre_keyno=16keyno=16;

//延时
void delayms(uint ms)
{
uchar t;
while(ms--)for(t=0;t<120;t++);
}

//键盘扫描
void keys_scan()
{
uchar tmp;
//高4位置1放入4行
P1=0x0f;
delayms(1);
//按键后00001111将变成0000xxxxx中有1个为0其它仍为1
//下面的异或操作会把3个1变成0唯一的0变成1
tmp=P1^0x0f;//(^为C中的异或运算符)
//判断按键发生于0~3列中的哪一列
switch(tmp)
{
case 1:keyno=0;break;
case 2:keyno=1;break;
case 4:keyno=2;break;
case 8:keyno=3;break;
default:keyno=16;//无键按下
}

//低4位置0放入列
P1=0xf0;
delayms(1);

//按键后11110000将变成xxxx0000x中有1个为03个仍为1
//下面的表达式将高4位移到低4位并将其中唯一的0变成1其余为0
 tmp=P1>>4^0x0f;
 //对0-3分别附加起始值
 switch(tmp)
 {
  case 1:keyno+=0;break;
case 2:keyno+=4;break;
case 4:keyno+=8;break;
case 8:keyno+=12;
 }
}

//蜂鸣器
void Beep()
{
uchar i;
for(i=0;i<100;i++)
{
delayms(1);
BEEP=~BEEP;
}
BEEP=1;
}

//主程序
void main()
{
P0=0x00;
while(1)
{
P1=0xf0;
if(P1!=0xf0)keys_scan();//扫描键盘获取按键序号keyno
if(pre_keyno!=keyno)
{
P0=~dsy_code[keyno];
Beep();
pre_keyno=keyno;
}
delayms(100);
}
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       1521  2010-03-03 17:42  数码管显示键盘按键\char.c

     文件       4089  2010-03-03 17:31  数码管显示键盘按键\char.LST

     文件       3679  2010-03-03 17:31  数码管显示键盘按键\char.OBJ

     文件     111375  2010-03-03 17:36  数码管显示键盘按键\Last Loaded sx.DBK

     文件       3917  2010-03-03 17:31  数码管显示键盘按键\proj

     文件         41  2010-03-03 17:31  数码管显示键盘按键\proj.lnp

     文件       6993  2010-03-03 17:31  数码管显示键盘按键\proj.M51

     文件        170  2010-03-03 22:19  数码管显示键盘按键\proj.plg

    .......     56474  2010-03-03 22:19  数码管显示键盘按键\proj.uvopt

    .......     13408  2010-03-03 17:42  数码管显示键盘按键\proj.uvproj

    .......     57112  2010-03-03 17:42  数码管显示键盘按键\proj_uvopt.bak

    .......         0  2010-03-03 14:48  数码管显示键盘按键\proj_uvproj.bak

     文件       6376  2009-05-07 14:37  数码管显示键盘按键\STARTUP.A51

     文件      14062  2010-03-03 17:30  数码管显示键盘按键\STARTUP.LST

     文件        749  2010-03-03 17:30  数码管显示键盘按键\STARTUP.OBJ

     文件     111375  2010-03-03 17:42  数码管显示键盘按键\sx.DSN

     文件        742  2010-04-12 19:14  数码管显示键盘按键\sx.PWI

     目录          0  2010-04-12 19:14  数码管显示键盘按键

----------- ---------  ---------- -----  ----

               392083                    18


评论

共有 条评论