基于sep4020的ADS的数码管显示<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
自己闲来无事,跑到华龙买了些器件回来,自己搭建电路玩玩,那地方好黑啊,^_^!!!!!。
数码管的驱动方式有静态驱动、动态驱动和串并转换驱动
静态驱动:只适用于数码管比较少的情况,当数码管的数量太多时,会增加嵌入式处理器的负担,也极大的浪费资源,同时电路的可靠性也得不到保证
动态驱动:动态驱动减轻了嵌入式处理器的负担,但是同时也增加了很多的集成电路芯片,
无形中提高了电路的成本和布线制版的难度
串并转换驱动:是一种时间换空间的方式,也是比较适用嵌入式的一种方式
接下来,我来做一个简单的串并转换驱动(从搭建电路到和开发板联机调试)
串并转换的原理图:
以上的图是我用画图工具画的,有点丑,担待点 ^_^!
上面的图中用到的是一块74LV164的串并转换芯片,8位的串进/并出移位寄存器
在每个时钟的上升沿(cp由低到高),将一位数据从Dsa或者Dsb输入
我用的数码管是0.36英寸的SM420367段数码管
该数码管有10个引脚,找这10个引脚各自对应的功能真是一件麻烦事,最后我找到了一个无敌猛男网址,强的一塌糊涂,和大家分享下:
http://www.led-china.com/Chinese/digit/Single.asp
每款数码管都有对用的规格书,cool~~~~
我这款共阴极的数码管引脚图如下:
接下来就是写程序、联机调试
这是我写的一个简单的程序,程序的目的就是显示一个0:
#include<stdio.h>
#include "sep4020.h"
#include "intc.h"
#define RSTH *(RP)GPIO_PORTB_DATA |=0x01
#define RSTL *(RP)GPIO_PORTB_DATA &=(~0x01)
#define CP_H *(RP)GPIO_PORTB_DATA |=0x02
#define CP_L *(RP)GPIO_PORTB_DATA &=(~0x02)
#define DATA_H *(RP)GPIO_PORTB_DATA |=0x04
#define DATA_L *(RP)GPIO_PORTB_DATA &=(~0x04)
void delay(int i)
{
while(i--);
}
int main()
{
int i="0";
*(RP)GPIO_PORTB_SEL |=0x07;//通用用途
*(RP)GPIO_PORTB_DIR &=(~0x07);//输出
//先复位
RSTL;
CP_L;
delay(40);
RSTH;
for(i=0;i<8;i++)
{
if(i==0)
{
CP_L;
delay(20);
CP_H;
*(RP)GPIO_PORTB_DATA &=(~0x04);
}
else
{
CP_L;
delay(20);
CP_H;
*(RP)GPIO_PORTB_DATA |=0x04;
}
}
}
下面的图就是在ADS联机调试下出来的结果,嘿嘿!!!!
文章评论(0条评论)
登录后参与讨论