標題:
我寫了個程序是LED直驅(qū)共陽極數(shù)碼管的可是共陰極的點陣居然和他顯示一樣的數(shù)據(jù)
[打印本頁]
作者:
231244234
時間:
2023-4-26 15:12
標題:
我寫了個程序是LED直驅(qū)共陽極數(shù)碼管的可是共陰極的點陣居然和他顯示一樣的數(shù)據(jù)
這是為啥啊,給共陽數(shù)碼管輸入數(shù)字,共陰極點陣居然可以點亮相應的燈
作者:
man1234567
時間:
2023-4-26 17:48
人非圣賢,總會有人出錯的
作者:
jiangxw
時間:
2023-4-26 17:55
兩個顯示的硬件是連接在一起的嗎
作者:
angmall
時間:
2023-4-26 18:41
兩個顯示的硬件是連接在一起的接對嗎?
51hei.jpg
(180.93 KB, 下載次數(shù): 28)
下載附件
2023-4-27 00:54 上傳
程序改對嗎?
/*------------------------------------------------------------------*/
/* --- STC MCU International Limited -------------------------------*/
/* --- STC 1T Series MCU RC Demo -----------------------------------*/
/* If you want to use the program or the program referenced in the */
/* article, please specify in which data and procedures from STC */
/*------------------------------------------------------------------*/
/*********************************************************/
#define MAIN_Fosc 11059200L //定義主時鐘
#include "..\..\STC8Hxxx.h"
/************* 功能說明 *************
同時驅(qū)動8段16個共陰數(shù)碼管和8段16個共陽數(shù)碼管自動掃描顯示.
P4.0~P4.7: 接SEG0~SEG7, 這8根SEG線跟LED連接要串聯(lián)限流電阻(建議300歐姆以上).
P0.0~P0.3: 接SEG8~SEG11, 這4根SEG線跟LED連接要串聯(lián)限流電阻(建議300歐姆以上).
P3.4~P3.7: 接SEG12~SEG15,這4根SEG線跟LED連接要串聯(lián)限流電阻(建議300歐姆以上).
P2.0~P2.7: 接COM0~COM7
P4.0 P4.1 P4.2 P4.3 P4.4 P4.5 P4.6 P4.7 P0.0 P0.1 P0.2 P0.3 P3.4 P3.5 P3.6 P3.7
SEG0 SEG1 SEG2 SEG3 SEG4 SEG5 SEG6 SEG7 SEG8 SEG9 SEG10 SEG11 SEG12 SEG13 SEG14 SEG15
A B C D E F G H A B C D E F G H
P2.0-COM0
P21.-COM1
P22.-COM2
P23.-COM3
P24.-COM4
P25.-COM5
P26.-COM6
P27.-COM7
******************************************/
/************* 本地常量聲明 **************/
/************* 本地變量聲明 **************/
/************* 本地函數(shù)聲明 **************/
void delay_ms(u8 ms);
/**************** 外部函數(shù)聲明和外部變量聲明 *****************/
u8 code T_LED_CODE[]={ //標準字庫
//代碼 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0A 0x0B 0x0C 0x0D 0x0E 0x0F
//顯示字符 0 1 2 3 4 5 6 7 8 9 A B C D E F
0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,
//代碼 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1A 0x1B 0x1C 0x1D 0x1E 0x1F
//顯示字符 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 空
0xBF,0x86,0xDB,0xCF,0xE6,0xED,0xFD,0x87,0xFF,0xEF,0x00};
//共陰數(shù)碼管字庫導入, i為LED位置0~15, dis為要顯示的代碼 0~9, A~F, 1.~9., 空
void LoadLED_A(u8 i, u8 dis)
{
u8 xdata *px;
px = &COM0_DCL + 15 - i; //PCB布局低位數(shù)碼管在右邊, 所以用(15-i)反一下
*px = T_LED_CODE[dis & 0x0f];
}
//共陽數(shù)碼管字庫導入, i為LED位置0~15, dis為要顯示的代碼 0~9, A~F, 1.~9., 空
void LoadLED_B(u8 i, u8 dis)
{
u8 xdata *px;
px = &COM0_DAL + 15 - i; //PCB布局低位數(shù)碼管在右邊, 所以用(15-i)反一下
*px = T_LED_CODE[dis & 0x0f];
}
/**********************************************/
void main(void)
{
u8 i;
P_SW2 |= 0x80; //允許訪問XSFR(擴展特殊功能寄存器)
// XOSCCR = 0xc0; //啟動外部晶振
// while (!(XOSCCR & 1)); //等待時鐘穩(wěn)定
// CLKDIV = 0x00; //時鐘不分頻
// CKSEL = 0x01; //選擇外部晶振
P2n_push_pull(0xff); //COM0~COM7線設置為推挽輸出
P4n_push_pull(0xff); //SEG0~SEG7(P4.0~P4.7)線設置為推挽輸出
P0n_push_pull(0x0f); //SEG8~SEG11(P0.0~P0.3)線設置為推挽輸出
P3n_push_pull(0xf0); //SEG12~SEG15(P3.4~P3.7)線設置為推挽輸出
P2DR = 0x00; //COM0~COM7線設置為強電流驅(qū)動
P4DR = 0x00; //SEG0~SEG7線設置為強電流驅(qū)動
P0DR = 0xf0; //SEG8~SEG11線設置為強電流驅(qū)動
P3DR = 0x0f; //SEG12~SEG15線設置為強電流驅(qū)動
COMEN = 0xff; //允許8個COM
SEGENL = 0xff; //允許8個SEG 低字節(jié)
SEGENH = 0xff; //允許8個SEG 高字節(jié)
LEDCTRL = 0x80 + (2<<4) + 0; //B7=1: ON, B5 B4: 0共陰, 1共陽, 2共陰共陽, 3保留, B2 B1 B0: 0占空比100%, 1~7占空比7/8~1/8
LEDCKS = 4; //數(shù)碼管COM掃描顯示的主頻時鐘數(shù) = 160*9*LEDCKS, 每個COM顯示時間=1440*LEDCKS/fosc(MHz) us, COM掃描頻率=fosc/(1440*LEDCKS *COM數(shù)).
//例如 fosc = 11.0592MHz, 共陰共陽一共16個COM, LEDCKS = 4, 則每個COM顯示時間=1440*4/11.0592 = 521 us, COM掃描頻率=11059200/(1440*4*16)=120Hz.
//已知掃描時間t(us)計算 LEDCKS = t*fosc(MHz)/1440, 比如fosc = 24MHz, 要求1個COM掃描1ms, 則 LEDCKS = 1000*24/1440 = 16.7, 取整數(shù)17.
for(i=0; i<16; i++) LoadLED_A(i,i); //共陰,顯示0123456789ABCDEF
for(i=0; i<16; i++) LoadLED_B(i,15-i); //共陽,顯示FEDCBA9876543210
while (1)
{
//刷新COM0_DCL~COM7_DCL, COM0_DCH~COM7_DCH,即可刷新共陰顯示內(nèi)容.
//刷新COM0_DAL~COM0_DAL, COM0_DAH~COM0_DAH,即可刷新共陽顯示內(nèi)容.
}
}
/**********************************************/
復制代碼
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1