基于Proteus和KeilC的程序开发 验证计数显示器的如下功能:可统计按钮BUT的按压次数,并将按压结果以十进制数形式显示出来;当显示值达到99后可自动从1开始,无限循环。
验证发光二极管的如下功能:仿真运行开始时,当开关p3_2闭合时,按一下按钮p3_4,流水灯全亮,再按一下按钮,流水灯全灭,然后正式开始流水,从第一个二极管开始每当按钮BUT按压一次,二极管就亮一次,且再次按压按钮时,下一个二极管亮一次,以此类推,循环往复。 简单东西,入门学习,不喜勿喷
单片机源程序如下:
- #include<reg51.h>
- #define uchar unsigned char
- sbit P3_4=P3^4;
- sbit P3_2=P3^2;
- bit ldelay=0;
- uchar t=0;
- unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f};
- unsigned char count;
- void delay(unsigned int time){
- unsigned int j=0;
- for(;time>0;time--)
- for(j=0;j<125;j++);
- }
- void main(){
- uchar code ledp[10]={0x00,0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
- uchar ledi;
- TMOD=0x01;
- TH0=0x3c;
- TL0=0xb0;
- TR0=1;
- ET0=1;
- EA=1;
- count=0;
- P0=table[count/10];
- P2=table[count%10];
- while(1){
-
- if(P3_4==0){
- delay(10);
- if(P3_4==0){
- count++;
- if(count==100)
- count=0;
- P0=table[count/10];
- P2=table[count%10];
- while(P3_4==0);}
-
- if(P3_2==0){
-
- if(ldelay) {
- ldelay=0;
- P1=ledp[ledi];
- delay(1000);
- ledi++;
- if(ledi==10) ledi=2;
- }
- }
- }
- }
- }
- timer0() interrupt 1{
- t++;
- if(t==20) {t=0;ldelay=1;}
- TH0=0X3C;TL0=0xb0;
- }
复制代码
|