1、
题目:P1口接8个发光二极管作为输出指示,编程实现是8个发光二极管按一定的频率亮、灭闪烁。
代码:
#include<reg51.h> //特殊功能寄存器的声明
void delay(unsigned int d) //延时函数
{
while(--d>0);
}
void main()
{
while(1) //代表永真
{
P1=0xff; //灭
delay(10000);
P1=0x00;
delay(10000); //亮
}
}
电路图
2、流水灯设计
P1口接8个发光二极管作为输出指示,编程实现8个灯(每次点亮两个灯)从低到高(即从D1到D8,左循环)流水灯的显示闪烁。
代码
#include<reg51.h>
void delay(unsigned int d)
{
while(--d>0);
}
void main()
{
unsigned char m=3;
unsigned char n=252;
unsigned char i=0;
while(1)
{
if(i==7)
{
P1=126;
n=252;
m=3;
i=0;
delay(50000);
}
else
{
P1=n;
n=n-m;
m=2*m;
i=i+1;
delay(50000);
}
}
}
电路图
3、
题目:在Proteus环境下,设计基于51单片机(采用AT89C51)控制电路。利用51单片机的P1口和P3口作为两位共阴极LED数码管静态显示的控制口,编程实现使两个LED显示器静态轮流显示“12”、“‒ ‒” 和 “Ab”,延时时间采用软件延时。
代码:
#include<reg51.h>
#define uchar unsigned char
uchar code table[]={0x06,0x5B,0x40,0x40,0x77,0x7C};
void delay(unsigned int d)
{
while(--d>0);
}
void display(unsigned int a,unsigned int b)
{
P1=table[a];
P3=table[b];
}
void main()
{
while(1)
{
display(0,1);
delay(900000);
display(2,3);
delay(900000);
display(4,5);
delay(900000);
}
}
电路图:
4、数码管动态显示
题目:在Proteus环境下,设计基于51单片机(采用AT89C51)控制电路。通过单片机的P1口作为段口,P3口为位口构成6位LED动态显示的硬件电路,编程实现在6位LED显示器上动态显示“123456”。
代码:
#include<reg51.h>
#define uchar unsigned char
uchar code table[]={0x06,0x5b,0x4f,0x66,0x6d,0x7d};
void delay(unsigned int d)
{
while(--d>0);
}
void display()
{
uchar bitcode,i;
bitcode=0xfe;
for(i=0;i<6;i++)
{
P3=bitcode;
P1=table[i];
delay(150);
bitcode=bitcode<<1;
bitcode=bitcode|0x01;
}
}
void main(void)
{
while(1)
{
display();
}
}
电路图
5、编程实现:开始是所有灯都亮,按下S1键,灯变为500ms闪烁,再按一下,变为全亮。(相当于S1为一个控制开关,控制着灯的亮、灭闪烁)
代码
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit S1=P3^2; //输出按键 位定义
bit key=0; //定义位,做选择标志
void dlxms(uint xms)
{
uint t1,t2;
for(t1=0;t1<xms;t1++)
for(t2=0;t2<110;t2++);
}
void keyscan()//键扫描
{
S1=1; //读取时先写1
if(S1==0)
{
dlxms(10); //去抖动
if(S1==0)
{
dlxms(10);
key=~key;
while(S1==0); //判断按键是否抬起。
}
}
}
void main()
{
P1=0x00; //灯全亮
while(1)
{
keyscan();
if(key==0)
{
P1=0x00;
}
else{
dlxms(500);
P1=~P1;
}
}
}
电路图
所有代码和电路图:https://download.csdn.net/download/qq_43556844/15087276