新手学习,了解到随机函数的运用,LED灯的控制,中断函数的运用等。
八个位置不同的指示灯代表地鼠。每次随机亮一个灯。
有一个按键可以对灯亮的间隔进行调整,分别为0.5s,1s,2s,3s。
包含Proteus原理图和C源程序。
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
单片机源程序如下:
- #include<reg52.h>
- #include<stdlib.h>
- #include<math.h>
- #define u8 unsigned char
- #define u16 unsigned int
- #define u32 long
- sbit KEY=P3^2 ;
- u8 led[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
- u8 flag=0;
- u8 n=1,m=1,x=1;
- void main()
- {
- u8 j=0,a,b;
- P0=0;
- TMOD=0x01;
- TH0=15536/256;
- TL0=15536%256;
- ET0=1;
- EA=1;
- TR0=1;
- while(1)
- {
- if(KEY==0)
- {
- for(b=38;b>0;b--)
- {
- for(a=130;a>0;a--);
- }
- if(KEY==0)
- {
- while(KEY==0){P0=0XFF;}
- n++;
- if(n==3||n==5){
- n++;
- }
- if(n==7){
- n=1;
- }
-
- }
-
- }
- if(x==1)
- {
- x=0;
- j=(rand()%8);
- }
- P0=led[j];
- }
-
- }
- void TT() interrupt 1
- {
- flag++;
- if(flag>=(n*10))
- {
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
打地鼠仿真及程序.zip
(16.81 KB, 下载次数: 149)
|