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