程序里有中斷,串口等驅(qū)動(dòng),直接復(fù)制即可使用 1-IO輸出-點(diǎn)亮1個(gè)LED燈方法1 /*----------------------------------------------- 名稱:IO口高低電平控制 論壇:www.doflye.net 編寫:shifang 日期:2009.5 修改:無(wú) 內(nèi)容:點(diǎn)亮P1口的一個(gè)LED燈 該程序是單片機(jī)學(xué)習(xí)中最簡(jiǎn)單最基礎(chǔ)的, 通過程序了解如何控制端口的高低電平 ------------------------------------------------*/ #include<reg52.h> //包含頭文件,一般情況不需要改動(dòng), //頭文件包含特殊功能寄存器的定義 sbit LED=P1^0;// 用sbit 關(guān)鍵字 定義 LED到P1.0端口, //LED是自己任意定義且容易記憶的符號(hào) /*------------------------------------------------ 主函數(shù) ------------------------------------------------*/ void main (void) { //此方法使用bit位對(duì)單個(gè)端口賦值 LED=1; //將P1.0口賦值 1,對(duì)外輸出高電平 LED=0; //將P1.0口賦值 0,對(duì)外輸出低電平 while (1) //主循環(huán) { //主循環(huán)中添加其他需要一直工作的程序 } } 2-IO輸出-點(diǎn)亮1個(gè)LED燈方法2 /*----------------------------------------------- 名稱:IO口高低電平控制 論壇:www.doflye.net 編寫:shifang 日期:2009.5 修改:無(wú) 內(nèi)容:點(diǎn)亮P1口的一個(gè)LED燈 該程序是單片機(jī)學(xué)習(xí)中最簡(jiǎn)單最基礎(chǔ)的, 通過程序了解如何控制端口的高低電平 ------------------------------------------------*/ #include<reg52.h> //包含頭文件,一般情況不需要改動(dòng), //頭文件包含特殊功能寄存器的定義 /*------------------------------------------------ 主函數(shù) ------------------------------------------------*/ void main (void) { //此方法使用1個(gè)字節(jié)對(duì)單個(gè)端口賦值 P1 = 0xFF; //P1口全部為高電平,對(duì)應(yīng)的LED燈全滅掉, //ff換算成二進(jìn)制是 1111 1111 P1 = 0xfe; //P1口的最低位點(diǎn)亮,可以更改數(shù)值是其他的燈點(diǎn)亮 //0xfe是16進(jìn)制,0x開頭表示16進(jìn)制數(shù), //fe換算成二進(jìn)制是 1111 1110 while (1) //主循環(huán) { //主循環(huán)中添加其他需要一直工作的程序 } } 3-IO輸出-點(diǎn)亮多個(gè)LED燈方法1 /*----------------------------------------------- 名稱:IO口高低電平控制 論壇:www.doflye.net 編寫:shifang 日期:2009.5 修改:無(wú) 內(nèi)容:點(diǎn)亮P1口的多個(gè)LED燈 該程序是單片機(jī)學(xué)習(xí)中最簡(jiǎn)單最基礎(chǔ)的, 通過程序了解如何控制端口的高低電平 ------------------------------------------------*/ #include<reg52.h> //包含頭文件,一般情況不需要改動(dòng), //頭文件包含特殊功能寄存器的定義 sbit LED0=P1^0;// 用sbit 關(guān)鍵字 定義 LED到P1.0端口, sbit LED1=P1^1;//LED是自己任意定義且容易記憶的符號(hào) sbit LED2=P1^2; sbit LED3=P1^3; sbit LED4=P1^4; sbit LED5=P1^5; sbit LED6=P1^6; sbit LED7=P1^7; /*------------------------------------------------ 主函數(shù) ------------------------------------------------*/ void main (void) { //此方法使用bit位對(duì)單個(gè)端口賦值 LED0=0; //將P1.0口賦值 0,對(duì)外輸出低電平 LED1=1; LED2=0; LED3=1; LED4=0; LED5=1; LED6=0; LED7=1; while (1) //主循環(huán) { //主循環(huán)中添加其他需要一直工作的程序 } } 4-IO輸出-點(diǎn)亮多個(gè)LED燈方法2 /*----------------------------------------------- 名稱:IO口高低電平控制 論壇:www.doflye.net 編寫:shifang 日期:2009.5 修改:無(wú) 內(nèi)容:點(diǎn)亮P1口的多個(gè)LED燈 該程序是單片機(jī)學(xué)習(xí)中最簡(jiǎn)單最基礎(chǔ)的, 通過程序了解如何控制端口的高低電平 ------------------------------------------------*/ #include<reg52.h> //包含頭文件,一般情況不需要改動(dòng), //頭文件包含特殊功能寄存器的定義 /*------------------------------------------------ 主函數(shù) ------------------------------------------------*/ void main (void) { //此方法使用bit位對(duì)單個(gè)端口賦值 P1=0x55; //換成二進(jìn)制是0101 0101 while (1) //主循環(huán) { //主循環(huán)中添加其他需要一直工作的程序 } } 5-閃爍1個(gè)LED /*----------------------------------------------- 名稱:IO口高低電平控制 論壇:www.doflye.net 編寫:shifang 日期:2009.5 修改:無(wú) 內(nèi)容:點(diǎn)亮P1口的1個(gè)LED燈閃爍 該程序是單片機(jī)學(xué)習(xí)中最簡(jiǎn)單最基礎(chǔ)的, 通過程序了解如何控制端口的高低電平 ------------------------------------------------*/ #include<reg52.h> //包含頭文件,一般情況不需要改動(dòng), //頭文件包含特殊功能寄存器的定義 sbit LED0=P1^0;// 用sbit 關(guān)鍵字 定義 LED到P1.0端口, //LED是自己任意定義且容易記憶的符號(hào) void Delay(unsigned int t); //函數(shù)聲明 /*------------------------------------------------ 主函數(shù) ------------------------------------------------*/ void main (void) { //此方法使用bit位對(duì)單個(gè)端口賦值 while (1) //主循環(huán) { LED0=0; //將P1.0口賦值 0,對(duì)外輸出低電平 Delay(10000); //調(diào)用延時(shí)程序;更改延時(shí)數(shù)字可以更改延時(shí)長(zhǎng)度; //用于改變閃爍頻率 LED0=1; //將P1.0口賦值 1,對(duì)外輸出高電平 Delay(10000); //主循環(huán)中添加其他需要一直工作的程序 } } /*------------------------------------------------ 延時(shí)函數(shù),含有輸入?yún)?shù) unsigned int t,無(wú)返回值 unsigned int 是定義無(wú)符號(hào)整形變量,其值的范圍是 0~65535 ------------------------------------------------*/ void Delay(unsigned int t) { while(--t); } 6-不同頻率閃爍1個(gè)LED燈 /*----------------------------------------------- 名稱:IO口高低電平控制 論壇:www.doflye.net 編寫:shifang 日期:2009.5 修改:無(wú) 內(nèi)容:點(diǎn)亮P1口的1個(gè)LED燈閃爍 該程序是單片機(jī)學(xué)習(xí)中最簡(jiǎn)單最基礎(chǔ)的, 通過程序了解如何控制端口的高低電平 ------------------------------------------------*/ #include<reg52.h> //包含頭文件,一般情況不需要改動(dòng), //頭文件包含特殊功能寄存器的定義 sbit LED0=P1^0;// 用sbit 關(guān)鍵字 定義 LED到P1.0端口, //LED是自己任意定義且容易記憶的符號(hào) void Delay(unsigned int t); //函數(shù)聲明 /*------------------------------------------------ 主函數(shù) ------------------------------------------------*/ void main (void) { //此方法使用bit位對(duì)單個(gè)端口賦值 unsigned char i; //定義一個(gè)無(wú)符號(hào)字符型局部變量 i 取值范圍 0~255 while (1) //主循環(huán) { for(i=0;i<10;i++) //加入 for循環(huán),表明for循環(huán)大括號(hào)中的程序循環(huán)執(zhí)行10次 { LED0=0; //將P1.0口賦值 0,對(duì)外輸出低電平 Delay(5000); //調(diào)用延時(shí)程序;更改延時(shí)數(shù)字可以更改延時(shí)長(zhǎng)度; //用于改變閃爍頻率 LED0=1; //將P1.0口賦值 1,對(duì)外輸出高電平 Delay(5000); } for(i=0;i<10;i++) { LED0=0; //將P1.0口賦值 0,對(duì)外輸出低電平 Delay(60000); //調(diào)用延時(shí)程序;更改延時(shí)數(shù)字可以更改延時(shí)長(zhǎng)度; //用于改變閃爍頻率 LED0=1; //將P1.0口賦值 1,對(duì)外輸出高電平 Delay(60000); } //主循環(huán)中添加其他需要一直工作的程序 } } /*------------------------------------------------ 延時(shí)函數(shù),含有輸入?yún)?shù) unsigned int t,無(wú)返回值 unsigned int 是定義無(wú)符號(hào)整形變量,其值的范圍是 0~65535 ------------------------------------------------*/ void Delay(unsigned int t) { while(--t); } 7-不同頻率閃爍多個(gè)LED燈 /*----------------------------------------------- 名稱:IO口高低電平控制 論壇:www.doflye.net 編寫:shifang 日期:2009.5 修改:無(wú) 內(nèi)容:點(diǎn)亮P1口的多個(gè)LED燈閃爍 該程序是單片機(jī)學(xué)習(xí)中最簡(jiǎn)單最基礎(chǔ)的, 通過程序了解如何控制端口的高低電平 ------------------------------------------------*/ #include<reg52.h> //包含頭文件,一般情況不需要改動(dòng),頭文件包含特殊功能寄存器的定義 sbit LED0=P1^0;// 用sbit 關(guān)鍵字 定義 LED到P1.0端口,LED是自己任意定義且容易記憶的符號(hào) sbit LED1=P1^1; sbit LED2=P1^2; sbit LED3=P1^3; sbit LED4=P1^4; sbit LED5=P1^5; sbit LED6=P1^6; sbit LED7=P1^7; void Delay(unsigned int t); //函數(shù)聲明 /*------------------------------------------------ 主函數(shù) ------------------------------------------------*/ void main (void) { //此方法使用bit位對(duì)單個(gè)端口賦值 unsigned char i; //定義一個(gè)無(wú)符號(hào)字符型局部變量 i 取值范圍 0~255 while (1) //主循環(huán) { for(i=0;i<10;i++) //加入 for循環(huán),表明for循環(huán)大括號(hào)中 //的程序循環(huán)執(zhí)行10次 { LED0=0; //將P1.0口賦值 0,對(duì)外輸出低電平 LED2=1; LED4=0; Delay(5000); //調(diào)用延時(shí)程序;更改延時(shí)數(shù)字可以更改延時(shí)長(zhǎng)度; //用于改變閃爍頻率 LED0=1; //將P1.0口賦值 1,對(duì)外輸出高電平 LED2=0; LED4=1; Delay(5000); } for(i=0;i<10;i++) { LED0=0; //將P1.0口賦值 0,對(duì)外輸出低電平 LED2=1; LED4=0; Delay(60000); //調(diào)用延時(shí)程序;更改延時(shí)數(shù)字可以更改延時(shí)長(zhǎng)度; //用于改變閃爍頻率 LED0=1; //將P1.0口賦值 1,對(duì)外輸出高電平 LED2=0; LED4=1; Delay(60000); } //主循環(huán)中添加其他需要一直工作的程序 } } /*------------------------------------------------ 延時(shí)函數(shù),含有輸入?yún)?shù) unsigned int t,無(wú)返回值 unsigned int 是定義無(wú)符號(hào)整形變量,其值的范圍是 0~65535 ------------------------------------------------*/ void Delay(unsigned int t) { while(--t); } 8-8位LED左移 /*----------------------------------------------- 名稱:IO口高低電平控制 論壇:www.doflye.net 編寫:shifang 日期:2009.5 修改:無(wú) 內(nèi)容:左移,直至LED全部點(diǎn)亮,左移符號(hào) << ------------------------------------------------*/ #include<reg52.h> //包含頭文件,一般情況不需要改動(dòng),頭文件包含特殊功能寄存器的定義 void Delay(unsigned int t); //函數(shù)聲明 /*------------------------------------------------ 主函數(shù) ------------------------------------------------*/ void main (void) { unsigned char i; //定義一個(gè)無(wú)符號(hào)字符型局部變量 i 取值范圍 0~255 Delay(50000); P1=0xfe; //賦初始值 for(i=0;i<8;i++) //加入 for循環(huán),表明for循環(huán)大括號(hào)中的程序循環(huán)執(zhí)行8次 { Delay(50000); P1<<=1; } while (1) //主循環(huán) { //主循環(huán)中添加其他需要一直工作的程序 } } /*------------------------------------------------ 延時(shí)函數(shù),含有輸入?yún)?shù) unsigned int t,無(wú)返回值 unsigned int 是定義無(wú)符號(hào)整形變量,其值的范圍是 0~65535 ------------------------------------------------*/ void Delay(unsigned int t) { while(--t); } 9-8位LED右移 /*----------------------------------------------- 名稱:IO口高低電平控制 論壇:www.doflye.net 編寫:shifang 日期:2009.5 修改:無(wú) 內(nèi)容:右移,直至LED全部點(diǎn)亮,右移符號(hào) >> ------------------------------------------------*/ #include<reg52.h> //包含頭文件,一般情況不需要改動(dòng),頭文件包含特殊功能寄存器的定義 void Delay(unsigned int t); //函數(shù)聲明 /*------------------------------------------------ 主函數(shù) ------------------------------------------------*/ void main (void) { unsigned char i; //定義一個(gè)無(wú)符號(hào)字符型局部變量 i 取值范圍 0~255 Delay(50000); P1=0x7f; //賦初始值 for(i=0;i<8;i++) //加入 for循環(huán),表明for循環(huán)大括號(hào)中的程序循環(huán)執(zhí)行8次 { Delay(50000); P1>>=1; } while (1) //主循環(huán) { //主循環(huán)中添加其他需要一直工作的程序 } } /*------------------------------------------------ 延時(shí)函數(shù),含有輸入?yún)?shù) unsigned int t,無(wú)返回值 unsigned int 是定義無(wú)符號(hào)整形變量,其值的范圍是 0~65535 ------------------------------------------------*/ void Delay(unsigned int t) { while(--t); } 10-LED循環(huán)左移 /*----------------------------------------------- 名稱:IO口高低電平控制 論壇:www.doflye.net 編寫:shifang 日期:2009.5 修改:無(wú) 內(nèi)容:循環(huán)左移,始終一個(gè)led點(diǎn)亮,并循環(huán)執(zhí)行流水動(dòng)作,左移符號(hào) << 邏輯或符號(hào) | ------------------------------------------------*/ #include<reg52.h> //包含頭文件,一般情況不需要改動(dòng),頭文件包含特殊功能寄存器的定義 void Delay(unsigned int t); //函數(shù)聲明 /*------------------------------------------------ 主函數(shù) ------------------------------------------------*/ void main (void) { unsigned char i; //定義一個(gè)無(wú)符號(hào)字符型局部變量 i 取值范圍 0~255 Delay(50000); P1=0xfe; //賦初始值 while (1) //主循環(huán) { for(i=0;i<8;i++) //加入 for循環(huán),表明for循環(huán)大括號(hào)中的程序循環(huán)執(zhí)行8次 { Delay(50000); P1<<=1; P1=P1|0x01; //左移后,最右端自動(dòng)賦值0,所以需要該語(yǔ)句賦值1 } P1=0xfe; //重新賦初始值 //主循環(huán)中添加其他需要一直工作的程序 } } /*------------------------------------------------ 延時(shí)函數(shù),含有輸入?yún)?shù) unsigned int t,無(wú)返回值 unsigned int 是定義無(wú)符號(hào)整形變量,其值的范圍是 0~65535 ------------------------------------------------*/ void Delay(unsigned int t) { while(--t); } 11-LED循環(huán)右移 /*----------------------------------------------- 名稱:IO口高低電平控制 論壇:www.doflye.net 編寫:shifang 日期:2009.5 修改:無(wú) 內(nèi)容:循環(huán)右移,始終一個(gè)led點(diǎn)亮,并循環(huán)執(zhí)行流水動(dòng)作,右移符號(hào) >> 邏輯或符號(hào) | ------------------------------------------------*/ #include<reg52.h> //包含頭文件,一般情況不需要改動(dòng),頭文件包含特殊功能寄存器的定義 void Delay(unsigned int t); //函數(shù)聲明 /*------------------------------------------------ 主函數(shù) ------------------------------------------------*/ void main (void) { unsigned char i; //定義一個(gè)無(wú)符號(hào)字符型局部變量 i 取值范圍 0~255 Delay(50000); P1=0x7f; //賦初始值 while (1) , //主循環(huán) { for(i=0;i<8;i++) //加入 for循環(huán),表明for循環(huán)大括號(hào)中的程序循環(huán)執(zhí)行8次 { Delay(50000); P1>>=1; P1=P1|0x80; //右移后,最左端自動(dòng)賦值0,所以需要該語(yǔ)句賦值1 } P1=0x7f; //重新賦初始值 //主循環(huán)中添加其他需要一直工作的程序 } } /*------------------------------------------------ 延時(shí)函數(shù),含有輸入?yún)?shù) unsigned int t,無(wú)返回值 unsigned int 是定義無(wú)符號(hào)整形變量,其值的范圍是 0~65535 ------------------------------------------------*/ void Delay(unsigned int t) { while(--t); } 12-查表顯示LED燈 /*----------------------------------------------- 名稱:IO口高低電平控制 論壇:www.doflye.net 編寫:shifang 日期:2009.5 修改:無(wú) 內(nèi)容:通過查表獲得1個(gè)字節(jié)的值然后賦值給P1端口,ROM允許情況可以設(shè)置更多表格 ------------------------------------------------*/ #include<reg52.h> //包含頭文件,一般情況不需要改動(dòng),頭文件包含特殊功能寄存器的定義 /*------------------------------------------------ 查表表格 ------------------------------------------------*/ unsigned char code table[]={0x7f,0xbf,0xdf,0xef, 0xf7,0xfb,0xfd,0xfe, 0xff,0xff,0x00,0x00, 0x55,0x55,0xaa,0xaa }; //rom允許情況可以無(wú)限添加 /*------------------------------------------------ 函數(shù)聲明 ------------------------------------------------*/ void Delay(unsigned int t); //函數(shù)聲明 /*------------------------------------------------ 主函數(shù) ------------------------------------------------*/ void main (void) { unsigned char i; //定義一個(gè)無(wú)符號(hào)字符型局部變量 i 取值范圍 0~255 while (1) //主循環(huán) { for(i=0;i<16;i++) //加入 for循環(huán),表明for循環(huán)大括號(hào)中的程序循環(huán) //執(zhí)行16次,表明表格中有16個(gè)元素 { P1=table[i]; Delay(30000); } //主循環(huán)中添加其他需要一直工作的程序 } } /*------------------------------------------------ 延時(shí)函數(shù),含有輸入?yún)?shù) unsigned int t,無(wú)返回值 unsigned int 是定義無(wú)符號(hào)整形變量,其值的范圍是 0~65535 ------------------------------------------------*/ void Delay(unsigned int t) { while(--t); } 13-雙燈左移右移閃爍 /*----------------------------------------------- 名稱:IO口高低電平控制 論壇:www.doflye.net 編寫:shifang 日期:2009.5 修改:無(wú) 內(nèi)容:2個(gè)led燈先左移,然后右移,然后同時(shí)閃爍 ------------------------------------------------*/ #include<reg52.h> //包含頭文件,一般情況不需要改動(dòng), //頭文件包含特殊功能寄存器的定義 void Delay(unsigned int t); //函數(shù)聲明 /*------------------------------------------------ 主函數(shù) ------------------------------------------------*/ void main (void) { unsigned char i; //定義一個(gè)無(wú)符號(hào)字符型局部變量 i //取值范圍 0~255 unsigned char temp;//定義臨時(shí)變量用于轉(zhuǎn)換 while (1) //主循環(huán) { temp=0xfc; P1=temp; for(i=0;i<7;i++) //加入 for循環(huán),表明for循環(huán)大括號(hào) //中的程序循環(huán)執(zhí)行7次 { Delay(50000); //調(diào)用延時(shí)程序;更改延時(shí)數(shù)字可 //以更改延時(shí)長(zhǎng)度;用于改變閃爍頻率 temp<<=1; temp=temp|0x01; //也可以直接把temp換成P1 P1=temp; //之所以加入temp做中間變量,轉(zhuǎn)換 //完成后直接賦值到端口,防止直接 //操作端口造成的短暫閃爍 } temp=0x3f; P1=temp; for(i=0;i<7;i++) //加入 for循環(huán),表明for循環(huán)大括號(hào) //中的程序循環(huán)執(zhí)行7次 { Delay(50000); //調(diào)用延時(shí)程序;更改延時(shí)數(shù)字可以 //更改延時(shí)長(zhǎng)度;用于改變閃爍頻率 temp>>=1; temp|=0x80; //等效于 temp=temp|0x80 P1=temp; } for(i=0;i<3;i++) //加入 for循環(huán),表明for循環(huán)大括號(hào) //中的程序循環(huán)執(zhí)行3次 { P1=0xff; Delay(50000); P1=0x00; Delay(50000); } //主循環(huán)中添加其他需要一直工作的程序 } } /*------------------------------------------------ 延時(shí)函數(shù),含有輸入?yún)?shù) unsigned int t,無(wú)返回值 unsigned int 是定義無(wú)符號(hào)整形變量,其值的范圍是 0~65535 ------------------------------------------------*/ void Delay(unsigned int t) { while(--t); } 14-花樣燈 /*----------------------------------------------- 名稱:IO口高低電平控制 論壇:www.doflye.net 編寫:shifang 日期:2009.5 修改:無(wú) 內(nèi)容:花樣燈一般有兩種方法實(shí)現(xiàn): 1、程序循環(huán)執(zhí)行 2、查表法 這里我們兩種都使用一下 ------------------------------------------------*/ #include<reg52.h> //包含頭文件,一般情況不需要改動(dòng),頭文件包含特殊功能寄存器的定義 /*------------------------------------------------ 花樣表格 ------------------------------------------------*/ unsigned char code seg[]={0x7f,0xbf,0xdf,0xef, 0xf7,0xfb,0xfd,0xfe, 0xff,0xff,0x00,0x00, 0x55,0x55,0xaa,0xaa };//rom允許情況可以無(wú)限添加 void Delay(unsigned int t); //函數(shù)聲明 /*------------------------------------------------ 主函數(shù) ------------------------------------------------*/ main() { unsigned char i; //定義一個(gè)無(wú)符號(hào)字符型 //局部變量 i 取值范圍 0~255 while(1) { P1=0xFE; //第1個(gè)LED亮 for(i=0;i<8;i++) { Delay(20000); P1 <<=1; } P1=0x7F; //第8個(gè)LED亮 for(i=0;i<8;i++) { Delay(20000); P1 >>=1; } P1=0xFE; //第1個(gè)LED亮 for(i=0;i<8;i++) { Delay(20000); P1 <<=1; P1 |=0x01; } P1=0x7F; //第8個(gè)LED亮 for(i=0;i<8;i++) { Delay(20000); P1 >>=1; P1 |=0x80; } //下面通過查表方法獲得花樣參數(shù) for(i=0;i<16;i++)//查表可以簡(jiǎn)單的顯示各種花樣 實(shí)用性更強(qiáng) { Delay(20000); P1=seg[i]; } } } /*------------------------------------------------ 延時(shí)函數(shù),含有輸入?yún)?shù) unsigned int t,無(wú)返回值 unsigned int 是定義無(wú)符號(hào)整形變量,其值的范圍是 0~65535 ------------------------------------------------*/ void Delay(unsigned int t) { while(--t); } 15-PWM調(diào)光 /*----------------------------------------------- 名稱:PWM調(diào)光 論壇:www.doflye.net 編寫:shifang 日期:2009.5 修改:無(wú) 內(nèi)容:通過PWM(脈寬調(diào)制)調(diào)節(jié)LED的亮度 ------------------------------------------------*/ #include<reg52.h> //包含頭文件,一般情況不需要改動(dòng),頭文件包含特殊功能寄存器的定義 sbit LED0=P1^0;// 用sbit 關(guān)鍵字 定義 LED到P1.0端口,LED是自己任意定義且容易記憶的符號(hào) void Delay(unsigned int t); //函數(shù)聲明 /*------------------------------------------------ 主函數(shù) ------------------------------------------------*/ void main (void) { unsigned int CYCLE=600,PWM_LOW=0;//定義周期并賦值 while (1) //主循環(huán) { LED0=1; Delay(60000); //特意加延時(shí),可以看到熄滅的過程 for(PWM_LOW=1;PWM_LOW<CYCLE;PWM_LOW++){ //PWM_LOW表示低 //電平時(shí)間,這個(gè)循環(huán)中低電平時(shí)長(zhǎng)從1累加到CYCLE(周期)的值,即600次 LED0=0; //點(diǎn)亮LED Delay(PWM_LOW);//延時(shí)長(zhǎng)度,600次循環(huán)中從1加至599 LED0=1; //熄滅LED Delay(CYCLE-PWM_LOW);//延時(shí)長(zhǎng)度,600次循環(huán)中從599減至1 } LED0=0; for(PWM_LOW=CYCLE-1;PWM_LOW>0;PWM_LOW--){ //與逐漸變亮相反的過程 LED0=0; Delay(PWM_LOW); LED0=1; Delay(CYCLE-PWM_LOW); } //主循環(huán)中添加其他需要一直工作的程序 } } /*------------------------------------------------ 延時(shí)函數(shù),含有輸入?yún)?shù) unsigned int t,無(wú)返回值 unsigned int 是定義無(wú)符號(hào)整形變量,其值的范圍是 0~65535 ------------------------------------------------*/ void Delay(unsigned int t) { while(--t); } 16-共陽(yáng)數(shù)碼管靜態(tài)顯示 /*----------------------------------------------- 名稱:?jiǎn)蝹€(gè)共陽(yáng)數(shù)碼管靜態(tài)顯示 論壇:www.doflye.net 編寫:shifang 日期:2009.5 修改:無(wú) 內(nèi)容:通過賦值給P1,讓數(shù)碼管顯示特定的字符或者數(shù)字 ------------------------------------------------*/ #include<reg52.h> //包含頭文件,一般情況不需要改動(dòng), //頭文件包含特殊功能寄存器的定義 void main (void) { P1=0xc0; //二進(jìn)制 為 1100 0000 參考數(shù)碼管排列, //可以得出0對(duì)應(yīng)的段點(diǎn)亮,1對(duì)應(yīng)的段熄滅,結(jié)果顯示數(shù)字"0" while(1) { } } 17-1個(gè)共陽(yáng)數(shù)碼管顯示變化數(shù)字 /*----------------------------------------------- 名稱:?jiǎn)蝹€(gè)共陽(yáng)數(shù)碼管動(dòng)態(tài)顯示變化數(shù)字 論壇:www.doflye.net 編寫:shifang 日期:2009.5 修改:無(wú) 內(nèi)容:通過循環(huán)賦值給P1,讓數(shù)碼管顯示特定的字符或者數(shù)字 ------------------------------------------------*/ #include<reg52.h> //包含頭文件,一般情況不需要改動(dòng),頭文件包含特殊功能寄存器的定義 unsigned char code dofly_table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x77,0x7c,0x39,0x5e,0x79,0x71,}; // 顯示數(shù)值表0-9 void Delay(unsigned int t); //函數(shù)聲明 /*------------------------------------------------ 主函數(shù) ------------------------------------------------*/ void main (void) { unsigned char i; //定義一個(gè)無(wú)符號(hào)字符型局部變量 i 取值范圍 0~255 while (1) //主循環(huán) { for(i=0;i<16;i++) //加入 for循環(huán),表明for循環(huán)大括號(hào)中的程序循環(huán)執(zhí)行10次 { P1=dofly_table[i]; //循環(huán)調(diào)用表中的數(shù)值 Delay(60000); //延時(shí),方便觀看數(shù)字變化 } //主循環(huán)中添加其他需要一直工作的程序 } }/*------------------------------------------------ 延時(shí)函數(shù),含有輸入?yún)?shù) unsigned int t,無(wú)返回值 unsigned int 是定義無(wú)符號(hào)整形變量,其值的范圍是 0~65535 ------------------------------------------------*/ void Delay(unsigned int t) { while(--t); } 18-單個(gè)數(shù)碼管模擬水流 /*----------------------------------------------- 名稱:?jiǎn)蝹€(gè)共陽(yáng)數(shù)碼管模擬水流 論壇:www.doflye.net 編寫:shifang 日期:2009.5 修改:無(wú) 內(nèi)容:通過循環(huán)賦值給P1,讓數(shù)碼管顯示特定流動(dòng)樣式 ------------------------------------------------*/ #include<reg52.h> //包含頭文件,一般情況不需要改動(dòng), //頭文件包含特殊功能寄存器的定義 void Delay(unsigned int t); //函數(shù)聲明 /*------------------------------------------------ 主函數(shù) ------------------------------------------------*/ void main (void) { unsigned char i; //定義一個(gè)無(wú)符號(hào)字符型局部變量 i 取值范圍 0~255 while (1) //主循環(huán) { P1=0xfe; for(i=0;i<6;i++) //加入 for循環(huán),表明for循環(huán)大括號(hào)中的程序循環(huán)執(zhí)行6次 { Delay(10000); P1<<=1; P1|=0x01; } //主循環(huán)中添加其他需要一直工作的程序 } } /*------------------------------------------------ 延時(shí)函數(shù),含有輸入?yún)?shù) unsigned int t,無(wú)返回值 unsigned int 是定義無(wú)符號(hào)整形變量,其值的范圍是 0~65535 ------------------------------------------------*/ void Delay(unsigned int t) { while(--t); } 19-按鍵控制單個(gè)數(shù)碼管顯示 /*----------------------------------------------- 名稱:?jiǎn)蝹€(gè)共陽(yáng)數(shù)碼管動(dòng)態(tài)顯示變化數(shù)字 論壇:www.doflye.net 編寫:shifang 日期:2009.5 修改:無(wú) 內(nèi)容:通過循環(huán)檢測(cè)P1口按鍵輸入值,然后用數(shù)碼管輸出, 沒有按鍵按下時(shí)原值不變 ------------------------------------------------*/ #include<reg52.h> //包含頭文件,一般情況不需要改動(dòng), //頭文件包含特殊功能寄存器的定義 unsigned char code dofly_table[10]={0xc0,0xf9,0xa4,0xb0,0x99, 0x92,0x82,0xf8,0x80,0x90,}; // 顯示數(shù)值表0-9 /*------------------------------------------------ 主函數(shù) ------------------------------------------------*/ void main (void) { while (1) //主循環(huán) { switch(P3) //P3口作為獨(dú)立按鍵輸入端,檢測(cè)端口電平并做如下判斷 { case 0xfe:P1=dofly_table[1];break;//0xfe = 1111 1110, //說明連接在P3.0端口的按鍵被按下,顯示對(duì)應(yīng)的數(shù)字然后跳出循環(huán) case 0xfd:P1=dofly_table[2];break;//調(diào)用表中的第三個(gè) //元素 0xa4 下標(biāo) 0 才表示數(shù)組中的第一個(gè)元素 case 0xfb:P1=dofly_table[3];break; case 0xf7:P1=dofly_table[4];break; case 0xef:P1=dofly_table[5];break; case 0xdf:P1=dofly_table[6];break; case 0xbf:P1=dofly_table[7];break; case 0x7f:P1=dofly_table[8];break; default:break; //如果都沒按下,直接跳出 } //主循環(huán)中添加其他需要一直工作的程序 } } 20-單個(gè)數(shù)碼管指示邏輯電平 /*----------------------------------------------- 名稱:?jiǎn)蝹€(gè)共陽(yáng)數(shù)碼管指示邏輯電平 論壇:www.doflye.net 編寫:shifang 日期:2009.5 修改:無(wú) 內(nèi)容:通過循環(huán)檢測(cè)P3.2口電平輸入值,然后用數(shù)碼管輸出"H" or "L", 表示該端口現(xiàn)在連接的是高電平還是低電平 |
|