標題:
PT6965+STM32數(shù)碼管顯示源碼
[打印本頁]
作者:
mingquan23
時間:
2018-8-22 08:36
標題:
PT6965+STM32數(shù)碼管顯示源碼
PT6965驅動數(shù)碼管電路原理圖如下:
捕獲.PNG
(24.76 KB, 下載次數(shù): 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};//數(shù)碼管顯示1-
u16 GR4GR5[2]={0xffff,0x0000};//后面兩個數(shù)據(jù)地址線所存儲的數(shù)據(jù)
void LED_Desplay(void);
int main(void)
{
SystemInit(); //系統(tǒng)啟動時鐘函數(shù)的初始化時鐘時鐘為72MHz
// NVIC_Configuration();//設置強占優(yōu)先級與響應優(yōu)先級
delay_init(); //延時函數(shù)初始化
LED_Init(); //LED初始初始化
KEY_Init(); //KEY初始化
LED_text();
SMG_Init();
PT6965_Init();
TIM3_Int_Init(2499,7199);//10Khz的計數(shù)頻率,計數(shù)到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);//變?yōu)?
}
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);//變?yōu)?
}
if(n1==3){
DIS_1668(0xc4,0xcf);
DIS_1668(0xc5,0x1f);
DIS_1668(0xc7,TAB[7]|0x01);//變?yōu)?
}
if(n1==4){
DIS_1668(0xc4,0xe6);
DIS_1668(0xc5,0x0f);
DIS_1668(0xc7,TAB[7]|0x01);//變?yōu)?
}
if(n1==5){
DIS_1668(0xc4,0xed);
DIS_1668(0xc5,0x1f);
DIS_1668(0xc7,TAB[7]|0x01);//變?yōu)?
}
if(n1==6){
DIS_1668(0xc4,0xfd);
DIS_1668(0xc5,0x1f);
DIS_1668(0xc7,TAB[7]|0x01);//變?yōu)?
}
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);//變?yōu)?
}
if(n1==9){
DIS_1668(0xc4,0xef);
DIS_1668(0xc5,0x1f);
DIS_1668(0xc7,TAB[7]|0x01);//變?yōu)?
}
}
if(n2!=n21)
{
if(n2==0){
DIS_1668(0xc2,0xBF);
DIS_1668(0xc3,0x1f);
TAB[6]=TAB[6]|0x80;
DIS_1668(0xc6,TAB[6]);//變?yōu)?
}
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]);//變?yōu)?
}
if(n2==3){
DIS_1668(0xc2,0xcf);
DIS_1668(0xc3,0x1f);
TAB[6]=TAB[6]|0x80;
DIS_1668(0xc6,TAB[6]);//變?yōu)?
}
if(n2==4){
DIS_1668(0xc2,0xe6);
DIS_1668(0xc3,0x0f);
TAB[6]=TAB[6]|0x80;
DIS_1668(0xc6,TAB[6]);//變?yōu)?
}
if(n2==5){
DIS_1668(0xc2,0xed);
DIS_1668(0xc3,0x1f);
TAB[6]=TAB[6]|0x80;
DIS_1668(0xc6,TAB[6]);//變?yōu)?
}
if(n2==6){
DIS_1668(0xc2,0xfd);
DIS_1668(0xc3,0x1f);
TAB[6]=TAB[6]|0x80;
DIS_1668(0xc6,TAB[6]);//變?yōu)?
}
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]);//變?yōu)?
}
if(n2==9){
DIS_1668(0xc2,0xef);
DIS_1668(0xc3,0x1f);
TAB[6]=TAB[6]|0x80;
DIS_1668(0xc6,TAB[6]);//變?yōu)?
}
}
if(n3!=n31)
{
if(n3==0){
DIS_1668(0xc0,0xBF);
DIS_1668(0xc1,0x1f);
TAB[6]=TAB[6]|0x40;
DIS_1668(0xc6,TAB[6]);//變?yōu)?
}
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]);//變?yōu)?
}
if(n3==3){
DIS_1668(0xc0,0xcf);
DIS_1668(0xc1,0x1f);
TAB[6]=TAB[6]|0x40;
DIS_1668(0xc6,TAB[6]);//變?yōu)?
}
if(n3==4){
DIS_1668(0xc0,0xe6);
DIS_1668(0xc1,0x0f);
TAB[6]=TAB[6]|0x40;
DIS_1668(0xc6,TAB[6]);//變?yōu)?
}
if(n3==5){
DIS_1668(0xc0,0xed);
DIS_1668(0xc1,0x1f);
TAB[6]=TAB[6]|0x40;
DIS_1668(0xc6,TAB[6]);//變?yōu)?
}
if(n3==6){
DIS_1668(0xc0,0xfd);
DIS_1668(0xc1,0x1f);
TAB[6]=TAB[6]|0x40;
DIS_1668(0xc6,TAB[6]);//變?yōu)?
}
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]);//變?yōu)?
}
if(n3==9){
DIS_1668(0xc0,0xef);
DIS_1668(0xc1,0x1f);
TAB[6]=TAB[6]|0x40;
DIS_1668(0xc6,TAB[6]);//變?yōu)?
}
}
if(delay_s==2) DIS_1668(0xc6,(TAB[6] & 0xfe)); //小數(shù)點顯示
if(delay_s==4) DIS_1668(0xc6,(TAB[6] | 0x01)); //小數(shù)點顯示
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 -數(shù)字顯示.rar
(307.19 KB, 下載次數(shù): 29)
2018-8-23 02:05 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
admin
時間:
2018-8-23 02:08
原理圖能分享下嗎?
作者:
mingquan23
時間:
2018-8-23 10:43
admin 發(fā)表于 2018-8-23 02:08
原理圖能分享下嗎?
可以分享數(shù)碼管內部的原理圖,我是用DEMO板用杜邦線驅動的所以與單片機的幾條線看程序.H文件中有定義的謝謝!
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1