#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写程序好啊。。你可以试试。。很好用的
参考资料:zyb18229867145 的电路
本回答被提问者采纳...两个按钮 一个加一一个减一 用一个数码管显示
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...