历史上的今天
返回首页

历史上的今天

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

2020年01月12日 | 使用单片机STM8S 驱动 CT1642

2020-01-12 来源:eefocus

/*定义LED 数码管的位数,本驱动只实现3位和4位的操作,所以LED_BIT_COUNT的值只能是3或4*/


#define  LED_BIT_COUNT        4 

 

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

*****************

*                                     按键值定义                                                     

*******************************************************************************************************

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

 

#define CT_FUNCION_KEY 0x04//扫描时,扫描按键功能

 

#define STB_KEY_MENU    0x01 

#define STB_KEY_OK         0x02 

#define STB_KEY_UP         0x04 

#define STB_KEY_DOWN   0x08 

#define STB_KEY_LEFT     0x10 

#define STB_KEY_RIGHT   0x20 

#define STB_KEY_EXIT     0x40 

#define STB_KEY_NULL     0x00 

 

#define  P_CT_CLK  PB3_OUT //CLK接口

#define  P_CT_DATA  PB2_OUT //DATA 接口

#define  P_CT_KEY   PC7_IN //按键接口

 

#define CT_DATA_CLR    P_CT_DATA=0

#define CT_DATA_SET    P_CT_DATA=1

 

#define CT_CLK_CLR   P_CT_CLK=0

#define CT_CLK_SET   P_CT_CLK=1

const uint8 Lcd_tab[17]=

//Q2接seg A  Q9 接seg G 中间按顺序接 

{0xFC,0x60,0xDA,0xF2,0x66,0xB6,0xBE,0xE0,0xFE,0xF6,0xEE,0x3E,0x9C,0x7A,0x9E,0x8E};//共阴极

 

const uint8  key_code[9] =                    /*定义按键顺序*/

/*与Q9连接的按键*/ STB_KEY_MENU,   

/*与Q8连接的按键*/ STB_KEY_OK,      

/*与Q7连接的按键*/ STB_KEY_UP,       

/*与Q6连接的按键*/ STB_KEY_DOWN,  

/*与Q5连接的按键*/ STB_KEY_LEFT,     

/*与Q4连接的按键*/ STB_KEY_RIGHT,  

/*与Q3连接的按键*/ STB_KEY_LEFT,     

/*与Q2连接的按键*/ STB_KEY_EXIT,     

/*查询不到的按键*/ STB_KEY_NULL     

};

void Nop(uint8 T_Dly)

{

while(T_Dly--);

return ;

}

 

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

*****************

*函数名称:ct1642_send_data()

*功能说明:CT1642数据发送函数

*输入参数:ct_data--显示数据 , ct_com--扫描com

*返回参数:NULL

*函数功能:该函数负责把1位LED数码管显示代码发送到

CT1642当中,并显示出来,也即串并转换。

*******************************************************************************************************

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

static void ct1642_send_data(uint8 ct_dis_data, uint8 ct_com)

