一、发光二极管
1.利用位操作打开第一个发光二极管
#include
sbit D1=P1^0; //单片机P1口置0 void main() {
D1=0; }
2.利用总线操作打开第二个发光二极管
#include
P1=0xfd; //单片机P1有8个口,设为11111101,设置第二个亮 }
3.使发光二极管闪烁
#include
void delay(unsigned int b) //当b=51180时,亮的持续时间为0.5s。 {
while(b--); }
void main() {
while(1) //一般情况下,我们默认程序会循环
{ //当我们想让程序停在某一步的时候,while(1); a=51180; p1_1=0; delay(a); p1_1=1; delay(a); }
}
4.流水灯 法一:
#include
unsigned int a,b;
void delay(unsigned int b) {
while(b--); }
void main() {
while(1) {
a=51180; p1_0=0; delay(a); p1_0=1; p1_1=0; delay(a); p1_1=1; p1_2=0; delay(a); p1_2=1; p1_3=0; delay(a); p1_3=1; p1_4=0;
}
}
delay(a); p1_4=1; p1_5=0; delay(a); p1_5=1; p1_6=0; delay(a); p1_6=1; p1_7=0; delay(a); p1_7=1;
法二:利用循环移位的方法
例如:1111 1110--1111 1101-1111 1011,这是循环左移 #include
#include
void delay(unsigned int b) {
while(b--); }
void main() { temp=0xfe; P1=temp;
/*这边可能有疑问,那就是P1根本没定义,怎么可以直接用呢,原因是,P1相当于特殊字符,就是代表了单片机上的P1*/
//类似的还有很多,例如:P2^3=0,表示蜂鸣器发声,可以通过查看
a=51180;
temp=_crol_(temp,1); delay(51180); P1=temp; }
}
5.流水灯,从上到下,从下到上循环亮
#include
while(b--); }
void repeat() {
temp=0xfe; P1=temp;
for(i=7;i>0;i--) {
delay(51180);
temp=_crol_(temp,1); P1=temp; }
for(j=7;j>0;j--) {
delay(51180);
temp=_cror_(temp,1); P1=temp; } }
void main() { while(1) {
repeat(); } }
二、数码管 1.数码管的显示
#include
sbit dula=P2^6; //控制段选 sbit wela=P2^7; //控制位选
void main() {
wela=1; //打开位选
P0=0xfe; //选择1111 1110,选择第一个数码管。注意只有6个数码 //管,所以前两位必须11 wela=0; //关闭位选,此时即便改变P0想重新选择数码管也无用
dula=1; //打开段选
P0=0x06; //设置数码管的显示数字 dula=0; //关闭位选
while(1); //让数码管持续显示,当然也可以用delay }
2.让数码管1-2-3-4...显示 #include
unsigned char code table[]={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71};
void delay(unsigned int z)