这是仿真原理图,用一位共阴数码管,P1口输出段码,不用动态扫描。程序如下:include <reg51.h>sbit ins1=P3^7;unsigned char code segment[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x27,0x7F,0x6F};//段码表void main(){unsigned char x=0;while (1){P1=segment[x];if(ins1==0...
while(1){ while(!KEY){ delay(10);if(KEY){ flag++;{ if(flag==1)TR0=0;if(flag==2){ TR0=1;aa=0;num=0;num1=0;flag=0;TR0=1;} } } } if(aa==20){ aa=0;num++;if(num==10){ num=0;num1++;} if(num1==6)num1=0;P0=table[num1];P2=table[num];} } ...
按键计数器,利用单片机控制单个LED数码管实现0-9的计数,按键K1按下时计数值加1,按键K2按下时计数值减1,编一程序实现该功能。
如果这样的话挺简单的,51单片机的计数器io口记得好像是P3^0和P3^1,但不管怎么,首先设置TMOD,将C/T位置1,这就改为计数器了,然后可以编写函数来对一个变量进行加减;同样利用51单片机的外部中断也可以实现计数功能,打开外部中断开关,在外部中断服务函数对计数变量进行加减;最简单的,直接利用io口...
void t0isr() interrupt 1 { TH0=(65536-50000)/256;TL0=(65536-50000)%256;num++;if(num>=20){ num=0;sec++;} } main(){ TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;TR0=1;ET0=1;EA=1;LED1=0;LED2=0;while(1){ key=P1;if((key&0x0f)!=0x0f){ delay...