{

uint8 ct_addr;                   //存储数码管位置

 

uint8 i;

switch(ct_com)

{

case 0: {ct_addr=0xef; ;break;}

//显示C1位数据 数码管为共阴极,将要点亮的COM置0以显示该COM

 

case 1: {ct_addr=0xdf; break;} //显示C2位数据  

 

case 2: {ct_addr=0xbf; break;} //显示C3位数据  

case 3: {ct_addr=0x7f; break;} //显示C4位数据     

case 4: {ct_addr=0xff; break;}  //扫描键盘,关闭COM1  

default:{ct_addr=0xff; ct_dis_data=0x00;break;}   

}

 

for(i=0;i<8;i++)                   //发送8位地址

{

CT_CLK_CLR ;

if( (ct_addr< {

CT_DATA_SET;

}

else

{

CT_DATA_CLR;

}

CT_CLK_SET;//上升沿输出一位

}

 

CT_DATA_CLR;      //发送两个空位,补足要发送的18位

CT_CLK_CLR ;

Nop(2);//此处根据单片机的指令周期而定

CT_CLK_SET;

 

CT_DATA_CLR;

CT_CLK_CLR ;

Nop(2);

CT_CLK_SET;

for(i=0;i<8;i++)  //发送8位数据

{

CT_CLK_CLR ;

if( (ct_dis_data< {

CT_DATA_SET;

}

else

{

CT_DATA_CLR;

}

CT_CLK_SET;

}

CT_CLK_SET; //输出数据

 

CT_DATA_CLR;

Nop(2);

CT_DATA_SET;

 

 

CT_CLK_CLR ;

CT_DATA_CLR;

Nop(2);

CT_DATA_SET;

return;

}

 

 

 

 

 

 

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

*****************

*函数名称:ct1642_deal()

*功能说明:CT1642方案面板管理函数

*输入参数:NULL

*返回参数:NULL

*函数功能:该函数为CT1642方案前面板驱动程序接口函数

,定义其为系统定时调用的函数,来实现LED数码管的动态显示

和按键扫描。

* 3位数码管5ms调用一次;4位数码管4ms调用一次

 我本人在调试时,试过用5MS,数码管明显闪烁比较严重,因此我认为这个对时间要求比较严格

*******************************************************************************************************

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

void  ct1642_deal(void)

{

  static  uint8  ct_addr= 0; 

static uint8 j=0;

//面板管理控制变量

 static uint8 KeyValue=0;

uint8 key_val;

uint8 temp;

  if(LED_BIT_COUNT==ct_addr)    //按键扫描

  {

  

temp=(~(1< ct1642_send_data(temp,CT_FUNCION_KEY);//

 

key_val=0;

if(!P_CT_KEY)

{//查询按键口

key_val=1;//有按键按下

}

if(1==key_val)

{

   KeyValue|=key_code[j];

}

if(++j>=8)

{//可进行按键处理--对应按键功能处理

j=0;

KeyValue=0;

}

      ct_addr=0;

  }

else                             //LED扫描

{

      ct1642_send_data(v_LedCode[ct_addr],ct_addr);//送LED扫描

      ct_addr++;

}

//return;

}

推荐阅读

史海拾趣

HANBIT Electronics公司的发展小趣事

Hamamatsu(滨松光子学株式会社)在电子行业中的发展故事丰富多样,以下是根据公开信息整理的五个相关故事,每个故事均力求准确描述事实:

1. 光电倍增管的创新与突破

Hamamatsu在光电倍增管(PMT)领域取得了显著成就。光电倍增管作为宇宙线观测、中微子实验等高精度探测中的关键器件,其性能和技术要求极高。Hamamatsu抓住市场需求,与东京大学高能物理实验室等科研机构合作,成功研制出大面积探测用光电倍增管,并在多个国际中微子探测实验中得到应用。这一创新不仅推动了Hamamatsu自身的发展,也巩固了其在光电倍增管市场的领先地位。

2. 光电二极管的多样化应用

Hamamatsu的光电二极管产品线广泛,包括硅PIN光电二极管、InGaAs PIN光电二极管等多种类型,广泛应用于医疗生物、高能物理、宇宙探测、精密分析等多个领域。这些产品的多样化应用不仅展示了Hamamatsu在光电技术领域的深厚积累,也为其在全球市场的拓展提供了有力支撑。

3. 光电技术的国际合作与交流

Hamamatsu积极参与国际光电技术的交流与合作,通过举办大型展会、参与国际学术会议等方式,展示其最新的光电技术和产品。例如,Hamamatsu举办的PHOTON FAIR展会,吸引了来自全球的客户和合作伙伴,促进了光电技术的国际交流与合作。这种开放合作的态度,有助于Hamamatsu不断吸收国际先进技术,推动自身技术的持续进步。

4. 应对市场变化的灵活策略

面对电子行业的快速变化,Hamamatsu展现出了高度的市场敏感性和灵活性。当市场需求发生变化时,Hamamatsu能够迅速调整产品结构和研发方向,以满足新的市场需求。例如,在消费电子市场兴起时,Hamamatsu也积极涉足相关领域,推出了一系列适用于消费电子产品的光电传感器件。这种灵活的市场策略,使得Hamamatsu能够在激烈的市场竞争中保持领先地位。

5. 人才培养与团队建设

Hamamatsu深知人才是企业发展的根本动力,因此高度重视人才培养和团队建设。公司建立了完善的人才培养体系,通过内部培训、外部交流等多种方式,不断提升员工的专业技能和综合素质。同时,Hamamatsu还注重团队建设和企业文化建设,营造了一个积极向上、团结协作的工作氛围。这种良好的人才环境和企业文化,为Hamamatsu的持续发展提供了有力保障。

以上五个故事展示了Hamamatsu在电子行业中的发展历程和成就,体现了其在技术创新、市场拓展、国际合作、灵活应变以及人才培养等方面的综合实力。

GTM公司的发展小趣事

关于电源反馈控制电路,网友们可能会提出多种问题,这些问题涵盖了其工作原理、设计、应用、故障排查及优化等方面。以下是一些常见问题及其简要回答:

  1. 问题:什么是电源反馈控制电路,它的主要作用是什么?
    回答:电源反馈控制电路是一种通过监测电源输出电压或电流,并将其与设定值进行比较,然后调整电源输出以维持设定值的电路。它的主要作用是确保电源输出的稳定性和准确性,无论负载如何变化,都能保持输出电压或电流在预定范围内。

  2. 问题:电源反馈控制电路有哪些常见的拓扑结构?
    回答:常见的电源反馈控制电路拓扑包括电压模式控制(Voltage Mode Control, VMC)和电流模式控制(Current Mode Control, CMC)。电压模式控制主要关注输出电压的稳定性,而电流模式控制则在电压控制的基础上增加了对输出电流的直接控制,以提高瞬态响应和稳定性。

  3. 问题:如何设计有效的电源反馈控制电路?
    回答:设计有效的电源反馈控制电路需要考虑多个因素,包括选择合适的反馈元件(如电阻、电容、电感)、放大器类型(运算放大器、比较器等)、补偿网络设计(以改善稳定性和响应速度)、以及选择合适的控制策略(如PID控制)。此外,还需要进行仿真和实验验证,以确保设计的电路能够满足性能指标。

  4. 问题:电源反馈控制电路中遇到稳定性问题时应该如何解决?
    回答:遇到稳定性问题时,首先需要检查反馈回路中的元件是否匹配良好,特别是补偿网络的设计是否合理。可以通过调整补偿网络的参数(如增加相位裕度)来改善稳定性。此外,检查控制策略是否适合当前的应用场景,必要时可以更换控制策略或调整控制参数。

  5. 问题:电源反馈控制电路中的噪声问题如何解决?
    回答:噪声问题通常来源于电源本身、外部环境或电路内部元件。解决噪声问题的方法包括使用低噪声的电源元件、增加滤波电路(如LC滤波器)、优化PCB布局以减少电磁干扰、以及采用差分放大器等噪声抑制技术。

  6. 问题:电源反馈控制电路在哪些领域有广泛应用?
    回答:电源反馈控制电路在电子设备的各个领域都有广泛应用,包括但不限于计算机电源、通信设备、工业控制、汽车电子、医疗设备、LED照明等。这些领域对电源的稳定性和效率要求很高,因此电源反馈控制电路成为不可或缺的一部分。

DACHANG公司的发展小趣事

在竞争激烈的电子行业中,DACHANG公司始终坚持以品质为核心。公司不断引进先进的生产设备和技术,严格把控产品质量,确保每一件产品都能达到客户的期望。正是这种对品质的执着追求,让DACHANG公司的产品在市场上赢得了良好的口碑,公司也逐渐扩大了自己的市场份额。

Deltron / DEM Manufacturing公司的发展小趣事

Deltron Emcon,即现在的DEM Manufacturing,起源于四家英国制造企业的合并。这些企业分别是成立于1946年的Deltron Components,专业音频连接器和压铸盒制造商Roxburgh EMC(成立于1969年),EMC滤波器和组件的制造商Media Products(成立于1990年),以及广播跳线产品制造商BES Electronics(成立于1982年)。这些公司在各自的领域内都有着丰富的经验和卓越的技术,合并后,DEM Manufacturing凭借这些优势,在电子行业中迅速崭露头角。

Aeroflex公司的发展小趣事

为了进一步扩大市场份额和增强竞争力,DEM Manufacturing积极寻求与其他企业的战略合作。公司与其他电子行业的领军企业建立了长期稳定的合作关系,共同开发新产品、拓展新市场。这些合作不仅为公司带来了更多的商业机会,还促进了整个电子行业的发展和进步。

请注意,以上故事梗概是基于已知事实进行的概括和虚构,旨在展示Deltron / DEM Manufacturing公司在电子行业中的发展历程和成就。具体细节和实际情况可能有所不同。

Amecon Magnetics公司的发展小趣事

Amecon Magnetics公司成立于XXXX年,初始阶段主要专注于磁性材料的研发与生产。在创立初期,公司面临着资金短缺、技术挑战以及市场竞争激烈等多重困难。然而,创始人凭借对磁性材料领域的深刻理解和坚定信念,带领团队不断突破技术难题,逐步开发出具有竞争力的产品。

问答坊 | AI 解惑

运算放大器稳定性

  作者:Tim Green,德州仪器 Burr-Brown 产品线线性应用工程经理   在写“保持容性负载稳定的六种方法”部分时发生了一件有趣的事情。我们选择了具有“轨至轨”输出的 CMOS 运算放大器并测量了 ROUT,但在高频区域没有环路增益,因而无 ...…

查看全部问答>

向阳1号油耗GPS和普通GPS的区别在哪里

北京向阳天科技有限公司(www.xiangyangtian.com) 是一家专业从事数据传输及全球卫星定位产品(GPS)研发、 应用的专业公司。其产品在全国车辆GPS定位市场上占有一席地位。 公司产品包括车载GPS定位仪、车载GPS导航仪、车辆油耗型GPS定位仪、 ...…

查看全部问答>

关于,电源、地的问题?

是不是LM3SXXXX的电源、地引脚是否必须连接到一起,并在每对上加上旁路电容??可不可以只有部分连接电源,而其它的不连接电源呢??会不会供电不足啊?PS:顺便问下由LM3S1138移植其它型号,要改些什么?工程模板可以直接用1138的吗?…

查看全部问答>

android的g-sensor驱动

请问谁有Freescale MMA7455的android驱动啊,挂在I2C上。有的请发我邮箱tigerhily@163.com 谢谢了…

查看全部问答>

c# 关于rfid读取的问题

我的rfid是能读出RFID卡内的序列号并通过PS/2输出至电脑,相当于自动键盘输号。 我用C#怎么才能实现读取阿? 产品说可用常用的《WORD》、《记事本》等软件记录卡号,为什么读不出来?? …

查看全部问答>

请教各位兄弟,南京福特的工程研究中心怎么样?

如题, 网上看到FORD正在搞SYNC系统,主要是体现更好的的人机交互,包含语音识别,TTS语音合成,触摸等多种交互形式。 周五去要面试一下…

查看全部问答>

STM32F103VBT6也有Y版么?

                                 问了国内某代理商,销售到技术都不清楚这个,真是晕!我要最新的Z版,可是他们却不清楚这些,我发现很多代理商对ST ...…

查看全部问答>

TI例程enet_io用到的CGI函数有谁能介绍吗

以太网中网页控制,enet-io这个例程里用到了SSI和CGI的结合,但是有些函数跟本不是一下子就能理解的,参数调来调去不好理解,有谁能给解释吗?  …

查看全部问答>

LPC800 开发板 I2C 的使能问题。

我把周立功的LPC800例子里面的I2C中的I2C_EEPROM的程序改了一下,还是无法运行,请帮忙看一下。 void I2CInit (void) {     //原始程序用的最适宜做I2C的口,小板上没有        //LPC_IOCON->PIO0_10   ...…

查看全部问答>