|
c源碼:注釋很詳細(xì),我就不解釋了,如果延時(shí)不合適,可以修改參數(shù)
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
單片機(jī)源碼:
- #include<reg51.h> //包含51單片機(jī)寄存器定義的頭文件
- #include<intrins.h> //包含函數(shù)_nop_()定義的頭文件
- unsigned char code Tab[]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};//流水燈控制碼,該數(shù)組被定義為全局變量
- sbit P17=P1^7;
- /**************************************************************
- 函數(shù)功能:延時(shí)約150ms
- **************************************************************/
- void delay(void)
- {
- unsigned char m,n;
- for(m=0;m<200;m++)
- for(n=0;n<250;n++)
- ;
- }
- /**************************************************************
- 函數(shù)功能:發(fā)送一個(gè)字節(jié)的數(shù)據(jù)
- **************************************************************/
- void Send(unsigned char dat)
- {
- P17=0; //P1.7引腳輸出清0信號(hào),對(duì)74LS164清0
- _nop_(); //延時(shí)一個(gè)機(jī)器周期
- _nop_(); //延時(shí)一個(gè)機(jī)器周期,保證清0完成
- P17=1; //結(jié)束對(duì)74LS164的清0
- SBUF=dat; //將數(shù)據(jù)寫入發(fā)送緩沖器,啟動(dòng)發(fā)送
- while(TI==0) //若沒(méi)有發(fā)送完畢,等待
- ;
- TI=0; //發(fā)送完畢,TI被置“1”,需將其清0
- }
- /*******************************************
- 函數(shù)功能:主函數(shù)
- ******************************************/
- void main(void)
- {
- unsigned char i;
- SCON=0x00; //SCON=0000 0000B,使串行口工作于方式0
- while(1)
- {
- for(i=0;i<8;i++)
- {
- Send(Tab[i]); //發(fā)送數(shù)據(jù)
- delay(); //延時(shí)
- }
- }
- }
復(fù)制代碼
附件有仿真文件和c源碼,需要的可以下載
321-方式0控制流水燈循環(huán)點(diǎn)亮.zip
(28.74 KB, 下載次數(shù): 13)
2018-9-27 23:56 上傳
點(diǎn)擊文件名下載附件
內(nèi)含有仿真文件,c代碼
|
評(píng)分
-
查看全部評(píng)分
|