STC单片机LED应用电路原理图
- /*********************************************************/
- #define MAIN_Fosc 11059200L //定义主时钟
- #include "..\..\STC8Gxxx.h"
- /************* 功能说明 *************
- 驱动8个共阴数码管自动扫描显示.
- P3.0~P3.7对应SEG0~SEG7(对应LED数码管A~G, GP). 这8根SEG线跟LED连接要串联限流电阻(建议200欧姆以上).
- P1.0 P1.1 P5.4 P1.3~P1.7对应COM0~COM7.
- ******************************************/
- /************* 本地常量声明 **************/
- /************* 本地变量声明 **************/
- /************* 本地函数声明 **************/
- /**************** 外部函数声明和外部变量声明 *****************/
- u8 code t_display[]={ //标准字库
- // 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,};
- /**********************************************/
- void main(void)
- {
- u8 i;
- u8 xdata *px;
- P_SW2 |= 0x80; //允许访问XSFR(扩展特殊功能寄存器)
- // XOSCCR = 0xc0; //启动外部晶振
- // while (!(XOSCCR & 1)); //等待时钟稳定
- // CLKDIV = 0x00; //时钟不分频
- // CKSEL = 0x01; //选择外部晶振
- P1DR = 0x00; //COM线设置为强电流驱动
- P5DR = 0x00; //COM线设置为强电流驱动
- // P3DR = 0x00; //SEG线设置为强电流驱动
- COMEN = 0xff; //允许8个COM
- SEGENL = 0xff; //允许8个SEG
- 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 = 8; //1位LED扫描的主频时钟数 = 1280*n, 频率=fosc/(1280*n)
- for(px = &COM0_DCL, i=0; i<8; i++, px++) *px = t_display[i+1]; //共阴,显示12345678
- for(px = &COM0_DAL, i=0; i<8; i++, px++) *px = t_display[8-i]; //共阳,显示87654321 以示区分
-
- // P_SW2 &= ~0x80;
-
- while (1)
- {
- //刷新COM0_DCL~COM7_DCL,即可刷新共阴显示内容.
- //刷新COM0_DAL~COM7_DAL,即可刷新共阳显示内容.
- }
- }
- /**********************************************/
复制代码
代码下载:
STC8G1K08T-LED数码管自动扫描显示相关程序.RAR
(409.13 KB, 下载次数: 49)
|