精华内容
下载资源
问答
  • 单片机驱动矩阵键盘源代码,采用stc15w4k32s4系列单片机对矩阵键盘进行驱动
  • 驱动程序是什么:驱动程序与硬件相关,编写驱动程序要非常了解硬件,同时给应用层提供API函数接口,应用层可以调用这些接口去访问硬件而不必...单片机驱动程序文件组成:以led点灯为例,包括三个文件led.h,led.c,main...
    • 驱动程序是什么:驱动程序与硬件相关,编写驱动程序要非常了解硬件,同时给应用层提供API函数接口,应用层可以调用这些接口去访问硬件而不必了解硬件.

    • 通俗地解释:比如说你有一个应用是控制每天早上六点钟开灯.应用程序只负责在适当的时间做适当的事(到六点了,要开灯了,触发按键信号,这个信号通过驱动程序相应的API接口下发至硬件);具体它不用知道为什么按下键就能开灯,因为按下键后开灯的事情就是驱动程序完成了,驱动程序再去控制硬件管脚发出高低电平信号去驱动灯的开关.

    • 单片机驱动程序文件组成:以led点灯为例,包括三个文件led.h(包括宏定义,变量声明,函数声明),led.c(模块的具体代码实现),main.c(工程的主函数,调用模块函数并适当组合就可以完成工程的项目要求功能)三个文件。

    驱动程序要做的事情:

    1、单片机底层开发一般指利用单片机的固有资源完成的控制功能的软硬件开发,比如时钟、通讯协议(232、485、UART、SPI、IIC、CAN、IR等)、定时器、AD转换、GPIO、外设驱动(各种现场控制、各种环境状况测控、电机控制、电磁阀、继电器控制、键盘扫描、LED和LCD显示)等。

    2、根据时钟树图,观察初始化时钟时需要用到哪些寄存器及各种外设需要的时钟源。

    3、配置定时器的时钟源,分频,比较值和PWM输出。
    (1)当单片机内部有几种不同的时钟源时,必须配置相应的寄存器配置需要的时钟源,如果不进行配置,将会使用单片机上电默认的时钟源。
    (2)时钟源决定着系统的工作频率、定时器定时时间和通信时的波特率。
    (3)定时器分频是为了获得更长的定时时间,如果采用标志位累加的方式来延长定时时间,将会消耗单片机的RAM资源,在低端单片机中,由于RAM资源非常珍贵,因此只能采用定时器分频来延长定时时间。
    (4)比较值对于简单的定时功能就是计算多少个数产生一次中断,对于PWM输出来说就是设置周期和占空比。

    单片机驱动程序与应用程序的区别:应用程序是根据实际应用需求去编写的程序,指的是代码的逻辑部分,直接去调用底层驱动预留的接口,而不需要关心硬件底层的实现方式及实现过程。

    展开全文
  • 1、单片机最小应用系统1的P2口接阵列式键盘的A1-A4口,P3口接动态数码显示的段选信号输入端,P1接动态数码管显示的位选信号输入端。 2、用串行数据通信线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意...
  • 单片机实现PC键盘输入用单片机实现PC键盘输入用单片机实现PC键盘输入.txt跌倒了,爬起来再哭~~~低调!才是最牛B的炫耀!!不吃饱哪有力气减肥啊?真不好意思,让您贱笑了。我能抵抗一切,除了诱惑……老子不但有车...

    用单片机实现PC键盘输入

    用单片机实现PC键盘输入用单片机实现PC键盘输入.txt跌倒了,爬起来再哭~~~低调!才是最牛B的炫耀!!不吃饱哪有力气减肥啊?真不好意思,让您贱笑了。我能抵抗一切,除了诱惑……老子不但有车,还是自行的……串行口和键盘口通讯接口的单片机实现

    摘 要:在某些特殊控制场合,需要通过主控机的串行口和受控机的PS/2键盘口,实现主控机对受控机的模拟键盘输入。本文介绍了串行口和键盘口的通讯接口的软、硬件设计方法。 关键词:串行口 PS/2键盘口 通讯 单片机

    键盘作为微机的基本输入设备,是微机不可缺的一部分。但在某些特殊的场合,我们要对受控机进行程序设计的特殊输入控制,则需要一接口实现串行口和PS/2键盘口通讯,这样在主控机上通过对串行口的编程就能实现对受控机的模拟键盘输入。笔者开发的该接口以MCS-51单片机为核心,原理图如图1所示,利用MCS-51的全双工异步串行I/O口实现与主控机的异步串行通讯,而和受控机PS/2键盘口的同步串行通讯则通过双向数据I/O口控制同步时钟和数据位。

    .1.和主控机的异步串行通讯

    异步通讯按帧传送数据,它利用每一帧的起、止信号来建立发送与接受之间的同步,每帧内部各位均采用固定的时间间隔,但帧与帧之间的时间间隔是随机的。其基本特征是每个字符必须用起始位和停止位作为字符开始和结束的标志,它是以字符为单位一个个发送和接收的。

    1.1硬件接口设计

    与主控机的异步串行通讯基于RS-232总线标准。为了使接口具有更好的兼容性和工作稳定性,我们用MAX232E作为数据传送器。MAX232E是专为RS-232通讯而设计,低功耗,外接电容小,抗干扰能力强,管脚有ESD保护并且能支持到120k波特率的数据传输,能很好地解决PC机和单片机电平不匹配问题。同时它增强了数据驱动能力,能支持12米的串行线。

    1.2软件接口设计

    异步通讯必须在字符格式中设置起始位和结束位,以使收发双方取得同步。其数据格式为1位起始位+8位数据位+奇偶校验位+1位或2位的停止位。其中起始位为低电平,数据位传送时先低后高,停止位为高电平。笔者在电路板上设计了异步串行通讯跳线,可设置通讯的波特率、奇偶校验位和停止位,在单片机软件的开始读取跳线设置值而后初始化串行口,从而支持多种通讯数据格式。

    PC机启动时将向串行口发送两个字节的00H以检测串行口,同时防止主控机上的串行口其他的干扰信息,通讯时笔者设计的报文以A0H,CDH作为联络信息开头,第三字节为数据长度,之后为我们要传送的数据,这样有效地过滤掉干扰信息。单片机按串行口中断方式接收主控机的数据,收到有效格式的数据后,解析报文,提取出真实的数据,传送给受控机的PS/2口。

    2.和受控机的同步串行通讯

    同步通讯以发送端和接收端使用同一时钟信号来同步,在时钟脉冲的作用下同步地收发数据。该接口与受控机之间通过标准的六芯PS/2键盘插头相连接。其信号线包括:一根时钟线、一根数据线、一根地线和一根给单片机供电的电源线,还有两根空线。所传输的每一字符由11位组成:1位起始位,8位数据位,1位奇偶校验位和1位停止位。这11位数据在时钟脉冲的同步作用下,实现数据的传送,传送的信号低位在前。由于只有一根数据线和时钟线,所以,任何时刻只能有一方发送数据。无通讯时,时钟线和和数据线都设为高电平的初始状态。受控机上的键盘接口通过设置数据线和时钟线的状态,指导模拟键盘的通讯接口收发数据:

    (1).时钟线为低电平,禁止传送数据。

    (2).时钟线为高电平,数据线为低电平,通知模拟键盘接收命令。

    (3).时钟线和数据线都为高电平,允许模拟键盘发送数据

    单片机的+5V电源由受控机通过PS/2键盘插头的电源线提供,同时将两个I/O双向数据口分别作为同步时钟线和数据线,与受控机进行通讯。

    2.1发送数据

    首先检测时钟线和数据线的状态,当两者都为高电平时,开始传送数据。每传送一位,时钟同步地产生一个脉冲。当受控机收到该脉冲后,将时钟线置成低电平并保持一段时间,禁止发送方继续发送,以便于检验数据正确性,数据校验采用偶校验。因此建议在每个字符的发送间隔有一定的延时。以下为笔者编写的发送寄存器A的八位数据给受控机PS/2口的子程序。

    SendToPs: MOV KEY,C ;发送一位数据

    JNB CLOCK,$ ;等待至时钟线为1 ACALL DELAY10

    JNB KEY,$ ;等待至数据线为1

    CLR CLOCK

    展开全文
  • 介绍了PS/2协议及PS/2标准键盘的第2套扫描码和命令集,给出了在单片机系统中支持PS/2键盘硬件连接方式以及利用Ke订C51语言实现的驱动程序设计和部分代码。驱动程序在单片机系统中实现了对PS/2标准104键盘的支持;...
  • 程序说明:  (1)定义矩阵键盘管脚。  (2)将扫描时用到的管脚四种输出电平状态定义成一个数组。  (3)按键扫描程序。 ... (4)定义两个临时变量key,i...下讲将讲述单片机动态驱动数码管原理与实例,敬请期待。
  • 单片机系统驱动

    2020-04-13 15:37:25
    对于一些单片机而言,系统的资源大多数情况下是有限的。为了充分的利用资源(节省成本),工程设计的时候往往会对资源进行不断的压榨。 对于单片机而言它要做的事情大抵...为了更好的驱动整个单片机程序,我们有...

    概述

    对于一些单片机而言,系统的资源大多数情况下是有限的。为了充分的利用资源(节省成本),工程设计的时候往往会对资源进行不断的压榨。

    对于单片机而言它要做的事情大抵只有如下的几件:

    • 驱动外设
    • 获取外设的信息
    • 对获取到的信息进行处理

    时钟驱动方法

    为了更好的驱动整个单片机程序,我们有时候会采用类似 RTOS 的方法,采用硬件定时器来设置一个系统时钟 sysTick 来使得程序能够能快的运行(如果板子可以跑简单的操作系统那就直接用 RTOS 即可)。一般情况下我们会将当前时钟的优先级设置成比较高。 在单片机里面常常会用到延时,为了充分的利用资源在设计的时候很少会用等待延时(除了驱动某些外设,对协议的时序要求特别高的情况)。

    PRIVATE volatile uint32_t s_sysRefClockTick;
    
    // 模仿CMSIS标准的SysTick的ISR,用于驱动操作系统,持续运行
    void SysTick_Handler(void) interrupt 5
    {
    	uint8_t temp;
    
    	temp = EA;
    	EA = 0;
    	
    	s_sysRefClockTick++;
    
    	//clr_T2CON_TF2;
    	T2CON &= CLR_BIT7;
    
    	EA = temp;
    }

    在设计系统时钟的时候一般会对外提供一下的两个接口 SetSysTickCount 和 GetSysTickCount 。SetSysTickCount 故名思意,就是设置系统的时间,在系统进行省电休眠的时候,我们需要用到这个接口,使得系统的整体时间是正确的。在系统休眠之前获取系统的时钟,在系统休眠结束被唤醒后系统休眠的时间加上休眠前的时间就是正确的时间,从而确保整个系统能够正常的运行。GetSysTickCount 用于比如你每隔一定时间要做某一件事情,但是又希望单片机不浪费资源在这等待时间上,当时间没到的时候去做其他的事情,只有当时间到达的时候才去做相应的操作。具体的代码如下:

    void CLOCK_SetSysTickCount(uint32_t tick)
    {
    	BIT_TMP = EA;
    	EA = 0;
    	
    	s_sysRefClockTick = tick;
    
    	EA = BIT_TMP;
    }
    
    uint32_t CLOCK_GetSysTickCount(void)
    {
    	uint32_t tickCount;
    
    	BIT_TMP = EA;
    	EA = 0;
    	
    	tickCount = s_sysRefClockTick;
    	
    	EA = BIT_TMP;
    
    	return tickCount;
    }

    按键例子

    下面用按键扫描的例子来进行说明:

    对于按键而言,我们常常需要知道按键是长按还是短按,按下的次数等。对于机械按键而言会有一个消抖的过程。

    // 按键被按下的标志
    PRIVATE volatile bit s_newKeyPressed;
    // 键盘扫描状态机
    PRIVATE uint8_t data s_keypadState;
    // 按键被按下时的tick
    PRIVATE uint32_t xdata s_tickWhenPressed;
    // 按键被按下时的扫描值
    PRIVATE int8_t data s_scanValWhenPressed;
    
    
    void KEYPAD_IRQHandler(void) interrupt 7
    {
    	uint8_t oldSFRS;
    
    	oldSFRS = SFRS;
    
    	SFRS = 0;
    	
    	s_newKeyPressed = 1;
    
    
    	// Clear Interrupt Flags
    	SFRS = 0;
    	PIF = 0;
    
    	SFRS = oldSFRS;
    }
    
    void KeypadGetKeycode(bf_uint8_t keypadScanVal)
    {
    	if (0 == keypadScanVal)
    	{
    		// 检测到按键被释放,在这边切换状态,短按按键释放的时候才进行事件的投递
    		KeypadPostKeyEvent(KEYCODE_NONE);
    		
            if ((CLOCK_GetSysTickCount() - s_tickWhenPressed) < KEY_LONG_PRESS_THRESHOLD_TICK)
            {
                // 普通按键的短按事件
                KeypadPostKeyEvent(s_scanValWhenPressed);
            }
    
    		s_keypadState = KEYPAD_STATE_RELEASED;
    		return;
    	}
    	
        if (0 == (s_scanValWhenPressed & KEY_FLAG_LONG_PRESS))
        {
            // 长按事件进行等待判断
            if ((CLOCK_GetSysTickCount() - s_tickWhenPressed) > KEY_LONG_PRESS_THRESHOLD_TICK)
            {
                // 普通按键的长按事件
                KeypadPostKeyEvent(KEY_FLAG_LONG_PRESS | keypadScanVal);
    
                s_scanValWhenPressed |= KEY_FLAG_LONG_PRESS;
                return;
            }
        }
        else
        {
            // 长按时间已到,仍继续按着,此时视为无效按键
            KeypadPostKeyEvent(KEYCODE_NONE);
        }
    }
    
    void KEYPAD_ScanTask(void)
    {
    	uint8_t newScanVal;
    
    	if (!s_newKeyPressed)
    		return;
    
    	newScanVal = KEYPAD_GetScanRawCode();
    
    	switch (s_keypadState)
    	{
    	case KEYPAD_STATE_WAIT_TO_PRESS:
    		if (newScanVal)
    		{
    			s_keypadState = KEYPAD_STATE_DEBOUNCE;
    			s_tickWhenPressed = CLOCK_GetSysTickCount();
    		}
    		break;
    	
    	case KEYPAD_STATE_DEBOUNCE:
    		if ((CLOCK_GetSysTickCount() - s_tickWhenPressed) > KEY_DEBOUNCE_TICK)
    		{
    			if (newScanVal)
    			{
    				s_keypadState = KEYPAD_STATE_PRESSED;
    				s_tickWhenPressed = CLOCK_GetSysTickCount();
    				s_scanValWhenPressed = newScanVal;
    			}
    			else
    			{
    				s_keypadState = KEYPAD_STATE_RELEASED;
    			}
    		}
    		break;
    
    	case KEYPAD_STATE_PRESSED:
    		KeypadGetKeycode(newScanVal);
    		break;
    
    	case KEYPAD_STATE_RELEASED:
    		g_readyKeyCode = KEYCODE_NONE;
    		s_keypadState = KEYPAD_STATE_WAIT_TO_PRESS;
    
    		// 仅当此时确实没有按键按住的情况,才清零按下标志,
    		// 如果有新的按键按住,则保持按下标志不变,后续将启动新一轮的按键的扫描动作
    		// {
    		BIT_TMP = EA;
    		EA = 0;
    
    		if (0 == KEYPAD_GetScanRawCode())
    		{
    			s_newKeyPressed = 0;
    		}
    		
    		EA = BIT_TMP;
    		// }
    		break;
    
    	default:
    		break;
    	}
    }
    

    总结

    本文的设计方法主要用到了有限状态机。

    展开全文
  • 详谈单片机应用系统硬件电路设计

    千次阅读 2016-05-20 14:44:56
    详谈单片机应用系统硬件电路设计 一个单片机应用系统的硬件电路设计包含两部分内容:一是系统扩展,即单片机内部的功能单元,如ROM、RAM、I/O、定时器/计数器、中断系统等不能满足应用系统的要求时,必须在片外...

    详谈单片机应用系统硬件电路设计


    转自电子发烧友

    一个单片机应用系统的硬件电路设计包含两部分内容:一是系统扩展,即单片机内部的功能单元,如ROM、RAM、I/O、定时器/计数器、中断系统等不能满足应用系统的要求时,必须在片外进行扩展,选择适当的芯片,设计相应的电路。二是系统的配置,即按照系统功能要求配置外围设备,如键盘、显示器、打印机、A/D、D/A转换器等,要设计合适的接口电路。

      

    系统的扩展和配置应遵循以下原则:

      

    • 尽可能选择典型电路,并符合单片机常规用法。为硬件系统的标准化、模块化打下良好的基础。

      

    • 系统扩展与外围设备的配置水平应充分满足应用系统的功能要求,并留有适当余地,以便进行二次开发。

      

    • 硬件结构应结合应用软件方案一并考虑。硬件结构与软件方案会产生相互影响,考虑原则是:软件能实现的功能尽可能由软件实殃,以简化硬件结构。但必须注意,由软件实现的硬件功能,一般响应时间比硬件实现长,且占用CPU时间。

      

    • 系统中的相关器件要尽可能做到性能匹配。如选用CMOS芯片单片机构成低功耗系统时,系统中所有芯片都应尽可能选择低功耗产品。

      

    • 可靠性及抗干扰设计是硬件设计必不可少的一部分,它包括芯片、器件选择、去耦滤波、印刷电路板布线、通道隔离等。

      

    • 单片机外围电路较多时,必须考虑其驱动能力。驱动能力不足时,系统工作不可靠,可通过增设线驱动器增强驱动能力或减少芯片功耗来降低总线负载。

      

    • 尽量朝“单片”方向设计硬件系统。系统器件越多,器件之间相互干扰也越强,功耗也增大,也不可避免地降低了系统的稳定性。随着单片机片内集成的功能越来越强,真正的片上系统SoC已经可以实现,如ST公司新近推出的μPSD32××系列产品在一块芯片上集成了80C32核、大容量FLASH存储器、SRAM、A/D、I/O、两个串口、看门狗、上电复位电路等等。

      

    单片机系统硬件抗干扰常用方法实践

      

    影响单片机系统可靠安全运行的主要因素主要来自系统内部和外部的各种电气干扰,并受系统结构设计、元器件选择、安装、制造工艺影响。这些都构成单片机系统的干扰因素,常会导致单片机系统运行失常,轻则影响产品质量和产量,重则会导致事故,造成重大经济损失。

      

    形成干扰的基本要素有三个:

      

    • 干扰源。指产生干扰的元件、设备或信号,用数学语言描述如下:du/dt, di/dt大的地方就是干扰源。如:雷电、继电器、可控硅、电机、高频时钟等都可能成为干扰源。

      

    • 传播路径。指干扰从干扰源传播到敏感器件的通路或媒介。典型的干扰传播路径是通过导线的传导和空间的辐射。

      

    • 敏感器件。指容易被干扰的对象。如:A/D、D/A变换器,单片机,数字IC, 弱信号放大器等。



      

    干扰的分类

      

    1、干扰的分类

     

    干扰的分类有好多种,通常可以按照噪声产生的原因、传导方式、波形特性等等进行不同的分类。按产生的原因分:

      

    可分为放电噪声音、高频振荡噪声、浪涌噪声。

      

    按传导方式分:可分为共模噪声和串模噪声。

      

    按波形分:可分为持续正弦波、脉冲电压、脉冲序列等等。

      

    2、干扰的耦合方式

      

    干扰源产生的干扰信号是通过一定的耦合通道才对测控系统产生作用的。因此,我有必要看看干扰源和被干扰对象之间的传递方式。干扰的耦合方式,无非是通过导线、空间、公共线等等,细分下来,主要有以下几种:

      

    直接耦合:

      

    这是最直接的方式,也是系统中存在最普遍的一种方式。比如干扰信号通过电源线侵入系统。对于这种形式,最有效的方法就是加入去耦电路。从而很好的抑制。

      

    公共阻抗耦合:

      

    这也是常见的耦合方式,这种形式常常发生在两个电路电流有共同通路的情况。为了防止这种耦合,通常在电路设计上就要考虑。使干扰源和被干扰对象间没有公共阻抗。

      

    电容耦合:

      

    又称电场耦合或静电耦合 。是由于分布电容的存在而产生的耦合。

      

    电磁感应耦合:

      

    又称磁场耦合。是由于分布电磁感应而产生的耦合。

      

    漏电耦合:

      

    这种耦合是纯电阻性的,在绝缘不好时就会发生。

      

    常用硬件抗干扰技术

      

    针对形成干扰的三要素,采取的抗干扰主要有以下手段。

      

    1、抑制干扰源

      

    抑制干扰源就是尽可能的减小干扰源的du/dt,di/dt。这是抗干扰设计中最优先考虑和最重要的原则,常常会起到事半功倍的效果。 减小干扰源的du/dt主要是通过在干扰源两端并联电容来实现。减小干扰源的di/dt则是在干扰源回路串联电感或电阻以及增加续流二极管来实现。

      

    抑制干扰源的常用措施如下:

      

    • 继电器线圈增加续流二极管,消除断开线圈时产生的反电动势干扰。仅加续流二极管会使继电器的断开时间滞后,增加稳压二极管后继电器在单位时间内可动作更多的次数。

      

    • 在继电器接点两端并接火花抑制电路(一般是RC串联电路,电阻一般选几K 到几十K,电容选0.01uF),减小电火花影响。

      

    • 给电机加滤波电路,注意电容、电感引线要尽量短。

      

    • 电路板上每个IC要并接一个0.01μF~0.1μF高频电容,以减小IC对电源的影响。注意高频电容的布线,连线应靠近电源端并尽量粗短,否则,等于增大了电 容的等效串联电阻,会影响滤波效果。

      

    • 布线时避免90度折线,减少高频噪声发射。

      

    • 可控硅两端并接RC抑制电路,减小可控硅产生的噪声(这个噪声严重时可能会把可控硅击穿的)。

      

    2、切断干扰传播路径

      

    按干扰的传播路径可分为传导干扰和辐射干扰两类。

      

    所谓传导干扰是指通过导线传播到敏感器件的干扰。高频干扰噪声和有用信号的频带不同,可以通过在导线上增加滤波器的方法切断高频干扰噪声的传播,有时也可加隔离光耦来解决。电源噪声的危害最大,要特别注意处理。

      

    所谓辐射干扰是指通过空间辐射传播到敏感器件的干扰。一般的解决方法是增加干扰源与敏感器件的距,用地线把它们隔离和在敏感器件上加蔽罩。

      

    切断干扰传播路径的常用措施如下:

      

    • 充分考虑电源对单片机的影响。电源做得好,整个电路的抗干扰就 解决了一大半。

      

    许多单片机对电源噪声很敏感,要给单片机电源加滤波电路或稳压器,以减小电源噪声对单片机的干扰。比如,可以利用磁珠和电容组成π形滤波电路,当然条件要求不高时也可用100Ω电阻代替磁珠。

      

    • 如果单片机的I/O口用来控制电机等噪声器件,在I/O口与噪声源之间应加隔离(增加π形滤波电路)。

      

    • 注意晶振布线。晶振与单片机引脚尽量靠近,用地线把时钟区隔离起来,晶振外壳接地并固定。

      

    • 电路板合理分区,如强、弱信号,数字、模拟信号。尽可能把干扰源(如电机、继电器)与敏感元件(如单片机)远离。

      

    • 用地线把数字区与模拟区隔离。数字地与模拟地要分离,最后在一点接于电源地。A/D、D/A芯片布线也以此为原则。

      

    • 单片机和大功率器件的地线要单独接地,以减小相互干扰。 大功率器件尽可能放在电路板边缘。

      

    • 在单片机I/O口、电源线、电路板连接线等关键地方使用抗干扰元件如磁珠、磁环、电源滤波器、屏蔽罩,可显着提高电路的抗干扰性能。

      

    3、提高敏感器件的抗干扰性能

      

    提高敏感器件的抗干扰性能是指从敏感器件这边考虑尽量减少对干扰噪声 的拾取,以及从不正常状态尽快恢复的方法。

      

    提高敏感器件抗干扰性能的常用措施如下:

      

    • 布线时尽量减少回路环的面积,以降低感应噪声。

      

    • 布线时,电源线和地线要尽量粗。除减小压降外,更重要的是降低耦 合噪声。

      

    • 对于单片机闲置的I/O口,不要悬空,要接地或接电源。其它IC的闲置端在不改变系统逻辑的情况下接地或接电源。

      

    • 对单片机使用电源监控及看门狗电路,如:IMP809,IMP706,IMP813,X5043,X5045等,可大幅度提高整个电路的抗干扰性能。

      

    • 在速度能满足要求的前提下,尽量降低单片机的晶振和选用低速数字电路。 


    • IC器件尽量直接焊在电路板上,少用IC座。

      

    4、其它常用抗干扰措施

      

    交流端用电感电容滤波:去掉高频低频干扰脉冲。

      

    变压器双隔离措施:变压器初级输入端串接电容,初、次级线圈间屏蔽层与初级间电容中心接点接大地,次级外屏蔽层接印制板地,这是硬件抗干扰的关键手段。次级加低通滤波器:吸收变压器产生的浪涌电压。

      

    采用集成式直流稳压电源:因为有过流、过压、过热等保护。

      

    I/O口采用光电、磁电、继电器隔离,同时去掉公共地。

      

    通讯线用双绞线:排除平行互感。

      

    防雷电用光纤隔离最为有效。

      

    A/D转换用隔离放大器或采用现场转换:减少误差。

      

    外壳接大地:解决人身安全及防外界电磁场干扰。

      

    加复位电压检测电路。防止复位不充份,CPU就工作,尤其有EEPROM的器件,复位不充份会改变EEPROM的内容。

      

    印制板工艺抗干扰:

      

    • 电源线加粗,合理走线、接地,三总线分开以减少互感振荡。

      

    • CPU、RAM、ROM等主芯片,VCC和GND之间接电解电容及瓷片电容,去掉高、低频干扰信号。

      

    • 独立系统结构,减少接插件与连线,提高可靠性,减少故障率。

      

    • 集成块与插座接触可靠,用双簧插座,最好集成块直接焊在印制板上,防止器件接触不良故障。

      

    • 有条件采用四层以上印制板,中间两层为电源及地

    展开全文
  • 本液晶显示驱动电路采用AT89C52,显示部位采用LCD5,人机交互接口采用4X4矩阵式键盘。该液晶显示驱动能实现欢迎界面,出错时能实现提示界面。
  • 单片机硬件

    2021-04-27 16:53:33
    将'cpu,存储器,io设备(小键盘/LED显示器)'等,装在一块印刷电路板上 后来,演变为 单片机(单芯片微型计算机) Intel公司推出了MCS-51系列单片机,集成: 8位cpu、4K的rom、128M的ram、4个8位并口、1个全双工...
  • 对基于W78E052D单片机设计的PS2键盘方案、硬件和软件设计做了详细阐述,命令查询、TGC和状态同步处理对自行设计非标PS2键盘有借鉴意义,在整个设计过程中,通过不断改进硬件和调试软件,得到了预期的效果。...
  • 单片机硬件系统设计原则

    千次阅读 2019-07-09 20:58:12
    一个单片机应用系统的硬件电路设计包含两部分内容:一是系统扩展,即单片机内部的功能单元,如ROM、RAM、I/O、定时器/计数器、中断系统等不能满足应用系统的要求时,必须在片外进行扩展,选择适当的芯片,设计相应的...
  • 单片机系统中PS/2键盘驱动程序的设计<!--google_ad_client = "pub-1201501101095833";/* article 300x250, 创建于 08-8-25 */google_ad_slot = "8523775123";google_ad_width = 300;google_ad_height = 250;//--
  • 51单片机外围硬件资源 一.MCS-51单片机基本特性 ♦ 8 位的 CPU , 片内有振荡器和时钟电路, 工作频率为1 ~ 12MHz (Atmel 89Cxx为0~24MHz) ♦ 片内有 128/256字节 RAM ♦ 片内有 0K/4K/8K字节 程序存储器ROM ♦ ...
  • 单片机3个IO口键盘

    2011-01-14 16:21:45
    介绍了一种利用二极管还有按键组成的键盘硬件电路还有驱动程序,不像4*4那样要用8个IO口,只用3个IO口与单片机相连,程序简单
  • 描述对于工业控制微机系统来说输入设备键盘几乎是必不可...在按键数目较多时,则大多采用动态扫描的方式构成键盘矩阵,这种键盘虽然结构原理简单,驱动程序易于设计,但是在具体实现时往往需要花很多的时间去设计印刷电...
  • 单片机硬件设计的经验总结

    千次阅读 2019-09-25 15:51:42
    下面是总结的一些设计中应注意的问题,和单片机硬件设计原则,希望大家能看完 探索者号智能自平衡车 http://www.makeru.com.cn/course/details/2961?s=69821 (1) 在元器件的布局方面,应该把相互有关的元件尽量放...
  • LED大屏幕显示系统,以基于题目基本要求,本系统对驱动电路和动画显示进行了重点设计。本系统大部分功能由软件来实现,吸收了硬件软件化的思想,大部分功能通过软件来实现,使电路简单明了,系统稳定性大大提高。本...
  • 一种变波特率方式单片机ISP设计.pdf 一种可用于器性能测试的恒流源.pdf 一种基于AT89C51单片机的直流调速控制装置.pdf 一种基于atmega8单片机的iccd亮度调节方案.pdf 一种基于avr单片机的监控系统的研究与实现.pdf...
  • 通过mega16单片机和Mega8单片机识别硬件键盘数据。
  • 硬件虚拟键盘

    2021-07-30 14:17:41
    硬件虚拟键盘 市面上存在着许多的虚拟键盘应用的软件,例如AutoHotKey,...这款硬件虚拟键盘不一样,一元大小 500K内存采用文件系统可直接编辑写入芯片,随插即用免驱动。 使用文件管理程序就能打开编辑芯片写入代码,
  • 0.引言 对于工业控制微机系统来说输入设备键盘几乎是必不可少的...在按键数目较多时,则大多采用动态扫描的方式构成键盘矩阵,这种键盘虽然结构原理简单,驱动程序易于设计,但是在具体实现时往往需要花很多的时间去设...
  • 单片机硬件设计总结

    千次阅读 2018-09-14 14:56:15
    下面是总结的一些设计中应注意的问题,和单片机硬件设计原则,老生常谈了,不过还是写一下:   (1)在元器件的布局方面,应该把相互有关的元件尽量放得靠近一些  例如,时钟发生器、晶振、CPU的时钟输入端都易...
  • 单片机的asp下载线驱动。 官方的驱动,win7 64位亲测可用。 安装方法: 1,将压缩文件解压。 2,下载线插入usb接口(一般要插在usb2.0或1.0的接口上,不可插usb3.0,比较稳妥的做法是插在平时插鼠标键盘的usb插口上...
  • 两路数码管显示,实际应用电路只需一路即可,未来验证数码管多种方式驱动方式。 Proteus仿真: 实例代码 #include <reg52.h> #include<intrins.h> #define uchar unsigned char #define uint unsigned...
  • 电路为本人设计,其中包含PIC单片机最小系统,DS1302电路,4X4矩阵键盘接口,24L01无线模块接口,DS18B20温度传感器,和LM298电机驱动电路,每一部分都做成模块区分开,比较直观。
  • CH455是一款用于驱动数码管(LED)和矩阵键盘扫描控制芯片。能够动态驱动4位数码管或者32个LED。同时支持7x4的键盘扫描。单片机通过I2C对CH455进行读写,同时包括一个#INT中断引脚,任何一个按键按下都会触发中断,...
  • 4.硬件代码 1.矩阵键盘代码设计 这部分代码本来自己已经写好了,但在网上看到了一段更好的,用矩阵对于八个IO口管理,不管IO口这么变,只要改变矩阵PIN值即可,太TM机智了,我得好好学习一下。 #include "stm32...
  • 本文在分析PS/2协议和PS/2键盘和PS/2鼠标工作原理与特点的基础上,给出在AT89C51单片机上实现对PS/2键盘支持的硬件连接方法以及驱动程序的设计实现。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,492
精华内容 1,396
关键字:

单片机驱动键盘的硬件方式