atmega48学习教程之1.项目一跑马灯

更新时间:2023-06-12 09:38:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

单片机原理与 接口技术广州大学自动化系 肖忠1

一、设计目标

任务一:跑马灯 (LED循环显示)

二、典型硬件电路

典型 外围电路 单片机 最小系统3

二、典型硬件电路下 载 口

单片机 系统

外围电路4

三、知识点 1-ATmega48及引脚正常工作需要: 电源、时钟、复位;另:23个IO B口:0~7 C口:0~6 D口:0~7

三、知识点 2-电源电路(1)线性电源 降压-整流-滤波-稳压(输出5V直流) (2)开关电源 ----电力电子技术的知识(3)现成的电源模块—(暂不研究)6

三、知识点 3-时钟电路(1)外部晶振电路 XTAL2、XTAL1为10、9 引脚;C1、C2约为22pF; 晶体振荡器为最大为16MHz (2)内部RC,即这部分电路不需要任何外 围器件7

三、知识点 4-复位电路系统复位引脚为/RESET,低电平复位(1)外部复位电路 (2)内部复位,即这 部分电路不需要任何 外围器件也能稳定工 作8

三、知识点 5-ISP电路ISP是In-System-Programming的英文缩 写,含义是“在系统编程” AVR ISP接口 如右图所示

三、知识点 5-ISP电路

三、知识点 6-LED驱动电路共 阳 极 共 阴 极

三、知识点 7-ATmega48IO端口<1>、端口寄存器及配置作为通用数字I/O口使用时,每个引脚都具有 3 个寄 存器位: DDRxn PORTxn PINxnDDRxn PORTxn I/O 输出 输出 输入 输入 上拉电阻 无 无 无 有 说明 输出低电平 输出高电平 高阻态 带上拉的输入12

1 1 0 0

0 1 0 1

三、知识点 7-ATmega48IO端口<2>、端口配置实例(1) D口配置为输出,初值全 为高 DDRD=0xFF; //方向 PORTD=0xFF; :

(2) B口高4位为不带上拉 的输入口,低4位为输 出口 DDRB=0x0F; PORTB=0x00;

(3) B口配置为带上拉的输入口 DDRB =0x00; PORTB =0xFF; i = PINB;13

三、知识点 7-ATmega48IO端口如图所示,跑马灯用到了D口,需定义D口为输出, 初始值为1,即灯灭。

DDRD = 0xFF; PORTD=0xFF;14

四、软件设计 1-流程图D口初始化 i=0

i<8Y

N

PORTD = ~(1<<i); 延时; i自增;15

四、软件设计 1-流程图1、端口初始化(D为输出); 2、i = 0; 3、若 i < 8 (1) PORTD = ~(1<<i); (2) 延时; (3) i++; 4、goto 216

四、软件设计 2-代码1#include "iom48v.h" /*软件延时函数*/ void delay_ms(unsigned char i) { unsigned char a, b; for (a = 0; a < i; a++) for (b = 1; b; b++ ); }17

四、软件设计 2-代码2void io_init(void) { DDRB = 0x00; PORTB = 0xFF; DDRC = 0x00; PORTC = 0xFF; DDRD = 0xFF; PORTD = 0xFF; } /*IO口初始化函数*/ //方向输入 //打开上拉 //方向输入 //打开上拉 //方向输出 //高电平18

四、软件设计 2-代码3void main(void) { unsigned char i; io_init(); while (1) { for (i = 0; i < 8; i ++) { PORTD = ~(1 << i); delay_ms(200); } } }

五、电路仿真

六、实物演示

本文来源:https://www.bwwdw.com/article/awb1.html

Top