PT6965驅動數碼管電路原理圖如下:
捕獲.PNG (24.76 KB, 下載次數: 52)
下載附件
2018-8-23 10:44 上傳
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)
2018-8-23 02:05 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|