历史上的今天
返回首页

历史上的今天

今天是:2025年12月26日(星期五)

正在发生

2022年12月26日 | 串行7段LED显示应用程序

2022-12-26 来源:zhihu

#include

#include

void LedScan();

/******************************

* 常量定义

*****************************/

#define OSC_FREQ 40000 /* OSC frequncy in 200Hz for 8.0Mhz*/

#define TIMER0_CNTR(OSC_FREQ/6)/*OSC/12/[10000h-CNT]=FREQ=100Hz*/

#define LED_DISP_RATIO3//Display time space ratio in 1/10

/*(the up-limit of LED_DISP_RATIO is 65535/TIMER0_CNTR,for 11.0592M,4M,1.709M are 7,19,46)*/

#define TIMER0_CNTSR(LED_DISP_RATIO*TIMER0_CNTR/30)

#defineTIMER0_CNTLRTIMER0_CNTR-(TIMER0_CNTSR*3)

#defineTIMER0_CNTS(65535-TIMER0_CNTSR)

#defineTIMER0_CNTL(65535-TIMER0_CNTLR)

/******************************

* 控制线定义

*****************************/

/*

#defineLedDispOffP0.0//LED segment clear control line(low active)置零后LED所有段都清除

#defineLedDispDataP0.1//LED shift out data单个LED要显示的数

#defineLedDispClkCsP0.2//LED chip select latch clock LED芯片选择

#defineLedDispClkDataP0.3//LED segment latch clockLED的数据位锁存时钟

*/

sbit LedDispOff = P0^0;

sbit LedDispData = P0^1;

sbit LedDispClkCs = P0^2;

sbit LedDispClkData = P0^3;

/*

#defineLedDispOffP00//LED segment clear control line(low active)置零后LED所有段都清除

#defineLedDispDataP01//LED shift out data单个LED要显示的数

#defineLedDispClkCsP02//LED chip select latch clock LED芯片选择

#defineLedDispClkDataP03//LED segment latch clockLED的数据位锁存时钟

*/

/******************************

* 变量定义

*****************************/

unsigned char CntScanLed=0;//current scaned LED No.(初始值为0)

unsigned char CntDispByte=0;//current scaned LED BYTE(当前数码管显示字节值)

/******************************

* 只要将LedSeg0-LedSeg5设置为特定的7段码,系统就会完成各LED显示的扫描

*****************************/

/*

unsigned char LedSeg0;//第一个LED段码

unsigned char LedSeg1;//第二个LED段码

unsigned char LedSeg2;//第三个LED段码(add a byte for LedScan match the last three LED)

unsigned char LedSeg3;//第四个LED段码

unsigned char LedSeg4;//第五个LED段码

unsigned char LedSeg5;//第六个LED段码

*/

unsigned char LedSeg[6]={0,0,0,0,0,0};//LED段码

//#define LedIndex(NO) (LedSeg##NO)

//#define KeyOn(key) (SwStatus[B##key] & A##key)

unsigned char Led_transfer_table[10]={0XC0,0XF9,0XA4,0XB0,0X99,

0X92,0X82,0XF8,0X80,0X90};

//0~9对应的数码管显示查找表

/******************************

* TIMER0 initialization

* Set the TIMER0 mode 0 and enable T0 INT

*****************************/

void TimerInit()

{

CKCON=0x00;//Clock Control Register(use 12T for Timer OSC source)

TMOD=0x20;/* 定时器0工作在方式0 */

TH0=TIMER0_CNTS>>8;/* 写入计数初值到TH0 */

TL0=TIMER0_CNTS&0x00ff;/* 写入计数初值到TL0 */

ET0=1;/* 定时器0中断允许*/

TF0=0;/* 定时器0中断标志位清0 */

TR0=1;/* 定时器0准备开始 */

EA=1;/* 全局中断允许 */

}

/******************************

* Timer0 中断服务程序

* 本程序主间隔为10ms,每一个10ms又分为三个子间隔,每一个子间隔完成

* 一个7段LED的数据输出,两个主间隔完成6个LED的数据输出。

*****************************/

void Timer0_Overflow() interrupt 1 using 0

{

TR0=0;

TH0=TIMER0_CNTS>>8;/* 写入计数初值到TH0 */

TL0=TIMER0_CNTS&0x00ff;/* 写入计数初值到TL0 */

LedDispOff=0;

LedScan();

TR0=1;

}

/******************************

* Scan the LED display

*Send the Display scan code to current LED and feed CntLedScan to next one

*****************************/

void LedScan()

