设计要求:
1.使用PWM驱动8个LED灯
2.人眼不能观察到灯光全灭
3.灯光要有动画效果
实验设备:智能小车上的核心板、STC89C52芯片、芯片手册及核心板原理图。
设计思路:通过keil4创建一个新项目,选用89C52芯片,再创建一个新文件,将文件添加到项目中。写出代码并编译无错后,生成.hex文件,将代码烧入核心板中,观察流水灯模块LED灯变化情况。(本人写的代码是实现流水灯变化)
代码如下:
| ? ?1? ?#include<reg52.h> | | ?2 | #include"delay.h" | | ?3 | #include"liushuiled.h" | | ?4 | void main() | | ?5 | { | | ?6 | unsigned int i,j; | | ?7 | while(1) | | ?8 | for(i=0;i<8;i++) | | ?9 | { | | ?10 | P1=0xff; | | ?11 | led_ctl(i,LEDON); | | ?12 | delay_s(1); | | ?13 | } | | ?14 | for(j=7;j>=0;j--) | | ?15 | { | | ?16 | led_ctl(j,LEDON); | | ?17 | delay_s(1); | | ?18 | P1=0xff; | | ?19 | } | | ?20 | } | | ?21 | //延时函数头文件 | | ?22 | #ifndef _DELAY_H | | ?23 | #define _MELAY_H | | ?24 | char delay_ms(unsigned int ms); | | ?25 | char delay_s(unsigned int s); | | ?26 | #endif | | ?27 | //延时函数 | | ?28 | #include "delay.h" | | ?29 | | | ?30 | char delay_ms(unsigned int ms) | | ?31 | { | | ?32 | volatile unsigned int i,j; | | ?33 | if(ms<0||ms>65535) | | ?34 | return -1; | | ?35 | for(i=0;i<ms;i++) | | ?36 | { | | ?37 | for(j=0;j<120;j++) | | ?38 | ; | | ?39 | } | | ?40 | return 0; | | ?41 | } | | ?42 | #if 1 | | ?43 | char delay_s(unsigned int s) | | ?44 | { | | ?45 | if(s<0||s>65535) | | ?46 | return -1; | | ?47 | for(;s>0;s--) | | ?48 | { | | ?49 | delay_ms(1000); | | ?50 | } | | ?51 | return 0; | | ?52 | } | | ?53 | #endif | | ?54 | //LED灯控制函数头文件 | | ?55 | #ifndef __LIUSHUILED_H | | ?56 | #define __LIUSHUILED_H | | ?57 | #include<reg52.h> | | ?58 | #define LEDON 0 //μ?áá | | ?59 | #define LEDOFF 1 //μ??e | | ?60 | char led_ctl(unsigned char led_num,unsigned char flag ); | | ?61 | #endif | | ?62 | //LED灯控制函数 | | ?63 | #include<reg52.h> | | ?64 | #include"liushuiled.h" | | ?65 | #if 1 | | ?66 | char led_ctl(unsigned char led_num,unsigned char flag ) | | ?67 | { | | ?68 | if(led_num<0||led_num>7||flag<0||flag>1) | | ?69 | { | | ?70 | return -1; | | ?71 | } | | ?72 | if(flag) | | ?73 | { | | ?74 | P1 = 1 << led_num; | | ?75 | } | | ?76 | else | | ?77 | { | | ?78 | P1 &= ~(1 << led_num); | | ?79 | } | | ?80 | return 0; | | ?81 | } | | ?82 | #endif |
? ? 虽然写代码的过程很难很枯燥,但是写出来并且编译成功之后的那种畅快淋漓的感觉,总是令人陶醉。目前的我还只能算是一个小白,能力弱、基础薄,但是我会利用好这个假期时间,努力学习,积极进取。
|