
二部分是数码管显示电路,显示程序也要对。
在上面两个电路都正确条件下,再把两部分电路组合在一起就行了。
在主程序中,实现按什么键,显示什么数。我这里用的是按键,,不知道你说的开关是不是按键,,要不是我再重新编
#include<reg52h>
#define uint unsigned int
#define uchar unsigned char
sbit led=P1^6 ; // 控制LED的口
sbit key=P1^0; // 按键状态检测口
void delay(uint z) //延时函数
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void main()
{
uint a=0;
key=1;
led=1;
if(key==0)
{
delay(5);
if(key==0)
a++;
while(!key);
delay(5);
while(!key);
}
if(a==1)
{
while(key!=0)
{ led=0;
delay(1000);
led=1;}
led=1;a=0;
}
else led=1;
}实际电路,你用43的一个矩阵式键盘。
程序,可以参考44的:
>
通过矩阵键盘在电视墙上切换监控图像的方式如下:
1、选择监视器,再选择摄象机,通过矩阵键盘实现在任何一台监视器上显示任何一路视频信号。举个例子,要在第一个监视器上显示第12路图像,可以 *** 作键盘:按“1”、“MON”键,再按 "1"、"2"、“CAM”,便可以把第12路视频信号切换到第一个监视器了。
2、用排除法和替换法进行维修,这个系统中应该还有视频分配器,找出有问题的三路图象在硬盘录象机上显示是否正常,如果正常,那就是在视频分配器到视频矩阵和监视器这三部分出现问题了,如果在硬盘录像机上也不正常,那就是视频分配器或者线路到前段摄像机部分出现问题了。
可以加个定时器实现你说的功能,首先把矩阵键盘扫描编写成一个独立的函数,比如char keyread(void)(无键按下返回0,否则返回该键的数值) 然后把定时器设置为定时1s(根据你需要按得次数确定时间),主程序直接调用keycan(),当检测到返回值不为0时启动定时器,然后进入while死循环扫描按键,在定时器未到1s前,再次检测到返回该值则标记加1,当定时器到时间时读取标记的值进入按键处理程序,并把标记清零在按键程序中的++/--写入循环do_while()如果按键,用if肯定只执行一次。void k1() //第一个按键
{
if (set==2)
{
do
{
hour++;
if (hour>23)
{
hour=0;
}
hour=((hour/10)<<4)+(hour%10);
write_ds1302(0x84,hour);
delayus();
}while(set==2);
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)