C51单片机使用2-流水灯测试
一、流水燈測(cè)試
運(yùn)行效果:每隔0.6秒蜂鳴器響一聲、同時(shí)LED燈由P1_0到P1_7輪著亮。
1、流水燈電路設(shè)計(jì)
LED燈共陽(yáng)極,IO口輸出低電平為點(diǎn)亮LED燈、IO口輸出高電平則熄滅LED燈。由于單片機(jī)IO輸出的電流不足以驅(qū)動(dòng)LED燈,因此使用74HC573芯片驅(qū)動(dòng)LED燈。
2、蜂鳴器電路設(shè)計(jì)
3、C語(yǔ)言移位實(shí)現(xiàn)
(1)左移:操作符”<<“。每執(zhí)行依次左移指令,被操作的數(shù)將最高位移入單片機(jī)PSW寄存器的CY位,CY位中原來(lái)的數(shù)丟棄,最低位補(bǔ)0,其它位依次向左移動(dòng)一位。
?樣例程序:
while(1) {a=a<<1; }(2)右移:操作符”>>“。每執(zhí)行依次右移指令,被操作的數(shù)將最低位移入單片機(jī)PSW寄存器的CY位,CY位中原來(lái)的數(shù)丟棄,最高位補(bǔ)0,其它位依次向右移動(dòng)一位。
?
while(1) {a=a>>1; }(3)循環(huán)左移:最高位移入最低位,其它位依次向左移一位。自帶函數(shù) _crol 實(shí)現(xiàn)
?
?(4)循環(huán)右移:最低位移入最高位,其它位依次向右移位。自帶函數(shù) _cror 實(shí)現(xiàn)
?流水燈實(shí)現(xiàn)使用C51自帶的庫(kù)函數(shù)_crol_()實(shí)現(xiàn)循環(huán)左移.
測(cè)試代碼如下
//flow light and beep #include <reg51.h> #include <intrins.h>#define uint unsigned int #define uchar unsigned charunsigned char m,n; sbit beep=P2^3; //蜂鳴器void delay10ms() //延時(shí)10毫妹胱映絳? {unsigned char a,b;for(a=100;a>0;a--)for(b=225;b>0;b--); }void delay02s(void) //延時(shí)0.2秒子程序 {unsigned char i,j,k; for(i=20;i>0;i--) for(j=20;j>0;j--)for(k=248;k>0;k--); }void Delay_ms(uint xms) {uint i,j; for(i=xms;i>0;i--)for(j=110;j>0;j--); }void main() {n=0xfe; //設(shè)置初始值 11111110while(1){/*//beep=0;delay02s();delay02s();delay02s();//beep=1;m=_crol_(n,1);n=m;P1=m;delay02s();delay02s();delay02s();*///beep=0;Delay_ms(500);//beep=1;m=_crol_(n,1);n=m;P1=m;Delay_ms(500);} }4、毫秒延時(shí)函數(shù)
第一個(gè)循環(huán)語(yǔ)句執(zhí)行一次,則第二個(gè)循環(huán)語(yǔ)句執(zhí)行110次。單片機(jī)的晶振是12MHz,它的時(shí)鐘周期就是1/12us,它是單片機(jī)中最基本、最小的時(shí)間單位。在一個(gè)時(shí)鐘周期內(nèi),CPU僅完成一個(gè)最基本的動(dòng)作。
需要延時(shí)多少毫秒,xms值設(shè)置多少就行。這個(gè)時(shí)間是個(gè)大概時(shí)間,需要精確的時(shí)間需要使用專(zhuān)用的定時(shí)器中斷
void Delay_ms(uint xms) {uint i,j; for(i=xms;i>0;i--)for(j=110;j>0;j--); }總結(jié)
以上是生活随笔為你收集整理的C51单片机使用2-流水灯测试的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 洛谷B2092 开关灯(样本观察)
- 下一篇: ERROR: cannot verify