PT6965驱动数码管电路原理图如下:
stm32单片机源程序如下:
- #include "sys.h"
- #include "delay.h"
- #include "usart.h"
- #include "led.h"
- #include "key.h"
- #include "SMG.h"
- #include "timer.h"
- #define Desplay_ms 300
- int delay_s=0; int n1=0; int n2=0 ; int n3=0 ; int s=0; int n11=0; int n21=0 ; int n31=0 ;
- /*--------------0----1----2----3----4----5----6----7----8----9----A----b----C----d----E----F*/
- u8 TAB[10] = {0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00};//数码管显示1-
- u16 GR4GR5[2]={0xffff,0x0000};//后面两个数据地址线所存储的数据
- void LED_Desplay(void);
- int main(void)
- {
- SystemInit(); //系统启动时钟函数的初始化时钟时钟为72MHz
- // NVIC_Configuration();//设置强占优先级与响应优先级
- delay_init(); //延时函数初始化
- LED_Init(); //LED初始初始化
- KEY_Init(); //KEY初始化
- LED_text();
- SMG_Init();
- PT6965_Init();
- TIM3_Int_Init(2499,7199);//10Khz的计数频率,计数到5000为500ms
-
- //要求上电全部点亮,初次上电全部点亮
- ///////////////////
- LED_Desplay();
- while(1)
- {
- if(delay_s>4)
- {
- s=s+1;
- delay_s=0;
- }
-
- if(s>=999)//显示每一秒变动一次
- {
- s=0;
- }
-
-
- n1=s%10;
- n2=(s%100)/10;
- n3=s/100;
- if(n1!=n11)
- {
- if(n1==0){
- DIS_1668(0xc4,0xBF);
- DIS_1668(0xc5,0x1f);
- DIS_1668(0xc7,TAB[7]|0x01);//变为1
- }
-
- if(n1==1){
- DIS_1668(0xc4,0x06);
- DIS_1668(0xc5,0x0f);
- DIS_1668(0xc7,TAB[7]&0xfe);//之为0
- }
- if(n1==2){
- DIS_1668(0xc4,0xdB);
- DIS_1668(0xc5,0x1f);
- DIS_1668(0xc7,TAB[7]|0x01);//变为1
- }
- if(n1==3){
- DIS_1668(0xc4,0xcf);
- DIS_1668(0xc5,0x1f);
- DIS_1668(0xc7,TAB[7]|0x01);//变为1
- }
- if(n1==4){
- DIS_1668(0xc4,0xe6);
- DIS_1668(0xc5,0x0f);
- DIS_1668(0xc7,TAB[7]|0x01);//变为1
- }
- if(n1==5){
- DIS_1668(0xc4,0xed);
- DIS_1668(0xc5,0x1f);
- DIS_1668(0xc7,TAB[7]|0x01);//变为1
- }
- if(n1==6){
- DIS_1668(0xc4,0xfd);
- DIS_1668(0xc5,0x1f);
- DIS_1668(0xc7,TAB[7]|0x01);//变为1
- }
- if(n1==7){
- DIS_1668(0xc4,0x87);
- DIS_1668(0xc5,0x0f);
- DIS_1668(0xc7,TAB[7]&0xfe);//之为0
- }
- if(n1==8){
- DIS_1668(0xc4,0xff);
- DIS_1668(0xc5,0x1f);
- DIS_1668(0xc7,TAB[7]|0x01);//变为1
- }
-
- if(n1==9){
- DIS_1668(0xc4,0xef);
- DIS_1668(0xc5,0x1f);
- DIS_1668(0xc7,TAB[7]|0x01);//变为1
- }
-
- }
-
-
- if(n2!=n21)
- {
- if(n2==0){
- DIS_1668(0xc2,0xBF);
- DIS_1668(0xc3,0x1f);
- TAB[6]=TAB[6]|0x80;
- DIS_1668(0xc6,TAB[6]);//变为1
- }
-
- if(n2==1){
- DIS_1668(0xc2,0x06);
- DIS_1668(0xc3,0x0f);
- TAB[6]=TAB[6]&0x7f;
- DIS_1668(0xc6,TAB[6]);//之为0
- }
- if(n2==2){
- DIS_1668(0xc2,0xdB);
- DIS_1668(0xc3,0x1f);
- TAB[6]=TAB[6]|0x80;
- DIS_1668(0xc6,TAB[6]);//变为1
- }
- if(n2==3){
- DIS_1668(0xc2,0xcf);
- DIS_1668(0xc3,0x1f);
- TAB[6]=TAB[6]|0x80;
- DIS_1668(0xc6,TAB[6]);//变为1
- }
- if(n2==4){
- DIS_1668(0xc2,0xe6);
- DIS_1668(0xc3,0x0f);
- TAB[6]=TAB[6]|0x80;
- DIS_1668(0xc6,TAB[6]);//变为1
- }
- if(n2==5){
- DIS_1668(0xc2,0xed);
- DIS_1668(0xc3,0x1f);
- TAB[6]=TAB[6]|0x80;
- DIS_1668(0xc6,TAB[6]);//变为1
- }
- if(n2==6){
- DIS_1668(0xc2,0xfd);
- DIS_1668(0xc3,0x1f);
- TAB[6]=TAB[6]|0x80;
- DIS_1668(0xc6,TAB[6]);//变为1
- }
- if(n2==7){
- DIS_1668(0xc2,0x87);
- DIS_1668(0xc3,0x0f);
- TAB[6]=TAB[6]&0x7f;
- DIS_1668(0xc6,TAB[6]);//之为0
- }
- if(n2==8){
- DIS_1668(0xc2,0xff);
- DIS_1668(0xc3,0x1f);
- TAB[6]=TAB[6]|0x80;
- DIS_1668(0xc6,TAB[6]);//变为1
- }
-
- if(n2==9){
- DIS_1668(0xc2,0xef);
- DIS_1668(0xc3,0x1f);
- TAB[6]=TAB[6]|0x80;
- DIS_1668(0xc6,TAB[6]);//变为1
- }
-
- }
-
-
- if(n3!=n31)
- {
- if(n3==0){
- DIS_1668(0xc0,0xBF);
- DIS_1668(0xc1,0x1f);
- TAB[6]=TAB[6]|0x40;
- DIS_1668(0xc6,TAB[6]);//变为1
- }
-
- if(n3==1){
- DIS_1668(0xc0,0x06);
- DIS_1668(0xc1,0x0f);
- TAB[6]=TAB[6]|0xbf;
- DIS_1668(0xc6,TAB[6]);//之为0
- }
- if(n3==2){
- DIS_1668(0xc0,0xdB);
- DIS_1668(0xc1,0x1f);
- TAB[6]=TAB[6]|0x40;
- DIS_1668(0xc6,TAB[6]);//变为1
- }
- if(n3==3){
- DIS_1668(0xc0,0xcf);
- DIS_1668(0xc1,0x1f);
- TAB[6]=TAB[6]|0x40;
- DIS_1668(0xc6,TAB[6]);//变为1
- }
- if(n3==4){
- DIS_1668(0xc0,0xe6);
- DIS_1668(0xc1,0x0f);
- TAB[6]=TAB[6]|0x40;
- DIS_1668(0xc6,TAB[6]);//变为1
- }
- if(n3==5){
- DIS_1668(0xc0,0xed);
- DIS_1668(0xc1,0x1f);
- TAB[6]=TAB[6]|0x40;
- DIS_1668(0xc6,TAB[6]);//变为1
- }
- if(n3==6){
- DIS_1668(0xc0,0xfd);
- DIS_1668(0xc1,0x1f);
- TAB[6]=TAB[6]|0x40;
- DIS_1668(0xc6,TAB[6]);//变为1
- }
- if(n3==7){
- DIS_1668(0xc0,0x87);
- DIS_1668(0xc1,0x0f);
- TAB[6]=TAB[6]&0xbf;
- DIS_1668(0xc6,TAB[6]&0xbf);//之为0
- }
- if(n3==8){
- DIS_1668(0xc0,0xff);
- DIS_1668(0xc1,0x1f);
- TAB[6]=TAB[6]|0x40;
- DIS_1668(0xc6,TAB[6]);//变为1
- }
-
- if(n3==9){
- DIS_1668(0xc0,0xef);
- DIS_1668(0xc1,0x1f);
- TAB[6]=TAB[6]|0x40;
- DIS_1668(0xc6,TAB[6]);//变为1
- }
-
- }
-
- if(delay_s==2) DIS_1668(0xc6,(TAB[6] & 0xfe)); //小数点显示
-
- if(delay_s==4) DIS_1668(0xc6,(TAB[6] | 0x01)); //小数点显示
-
- n11=n1; n21=n2; n31=n3;
- }
- }
-
-
-
- void LED_Desplay(void)
- {
- DIS_1668(0xc0,0xff);
- DIS_1668(0xc1,0xff);
- DIS_1668(0xc2,0xff);
- DIS_1668(0xc3,0xff);
- DIS_1668(0xc4,0xff);
- DIS_1668(0xc5,0xff);
- DIS_1668(0xc6,0xff);
-
- DIS_1668(0xc7,0xff);
- DIS_1668(0xc8,0xff);
- DIS_1668(0xc9,0xff);
- delay_ms(Desplay_ms);
- DIS_1668(0xc0,0x00);
- DIS_1668(0xc1,0x00);
- DIS_1668(0xc2,0x00);
- DIS_1668(0xc3,0x00);
- DIS_1668(0xc4,0x00);
- DIS_1668(0xc5,0x00);
- DIS_1668(0xc6,0x00);
-
- DIS_1668(0xc7,0x02);
- DIS_1668(0xc8,0x49);
- DIS_1668(0xc9,0x1d);
- delay_ms(Desplay_ms);
- /////////////单色
- DIS_1668(0xc0,0x00);
- DIS_1668(0xc1,0x00);
- DIS_1668(0xc2,0x00);
- DIS_1668(0xc3,0x00);
- DIS_1668(0xc4,0x00);
- DIS_1668(0xc5,0x00);
- DIS_1668(0xc6,0x00);
-
- DIS_1668(0xc7,0x00);
- DIS_1668(0xc8,0x12);
- DIS_1668(0xc9,0x00);
- delay_ms(Desplay_ms);
-
-
- DIS_1668(0xc0,0x00);
- DIS_1668(0xc1,0x00);
- DIS_1668(0xc2,0x00);
- DIS_1668(0xc3,0x00);
- DIS_1668(0xc4,0x00);
- DIS_1668(0xc5,0x00);
- DIS_1668(0xc6,0x00);
-
- DIS_1668(0xc7,0x00);
- DIS_1668(0xc8,0xa4);
- DIS_1668(0xc9,0x02);
- delay_ms(Desplay_ms);
- ////////////////////////////////////
- DIS_1668(0xc0,0x80);
- DIS_1668(0xc1,0xff);
- DIS_1668(0xc2,0x80);
- DIS_1668(0xc3,0xff);
- DIS_1668(0xc4,0x80);
- DIS_1668(0xc5,0xff);
- DIS_1668(0xc6,0xff);
-
- DIS_1668(0xc7,0x01);
- DIS_1668(0xc8,0x00);
- DIS_1668(0xc9,0x00);
- delay_ms(Desplay_ms);
-
-
- DIS_1668(0xc0,0xc9);
- DIS_1668(0xc1,0xff);
- DIS_1668(0xc2,0xc9);
- DIS_1668(0xc3,0xff);
- DIS_1668(0xc4,0xc9);
- DIS_1668(0xc5,0xff);
- DIS_1668(0xc6,0xc0);
-
- DIS_1668(0xc7,0x01);
- DIS_1668(0xc8,0x00);
- DIS_1668(0xc9,0x00);
- delay_ms(Desplay_ms);
-
-
- DIS_1668(0xc0,0xb6);
- DIS_1668(0xc1,0xff);
- DIS_1668(0xc2,0xb6);
- DIS_1668(0xc3,0xff);
- DIS_1668(0xc4,0xb6);
- DIS_1668(0xc5,0xff);
- DIS_1668(0xc6,0xc0);
-
- DIS_1668(0xc7,0x01);
- DIS_1668(0xc8,0x00);
- DIS_1668(0xc9,0x00);
- delay_ms(Desplay_ms);
- //////////////////////////////////////
- STB_H;
- delay_ms(1);
- STB_L;
- Send_data(0X87); //打开显示
- DIS_1668(0xc0,0xff);
- DIS_1668(0xc1,0xff);
- DIS_1668(0xc2,0x00);
- DIS_1668(0xc3,0x00);
- DIS_1668(0xc4,0x00);
- DIS_1668(0xc5,0x00);
- DIS_1668(0xc6,0x40);
-
- DIS_1668(0xc7,0x00);
- DIS_1668(0xc8,0x00);
- DIS_1668(0xc9,0x00);
- STB_H;
- delay_ms(1);
- STB_L;
- Send_data(0X8f); //打开显示
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
PT6965 -数字显示.rar
(307.19 KB, 下载次数: 29)
|