?? 循環移位流水燈.c
字號:
/*
循環移位流水燈
功能: P1口外接的八個LED按照程序預定的組合,有選擇、有節奏的點亮或
者熄滅,從而可以使LED發出的燈光達到像水流一樣“流動”的效果。
說明: 運用C語言中簡單的“移位”及“位或”操作,組合出一系列所需的8位
二進制數,并給P1口賦值,P1口對應的各LED就會按照要求被點亮或熄滅。
調試:1、通過對換程序中移位符號(">>"、"<<")的位置,可以方便地改變流水燈流動的方向。
2、通過修改變量“LED”的初值,可以方便地實現N(1至7)個LED作為一組流動的效果。
(C)西安電子科技大學 測控技術與儀器 編寫:郭世忠 日期:2008/02/15
*/
#include<reg52.h> //51寄存器頭文件
void Delayms(int ms); //函數聲明
void main(void) //主函數
{
unsigned char LED; //定義變量
LED=0xf8; //LED賦初值 可根據需要在“LED初值列表”中選擇對應初值
//這里以點亮3個LED為例,因此選擇初值為 0xf8
while(1) //死循環,單片機程序必須是一個死循環
{
P1=LED; //I/O口賦值,將變量“LED”此刻的值傳給P1口。這一句寫在這里是為了
//保證P1口能夠從LED的初值開始顯示,大家不信可以改一下位置看效果。
LED=(LED>>7)|(LED<<1);//移位運算,向左或向右移1位,并更新LED的值,下一周期更新到P1口
//此處對換移位符號(">>"、"<<")的位置,可改變流水燈流動的方向。
Delayms(5000); //延時,保持當前發光狀態片刻。
}
}
/***************************** LED初值列表 *******************************
*
*流動LED的個數 對應二進制 對應十六進制
* 1 1111 1110 0xfe
* 2 1111 1100 0xfc
* 3 1111 1000 0xf8
* 4 1111 0000 0xf0
* 5 1110 0000 0xe0
* 6 1100 0000 0xc0
* 7 1000 0000 0x80
*說明:P1口對應的LED是低電平有效,因此,0代表點亮LED,1代表熄滅LED.
****************************************************************************/
/****************************************************************************
* 名 稱:Delayms()
* 功 能:延遲1ms
* 入口參數:ms: 延遲毫秒數
* 出口參數:無
* 說 明: 11.0592MHz條件下
****************************************************************************/
void Delayms(int ms)
{
unsigned int i;
for(;ms>0;ms--) //循環ms次
{
for(i=0;i<113;i++); //每次1ms延遲@ 11.0592MHz
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -