资源简介
一个基于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单片机PWM程序,占空比、周期可调整
- proteus仿真 AT89C51输出各种波形
- 00
- 38k单片机红外发送代码、keil
- 51单片机读取温度数据存储到SD卡中并
- 【单片机】51单片机数码管显示万年历
- proteus_24C08—有注释(proteus里面使用的
- 25.数码管显示0-99
- 2410的led测试程序keil可以用
- DS18B20分布式多点测温的Proteus仿真
- STC12C5A60S2 CH4521 驱动数码管 显示
- keil vcom windows 7 64bit 驱动
- 基于proteus的单片机仿真--交通灯控制
- 带时间温度显示的室内灯光控制系统
- CH454键盘与数码管显示程序
- 基于8051单片机的红外接收程序
- 基于EWB软件的数码管显示控制器
- 51多机通信(内附Proteus及.hex文件)
- IIC proteus仿真实验
- 8086交通灯 Proteus原理图及程序
- 单片机电子琴 数码管显示
- 单片机仿真软件proteus6.7免安装绿色版
- 关于proteus仿真arm7出现错误的问题
- 基于PROTEUS的ARM7显示系统设计与仿真实
- 74hc244驱动数码管显示电路及程序
- STM32 SRAM启动的 KeiL 配置
- STM32+1602液晶proteus仿真.zip
- AT89C51+ADC0808 PROTEUS仿真
- 单片机驱动4相步进电机proteus仿真
- 数码管字体
评论
共有 条评论