资源简介
一个基于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
相关资源
- 51密码锁+proteus仿真
- Keil MDK5 暗黑配色方案第2版,将中部的
- PID控制直流电机调速含proteus仿真
- s3c2440裸机按键控制小灯
- keil5.14包含注册机.txt
- 三位四位六位数码管引脚图
- KEIL5.23中UCOS-ii移植全过程stm32
- AVR ATMEGA16 SPI双机通信的PROTEUS仿真 双
- STM32 F103R6 寄存器方式读写GPIO源代码
- proteus仿真 电机驱动电路
- 8253产生方波和中断Proteus8086
- 使用DAC0832的DA转换实验Proteus8086
- 8259的8LED显示按键中断
- 8255的8LED显示矩阵键盘Proteus8086
- 8251串行口通讯仿真Proteus8086
- 数码管显示PCF8563实时时钟日历
- arduino_LiquidCrystal_I2C库及proteus仿真LC
- 频率电压电流仿真检测_Proteus仿真单片
- proteus纯数字电路数字钟
- proteus中51单片机制作的计算器
- 走马灯,流水灯,KEIL,PROTEUS
- ADC0832 Proteus仿真及C51驱动源码
- Custom_hid 官方STM32f10X例程
- 74HC165 并转串 例程,带proteus仿真
- protues下仿真红外发射电路
- 51单片机PROTEUS超值仿真 附源程序
- 4511做的八路抢答器 proteus
- 可调时钟+闹钟——基于DS1302
- GPS卫星定位proteus仿真.rar
- 51单片机多机通信PROTEUS仿真
评论
共有 条评论