用C语言编程两个按键控制三个7段数码管显示0~99

作者&投稿:爰窦 (若有异议请与网页底部的电邮联系)
C51 的两个数码管显示0~99的C语言程序~

#include
#define uint unsigned int
#define uchar unsigned char
sbit dula=P2^6;
sbit wela=P2^7;
uchar j,k,shi,ge;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,//数码管编码
0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void delay(uchar i)//延时程序
{
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}
void display (uchar shi,uchar ge)//数码管显示程序(第c个数码管显示r)
{
dula=0;
P0=table[shi];//数码管十位段信号输出
dula=1;
P0=0xff; //消影
wela=0;
P0=0xfe;//数码管位信号输出
wela=1;
delay(5);

dula=0;
P0=table[ge];//数码管个位段信号输出
dula=1;
P0=0xff; //消影
wela=0;
P0=0xff;//数码管位信号输出
wela=1;
delay(5);
}
void main()
{
while(1)
{
display (shi,ge);

delay(200);//延时
delay(200);
delay(200);
delay(200);
delay(200);
}
}

自己写的仅供查考

enum keys {S1,S2,S3};int L1=0,L2=0,L3=0;int main(int argc, char* argv[]){int flag;while(1){printf("请输入按键1 2 3: ");scanf("%d",&flag);switch (flag){case 1:{L1++;if (L1==10){L1=0;}}printf("%d,%d,%d
",L1,L2,L3);break;case 2:{L2++;if (L2==10){L2=0;}}printf("%d,%d,%d
",L1,L2,L3);break;case 3:{L3++;if (L3==10){L3=0;}}printf("%d,%d,%d
",L1,L2,L3);break;default:printf("ERR ");break;}}return 0;}//1,2,3是按键,L1,L2,L3打印结果,没输入一次1,或者2,或者3,一次结果

K_ADD BIT P3.0

ORG 0000H
CLR A
MOV P0, A
;----------------------
M_LOOP:
JB K_ADD, $
CALL DL10MS
JB K_ADD, M_LOOP
ADD A, #1
DA A
MOV P0, A
MOV R2, #0
;----------------------
ML1: ;等两秒
CALL DL10MS
JB K_ADD, M_LOOP
INC R2
CJNE R2, #200, ML1
;----------------------
ML2: ;快速加一
ADD A, #1
DA A
MOV P0, A
MOV R2, #10
ML3:
CALL DL10MS
DJNZ R2, ML3
JB K_ADD, M_LOOP
JMP ML2
;----------------------
DL10MS:
MOV R6, #20
MOV R7, #110
DJNZ R7, $
DJNZ R6, $ - 2
RET

END

汇编的程序,应该不符合要求,也就没有多写,仅仅有加一的功能。

给你了 看看是不是这样的。




求救c语言 如果要检测两个键同时被按下和松手检测的,要怎么样写呢?_百...
程序是顺序执行的,不存在严格的“同时”检测。所以,我们可以设置一个很“高”的检测频率。在同一个检测周期里发现按键都按下就可当做是同时按下。然后你需要解决如何发现按键按下动作这个问题。按键按下同样也不必一按下你就马上要发现这么紧张。同样在这么一个很“高”的检测频率下。发现前一次检测...

...C语言的,通过中断系统做,有两个个按钮,功能:开始,停止。
while(!key1); \/\/等待按键释放 } } if(key2==0){ delayms(10);if(key2==0){ if(num==0)num=60;num--;while(!key2) ;} } if(key3==0){ delayms(10);if(key3==0){ num=0;while(!key3);} } if(key4==0){ delayms(10);if(key4==0){ while(!key4)TR0=~TR...

怎么用C语言写出一个让程序自动按键的,只要按两个键就够了
c语言完成这个有点难,用按键精灵吧,实现这个很简单的。退出程序的话,用编程来说,你可以先选定你程序的窗口句柄,然后直接关掉这个窗口,你要是想纯模拟键盘操作的话,你还得考虑当前焦点在不在你的程序窗口上。

怎么用C语言写出一个让程序自动按键的,只要按两个键就够了
c语言完成这个有点难,用按键精灵吧,实现这个很简单的。退出程序的话,用编程来说,你可以先选定你程序的窗口句柄,然后直接关掉这个窗口,你要是想纯模拟键盘操作的话,你还得考虑当前焦点在不在你的程序窗口上。

...编程 产生正弦波河三角波,用两个按键来选择波形 要求用C语言_百度...
sbit MOSI=P2^2;sbit sclk=P2^1;sbit ss=P2^0;\/ 子函数声明 \/ void DA7512_init();void sentdate(uint);\/ 主函数 \/ main(){ uint temp;uchar i;DA7512_init();while(1){ for(i=0;i<256;i++){ temp=table_sin[i];sentdate(temp);} } } void sentdate(uint dat1){ uchar...

单片机c语言写两个中断,两个中断怎么写
\/\/任务6 显示按键按下的次数(中断方式)\/\/任务6 显示按键按下的次数(中断方式)include <reg51.h> \/\/1 包含特殊功能寄存器定义头文件reg51.h define ledport P2 \/\/2 宏定义:ledport代表P2(发光二极管接P2口)define uchar unsigned char \/\/3 宏定义:uchar代表unsigned char define ulo...

用两个按键控制数码管一个加一个减 都是按一下一加 按一下一减 用汇 ...
这个用外部中断写很简单的,只要一个中断INC 30H,一个DEC30H(30只是暂存器,随便定义的,30到7F之间都可以)就行,其他的跟数码管静态显示一样的 参考资料:JIU

C5按键编程
假设key1按下为0;int Time_Count = 0;\/\/用于计3秒 int Num_Count = 0;\/\/用于计数变量 if(!key1){ delay_10ms();Num_Count++;while(!key1){ if (Time_Count > = 300)\/\/判断三秒钟 { delay_10ms(); \/\/一直加的速度,调整这个延时函数即可 Num_Count ++;} else { delay_10...

用c语言一个开关控制两个灯开关闭合灯1亮灯2灭开关打开灯1灭灯2亮...
开关控制的话就不用编程语言了好吗,因为开关是直接的物理连接,通过电路实现就好,那我就理解成你是想用单片机来实现吧,首先单片机与外设怎样连接我不考虑,因为你没说。那么我就当是我可以随意的使用单片机的输出吧,然后开关闭合理解成按键是高电平,再按一次取反。include<89c51.h> \/\/是不是这...

c语言中的“或”怎么打出来那个双丨在键盘什么位置?
同时按下shift键和有一个竖线和右斜线的键。如下图所示: |

隆林各族自治县18739808561: C语言编程序,按键:上下两个键混合着用,来显示1,2,3,4,5,6六个数,设计思路是怎么样的 -
轩诚联双: static uchar i; //改为静态变量,在多次调用时才能保持之前的状态 if(key="上") { i++; if(i>5) i=0; //省掉求模运算 } else if(key="下") { if(i==0) i=5; else i--;//省掉求模运算,同时也防止了负数求模得到-1等的杯具结果 } return i; //i%6可能是负数且单片机里求模运算效率低, 所以上面处理了正反方向的循环而舍去求模 查表法,0-5 对应'1'-'6'个字符 按键接收要用轮询防抖等处理 思路简单吧

隆林各族自治县18739808561: 用C语言编程做:用从键盘输入3个数,编程实现3个数的比较,输出其中的最大值 -
轩诚联双: main() { int a,b,c,t; printf("\nplease input three nums\n"); scanf("%d%d%d",&a,&b,&c); if(a>=b) { t=a; a=b; b=t; } if(a>=c) { t=a; a=c; c=t; } if(b>=c) { t=b; b=c; c=t; } printf("\npaixuhou:%d\t%d\t%d\n",a,b,c); }

隆林各族自治县18739808561: 单片机程序编程(用C51) 2个按键控制2位七段LED显示,每按下一次“+ -
轩诚联双: main() { while(1) { key=KEY_Scan(0); if(key=="+") { value++;} if(key=="-") { value--; }}} u8 KEY_Scan(char mode) { static u8 key_up=1; if(mode)key_up=1; if(key_up&&(KEYADD==0||KEYRED==0|)) { delay_ms(10);//去斗 key_up=0; if(KEY0...

隆林各族自治县18739808561: 51单片机中,用八个开关控制一个7段数码管,按一个开关显示一个数,用C语言怎么编程 -
轩诚联双: sfr key=P1;//定义八个开关接单片机的p1口的八个引脚,int suma[9]={0x3B,0x4D,,,};//根据数码管的驱动芯片接入单片机接口,查表输出要显示的数字,其中第九个为不显示即清空显示.unsigned char Scankey() {int i,j; i=key; if(key!=0xFF...

隆林各族自治县18739808561: 求用c语言编程控制4个7段数码显示管. -
轩诚联双: 设置一个 0-F的控制数组 int led[17]; 然后用 P1 = led[1]; 就可以让它显示1, P1=led[10]则显示 A 很方便的.设置17个元素是有人也许需要显示小数点,万变不离其宗,就这样吧~

隆林各族自治县18739808561: C语言设计一个加减计数器,通过两个按键来控制.就是按一个键就加一,按另外一个就减一.求大神帮忙设计 -
轩诚联双: 如果是windows上程序.单词按键判断ASCII码,然后变量值++,--就可以了.#include <stdio.h>#include <conio.h>#include <windows.h>#define KEYA 61//按键盘'+'键(非小键盘)#define KEYM 45//按键盘'-'键(非小键盘) int main() { int key,...

隆林各族自治县18739808561: 三个按键如何分别控制三个数码管C语言编程 -
轩诚联双: enum keys {S1,S2,S3};int L1=0,L2=0,L3=0;int main(int argc, char* argv[]) {int flag;while(1){ printf("请输入按键1 2 3: ");scanf("%d",&flag);switch (flag){case 1:{L1++;if (L1==10){L1=0;} }printf("%d,%d,%d \n",L1,L2,L3);...

隆林各族自治县18739808561: 单片机AT89C51用C语言编,两个按钮分别控制一个数码管加减数,最好用中 -
轩诚联双: #include<reg51.h>#define uchar unsigned char uchar distab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; //0到f uchar dat; void ext0() interrupt 0 { dat++; dat%=10; P1=distab[dat]; } ext1() interrupt 2 ...

隆林各族自治县18739808561: 用C语言编写程序从键盘输入三个数,求三个数的和并输出 -
轩诚联双: #include <stdio.h> int main(void) {double dblNum1,dblNum2,dblNum3;scanf("%f%f%f",&dblNum1,&dblNum2,&dblNum3); //输入的三个数,用空格隔开,支持小数printf("%f",(dblNum1+dblNum2+dblNum3)); //输出三个数的和return 0; //main函数正常结束 }绝对只使用C语言,不是C++

隆林各族自治县18739808561: c语言 怎样用两个独立按键控制一位数码管显示 就是按下其中一个按键就加1 按下另一个按键就减1 0~9显示 -
轩诚联双: 这个实现是很容易的,定义两个键,一个为加,一个为减,数码管因为只有一个,所以可以用静态显示.程序和仿真图如下: #include<reg51.h> #define uchar unsigned char uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f}; sbit ...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网