AVR第7课:动态数码管

以下是动态数码管的电路图。

代码:动态数码管。

/*
*author:ChenLu
*date:2014.11.20
*/

//input the head file so that the program can work normally
//iom16v---know the register
//macros---know the BIT(x)
#include<iom16v.h>
#include<macros.h>
//use those can make your study very conveninet
#define uint unsigned int
#define uchar unsigned char

//display methods
void initSystem();
void delay();

//display the variable data
uchar flag;
uchar table[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07};

//the main function
void main()
{
 	//init your system
	initSystem();
	while(1)
	{
	  	//start your function,and this is core solution
		for(flag=0;flag<8;flag++)
		{
		    PORTC = ~(PORTC | BIT(0));
		    PORTA = table[flag];
		    PORTB = ~BIT(flag);
		    PORTC = PORTC | BIT(0);
		    delay();
		}	

	}
}

//the method of init system
void initSystem()
{
 	//control PA
	DDRA = 0xFF;
	PORTA = table[0];
	//to make PB port output
	DDRB = 0xFF;
	//to make PB port output high level
	PORTB = 0xFE;

	//control PC0
	DDRC = DDRC | BIT(0);
	PORTC = PORTC | BIT(0);
}

//the sub method of delay
void delay()
{
 	uint i,j;
 	for(i=0;i<10;i++)
	  for(j=0;j<5;j++);
}

不断改变delay()函数中变量的值,会出现不一样的效果。主要是熟悉AVR单片机IO口的使用。

时间: 2024-11-04 09:18:33

AVR第7课:动态数码管的相关文章

AVR第6课:数码管显示

这一节我们将讲解数码管的使用,由于原理在学51单片机的时候已经学习过,在这里只需要利用前面学习的对AVR单片机的IO口操作方式就可以自己写练习题了. 下面的数码管是共阳极数码管. 代码:显示从0到9. /* *author:ChenLu *date:2014.11.20 */ //input the head file so that the program can work normally //iom16v---know the register //macros---know the BI

一天:51单片机从入门到一个动态数码管显示数字控制

最近进的公司是一个做路由器的..很多嵌入式工程师.有个项目( 智能空调控制)是跟嵌入式工程师对接,我做APP+PHP..他做服务器.我们用MQTT(由于emqtt是用erlang写的,所以我也学了点erlang,后期有时间分享一下,这个语言很好,很强大.特别抽象).这个项目激发了我对嵌入式的兴趣,于是乎.开始从51单片机搞起了..所以就有了这篇文章...今天搞得东西挺多.我最近都是笔记形式,不想以前写的那么详细...因为学的东西太多,白天在公司搞项目,没时间写太具体... 今天学了什么呢? >k

C++--第27课 - 动态类型识别

第27课 - 动态类型识别 问题:下面的程序有问题吗? class Parent { public: virtual -Parent() { } }; class Child : public Parent { }; void test(Parent* p) { Child* c = (Child*)p;  //将父类强制转化为子类 } 1. 动态类型 由于基类指针可以直接指向派生类对象,因此可能存在指针所指类型与具体指向的对象类型不同的情况. (p指向的静态类型为Parent)Parent*

AVR第3课:点亮发光二极管

和51单片机不同,51单片机的驱动能力比较弱,而AVR单片机的驱动能力比较强,可以直接驱动继电器和发光二极管,所以不需要外接上拉电阻.51单片机的引脚电流只有几十微安,而AVR单片机有40mA左右.电路图如下所示. 代码1:先让所有灯灭,延时一会儿,再让所有灯亮,再延时,这样一直循环. <span style="font-size:18px;">#include <iom16v.h> #include <macros.h> #define uchar

Java反射第二课 动态加载类

在第一节课中我们讲的第三种方法 Class.forName("类的全称"); 不仅表示了类的类类型,还代表了动态加载类 请大家区分编译,运行 编译时刻加载类是静态加载类,运行时刻加载类是动态加载类 现在的开发工具比如eclipse把编译过程给隐藏了 下面做一个实验 比如用记事本编写下面的Office.java文件 class Office { public static void main(String[] args) { if(("Word").equals(ar

Struts2学习第七课 动态方法调用

动态方法调用:通过url动态调用Action中的方法. action声明: <package name="struts-app2" namespace="/" extends="struts-default"> <action name="Product" class="org.simpleit.app.Product"> </package> URI: --/strut

AVR第1课:准备阶段

如果你学过MCS-51单片机,那么你就可以学习AVR单片机了,从MCS-51过度到AVR比较好,如果直接跳过MCS-51而直接学AVR单片机的话,有点难度,而且那样的话不便于你对两种单片机的选择和分析. 学习方法:先学习理论知识,在理论知识里面你至少要了解到AVR单片机和MCS-51单片机的不同之处,并且了解他的基本使用方法,最好是能够学习好并掌握,因为有了MCS-51的底子,学习起来并没有那么困难:再学习做实验来检验我们学习的理论知识,当然是用C语言编程啦,用汇编的话效率太低了,当然你需要一块

AVR第8课:独立按键

值得注意的是,独立按键的检测原理和消抖处理在51单片机中已经讲过了,这些东西都不会变.只是AVR单片机的IO口操作方式改变了.在AVR中,检测方式是:首先让将和独立按键相连接的IO口设置成输出高电平,接着将他们设置成输入模式,再然后检测这些IO口的值.电路图如下所示. 代码1:检测是哪一个按键被按下.这里不需要用到消抖动处理. #include<iom16v.h> #include<macros.h> #define uint unsigned int #define uchar

AVR第2课:配置AVR开发环境

1.AVR单片机C语言编程开发环境:ICCAVR,用于编写程序和编译.下载地址:http://www.iccavr.com. 2.AVR单片机烧写程序环境:(我用的是USB ISP免驱动下载线,而且也是用的转换模块)PROGISP,网上可以下载,自己找.用这个软件的原因是之前我用AVR STDIO4总是出现Connected failed-Seclect AVR Program.最终才找到这个解决办法,希望遇到相同问题的你也可以用这个解决自己遇到的难题. 前一段时间到其他地方客串做了一些管理工作