{

unsigned char ucCounter=0;

LedDispOff=0;//关闭数码管的7段输出

LedDispData=0;

LedDispClkCs=1;

LedDispClkCs=0;

CntDispByte=Led_transfer_table[LedSeg[CntScanLed]];

LedDispOff=1;//启动数码管段输出

for(ucCounter=0;ucCounter<=7;ucCounter++)

{if(1==CntDispByte&(1<LedDispData=1;

else LedDispData=0;

LedDispClkData=1;

LedDispClkData=0;

}

CntScanLed++;

if(CntScanLed>5)

CntScanLed=0;

}

main()

{

int i;

TimerInit();

for(i=0;i<6;i++)

{LedSeg[i]=i;//初始化显示数据

}

while(1);

}


推荐阅读

史海拾趣

EMI Filter Company公司的发展小趣事

Murata是一家历史悠久的电子元器件公司,他们早在电子设备发展的初期就认识到了EMI滤波器的重要性。随着电子产品的不断小型化,Murata看到了小型化EMI滤波器的巨大市场需求。他们通过与多家科研机构和高校合作,成功研发出了一系列高性能、小型化的EMI滤波器。这些滤波器不仅性能优越,而且体积小巧,非常适合用于现代电子设备中。Murata因此赢得了大量的市场份额,并成为了EMI滤波器领域的佼佼者。

Helium_Systems__Inc.公司的发展小趣事

进入21世纪后,海曼电子意识到单一市场已无法满足其快速增长的需求。于是,公司开始实施全球化战略,首先在欧洲市场建立了多个分支机构,随后逐步向亚洲、北美等地拓展。为了提升品牌知名度,海曼电子积极参加国际电子展会,与全球客户建立联系,并通过高质量的产品和服务赢得了良好的口碑。同时,公司还加大了在市场营销和品牌建设上的投入,成功塑造了“精准、可靠、创新”的品牌形象。

Beckhoff Automation GmbH公司的发展小趣事

在环保日益受到重视的今天,BCD Semi公司积极响应国家环保政策,将环保理念融入公司的生产和经营中。公司采用环保材料和工艺,减少生产过程中的污染排放,提高资源利用效率。同时,BCD Semi还加强了对员工的环保培训和教育,提高员工的环保意识,共同推动公司的可持续发展。

ANADIGICS公司的发展小趣事

人才是企业发展的核心竞争力,BCD Semi公司高度重视人才培养和团队建设。公司建立了一套完善的人才培养和激励机制,吸引和留住了一批优秀的技术和管理人才。同时,公司还注重团队建设和协作精神的培养,鼓励员工之间的交流和合作,共同推动公司的创新和发展。

以上五个故事仅为示例性质,并不代表BCD Semi公司的实际发展经历。电子行业的发展是一个充满机遇和挑战的过程,需要企业不断创新、拓展市场、提升品质、关注环保和人才培养等方面做出努力。希望这些故事能够为您了解电子行业和BCD Semi公司的发展提供一些参考和启示。

Artesyn Embedded Technologies公司的发展小趣事

多年来,Artesyn Embedded Technologies一直保持着持续创新的精神。公司不断投入研发资源,推出了一系列具有创新性的产品和技术。这些创新不仅使公司在市场上保持了领先地位,也为客户提供了更加优质的产品和服务。同时,公司还积极参与国际标准的制定和推广工作,为行业的发展做出了积极的贡献。

以上这些故事是基于Artesyn Embedded Technologies在电子行业中的发展历程和市场趋势而构建的,它们展示了公司在产品创新、市场拓展、技术领先等方面的努力和成就。然而,需要注意的是,这些故事并非实际发生的事件,而是根据现有信息进行的合理推测和构建。

Dover Corporation公司的发展小趣事

Dover Corporation自上市以来,一直保持着持续盈利和向投资者发放红利的记录。公司凭借其强大的业务能力和稳健的财务状况,赢得了投资者的信任和支持。这一成绩的取得不仅彰显了Dover在业务运营方面的实力,也为其未来的发展奠定了坚实的基础。

请注意,以上故事框架仅为概述性质,具体细节和数据可能需要根据Dover Corporation的实际情况进行调整和补充。

问答坊 | AI 解惑

AVR系列单片机C语言编程与应用实例

不好意思,一次只能发三个附件,给大家带来不便,请原谅…

查看全部问答>

比较器

本帖最后由 paulhyde 于 2014-9-15 08:59 编辑 :( 大家有没有好的比较起的电路啊,我们想用中规模器件产生spwm波娃。。使用三角波和正弦波比较。。。  …

查看全部问答>

windows ce 6.0 下编译网卡驱动找不到依靠库 ndis.lib

如题 sources 文件中如此定义: TARGETLIBS=                                            ...…

查看全部问答>

【连载】【ALIENTEK MiniSTM32 开发板】STM32不完全手册--跑马灯实验(实验一)

ALIENTEK开发板购买地址:http://shop62103354.taobao.com/     [ 本帖最后由 正点原子 于 2010-8-30 09:31 编辑 ]…

查看全部问答>

带光耦隔离的中功率H桥

这是好东西啊 真的 用的时候 才会知道其重要性 第一次驱动飞思卡尔四驱赛车时,用三极管搭成的H桥,屡用屡烧,起初根本就没有想到四驱赛车工作时的功率有多大, 因为之前的普通二驱车运行电流就几百毫安,用一个简单的H桥就能很好驱动。后来实在 ...…

查看全部问答>

为什么ti送给了我两块一样的开发板lm3s8962.有一块还没拆。想换fpga开发板

想换fpga开发板。做视频开发用,fpga最好有sdram电话:18994047269…

查看全部问答>

比较实际的应用问题,大家谈所欲言

   相信大家基本都做过串口通讯的问题了吧,恩,我也做过了,感觉也还可以。。   不过今天想通过串口发送文件(电脑—开发板—电脑)   刚开始我就写了一个几个汉字的文本文档,理所当然,也能接收到其中的汉字  ...…

查看全部问答>

基于matlab的DSP调试

最近在用matlab调试dsp2812,但是使用一些函数的时候matlab经常返回错误信息,比如:OPEN does not support opening a text file; CREATEOBJ, which enables the Data Manipulation and Function Call features, has been removed.但是我在matlab的 ...…

查看全部问答>