本系列教程以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。