原创 基于sep4020的数码管显示(ADS环境下)

2009-12-15 08:50 3460 4 4 分类: MCU/ 嵌入式

基于sep4020ADS的数码管显示<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


自己闲来无事,跑到华龙买了些器件回来,自己搭建电路玩玩,那地方好黑啊,^_^!!!!!。


 


数码管的驱动方式有静态驱动、动态驱动和串并转换驱动


 


静态驱动:只适用于数码管比较少的情况,当数码管的数量太多时,会增加嵌入式处理器的负担,也极大的浪费资源,同时电路的可靠性也得不到保证


动态驱动:动态驱动减轻了嵌入式处理器的负担,但是同时也增加了很多的集成电路芯片,


无形中提高了电路的成本和布线制版的难度


串并转换驱动:是一种时间换空间的方式,也是比较适用嵌入式的一种方式


接下来,我来做一个简单的串并转换驱动(从搭建电路到和开发板联机调试)


串并转换的原理图:


点击看大图


以上的图是我用画图工具画的,有点丑,担待点 ^_^


上面的图中用到的是一块74LV164的串并转换芯片,8位的串进/并出移位寄存器


在每个时钟的上升沿(cp由低到高),将一位数据从Dsa或者Dsb输入


点击看大图


cc16dca9-f07d-451b-beae-ccba3db3d8dc.gif


我用的数码管是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联机调试下出来的结果,嘿嘿!!!!


0b79f5c5-8801-476b-8e20-74c4b4931d06.gif

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
4
关闭 站长推荐上一条 /3 下一条