目录
备赛小tips:
1.熟悉板子上的各个模块,先分别实现各个模块的功能。这个直接搜b站搜小蜜蜂老师,一节课一节课跟着学,小蜜蜂老师yyds。这个阶段的时间控制在一个月以内,如果基础比较好半个月就够了。
2.花半个月的时间,把历年省赛题刷个遍。
3.积累客观题,这个多看看历年真题和网上的数模电基础知识就可以了,我当时大概有一周时间在准备这个。
概述
一、LED指示灯的基本控制
8路LED指示灯闪烁3遍然后熄灭,接着依次点亮LED指示灯,最后依次熄灭指示灯,程序循环实现上述功能。
1、74HC138 三八译码器
4 2 1
2、74HC573 锁存器
高:=中间线链接
低:数据锁存
3、74HC02 或非门(与:* | 或:+)
WR低,Y4C高——>Y4低(138低有效)——>CBA=100(C为高位)
4、LED 跑马灯(如3)
5、建工程
1、new project (新建文件夹)
2、AT89C52
3、output HEX File
4、New 再保存
5、add file
6、程序基本设计
1、测试灯(闪烁):
#include "reg52.h"
sbit HC138_A = P2^5;
sbit HC138_B = P2^6;
sbit HC138_C = P2^7;//定义引脚
void Delay(unsigned int t)//延时函数
{
while(t--);
while(t--);
}
void LEDRunning()
{
HC138_C = 1;
HC138_B = 0;
HC138_A = 0;//选Y4:CBA = 100(C为高位);(Y4C得高)
P0 = 0x00;//D1~8为低,LED点亮
Delay(60000);
Delay(60000);//延时
P0 = 0xff;//D1~8为高,LED熄灭
Delay(60000);
Delay(60000);//延时
}
void main()//主函数
{
while(1)
{
LEDRunning();
}
}
为什么使用sbit:想独立使用 IO口,需先进行位定义,如:sbit P32=P3^2; 别忘了分号,之后就使用 P32 就代表 P3^2口了,^ 在 C语言里面是运算符,跟位定义冲突,所以,要先进行位定义,在程序里出现 ^ ,是 按位异或 运算。
2、完成题目:
#include "reg52.h"
sbit HC138_A = P2^5;
sbit HC138_B = P2^6;
sbit HC138_C = P2^7;//定义引脚
void Delay(unsigned int t)//延时函数
{
while(t--);
while(t--);
}
void LEDRunning()
{
unsigned char i;
HC138_C = 1;
HC138_B = 0;
HC138_A = 0;//选Y4:CBA = 100(C为高位);(Y4C得高)
for(i = 0; i < 3; i++)//LED指示灯闪烁3遍,然后熄灭
{
P0 = 0x00;//D1~8为低,LED点亮
Delay(60000);
Delay(60000);//延时
P0 = 0xff;//D1~8为高,LED熄灭
Delay(60000);
Delay(60000);//延时
}
for (i = 1; i <= 8; i++)//然后熄灭,接着依次点亮LED指示灯(i初始不能为0->移0位)
{
P0 = 0xff << i;//0xff:全灭(然后熄灭) 移1位,补充一个0(亮)......
Delay(60000);
Delay(60000);//延时
}
for (i = 1; i <= 8; i++)//最后依次熄灭指示灯
{
P0 = ~(0xff << i);//取反
Delay(60000);
Delay(60000);//延时
}
}
void main()//主函数
{
while(1)
{
LEDRunning();
}
}