本系列教程以AVR单片机为对象,介绍单片机的快速开发方法。
参考教材:《单片机技术及应用项目教程》 栾秋平 电子工业出版社 2019.6 第1版
本文介绍“数码管”的静态显示和动态显示。
一、人眼的视觉暂留效应
二、数码管的静态显示
三、74HC138内部工作原理
输入 |
输出 |
||||||||||||
OE1 |
OE2 |
OE3 |
A0 |
A1 |
A2 |
Y0 |
Y1 |
Y2 |
Y3 |
Y4 |
Y5 |
Y6 |
Y7 |
L |
X |
X |
X |
X |
X |
H |
H |
H |
H |
H |
H |
H |
H |
X |
H |
X |
X |
X |
X |
H |
H |
H |
H |
H |
H |
H |
H |
X |
X |
H |
X |
X |
X |
H |
H |
H |
H |
H |
H |
H |
H |
H |
L |
L |
L |
L |
L |
L |
H |
H |
H |
H |
H |
H |
H |
H |
L |
L |
H |
L |
L |
H |
L |
H |
H |
H |
H |
H |
H |
H |
L |
L |
L |
H |
L |
H |
H |
L |
H |
H |
H |
H |
H |
H |
L |
L |
H |
H |
L |
H |
H |
H |
L |
H |
H |
H |
H |
H |
L |
L |
L |
L |
H |
H |
H |
H |
H |
L |
H |
H |
H |
H |
L |
L |
H |
L |
H |
H |
H |
H |
H |
H |
L |
H |
H |
H |
L |
L |
L |
H |
H |
H |
H |
H |
H |
H |
H |
L |
H |
H |
L |
L |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
L |
A2 |
A1 |
A0 |
二进制 |
十进制 |
||
L |
L |
L |
0 |
0 |
0 |
0 |
L |
L |
H |
0 |
0 |
1 |
1 |
L |
H |
L |
0 |
1 |
0 |
2 |
L |
H |
H |
0 |
1 |
1 |
3 |
H |
L |
L |
1 |
0 |
0 |
4 |
H |
L |
H |
1 |
0 |
1 |
5 |
H |
H |
L |
1 |
1 |
0 |
6 |
H |
H |
H |
1 |
1 |
1 |
7 |
四、数码管的动态显示
#ifndef NIXIETUBE_CONFIG_H_
#define NIXIETUBE_CONFIG_H_
#define NIXIETUBE_PORT PORTB
#define NIXIETUBE_DDR DDRB
#define NIXIETUBE_HC595_CLOCK BIT1
#define NIXIETUBE_HC595_CS BIT0
#define NIXIETUBE_HC595_MOSI BIT2
#define NIXIETUBE_A0 BIT3
#define NIXIETUBE_A1 BIT4
#define NIXIETUBE_A2 BIT5
#endif /* NIXIETUBE_CONFIG_H_ */
//加入包含文件
#include "../include.h"
//定义系统常量
//定义全局变量
//主程序
int main(void)
{
//定义局部变量
uint8 i, j;
//目标板初始化,该函数会自动初始化相应的外设文件
TARGET_Init();
//初始化全局变量
//在上电时,执行的相应操作
//后台主循环
while(1)
{
/*
**********************************
在这里完成自己的项目逻辑
**********************************
*/
for (j = 0; j < 200; j++)
{
for (i = 0; i < 8; i++)
{
NIXIETUBE_SelectLED(i);
NIXIETUBE_DrawLED(i, 0);
TARGET_Delayms(1, 1);
}
}
for (j = 0; j < 200; j++)
{
for (i = 0; i < 8; i++)
{
NIXIETUBE_SelectLED(i);
NIXIETUBE_DrawLED(8 + i, 0);
TARGET_Delayms(1, 1);
}
}
/*
**********************************
喂狗语句,大部分工程项目都不应去除
**********************************
*/
#if INTERNAL_PERIPHERAL_WDT_MODE != 0
TARGET_WatchDogReset();
#endif
}
return 0; //永不执行
}
任何问题,只需在此文章的评论处留言即可,我将尽力解答,不要试图采用其它的联系方式,我一概不理会。
原创性文章,转载请注明出处CSDN:http://blog.csdn.net/qingwufeiyang12346。