流水灯仿真图:
实验感悟: error variable not found parsing property resistance of RN1-Rnvalue expected for RN1-R(n=1~8)而且led灯亮度十分微弱。可能是接入的电阻太大了。 检查电路图发现排阻的值为RX8,修改为220(自己选择)后。错误便没有了,同时,led灯的亮度也增强了。 延时的时间计算不太明白。 3、P0=0xfe;是对单片机P0口的8个I/O口同时进行操作,0x后的数使用十六进制表示,fe转换为二进制是1111 1110,则P0.0为低电平,对应的led灯亮,其他7个led灯灭。
单片机流水灯源程序如下:
- 源程序:
- #include<reg52.h>
- #include<intrins.h>
- #define uchar unsigned char
- #define uint unsigned int
- sbit key1=P3^7;
- sbit key2=P3^6;
- sbit key3=P3^5;
- unsigned int time=2000,count1=0;
- unsigned int led=0xfe,count2=0;
- void key();
- void delay(uint z)
- {
- uint x,y;
- for(x=z;x>0;x--)
- for(y=110;y>0;y--);
- }
- void dump()
- {
- if(count1==0)
- {
- P1=led;
- led=_crol_(led,1);
-
- }
- if(count1==1)
- {
- led=_cror_(led,1);
- P1=led;
- }
- }
- void main()
- {
- while(1)
- {
- key();
- delay(time/5);
- key();
- delay(time/5);
- key();
- delay(time/5);
- dump();
- key();
- delay(time/5);
- key();
- delay(time/5);
- }
- }
- void key()
- {
- if(key1==0)
- {
- delay(5);
- if(key1==0)
- {
- count2++;
- if(count2%2==1)
- {
- count1=1;
- }
- if(count2%2==0)
- {
- count1=0;
- }
- while(!key1);
- }
- }
- if(key2==0)
- {
- delay(5);
- if(key2==0)
- {
- if(time==4000);
- else
- {
- time+=500;
- }
- while(!key2);
- }
- }
- if(key3==0)
- {
- delay(5);
- if(key3==0);
- {
- if(time==500);
- else
- {
- time-=500;
- }
- while(!key3);
- }
- }
- }
复制代码
所有资料51hei提供下载:
第一次试验报告B16040415焦凯.docx
(171.99 KB, 下载次数: 15)
|