ST32和51单片机控制74HC595Q驱动3位数码管资料_驱动代码+原理图+原理图库+封装库
Altium Designer画的原理图和PCB图封装库如下:(51hei附件中可下载工程文件)
单片机源程序如下:
- //2位数码管测试代码
- //樊川技术
- //http://shop342679635.taobao.com
- //实验现象:3位数码管轮流显示数码管编码表里面的字符
- #include "led.h"
- #include "delay.h"
- #include "sys.h"
- #include "HC595.h"
- unsigned char Qian_Wei,Bai_Wei,Shi_Wei,Ge_Wei; //千位,百位,十位,个位
- //数码管编码
- unsigned char table[] =
- {0xc0,0xf9,0xa4,0xb0,0x99,
- 0x92,0x82,0xf8,0x80,0x90,
- 0xff,0x00,0x90,0x86,0xaf,
- 0xc0,0x89,0xc7,0x8e,0xc1,0x7f};
- //0,1,2,3,4,5,6,7,8,9,全暗,全亮,g,E,r,O,H,L,F,U,小数点,共阳数码管使用
- int main(void)
- {
- int a, b, c, d;
- a = 0;//这些常量置0,否则后面显示会出问题
- b = 0;
- c = 0;
- d = 0;
- SystemInit(); //系统时钟初始化为72M SYSCLK_FREQ_72MHz
- delay_init(72); //延时函数初始化
- NVIC_Configuration(); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
- LED_Init(); //LED端口初始化
- HC595_Init();
-
- //清空LED数码管
- Bai_Wei = table[10];//清空LED
- Shi_Wei = table[10];//清空LED
- Ge_Wei = table[10];//清空LED
- HC595_Display(Bai_Wei, Shi_Wei,Ge_Wei);
- delay_ms(3000);
-
- //依次测试百位至个位全亮
- Bai_Wei = table[11];//百位全亮
- Shi_Wei = table[10];//清空LED
- Ge_Wei = table[10];//清空LED
- HC595_Display(Bai_Wei, Shi_Wei,Ge_Wei);
- delay_ms(2000);
- Bai_Wei = table[10];//清空LED
- Shi_Wei = table[11];//十位全亮
- Ge_Wei = table[10];//清空LED
- HC595_Display(Bai_Wei, Shi_Wei,Ge_Wei);
- delay_ms(2000);
- Bai_Wei = table[10];//清空LED
- Shi_Wei = table[10];//清空LED
- Ge_Wei = table[11];//个位全亮
- HC595_Display(Bai_Wei, Shi_Wei,Ge_Wei);
- delay_ms(2000);
-
- //同时显示0~9
- Bai_Wei = table[0];
- Shi_Wei = table[0];
- Ge_Wei = table[0];
- HC595_Display(Bai_Wei, Shi_Wei, Ge_Wei);
- delay_ms(2000);
- Bai_Wei = table[1];
- Shi_Wei = table[1];
- Ge_Wei = table[1];
- HC595_Display(Bai_Wei, Shi_Wei,Ge_Wei);
- delay_ms(2000);
- Bai_Wei = table[2];
- Shi_Wei = table[2];
- Ge_Wei = table[2];
- HC595_Display(Bai_Wei, Shi_Wei,Ge_Wei);
- delay_ms(2000);
- Bai_Wei = table[3];
- Shi_Wei = table[3];
- Ge_Wei = table[3];
- HC595_Display(Bai_Wei, Shi_Wei,Ge_Wei);
- delay_ms(2000);
- Bai_Wei = table[4];
- Shi_Wei = table[4];
- Ge_Wei = table[4];
- HC595_Display(Bai_Wei, Shi_Wei,Ge_Wei);
- delay_ms(2000);
- Bai_Wei = table[5];
- Shi_Wei = table[5];
- Ge_Wei = table[5];
- HC595_Display(Bai_Wei, Shi_Wei,Ge_Wei);
- delay_ms(2000);
- Bai_Wei = table[6];
- Shi_Wei = table[6];
- Ge_Wei = table[6];
- HC595_Display(Bai_Wei, Shi_Wei,Ge_Wei);
- delay_ms(2000);
- Bai_Wei = table[7];
- Shi_Wei = table[7];
- Ge_Wei = table[7];
- HC595_Display(Bai_Wei, Shi_Wei,Ge_Wei);
- delay_ms(2000);
- Bai_Wei = table[8];
- Shi_Wei = table[8];
- Ge_Wei = table[8];
- HC595_Display(Bai_Wei, Shi_Wei,Ge_Wei);
- delay_ms(2000);
- Bai_Wei = table[9];
- Shi_Wei = table[9];
- Ge_Wei = table[9];
- HC595_Display(Bai_Wei, Shi_Wei,Ge_Wei);
- delay_ms(2000);
- HC595_Display(Bai_Wei, Shi_Wei,Ge_Wei);
- delay_ms(2000);
-
- while(1)
- {
- LED0=0; //这里使用了位带操作,也可以使用 GPIO_ResetBits(GPIOA,GPIO_Pin_8);
- delay_ms(20);
- LED0=1; //也可以使用 GPIO_SetBits(GPIOA,GPIO_Pin_8);
- delay_ms(20);
- a++;
- if(a==1)
- {
- a = 0;
- b++;
- }
- if(b == 10)
- {
- b = 0;
- c++;
- }
- if(c == 10)
- {
- c = 0;
- d++;
- }
- if(d == 10)d= 0;
- Bai_Wei = table[d];
- Shi_Wei = table[c];
- Ge_Wei = table[b];
- HC595_Display(Bai_Wei,Shi_Wei,Ge_Wei);
- //delay_ms(100);
- }
- }
复制代码
所有资料51hei提供下载:
3位数码管资料_驱动代码+原理图+原理图库+封装库+PCB定位孔.rar
(475.06 KB, 下载次数: 388)
|