单片机实验:节日彩灯控制器
生活随笔
收集整理的這篇文章主要介紹了
单片机实验:节日彩灯控制器
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
任務(wù)
設(shè)計8路節(jié)日彩燈控制器,要求在Protues中設(shè)計接口電路圖,并編程實現(xiàn)節(jié)日彩燈閃爍方式的控制:
代碼
#include<reg52.h> #include<intrins.h> //包含循環(huán)左、右移位函數(shù)的頭文件(_crol_, _cror_) sbit S1=P1^0; sbit S2=P1^1; sbit S3=P1^2; unsigned char keyval; void key_scan(void); //按鍵掃描,取鍵值 void forward(void); //從上到下閃爍 void backward(void); //從下到上閃爍 void middleward(void); //從中間到兩邊,再從兩邊到中間 void delay10ms(void); //按鍵掃描延時,防抖動 void led_delay(void); void main(void) {keyval=0; //鍵盤初始化為0while(1){key_scan(); //調(diào)用鍵盤掃描函數(shù)switch(keyval){case 1:forward(); //鍵值為1,從上到下閃爍break;case 2:backward(); //鍵值為2,從下到上閃爍break;case 3:middleward(); //鍵值為3,從中間到兩邊,再從兩邊到中間break;}} } void key_scan(void) {P1=0xff;if((P1&0x0f)!=0x0f) //檢測到有鍵按下{delay10ms();if(S1==0)keyval=1;if(S2==0)keyval=2;if(S3==0)keyval=3;} } void forward(void) {P2=0xfe; //1led_delay();P2=0xfd; //2led_delay();P2=0xfb; //3led_delay();P2=0xf7; //4led_delay();P2=0xef; //5led_delay();P2=0xdf; //6led_delay();P2=0xbf; //7led_delay();P2=0x7f; //8led_delay(); }void backward(void) {P2=0x7f; //8led_delay();P2=0xbf; //7led_delay();P2=0xdf; //6led_delay();P2=0xef; //5led_delay();P2=0xf7; //4led_delay();P2=0xfb; //3led_delay();P2=0xfd; //2led_delay();P2=0xfe; //1led_delay(); }void middleward(void) {P2=0xe7;led_delay();P2=0xdb;led_delay();P2=0xbd;led_delay();P2=0x7e;led_delay();P2=0xbd;led_delay();P2=0xdb;led_delay(); } void led_delay(void) {unsigned char i,j;for(i=0;i<220;i++)for(j=0;j<220;j++); }void delay10ms(void) { unsigned char i,j;for(i=0;i<100;i++)for(j=0;j<100;j++); }仿真
鍵值為1,從上到下閃爍
鍵值為2,從下到上閃爍
鍵值為3,從中間到兩邊,再從兩邊到中間
總結(jié)
以上是生活随笔為你收集整理的单片机实验:节日彩灯控制器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: libmysqld_dev linux,
- 下一篇: 单片机实验:数据区传送程序