1)以4个LED灯为二进制的显示方式,4个LED初始状态为灯亮; (2)配置两个按键,K1为加法键,每按下一次,二进制数加1; K2为减法键,每按下一次,二进制数减1。
求大侠给一个keil的程序
要用灯的亮灭来显示计数方式耶..一个按钮是加1 另外一个是减一,请问怎么处理呢?
追答if(KEY1 == 0){
dat++;
P0 = dat;
}
if(KEY2 == 0){
if(dat > 0) dat--;
P0 = dat;
}
//P0 = dat; 这就是二进制显示方式了,比如dat = 2: 灯:灭灭亮灭,了。 这里没加消抖,去重复按键处理,
请问能帮忙写一下一个完整的程序吗?我把电路图贴出来~上边的按钮是+1 下边的按钮是减一。谢谢啊~!
#include
sbit KEY1 = P3^6;
sbit KEY2 = P3^7;
uchar disData = 0;
uchar keyStatus(uchar vkey, uchar * keyDown, uchar delay){
uchar res = 0;
if(vkey != 0){
if(keyDown[0] == delay){
res = 1;
}
if(keyDown[0] 0)disData--;
P1 = disData;
}
}
void delay(uchar n){
uchar i;
for( ; n > 0; n--)
for(i = 0 ; i < 20; i++);
}
void main(){
KEY1 = 1;
KEY2 = 1;
P1 = 0;
while(1){
scanKey1();
scanKey2();
delay(10);
}
}
图有问题,你自己解决了
那4个LED灯怎么显示?效果是这样的,比如按了2次 ++ 的按钮二进制为10 那4个led的显示效果为 灭灭亮灭 求帮~谢谢了
以AT89C51单片机为核心,设计一个二进制计数器
直接赋值,就是二进制显示:比如:uchar dat = 3;P0 = dat; \/\/LED灯二进制方式显示数据dat.
用AT89C51单片机编写一个C语言程序实现2个数码管秒计数器,用4个按键...
uchar distab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};uchar num=0;sec,key;void delay(unsigned int a){ unsigned int i,j;for(i=0;i<a;i++)for(j=0;j<120;j++);} void display(){ LED1=sec\/10;LED2=sec%10;P2=0x01;P0=distab[LED1];delay(3);...
1、 基于AT89C51单片机,利用定时器设计一个两位数码管显示电路。 设计...
void time1(void) interrupt 3 { TH1=(65536-5000)\/256; TL1=(65536-5000)%256; display(); } void init() { TMOD=0x11; EA=1; ET0=1; ET1=1; TR1=1; TR0=1; } main() { init(); while(1) { conv(shu); } } 本回答由提问者推荐 举报| 答案纠错 | 评论(4) 1 0 yying0907 ...
怎么用 AT89C51单片机产生可预置的二进制序列?
比较简单易行的方法是,将串口设置为同步移位寄存器模式,把欲写入的二进制数直接写SBUF即可在串口得到相应的二进制序列。
用单片机AT89C51驱动两位数码管显示00--99依次循环程序代码
以下是用单片机AT89C51驱动两位数码管显示00--99循环的程序代码片段:程序开始于0000h地址,通过计数器temp(22h)控制数码管从00到99的循环显示。计数器初始化为0,然后调用子程序display进行显示。每当计数器加1并判断是否达到100后,若未满则返回stlop继续循环,满100则清零重新开始。display子程序中,先...
单片机秒表设计
用AT89C51设计一个2位的LED数码显示作为“秒表”,这应该是一个仿真题,可用两位一体的共阴数码管,用定时器T0定时,得到1秒计时。
AT89C51中断程序设计两位数码管0到99,工作方式1,定时计数,1s,不用C语 ...
TCOUNT EQU 31H ;定义 ORG 00H ; 起始 LJMP START; 跳转 ORG 1BH ; 中断矢量地址 LJMP INT0X ; 跳转 START:MOV SECOND,#00H ; 设置计数0送入SECOND MOV TCOUNT,#00H ; 设置计数0送入TCOUNT MOV TMOD,#10H ; 设置计数器1 MOV TH1,#(65536-50000) \/ 256 ; 设置低位初值 MOV ...
AT89C51 单片机每个接口能输入或输出多少位的二进制码?
P0、P1、P2、P3口都有8个引脚,都能输入输出8位的二进制码,二进制码对于引脚来说,1代表高电平,0代表低电平;假设你写一条指令P0=0X05;\/\/(0X05转换成二进制是0000 0101)那么P0_7输出低电平;0 P0_6输出低电平;0 P0_5输出低电平;0 P0_4输出低电平;0 P0_3输出低电平;0 P0_2输出...
用C语言编写AT89C51单片机程序,设计一个智能数字钟。
这是我的课程设计,6个数码管,显示时分秒,三个按钮P0.0、P0.1、P0.2可以调时,有8个彩灯(可以不要),没闹钟、倒计时之类的。呵呵。include<AT89X52.H> define uchar unsigned char int i;\/\/***时钟的 uchar one[10]={0xbf,0xb0,0xdb,0xcf,0xe6,0xed,0xfd,0x07,0xff,0xef}...
基于AT89C51单片机的LED数字倒计时器
disdat[4]=hour%10;disdat[5]=hour\/10; }void t0isr() interrupt 1 \/\/秒计时{TH0=0x3c;TL0=0xb0;time++;switch(mode){case 0:if(time==20){time=0;sec++;if(sec>59){sec=0;min++;if(min>59){min=0;hour++;if(hour>23)hour=0;}}}break;case 1:if(time==20){time=0;...