使用的元器件:
1、STC89C52RC单片机一个
2、11.0592晶振一个
3、30pf磁片电容两只
4、1K电阻4个
5、led发光二级管4只
6、3.3/5V电源模块一个
7、面包板一个
8、连接导线数根
实现的功能:
流水灯及闪烁效果
目的:初学者都是从51单片机开发板开始,开发板集成了很多功能,学习者在开发板上使用各种功能可能得心应手,但离开了开发板却是一片茫然,本贴旨在给像我的一样茫然者一点小小启发,大神勿喷,多多指正。
制作出来的实物图如下:
单片机源程序如下:
- #include <reg52.h>
- #define uchar unsigned char
- #define uint unsigned int
- sbit led0=P1^0;
- sbit led1=P1^1;
- sbit led2=P1^2;
- sbit led3=P1^3;
- /*------------------------------------------------
- 延时子程序
- ------------------------------------------------*/
- void delay(uint cnt)
- {
- while(--cnt);
- }
- /*----------------------------------
- led灯闪烁子程序
- -----------------------------------*/
- void led_ShanShuo()
- {
- uchar i;
- for(i=0;i<3;i++)
- {
- P1=0x00;
- delay(50000);
- P1=0xff;
- delay(50000);
- }
- }
- /*------------------------------
- 流水灯子程序
- ------------------------------*/
- void led_LiuShuiDeng1()
- {
- led0=0;
- delay(50000);
- led0=1;
- led1=0;
- delay(50000);
- led1=1;
- led2=0;
- delay(50000);
- led2=1;
- led3=0;
- delay(50000);
- led3=1;
- delay(50000);
- }
- /*------------------------------------------------
- 利用循环移位方式实现LED流水灯效果子程序
- --------------------------------------------------*/
- void led_LiuShuiDeng2()
- {
- P1=0xfe;//给初始化值 换算成二进制是 1111 1110
- while(1)
- { delay(50000);//延时程序
- P1<<=1;//左移一位 该语句等效于 P1=P1<<1
- P1|=0x01;//最后一位补 1,该语句等效于 P1=P1|0x01 符号"|"表示"或"
- if(P1==0xf7) //检测是否移到最左端?"=="表示检测符号 2 端的值是否相等
- {
- delay(50000);
- P1=0xfe; //重新赋值
- }
- }
- }
- void main()
- {
- while(1)
- {
- led_LiuShuiDeng1();
- led_ShanShuo();
- }
- }
复制代码 视频:
视频.7z
(2.89 MB, 下载次数: 10)
|