文章目录
- 1.测试代码照片
- 2.流水灯视频
- 3.独立按键视频(点亮4个灯)
- 4.独立按键视频(思考点亮8个灯)
- 5.数码管显示"00000"或者"111111"(照片或者视频)
- 6.数码管显示"123456"(照片或者视频)
- 7.数码管显示"11.12.13"(照片或者视频)
- 8.数码管显示"HH8800"(照片或者视频)
1.测试代码照片
测试
2.流水灯视频
流水灯
c
#include <reg51.h>
#define uchar unsigned char
uchar a;
void delay(unsigned int time) {
unsigned int i, j;
for (i = 0; i < time; i++)
for (j = 0; j < 120; j++);
}
void main() {
P1 = 0xfe;
while (1) {
a = P1;
a = a << 1;
a = a | 0x01;
delay(200);
if (a == 0xff)
{
a = 0xfe;
}
P1 = a;
}
}
3.独立按键视频(点亮4个灯)
4个灯
c
#include <REGX51.H>
sbit KEY1 = P3^4; // 按键连接
sbit KEY2 = P3^5; // 按键连接
sbit KEY3 = P3^6; // 按键连接
sbit KEY4 = P3^7; // 按键连接
sbit LED1 = P1^0; // LED连接
sbit LED2 = P1^2; // LED连接
sbit LED3 = P1^4; // LED连接
sbit LED4 = P1^6; // LED连接
// 延时函数
void delay_ms(unsigned int ms)
{
unsigned int i, j;
for(i = 0; i < ms; i++)
for(j = 0; j < 123; j++);
}
void main() {
P0 = 0xFF; // 初始所有LED熄灭(因低电平点亮)
while(1)
{
if(KEY1 == 0) // 按键按下[[
{
delay_ms(10); // 消抖
if(KEY1 == 0) // 再次确认按下
{
while(!KEY1); // 等待按键松开,防止连发
LED1 = ~LED1;// 控制小灯
}
}
if(KEY2 == 0) // 按键按下
{
delay_ms(10); // 消抖
if(KEY2 == 0) // 再次确认按下
{
while(!KEY2); // 等待按键松开,防止连发
LED2 = ~LED2;// 控制小灯
}
}
if(KEY3 == 0) // 按键按下
{
delay_ms(10); // 消抖
if(KEY3 == 0) // 再次确认按下
{
while(!KEY3); // 等待按键松开,防止连发
LED3 = ~LED3;// 控制小灯
}
}
if(KEY4 == 0) // 按键按下
{
delay_ms(10); // 消抖
if(KEY4 == 0) // 再次确认按下
{
while(!KEY4); // 等待按键松开,防止连发
LED4 = ~LED4;// 控制小灯
}
}
}
}
4.独立按键视频(思考点亮8个灯)
8个灯
5.数码管显示"00000"或者"111111"(照片或者视频)
000000
6.数码管显示"123456"(照片或者视频)
123456
7.数码管显示"11.12.13"(照片或者视频)
111213
8.数码管显示"HH8800"(照片或者视频)
HH8800
c
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit dula = P2^6; // 段选锁存器
sbit wela = P2^7; // 位选锁存器
// 数码管段码表:0~9 + H
uchar code TableDula[] = {
0x3F, // 0
0x06, // 1
0x5B, // 2
0x4F, // 3
0x66, // 4
0x6D, // 5
0x7D, // 6
0x07, // 7
0x7F, // 8
0x6F, // 9
0x76 // H 新增:字母H的段码
};
// 位选:第1~6位数码管
uchar code TableWela[] = {
0xfe, // 第1位
0xfd, // 第2位
0xfb, // 第3位
0xf7, // 第4位
0xef, // 第5位
0xdf // 第6位
};
// 延时函数
void delay(uchar x)
{
uchar j;
while(x--)
{
for(j = 0; j < 125; j++);
}
}
void main() {
uchar i;
// 6位数码管显示:H H 8 8 0 0
uchar displayData[6] = {10, 10, 8, 8, 0, 0};
// 不需要小数点
uchar pointFlag[6] = {0, 0, 0, 0, 0, 0};
while(1) {
for(i = 0; i < 6; i++) {
P0 = 0x00;
dula = 0;
wela = 0;
// 选中第i位数码管
P0 = TableWela[i];
wela = 1;
wela = 0;
// 输出段码
P0 = TableDula[displayData[i]];
dula = 1;
dula = 0;
delay(2);
}
}
}