您能给写一个单片机语言么? 两个按钮 一个加一一个减一 用一个数码管显示

要完整的 要是能把硬件连接方法告知就更好了 谢谢

#include<regx51.h>

#define uchar unsigned char                                      

uchar i,s=0;

uchar code dm[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,}; //LED代码                                                               

uchar jw=0;                                             //LED数字储存

void delay_ms(unsigned int ms)                   //延时

{

unsigned int i;

unsigned char j;

    for(i=0;i<ms;i++)

    {

        for(j=0;j<200;j++);

        for(j=0;j<102;j++);

    }

}

void button(void)                                 //开关加减函数

{

  uchar key;

  P3=0xff;

  if(P3!=0xff){

  key=P3;

  delay_ms(100);

      switch(key){

        case  0xfe: 

jw++;

if(jw==10)jw=0;   //LED进位

break;

        case  0xfd: 

jw--;

if(jw>100)jw=9;  

break;

default: 

break;}

        }

}

void main()

{

while(1){

P0=dm[jw];

button();                            //LED显示

}

}

这个就是完整版的控制一个LED的c语言程序,

P0接八位数码管(七位也行),我用的共阳极管,

P3的0和1端口(两个低位)接2个按钮,

采纳后求积分啊。。。。。

追问

那个图我能看懂 就是语言看不懂 我没学过c语言 学的就只是简单的单片机汇编 求简单点的 我所有几分都给你好了

追答

这个。。。我也只会c,看懂汇编而已啊。。,貌似现在都说用c写程序好啊。。你可以试试。。很好用的

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-06-24
为楼上电路增加一份汇编程序。

ORG 0
START:
MOV R1, #0 ;从0开始计数.
;----------------------------------
DISP:
MOV A, R1 ;
MOV DPTR, #TAB
MOVC A, @A + DPTR ;取段码.
MOV P0, A ;送P1口显示.
;----------------------------------
K_1:
JB P3.0, K_2 ;判断K1是否按下.
CALL DELAY10MS ;若按下,则延时10ms左右.
JB P3.0, K_2 ;再判断K1是否按下.
INC R1 ;若真按下,则加一.
JNB P3.0, $ ;等待释放.
CJNE R1, #10, DISP
MOV R1, #0
SJMP DISP
;----------------------------------
K_2:
JB P3.1, K_1 ;判断K2是否按下.
CALL DELAY10MS ;若按下,则延时10ms左右.
JB P3.1, K_1 ;再判断K2是否按下.
DEC R1 ;若真按下,则减一.
JNB P3.1, $ ;等待释放.
CJNE R1, #255, DISP
MOV R1, #9
SJMP DISP
;----------------------------------
DELAY10MS:
MOV R6, #20 ;延时10ms子程序.
L1:
MOV R7, #248
DJNZ R7, $
DJNZ R6, L1
RET
;----------------------------------
TAB:
DB 0xc0,0xf9,0xa4,0xb0,0x99
DB 0x92,0x82,0xf8,0x80,0x90
;----------------------------------
END

参考资料:zyb18229867145 的电路

本回答被提问者采纳
第2个回答  2012-06-26
用定时器写的,也是C51程序,要不?

...两个按钮 一个加一一个减一 用一个数码管显示
P0=dm[jw];button(); \/\/LED显示 } } 这个就是完整版的控制一个LED的c语言程序,P0接八位数码管(七位也行),我用的共阳极管,P3的0和1端口(两个低位)接2个按钮,采纳后求积分啊。。。

怎样用单片机编程。两个独立按键,控制数码管的加减?
这个很容易嘛,你先设置一个寄存器,然后一直扫描两个按键(假设K1按下为加,K2按下为减),假设检测到K1被按下,寄存器就加1,如果检测到K2被按下,寄存器就减1;然后再调用显示函数就OK了。、 ORG 0000H LJMP START ORG 0030H START:MOV R2, #1 LOOP:CALL DISP JB P1.6,...

汇编语言51单片机怎么用KEY 1控制数码管上显示的数字加1 KEY2控制数码...
给你个参考;1)起始部分,R5用于控制取七段码的方向,是从头起还是从尾起;2)显示部分;这个是按你取七段码的思路,递增时是以 0 为结束,那么为了让递减时也以 0 为结束;因此就在前面加 0;TAB:DB 00H,3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H,...

c51单片机按键控制数码管循环加1、减1电路设计
if(key==k1) { if(s<9) s++; esle s=0;}else if(key==k2) {if(s>0) s--; esle s=9;}主要程序应该就这是这样,key为键值,s为显示在数码管上的值

单片机AT89C51用C语言编,两个按钮分别控制一个数码管加减数,最好...
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 { if(dat>0)dat--;P1=...

51单片机怎么用按键控制一个数码管,按一下显示一个数字,顺序显示
3、确认代码无误后,进入下一步,就是在这一行代码(箭头所指)的地方,将这四个字删去。4、然后如图所示,四个字已经删去,只要改成数字相应的代码即可。5、这里改成的是代表数字0的代码,如图所示。6、最后写好代码后,将生成的hex文件写进单片机,数码管显示的数字就变成0了。

设计一个单片机输入显示系统,要求每按一下按键数码管显示数据加1(数码...
void DelayNms( uint N )\/\/ 利用x、y作简单的自减运算,消耗单片机指令周期,达到延时的目的 { uint x,y;for( x=N; x>0; x-- )for( y=110; y>0; y-- );} \/\/数码管显示 \/\/ 显示方式为动态扫描,视觉暂留原理 void Display( uchar Num )\/\/ *p指向Main函数中的数组ShowNum的首...

想用51单片机编个倒计时的c程序,要求用两位数码管显示分钟的,并用...
全局变量2个用于表示个位和十位,显示的时候可以省点力不用每次计算个位十位。然后一个全局变量代表秒 编程的话,首先是按键响应中断,控制某个全局变量flag的值,三种状态:正常、暂停、到时间。按键可以在前两种之间切换,如果已经是第三种状态则没反应(或者要重置什么随你)然后定时器,一直开着就好,...

怎样用单片机控制数码管的显示?
控制数码管显示通常涉及到驱动数码管的硬件连接和编写相应的软件代码。数码管可以是共阳极或共阴极的,这决定了你需要如何驱动它们。以下是一个基本的例子,展示了如何使用8051单片机控制一个共阴极数码管显示数字。首先,假设你有一个共阴极数码管,并且它连接到单片机的P0口。每个数码管的段(a, b, c, ...

51单片机为基础用汇编语言编写用数码管显示一个同时有"加""减""乘...
ADD A,R2 ;键特征值 CJNE A,#0EEH,JZHI1 MOV A,#00H PUSH ACC JZHI1: CJNE A,#0DEH,JZHI2 MOV A,#01H PUSH ACC JZHI2: CJNE A,#0BEH, JZHI3 MOV A,#02H PUSH ACC JZHI3: CJNE A,#7EH,JZHI4 MOV A,#03H PUSH ACC JZHI4: CJNE A, #0EDH, JZHI5 MOV A,#04H PU...

相似回答