搜索
bottom↓
回复: 13

STM32入门例程,驱动8位数码管显示“12345678”源程序

[复制链接]

出0入0汤圆

发表于 2008-5-22 03:13:07 | 显示全部楼层 |阅读模式
STM32,通过595串行,驱动8位数码管显示“12345678”源程序
在Mini-STM32学习板上上调试通过
(Mini-STM32学习板介绍:http://www.u-easytech.com/chinese/product.asp?id=96)
STM32技术探讨QQ:583508038

源程序ourdev_289742.rar(文件大小:589K) (原文件名:八位数码管12345678.rar)

效果照片 (原文件名:595mn.JPG)


mini板 (原文件名:mn-stm32.JPG)

出0入0汤圆

 楼主| 发表于 2008-5-24 17:10:10 | 显示全部楼层
/*--------------------------------------
//GPIO define
//Design by :Tan/yicheng
//pctanyicheng@163.com
//www.u-easytech.com
//u-easytech@163.com
//重庆优易特电子
// COPYRIGHT:重庆优易特电子
//http://www.u-easytech.com/chinese/

//FUNCTION:用595完成八位数码管显示
--------------------------------------------------------------------------         */

#include <stm32f10x_lib.h>              /* STM32F10x Library Definitions      */
#include "UET_GPIO.h"
//unsigned char  seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x8c,0xc1,0xce,0x91,0x89,0xc7,0xff};         
unsigned char  seg[]={
                        0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,
                        0x77,0x7c,0x39,0x5e,0x79,0x71,0x73,0x78,0x5c,0x54,
                        0x40,0x81,0x88,0x3e,0x70,0x00
                                                } ;
                                                //0,1,2,3,4,5,6,7,8,9,
                                  //A,b,C,d,E,F,P,t,o,n,
                                 //-,~,_,U,r,SP,
                                                 
//unsigned char  DAT[]={0x7f,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};               //位选择
unsigned char BitSelect_Code[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};   //因为ULN2803驱动反相,所以位码要用共阳极的位码
                                                                          //COM1 COM2 COM3 COM4          COM5 COM6 COM7 COM8
                                                                                                                                                 // B0   B1  B2     B3    B4   B5   B6   B7
unsigned  char  Disp_buffer[]={0,1,2,3,4,5,6,7};                           //段缓冲区


unsigned  char          Bit_NO=0           ;                        //          选择第Bit_NO位数码管
unsigned  char          Buffer_NO=0;                                               //     缓冲区的第Buffer_NO

u32 LED_DATA=01234567;


#define SER(x)                 GPIOA->ODR=(GPIOA->ODR&~GPIO_Pin_7)              | (x ? GPIO_Pin_7 : 0)
#define SCK(x)                  GPIOA->ODR=(GPIOA->ODR&~GPIO_Pin_5)              | (x ? GPIO_Pin_5 : 0)
#define RCK(x)                  GPIOA->ODR=(GPIOA->ODR&~GPIO_Pin_6)              | (x ? GPIO_Pin_6 : 0)


/*******************************************************************************
* Function Name  :  void WR_595(unsigned char segdata)
* Description    : 595串行输入
* Input          : 段码
* Output         : None
* Return         : None
*******************************************************************************/
void WR_595(unsigned char segdata) //输入一字节数码管数据进595
{
  unsigned char i,temp;
  temp=segdata;
  for(i=0;i<8;i++)           //循环移入8位数据,
  {               
  SCK(0);
  if(temp&0x80)                  // 取数码的最高位
   SER(1);
   else
   SER(0);
  temp=temp<<1;
  SCK(1);         //上升沿把一位数据移入595
  }
}

/*******************************************************************************
* Function Name  : void OUT_595(void)
* Description    : 595锁存输出
* Input          : 段码
* Output         : None
* Return         : None
*******************************************************************************/
void OUT_595(void)          //上升沿将数据送到输出锁存器
{  unsigned i;
                  
        RCK(0);
for(i=0;i<10;i++)        ;
        RCK(1);
        RCK(0);
}

/*******************************************************************************
* Function Name  : void LED_Brush(u32 LED_DATA)
* Description    : 数码管缓冲数据刷新
* Input          : u32 LED_DATA
* Output         : None
* Return         : None
*******************************************************************************/

void LED_Brush(u32 LED_DATA)
{
   
  Disp_buffer[0]=LED_DATA/1000%10;
  Disp_buffer[1]=LED_DATA/100%10;                      
  Disp_buffer[2]=LED_DATA/10%10;
  Disp_buffer[3]=LED_DATA%10;
  Disp_buffer[4]=LED_DATA/10000000;
  Disp_buffer[5]=LED_DATA/1000000%10;                      
  Disp_buffer[6]=LED_DATA/100000%10;
  Disp_buffer[7]=LED_DATA/10000%10;
}
/*******************************************************************************
* Function Name  : void Display(void)
* Description    : 显示
* Input          : None
* Output         : None
* Return         : None
*******************************************************************************/

void Display(void)
{
     LED_Brush(12345678);//调用显示函数
     WR_595(BitSelect_Code[Bit_NO]);                        // 位码
     WR_595(seg[Disp_buffer[Buffer_NO]]);        //段码
         OUT_595();       
         Bit_NO++;
         Buffer_NO++;
         if( Buffer_NO>7) Buffer_NO=0;
         if(Bit_NO>7)Bit_NO=0;       


}

出0入0汤圆

发表于 2008-8-11 13:47:28 | 显示全部楼层
以下蓝色文字由版主:bluelucky 于:2008-08-11,13:47:28 加入。
<font color=black>请发贴人注意:
本贴放在这分区不合适,即将移走
原来分区:[1032]ARM技术论坛
即将移去的分区:[3011]Cortex-M3技术讨论区
移动执行时间:自本贴发表0小时后

任何的疑问或咨询,请可随时联系站长。谢谢你的支持!
</font>

出0入0汤圆

发表于 2008-8-30 14:39:27 | 显示全部楼层
谢谢

出0入0汤圆

发表于 2008-9-22 12:34:44 | 显示全部楼层
支持一下

出0入0汤圆

发表于 2011-5-5 09:05:17 | 显示全部楼层
顶dd

出0入0汤圆

发表于 2011-5-5 09:52:25 | 显示全部楼层
应该有5根线呀,数据,时钟,锁存,电源,地
4根线也可以吗?

出0入0汤圆

发表于 2011-5-5 09:58:07 | 显示全部楼层
对不起,看错了。是5根线。

出0入0汤圆

发表于 2011-11-6 09:50:38 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-10-10 10:39:06 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-10-13 19:00:28 | 显示全部楼层
顶起!!!!!!!

出0入0汤圆

发表于 2012-10-15 08:41:22 | 显示全部楼层
顶呱呱!!!!!

出0入0汤圆

发表于 2012-12-10 16:37:03 | 显示全部楼层
学习了~~

出0入0汤圆

发表于 2013-11-1 02:03:06 | 显示全部楼层
正在学习595驱动数据管呢,谢谢楼主……
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-19 22:21

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表