历史上的今天
今天是:2025年05月08日(星期四)
2018年05月08日 | 单片机按键按下的先后顺序判断
2018-05-08 来源:eefocus
K4、K3:“进出”模拟检测键。
每先按K3、再按K4,即代表“进”一人次;
每先按K4、再按K3,则代表“出”一人次。
每“进”一人次,就在原“进”显示基础上加1(“进”显示初始状态为“b000”);
每“出”一人次,就在原“出”显示基础上加1(“出”显示初始状态为“C000”)。
悬赏分:100 - 解决时间:2010-6-25 19:14
最好把C语言程序给出来~
按照题目,编写了程序。用 PROTEUS 软件仿真截图如下。

原来编写的程序,是使用汇编语言,现按照要求改成了C语言。
//================================================================
#include
#define uint unsigned int
#define uchar unsigned char
sbit K3 = P3^2;
sbit K4 = P3^3;
uchar code table[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,
// 0 1 2 3 4 5 6 7 8 9
0x88,0x83,0xc6,0xa1,0x86,0x8e,0xc2,0x89,0xff};
// A b C d E F G H [ ]
uchar DispD[] = {0,0,0,11,0,0,0,12};
uchar DispW[] = {0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
//------------------------------------
void delay(uint z)
{
uint x, y;
for(x = z; x > 0; x--) for(y = 110; y > 0; y--);
}
//------------------------------------
void display(void)
{
uint i;
for (i = 0; i < 8; i++) {
P2 = 0;
P0 = table[DispD[i]];
P2 = DispW[i];
delay(3);
}
}
//------------------------------------
void main()
{
uint in_num = 0, outnum = 0;
while(1) {
display();
//--------------------------
if (K3 == 0) {
display();
if (K3 == 0) {
while(K3 == 0) display();
while(K4 == 1) display();
in_num++;
DispD[0] = in_num % 10;
DispD[1] = in_num / 10 % 10;
DispD[2] = in_num / 100;
while(K4 == 0) display();
}
}
//--------------------------
if (K4 == 0) {
display();
if (K4 == 0) {
while(K4 == 0) display();
while(K3 == 1) display();
outnum++;
DispD[4] = outnum % 10;
DispD[5] = outnum / 10 % 10;
DispD[6] = outnum / 100;
while(K3 == 0) display();
}
}
//--------------------------
}
}
上一篇:做个15路输出的彩灯
下一篇:单片机LED数码电路和C程序
史海拾趣
|
让我们逐条分析评价Linux和WinCE/Windows的优缺点。 1.支持多种硬件平台由于嵌入式设备硬件平台的多样性,CPU芯片的快速更新,嵌入式操作系统要求支持常用的嵌入式CPU,如X86, ARM, MIPS, POWERPC等,并具有良好的可移植性。另外还需要支持种类繁 ...… 查看全部问答> |
|
FPGA:Field Programmable Gate Array(现场可编程门阵列) CPLD:Complex programmable logic devices(复杂可编程逻辑器件) 这两者之间的主要区别是什么?对于高速的电路系统,选择哪一个比较好? 笼统的说,两者的区别在于资源的规模和芯片 ...… 查看全部问答> |
|
s3c2440_spi.ko驱动编译失败,s3c2440 linux 2.6.29自己带的spi驱动如何编译 友善之笔 的系统,采用三星的s3c2440处理器, 想要spi驱动,不是gpio io口模拟的那种,直接采用多路复用spi的给定口,可是选择了spi_s3c2440_serial这个选项后,编译的时候总是遇到问题,说是spi_alloc_master找不到,网上搜索了很多资料,很多都是介绍 ...… 查看全部问答> |
|
关于SLE4442读写问题: 我用初始密码0XFF 0XFF 0XFF,效验成功, 读加密存储器器数据为7000FFFF , 修改密码,0XF1 0XF1 0XF1,效验失败, 读加密存储器器数据为 ...… 查看全部问答> |
|
在EVC中把程序编译好了,下到板子上的WINCE系统中运行;主机上的程序在wince的模拟器中运行。当把服务器端程序运行在主机模拟器上,把客户端程序运行在板子上,相互是可以通信的。但把两者运行的地方交换,就不能通信了,为什么??根据服务器的地 ...… 查看全部问答> |




