根据VHDL的键盘扫描及显示电路

根据VHDL的键盘扫描及显示电路
根据VHDL的键盘扫描及显示电路

广西工学院

EDA 课程设计

说明书

设计题目基于VHDL的键盘扫描

及显示电路

系别电控系

专业班级__________________

学生姓名__________________

学号__________________

指导教师__________________

日期__________________

基于VHDL的键盘扫描及显示电路一、工作原理:

可编程器件的KEY_HANG[3..0]行信号输出端不停循环输出“1110”“1101”“1011”“0111”。当没有键按下时可编程器件的KEY_LIE[3..0]列信号输入端检测到的是“1111”。当有按键按下时,如按下1,此时KEY_HANG[3..0]行信号输出为“0111”,即KEY_HANG[3..0]的3管脚为“0”,可由电路看出,此时输入端KEY_LIE[3..0]检测到的将是“0111”。KEY_LIE[3..0]的3管脚为0,可以在编写程序时,将输出信号KEY_HANG[3..0]与输入信号KEY_LIE[3..0]同时判断,比如可以认为当数据“KEY_HANG&KEY_LIE”为“01110111”时,可译码成数据1,。同理可得其他按键的编码。根据不同数据的编码译成不同的数据。

名称IO属性描述备注

clk in 输入时钟,1K和40K频

KEY_HANG[3..0]out矩阵键盘的扫描输入端口

KEY_LIE[3:0] in矩阵键盘的扫描输出端口START out 数据输出标志

DISP out 数码管译码显示译码7bit

DATA[6..0] 输出

DASP SEL[1..0] out数码管扫描输出2bit

二、设计思路:

1.循环输出行信号,检测列信号输入,将行列信号相并。

2.译键值。

3.去抖动。在译没一个键值后,为了防止抖动,加了一个计算环节,一旦检测到列信号后,译码,紧跟着进入计数环节,此时键抖动不会进入其他环节,这样可以防止抖动。

4.数码管译码、循环显示。

电路的具体功能罗列如下:

1) 采用4×4矩阵键盘作为操作数和操作符的输入设备。

2) 采用2位8段数码管作为输出显示设备,显示按下的数字及简单的功能。

3) 由于所有键盘在按下或者弹起的时候均有按键抖动,所以应该采用去抖电路,当检测到有按键按下去的时候,应该延时20ms后,再进行检测,如果仍有键盘按键被按下去的话,则进行键盘读值。

矩阵键盘模块key_4_4的RTL电路图如下所示。

当CLK_1K上升沿到来时状态转为state0,然后判断列与非后的值,看是否有按键按下,如果有输入数据,则自动启动20ms的计数器,当计满数后,产生一个指示信号,此信号为1bit,高电平有效。当读到此指示信号后,便再次将row信号锁存至寄存器,便得到键盘的一个返回值。如果row没有变化,则state转换为state2,对第二行进行按键扫描。依此类推,扫描第三行与第四行。

因为普通的按键都是接触式的,当按键闭合或释放时,上下接触面都会产生一个很短暂的抖动,如图2.2所示,这个抖动时间一般都会持续5-10ms,虽然这个抖动时间很短,但对于FPGA工作在50M的高频率上的器件来说,还是可以捕捉的到的。为了使CPU对于一次按键操作只处理一次,在软件中必须加入去除抖动处理。

图2.2 按键闭合时产生的抖动

由图中可以看出,最简单的去抖方法就是每隔一段时间读一次键盘,时间间隔大于10ms即可。如果连续两次检测都有按键被按下,则可以肯定有按键被按下,而且也进入闭合稳定期。

三、数码管显示译码模块设计

数码管显示译码电路主要用来对实际的二进制数据装换为8段数码管的实际显示控制码,采用两个2位的8段共阴极数码管,数码管的显示方式有两种:静态显示和动态显示。具体如下:

静态显示方式:所谓静态显示就是指无论是多少位数码管,同时处于显示状态。

静态显示的优点是:数码管显示无闪烁,亮度高,软件控制比较容易;缺点是:需要的硬件电路较多(每一个数码管都需要一个锁存器),将造成很大的不便,同时由于所有数码管都处于被点亮状态,所以需要的电流很大,当数码管的数量增多时,对电源的要求也就随之增高。所以,在大部分的硬件电路设计中,很少采用静态显示方式。

动态显示方式:所谓动态显示,是指无论在任何时刻只有一个数码管处于显示状态,每个数码管轮流显示。

动态显示的优点是:硬件电路简单(数码管越多,这个优势越明显),由于每个时刻

只有一个数码管被点亮,所以所有数码管消耗的电流较小;缺点是:数码管亮度不如静态显示时的亮度高,例如有8个数码管,以1秒为单位,每个数码管点亮的时间只有1/8秒,所以亮度较低;如果刷新率较低,会出现闪烁现象;如果数码管直接与单片机连接,软件控制上会比较麻烦等。

显示译码方式如下:

1) 时钟上升沿到来时分别对位选和段选进行译码。

2) 将输入的2bite位选数据译码成4比特数据控制数码管的2位,由于是共阴极数码管要选定相应的数码管则使该位位低电平,其它位为高电平即可,如:0000译码为0111_1111,对应于实验板上的左边第一位数码管。

3) 将输入的4bite段选数据译码为8比特数据控制8个LED的亮灭,最高位接A,最低位接小数点位DP。若要显示0则对应的译码为8’b1111_1100。

四、仿真

没有键按下时行循环输出“1110”“1101”“1011”“0111”

当随机按下时行保持所按下的状态不变

五、结论

这次EDA课程设计历时十天,学到很多很多的东西。同时不仅可以巩固以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次设计,进一步加深了对EDA的了解,让我对它有了更加浓厚的兴趣。特别是当每一个子模块编写调试成功时,都会很高兴。在编写顶层文件的程序时,遇到了不少问题,特别是各元件之间的连接,以及信号的定义,总是有错误。排除困难后,程序编译就通过了。在波形仿真时,也遇到了一点困难,想要的结果不能在波形上得到正确的显示,后来,经过屡次的调试之后,才发现在写代码之前对信号的相位考虑不足。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独

立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。

总的来说,这次设计还是比较成功的,在设计中遇到了很多问题,最后在老师的辛勤指导下,终于迎刃而解,有点小小的成就感,终于觉得平时所学的知识有了实用的价值,达到了理论与实际相结合的目的,不仅学到了不少知识,而且锻炼了自己的能力,使自己对以后的路有了更加清楚的认识,同时,对未来有了更多的信心。最后,对给过我帮助的老师和所有同学再次表示忠心的感谢!

六、程序

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_ARITH.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY HH IS

PORT(

CLK_1K : IN STD_LOGIC; -- 时钟输入1KHZ

CLK_40K : IN STD_LOGIC; --时钟输入40K HZ

KEY_LIE : IN STD_LOGIC_VECTOR(3 DOWNTO 0);-- 列输入

START :OUT STD_LOGIC; --二-十进制数据输出标志

KEY_HANG :OUT STD_LOGIC_VECTOR(3 DOWNTO 0); --行输出

DATA_P : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);--二-十进制数输出

DISP_DATA : OUT STD_LOGIC_VECTOR(6 DOWNTO 0);--数码管显示译码输出

DISP_SEL : OUT STD_LOGIC_VECTOR(1 downto 0));--数码管显示扫描输出

END ;

ARCHITECTURE RTL OF HH IS

SIGNAL INT : STD_LOGIC; --列与非信号

SIGNAL CLK_SEL : STD_LOGIC;--键值控制1khz的时钟信号

SIGNAL START_REG:STD_LOGIC; --数据输出标志信号

SIGNAL DISP_SEL_REG:STD_LOGIC_VECTOR(1 DOWNTO 0);--数码管显示扫描信号

SIGNAL DATA_L,DATA_H:STD_LOGIC_VECTOR(3 DOWNTO 0);--二-十进制低位、高位信号

SIGNAL DATA_TMP:STD_LOGIC_VECTOR(3 DOWNTO 0);--二-十进制低位高位暂存信号

SIGNAL KEY_HANG_TMP:STD_LOGIC_VECTOR(3 DOWNTO 0);--行输出信号SIGNAL DISP_DATA_REG:STD_LOGIC_VECTOR(3 DOWNTO 0); --二-十进制低位、高位暂存信号(数码管用)

SIGNAL KEY_CODE:STD_LOGIC_VECTOR(7 DOWNTO 0);--行列相并信号SIGNAL DATA_P_REG:STD_LOGIC_VECTOR(7 DOWNTO 0); --二-十进制数信号

BEGIN

KEY_CODE<=KEY_HANG_TMP&KEY_LIE;--行、列相并

DATA_P<=DATA_P_REG;

START<= START_REG;

KEY_HANG<=KEY_HANG_TMP;

DISP_SEL<=DISP_SEL_REG;

CLK_SEL<=CLK_1K AND ( NOT INT);--无键按下时有CLK-SEL时钟信号输出

PROCESS (CLK_SEL,CLK_40K , INT)

VARIABLE STATE : INTEGER RANGE 0 TO 3 ;

BEGIN

IF RISING_EDGE(CLK_40K) THEN --一个40K的脉冲上升沿到来输入一次列状态以判断是否有按键按下

INT<= NOT (KEY_LIE(3) AND KEY_LIE(2) AND KEY_LIE(1) AND KEY_LIE(0)); END IF;

IF RISING_EDGE(CLK_SEL) THEN --一个1K的脉冲的上升沿到来输出一个带表行的状态

CASE STATE IS--变量表示状态机,4循环

WHEN 0=>

KEY_HANG_TMP<="1110";

STATE :=1;

WHEN 1 =>

KEY_HANG_TMP<="1101";

STATE :=2 ;

WHEN 2 =>

KEY_HANG_TMP<="1011";

STATE :=3;

WHEN 3 =>

KEY_HANG_TMP<="0111";

STATE :=0;

END CASE;

END IF;

END PROCESS;

PROCESS (CLK_40K , INT)--进程是并行的VARIABLE STATE :INTEGER RANGE 0 TO 3; VARIABLE COUNTER : INTEGER RANGE 0 TO 31; BEGIN

IF INT='0' THEN

STATE:=0;

COUNTER:=0;

ELSIF RISING_EDGE(CLK_40K) THEN

CASE STATE IS

WHEN 0 =>

DATA_TMP <= DATA_L;--低四位放入暂存信号内STATE:=1;

WHEN 1 =>--再嵌套一个CASE语句

CASE KEY_CODE IS--实现把像并数据译码十六进制的1到F

WHEN "01110111" =>

DATA_L <="0001";--把1放入低四位

DATA_H <=DATA_TMP;--把暂存信号的内容放入高四位,相相当于向左移位

STATE:=2;--跳出内嵌套CASE语句,转向外CASE语句的状态2

WHEN "01111011" =>

DATA_L <="0010";

DATA_H <=DATA_TMP;

STATE:=2;

WHEN "01111101" =>

DATA_L <="0011";

DATA_H <=DATA_TMP;

STATE:=2;

WHEN "01111110" =>

DATA_L <="0100";

DATA_H <=DATA_TMP;

STATE:=2;

WHEN "10110111" =>

DATA_L <="0101";

DATA_H <=DATA_TMP;

STATE:=2;

WHEN "10111011" =>

DATA_L <="0110";

DATA_H <=DATA_TMP;

STATE:=2;

WHEN "10111101" =>

DATA_L <="0111";

DATA_H <=DATA_TMP;

STATE:=2;

WHEN "10111110" =>

DATA_L <="1000";

DATA_H <=DATA_TMP;

STATE:=2;

WHEN "11010111" =>--9键

DATA_L <="1001";

DATA_H <=DATA_TMP;

STATE:=2;

WHEN "11011011" =>--0键

DATA_L <="0000";

DATA_H <=DATA_TMP;

STATE:=2;

WHEN "11011101" =>--A键,实现步进加一功能IF DATA_H ="1001" THEN

IF DATA_L="1001" THEN

DATA_H<="1001";

DATA_L<="1001";

ELSE DATA_L<=DATA_L + 1;

END IF;

ELSIF DATA_L="1001" THEN

DATA_L<="0000";

DATA_H<=DATA_H+1;

ELSE

DATA_L<=DATA_L+1;

DATA_H<=DATA_H;

END IF;

STATE:=2;

WHEN "11011110" =>--B键,实现步键加十IF DATA_H="1001" THEN

DATA_H<="1001";

ELSE

DATA_L<=DATA_L;

DATA_H<= DATA_H+1;

END IF;

STATE:=2;

WHEN "11100111" =>--C键,实现步进减一

IF DATA_L="0000" AND DATA_H="0000" THEN

DATA_L<="0000";

DATA_H<="0000";

ELSIF DATA_L="0000" THEN

DATA_L<="1001";

DATA_H<= DATA_H-1;

ELSE

DATA_L <=DATA_L-1;

DATA_H<=DATA_H;

END IF;

STATE:=2;

WHEN "11101011"=>--D键,实现步进减十

IF DATA_H="0000" THEN

DATA_H<="0000";

ELSE

DATA_L<=DATA_L;

DATA_H<=DATA_H-1;

END IF;

STATE:=2;

WHEN "11101110" =>--E键,实现送数功能

DATA_L<=DATA_L;

DATA_H<=DATA_H;

DATA_P_REG<=DATA_H&DATA_L;

START_REG<='1';--数据输出标志信号置一STATE:=2;

WHEN"11101101" =>--F键,实现清零功能

DATA_L<="0000";

DATA_H<="0000";

STATE:=2;

WHEN OTHERS =>--不可缺少

STATE:=2;

END CASE;

WHEN 2 =>--状态2实现去抖动功能

IF COUNTER=31 THEN --计数延时去抖

COUNTER:=0;

STATE:=3;

ELSE

COUNTER:=COUNTER+1;

STATE:=2;

END IF;

WHEN 3 =>-- 清除数据输出标志

START_REG<='0';

STATE:=3;

END CASE;

END IF;

END PROCESS;

键盘与LED显示实验

实验三键盘及LED显示实验 一、实验内容 利用8255可编程并行接口控制键盘及显示器,当有按键按下时向单片机发送外部中断请求(INT0,INT1),单片机扫描键盘,并把按键输入的键码一位LED显示器显示出来。 二、实验目的及要求 (一)实验目的 通过该综合性实验,使学生掌握8255扩展键盘和显示器的接口方法及C51语言的编程方法,进一步掌握键盘扫描和LED显示器的工作原理;培养学生一定的动手能力。 (二)实验要求 1.学生在实验课前必须认真预习教科书与指导书中的相关内容,绘制流程图,编写C51语言源程序,为实验做好充分准备。 2.该实验要求学生综合利用前期课程及本门课程中所学的相关知识点,充分发挥自己的个性及创造力,独立操作完成实验内容,并写出实验报告。 三、实验条件及要求 计算机,C51语言编辑、调试仿真软件及实验箱50台套。 四、实验相关知识点 1.C51编程、调试。 2.扩展8255芯片的原理及应用。 3.键盘扫描原理及应用。 4.LED显示器原理及应用。

5.外部中断的应用。 五、实验说明 本实验仪提供了8位8段LED 显示器,学生可选用任一位LED 显示器,只要按地址输出相应的数据,就可以显示所需数码。 显示字形 1 2 3 4 5 6 7 8 9 A b C d E F 段 码 0xfc 0x60 0xda 0xf2 0x66 0xb6 0xbe 0xe0 0xfe 0xf6 0xee 0x3e 0x9c 0x7a 0x9e 0x8e 六、实验原理图 01e 1d 2dp 3 c 4g 56 b 78 9 a b c g d dp f 10a b f c g d e dp a 11GND3a b f c g d e dp 12 GND4 a b f c g d e dp GND1GND2DS29 LG4041AH 234 567 89A B C D E F e 1d 2dp 3 c 4g 56 b 78 9 a b c g d dp f 10a b f c g d e dp a 11GND3a b f c g d e dp 12 GND4 a b f c g d e dp GND1 GND2DS30 LG4041AH 1 2 3 4 5 6 7 8 JP4112345678 JP4712345678JP42 SEGA SEGB SEGC SEGD SEGE SEGG SEGF SEGH SEGA SEGB SEGC SEGD SEGE SEGG SEGF SEGH A C B 12345678 JP92D 5.1K R162 5.1K R163VCC VCC D034D133D232D331D430D529D628D727PA04PA13PA22PA31PA440PA539PA638PA737PB018PB119PB220PB321PB422PB523PB624PB725PC014PC115PC216PC317PC413PC512PC611PC7 10 RD 5WR 36A09A18RESET 35CS 6 U36 8255 D0D1D2D3D4D5D6D7WR RD RST A0A1PC5PC6PC7 PC2PC3PC4PC0PC1CS 12345678JP56 12345678JP53 12345678 JP52 PA0PA1PA2PA3PA4PA5PA6PA7PB0PB1PB2PB3PB4PB5PB6PB7 (8255 PB7)(8255 PB6)(8255 PB5)(8255 PB4)(8255 PB3)(8255 PB2)(8255 PB1)(8255 PB0) (8255 PC7)(8255 PC6)(8255 PC5)(8255 PC4)(8255 PC3)(8255 PC2)(8255 PC1)(8255 PC0) (8255 PA0) (8255 PA1) (8255 PA2) (8255 PA3) (8255 PA4) (8255 PA5) (8255 PA6) (PA7) I N T 0(P 3.2) I N T 0(P 3.3) 七、连线说明

彩电场扫描电路故障维修

场扫描电路的任务是为场偏转线圈提供锯齿波电流使电子束作上下移动而形成垂直光栅,同时还要为字符电路、亮度电路提供场逆程脉冲,为水平枕形校正电路提供场锯齿波;为扫描制式识别电路提供基本计算单元(即场逆程脉冲)。高档次的大屏幕彩色电视机,为了获得线性良好的图像还设置南北枕形校正电路。为了便于了解,这里把与普通彩色电视机相同的电路称为基础场扫描电路;把在普通彩色电视机基础上增设的场扫描相关电路称为辅助场扫描电路。基础场扫描电路包括场振荡、锯齿波形成、场输出放大、场偏转、场反馈等电路;辅助场扫描电路包括场扫描制式切换、南北枕形校正等电路。 4.1 场扫描电路故障现象 常见的场扫描电路故障现象有: (1) 场振荡、锯齿波形成、场激励、场输出、场偏转、场制式切换等任何一个部位不工作导致水平一条亮线。 (2) 场激励不足、输出放大倍数不够、场负反馈加深导致垂直幅度不足。 (3) 场线性电路异常导致垂直线性不好。

(4) 场升压电路异常引起光栅顶部有数根密集的回扫线,有的机型还伴有无字符显示现象. (5) 场偏转线圈上并联的阻尼电阻阻值变大或开路导致光栅上满屏横条干扰。 (6) 场频调节、定时元件参数变化、扫描制式切换电路异常引起场不同步。 (7) 场集成电路击穿或场输出不工作导致无光栅、无图像、无字符。 (8) 南北枕形校正电路有问题导致光栅在垂直方向枕形失真。 4.2 扫描电路故障判断 4.2.1 场扫描电路的外因 场扫描电路的扫描幅度、频率、相位除受自身电路影响外,还受下列因素的影响: 一、复合同步分离电路

复合分离电路虽同时影响行、场两电路的同步,但因行同步分离电路采用AFC鉴相式,其同步范围相对大得多。所以,在复合同步分离电路输出的复合同步信号不理想时,也能使行同步,但却不能使场保持同步或者场同步不良。 二、+12V稳压电路 目前的大屏幕彩色电视机都将行、场振荡电路均集成在同一块集成电路内,有些机型的行、场扫描脉冲都是从对行振荡脉冲(500kHz)分频取得,但因行振荡电路的工作电源取自开关电源+B或+24V,而场振荡电路的工作电源却是+12V稳压电源。因此,在+12V稳压电路无输出或输出电压低时,集成电路内场脉冲振荡器或分频器不工作,从而使电视机呈一条水平亮线。 又因场振荡集成电路中往往还设有一级场激励电路,如果这个集成电路的工作电压(+ 12V)偏低时,虽然场分频电路有场扫描脉冲输出,但由于集成电路内的场激励级工作电压的不足,从而导致电视机出现场幅不够。 三、+24V-56V工作电压形成电路

矩阵键盘电路设计

课程设计 题目矩阵键盘电路设计教学院计算机学院 专业计算机应用技术班级 姓名 指导教师 2010 年01 月12 日

前言.................................................................... 第一章需求分析......................................................... 功能描述......................................................... 功能分析......................................................... 第二章系统的原理及分析................................................. 用到的知识点的介绍,知识点使用的总体思路 第三章详细设计......................................................... 硬件设计 系统结构图,元器件的选择等 软件设计 所设计的软件关键模块的程序流程 第四章测试............................................................ 运行结果分析等 第五章总结............................................................. 参考文献................................................................ 附录 关键程序代码........................................................

CPU控制的键盘扫描实验

CPU键盘扫描实验 电路图如下: 要求按下s1键时,p3口的8位LED正向流水点亮;按下s2键时,p3口的8位LED反向流水点亮;按下s3键时,p3口的8位LED 熄灭;按下s4键时,p3口的8位LED闪烁。 程序代码: #include unsigned char tab[ ]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //段码表 sbit S1=P1^4; //将S1位定义为P1.4引脚 sbit S2=P1^5; //将S2位定义为P1.5引脚 sbit S3=P1^6; //将S3位定义为P1.6引脚 sbit S4=P1^7; //将S4位定义为P1.7引脚 /*流水灯延时*/ void delay0() { unsigned char i,j; for(i=0;i<250;i++) for(j=0;j<250;j++) ;

} /*软件消抖延时*/ void delay1() { unsigned char i,j; for(i=0;i<100;i++) for(j=0;j<100;j++) ; } /*正转*/ void zheng() { int i; for(i=0;i<8;i++) {P3=tab[i]; delay0();} } /*反转*/ void fan() { int i; for(i=7;i>=0;i--) {P3=tab[i]; delay0();} } /*关闭*/ void close() { P3=0xff; } /*闪烁*/ void shan() { P3=0xff; delay0(); P3=0x00; delay0();

实验报告七-键盘扫描及显示实验

信息工程学院实验报告 课程名称:微机原理与接口技术 实验项目名称:键盘扫描及显示实验 实验时间: 班级: 姓名: 学号: 一、实 验 目 的 1. 掌握 8254 的工作方式及应用编程。 2. 掌握 8254 典型应用电路的接法。 二、实 验 设 备 了解键盘扫描及数码显示的基本原理,熟悉 8255 的编程。 三、实 验 原 理 将 8255 单元与键盘及数码管显示单元连接,编写实验程序,扫描键盘输入,并将扫描结果送数码管显示。键盘采用 4×4 键盘,每个数码管显示值可为 0~F 共 16 个数。实验具体内容如下:将键盘进行编号,记作 0~F ,当按下其中一个按键时,将该按键对应的编号在一个数码管上显示出来,当再按下一个按键时,便将这个按键的编号在下一个数码管上显示出来,数码管上可以显示最近 6 次按下的按键编号。 键盘及数码管显示单元电路图如图 7-1 和 7-2 所示。8255 键盘及显示实验参考接线图如图 7-3 所示。 图 7-1 键盘及数码管显示单元 4×4 键盘矩阵电路图 成 绩: 指导老师(签名):

图 7-2 键盘及数码管显示单元 6 组数码管电路图 图 7-3 8255 键盘扫描及数码管显示实验线路图 四、实验内容与步骤 1. 实验接线图如图 7-3 所示,按图连接实验线路图。

图 7-4 8255 键盘扫描及数码管显示实验实物连接图 2.运行 Tdpit 集成操作软件,根据实验内容,编写实验程序,编译、链接。 图 7-5 8255 键盘扫描及数码管显示实验程序编辑界面 3. 运行程序,按下按键,观察数码管的显示,验证程序功能。 五、实验结果及分析: 1. 运行程序,按下按键,观察数码管的显示。

键盘扫描电路

键盘扫描电路 设计:2014-4-1 1.电路名称:键盘扫描电路 2.电路概述:(包括遵循的依据或标准,实现的功能) 利用矩阵键盘方式,实现12位按键输入,供用户对电能表进行充值等操作,广泛应用于一体式预付费键盘表及分体式CIU等产品中。 3.工作参数及指标 参比温度23℃±2℃ 4.电路图 5.电路图的工作原理描述: 在上电模式下,程序SW1-SW4一直输出低电平,SW5-SW7检测高低电平,在没有按键被按下的情况下SW5-SW7都被上拉到高电平,当十二位按键中任意一位被按下时,SW1-SW4的低电平通过分压电阻使的SW5-SW7中某位由

高电平变为低电平,程序开始进入按键扫描,逐一使SW1-SW4输出低电平并结合SW-SW7的状态确认哪个按键被按下,程序扫描两次以防止误判。 在掉电模式下(适用于TDK654X系列芯片),由于TDK654X系列芯片进入低功耗后管脚无法控制,因此电路增加D1、D2两个双二级管,用于按键唤醒单片机,当低功耗模式下SW1-SW4无法输出低电平,此时键盘被按下时先通过D1、D2使PB脚电平由低到高变化唤醒单片机,单片机被唤醒后通过上电模式一样的程序扫描方式以确认具体是哪个按键被按下。 图一 图一中坐标1是PB口线的波形,坐标2是SW5口线的波形,在掉电情况下,当按一下S1按键,PB口产生一个3V的高电平脉冲(TDK芯片高电平为2V 以上),唤醒芯片程序初始化SW1-SW4,此时按键被按着因此SW5会有一个低电平脉冲,程序进入扫描后PB由于SW1-SW4轮流输出高的原因使PB持续高电平25ms左右,扫描完一轮后程序进入按键释放期150ms,SW1-SW4全部输出低,因此PB持续150ms低电平,然后程序进入第二轮扫描,由于SW1-SW4轮流输出高电平的原因,PB又会产生一个高电平,且高电平宽度宽度是SW5的4倍,扫描完两轮后又进入按键释放期,此时S1键被释放,程序按键处理完成进入低功耗模式,PB与SW5口线恢复到默认状态。

根据VHDL的键盘扫描及显示电路

广西工学院 EDA 课程设计 说明书 设计题目基于VHDL的键盘扫描 及显示电路 系别电控系 专业班级__________________ 学生姓名__________________ 学号__________________ 指导教师__________________ 日期__________________

基于VHDL的键盘扫描及显示电路一、工作原理: 可编程器件的KEY_HANG[3..0]行信号输出端不停循环输出“1110”“1101”“1011”“0111”。当没有键按下时可编程器件的KEY_LIE[3..0]列信号输入端检测到的是“1111”。当有按键按下时,如按下1,此时KEY_HANG[3..0]行信号输出为“0111”,即KEY_HANG[3..0]的3管脚为“0”,可由电路看出,此时输入端KEY_LIE[3..0]检测到的将是“0111”。KEY_LIE[3..0]的3管脚为0,可以在编写程序时,将输出信号KEY_HANG[3..0]与输入信号KEY_LIE[3..0]同时判断,比如可以认为当数据“KEY_HANG&KEY_LIE”为“01110111”时,可译码成数据1,。同理可得其他按键的编码。根据不同数据的编码译成不同的数据。 名称IO属性描述备注 clk in 输入时钟,1K和40K频 率 KEY_HANG[3..0]out矩阵键盘的扫描输入端口 KEY_LIE[3:0] in矩阵键盘的扫描输出端口START out 数据输出标志 DISP out 数码管译码显示译码7bit

DATA[6..0] 输出 DASP SEL[1..0] out数码管扫描输出2bit

行扫描电路的检修与技巧

行扫描电路的检修与技巧 行扫描电路常见击穿短路元件:行输出管和行输出变压器,其中行输出管集电极与发射极之间击穿`行输出变压器初级与地之间击穿及绕组局部短路是造成开关电源电压输出端只有开机瞬间电压的最常见原因。 行扫描常见开路元件有:行输出管集电极供电的10欧以下1W以上保险电阻`行推动管集电极供电中的3。3~10千欧或3~5W电阻`视频或行扫描集成电路行启动引脚供电中的6。8~10千欧/5W左右保险兼降压电阻。 行扫描电路中最常见接触不良的元件有:行频电位器接触不良造成的行频不正常`行输出变压器中的加速极电位器与聚焦极电位器接触不良,形成的亮度低`散焦。 1行扫描故障电路引起现象 行扫描电路的任务是:产生水平方向偏转磁场;提供显象管发光所需的灯丝`加速极`聚焦极`阳极电压`字符电路和彩色解码电路所需的行逆成脉冲。有的机型还要产生视频所需的+180~+205V电压,场扫描电路+24~+28V电压:公共通道所需+12V`+8V电压。 (1)行偏转线圈开路,出现水平一条直线。 (2)无灯丝电压或无加速极阳极电压,引起无光栅`无图象`无伴音`无字符显示`小信号工作电源由开关电源提供的少数伴音正常;灯丝电压低造成亮度低,同时还会造 成显象管老化。 (3)加速极电压低引起亮度低,加速极电压高引起亮度高带回扫线,加速极电压不稳定会引起亮度忽高呼低,加速极无电压引起无光栅,无字符,伴音正常。 (4)聚焦极电压高或低引起聚焦不良,主要表现是无信号时嘈点颗粒大或模糊一片,有信号是图象与字符模糊不清,相是罩着一层雾一样。 (5)阳极电压低引起光栅及图象幅度大,亮度下降,且其幅度受图象内容的影响大小收缩,阳极电压过高引起高压帽打火,水平幅度缩窄。 (6)+180~+240V电压低引起图象拖尾,亮度低,光栅与图象上有木纹或黑横条干扰,屏幕呈纯净暗光栅且带回扫线。 (7)+24~28V`+12V`+8V整流滤波电路有问题造成的水平一条亮线,自动关机,自动授台不锁台,无彩色`图象上有雪花`伴音增大,光栅垂直方向不足`行不同步等。 (8)行逆成脉冲产生或形成电路有问题造成无字符`无彩色`图象左边有黑条。 (9)行扫描电路工作电流大引起光栅忽大忽小`无光栅`无彩色`无字符等故障。 (10)行正反馈电路停振`行输出管未工作引起的开关电源负载轻,造成开关电源输出电压高于正常值。 (11)行输出级电流引起开关电源负载重,造成开关电源进入保护状态或开关电源输出电压低于正常值。 (12)ABL(自动亮度控制电路)有问题造成的亮度低`对比度弱或无亮度`开关电源输出电压值低于正常值`开关电源输出电压为待机值。 (13)行振荡频率不对,造成行不同步或显象管高帽处有点壮打火。其中行不同步的现象是屏幕上有黑白相间的斜条。 (14)行激励不足引起的光栅小`光栅收缩,行输出不能进入深饱和损耗增大发热。 2行扫描电路检修技巧 1判断行扫描电路是否工作正常的方法

矩阵键盘的工作原理和扫描确认方式

9.3.1 矩阵键盘的工作原理和扫描确认方式 来源:《AVR单片机嵌入式系统原理与应用实践》M16华东师范大学电子系马潮 当键盘中按键数量较多时,为了减少对I/O 口的占用,通常将按键排列成矩阵形式,也称为行列键盘,这是一种常见的连接方式。矩阵式键盘接口见图9-7 所示,它由行线和列线组成,按键位于行、列的交叉点上。当键被按下时,其交点的行线和列线接通,相应的行线或列线上的电平发生变化,MCU 通过检测行或列线上的电平变化可以确定哪个按键被按下。 图9-7 为一个 4 x 3 的行列结构,可以构成12 个键的键盘。如果使用 4 x 4 的行列结构,就能组成一个16 键的键盘。很明显,在按键数量多的场合,矩阵键盘与独立式按键键盘相比可以节省很多的I/O 口线。 矩阵键盘不仅在连接上比单独式按键复杂,它的按键识别方法也比单独式按键复杂。在矩阵键盘的软件接口程序中,常使用的按键识别方法有行扫描法和线反转法。这两种方法的基本思路是采用循环查循的方法,反复查询按键的状态,因此会大量占用MCU 的时间,所以较好的方式也是采用状态机的方法来设计,尽量减少键盘查询过程对MCU 的占用时间。 下面以图9-7 为例,介绍采用行扫描法对矩阵键盘进行判别的思路。图9-7 中,PD0、PD1、PD2 为3 根列线,作为键盘的输入口(工作于输入方式)。PD3、PD4、PD5、PD6 为4根行线,工作于输出方式,由MCU(扫描)控制其输出的电平值。行扫描法也称为逐行扫描查询法,其按键识别的过程如下。 √将全部行线PD3-PD6 置低电平输出,然后读PD0-PD2 三根输入列线中有无低电平出现。只要有低电平出现,则说明有键按下(实际编程时,还要考虑按键的消抖)。如读到的都是高电平,则表示无键按下。 √在确认有键按下后,需要进入确定具体哪一个键闭合的过程。其思路是:依

第13讲51单片机按键电路

标题:键盘接口电路 教学目标与要求: 1.键盘去抖动和连接、控制方式 2.独立式按键及其接口电路 3.矩阵式键盘及其接口电路 授课时数:2 教学重点:.矩阵式键盘及其接口电路 教学内容及过程: 一、键盘接口概述 1、按键开关去抖动问题 机械式按键再按下或释放时,由于机械弹性作用的影响,通常伴随有一定时间的触点机械抖动,然后其触点才稳定下来。其抖动过程如图9-11所示,抖动时间的长短与开关的机械特性有关,一般为5 10 ms 在触点抖动期间检测按键的通与断状态,可能导致判断出错,即按键一次按下或释放被错误地认为是多次操作,这种情况是不允许出现的。为了克服按键触点机械抖动所致的检测误判,必须采取去抖动措施。这一点可从硬件、软件两方面予以考虑。在键数较少时,可采用硬件去抖,而当键数较多时,采用软件去抖。在硬件上可采用在键输出端加R-S触发器(双稳态触发器)或单稳态触发器构成去抖动电路。图9-12是一种由R-S触发器构成的去抖动电路,当触发器一旦翻转,触点抖动不会对其产生任何影响。 软件上采取的措施是:在检测到有按键按下时,执行一个10 ms左右(具体时间应视所使用的按键进行调整)的延时程序后,再确认该键电平是否仍保持闭合状态电平,若仍保持闭合状态电平,则确认该键处于闭合状态。同理,在检测到该键释放后,也应采用相同的步 骤进行确认,从而可消除抖动的影响。

2.编制键盘程序 一个完善的键盘控制程序应具备以下功能: (1) 检测有无按键按下,并采取硬件或软件措施,消除键盘按键机械触点抖动的影响。 (2) 有可靠的逻辑处理办法。每次只处理一个按键,其间对任何按键的操作对系统不产生影响,且无论一次按键时间有多长,系统仅执行一次按键功能程序。 (3) 准确输出按键值(或键号),以满足跳转指令要求。 二、独立式按键 单片机控制系统中,往往只需要几个功能键,此时,可采用独立式按键结构。 1. 独立式按键结构 独立式按键是直接用I/O口线构成的单个按键电路,其特点是每个按键单独占用一根I/O口线,每个按键的工作不会影响其它I/O口线的状态。独立式按键的典型应用如图7.4所示。 独立式按键电路配置灵活,软件结构简单,但每个按键必须占用一根I/O口线,因此,在按键较多时,I/O口线浪费较大,不宜采用。 2.矩阵式键盘 I/O端线分为行线和列线,按键跨接在行线和列线上,按键按下时,行线与列线发生短路。特点: ①占用I/O端线较少; ②软件结构教复杂。 适用于按键较多的场合。 3.键盘扫描控制方式 ⑴程序控制扫描方式 键处理程序固定在主程序的某个程序段。 特点:对CPU工作影响小,但应考虑键盘处理程序的运行间隔周期不能太长,否则会影响对键输入响应的及时性。 ⑵定时控制扫描方式 利用定时/计数器每隔一段时间产生定时中断,CPU响应中断后对键盘进行扫描。 特点:与程序控制扫描方式的区别是,在扫描间隔时间内,前者用CPU工作程序填充,后者用定时/计数器定时控制。定时控制扫描方式也应考虑定时时间不能太长,否则会影响对键输入响应的及时性。 ⑶中断控制方式 中断控制方式是利用外部中断源,响应键输入信号。 特点:克服了前两种控制方式可能产生的空扫描和不能及时响应键输入的缺点,既能及时处理键输入,又能提高CPU运行效率,但要占用一个宝贵的中断资源。 三、独立式按键及其接口电路 1、按键直接与I/O口连接

彩色电视机行、场扫描电路常见故障

彩色电视机行、场扫描电路常见故障 行扫描电路最易出故障,出现故障的现象一般有如下几种: ①无光栅、无显示。 对于①类故障现象,可能的原因有电源电压不正常、行振荡停振、行推动级的行推动管开路或行推动变压器的初次级开路、行输出级的行管C、E极短路、阻尼管D和逆程电容短路等。维修时,可用万用表静态检查,但要注意,因有的行管阻带阻管,不要误判。无光栅、无显示的故障现象,有的是由电源电压不正常引起的,为了区分是电源还是行扫描电路故障,需将电源和行扫描电路断开,再加电测量电源输出电压,这样即可判断故障部位。 ②垂直一条亮线。 对于②类故障,是由于行偏转线圈内没有锯齿电流流过。这灯故障现象一般说来都是因为行输出级负载开路所致,常见的是由行偏转线圈和主板接触不良引起。 ③行不同步。 对于③类故障,多是由于行同步不良引起。检查时可用示波器从接口处的插头查起,直到行扫描芯片的相应输入脚。一般是电容失效、74LS86芯片损坏或接口处行同步信号

线断掉。 ④行幅缩小。 对于行幅缩小或增大的④类故障现象,可能是电源电压不正常或行输出电路故障。对这类故障现象应重点检查逆程电容。 场扫描电路常见故障现象有如下几种: ①水平一条亮线或水平一条亮带。 对于第①类故障现象的原因,可能是由于场振荡、场推动、场输出和场偏转线圈,这四者其中之一出现了故障,维修时重点检查场扫描集成电路外围的阻容元件和偏转线圈。 ②场不同步。 对于第②类故障现象,主要是由于场同步电路不良引起。 ③场幅不足。 对于第③类故障,可能的原因有自动场幅控制电路出现故障或场幅电位器损坏所致,所以应重点检查场幅电位器。 ④场线性不好。 当出现第④类故障现象时,检查集成芯片外围的阻容元件,基本上确认无误后,再更换集成芯片,这样可以避免不必要的麻烦。

键盘扫描显示实验原理及分析报告

键盘扫描显示实验原理及分析报告 一、实验目的-------------------------------------------------------------1 二、实验要求-------------------------------------------------------------1 三、实验器材-------------------------------------------------------------1 四、实验电路-------------------------------------------------------------2 五、实验说明-------------------------------------------------------------2 六、实验框图-------------------------------------------------------------2 七、实验程序-------------------------------------------------------------3 八、键盘及LED显示电路---------------------------------------------14 九、心得体会------------------------------------------------------------- 15 十、参考文献--------------------------------------------------------------15

实验三 键盘扫描控制

实验三4*4键盘扫描显示控制 一、实验目的 实现一4×4键盘的接口,并在两个数码管上显示键盘所在的行与列。即将8255单元与键盘及数码管显示单元连接,编写实验程序扫描键盘输入,并将扫描结果送数码显示,键盘采用4×4键盘,每个数码管值可以为0到F,16个数。将键盘进行编号记作0—F当按下其中一个按键时将该按键对应的编号在一个数码管上显示出来,当按下下一个按键时便将这个按键的编号在下一个数码管上显示出来,且数码管上可以显示最近6次按下按键的编号。 二、实验要求 1、接口电路设计:根据所选题目和所用的接口电路芯片设计出完整的接口电路,并进行电路连接和调试。 2、程序设计:要求画出程序框图,设计出全部程序并给出程序设计说明。 三、实验电路

四、实验原理说明 图2 数码管引脚图 图1为AT89C51引脚图,说明如下: VCC:供电电压。 GND:接地。 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。 P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH 编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口同时为闪烁编程和编程校验接收一些控制信号。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址

按键扫描方法

说到键盘扫描,相信大多数人第一反应就是行列矩阵扫描,这样我们可以用相对有限的IO口得到尽可能多的按键。键盘扫描是单片机技术的一种基本处理方法,学校的单片机课程都会有相应章节进行阐述,只要按照课本上讲述的方法,一般都能设计出比较可靠的键盘扫描电路与程序。 课本上的键盘扫描方法(见下图接法二)不能说是尽善尽美,从易懂性、成本、程序难易程度等方面综合看应该是不错的方法,给人感觉是已经没有太多的改善空间,至少我是这么认为的。 然而前段时间一位台湾朋友画给我的键盘扫描矩阵电路(见下图接法二),让我又一次看到到自己的思维还有许多地方被自己的所谓“经验”束缚着。 单纯的从硬件接法看,两种接法并没有明显区别,接法一甚至要复杂一些,但如果结合到键盘扫描的程序来看,就会发现接法一确实更好。 两种接法我都没有把上拉电阻包含进来,来让我们看一下两种接法到底有什么不同: 接法二: 我们熟悉的传统扫键处理电路,假定键盘行列IO口标号分别为H1/H2/H3和V1/V2/V3,扫键流程通常如下。 2.1. H1设置为输出,H2/H3和V1/V2/V3设置为输入 2.2. H1分别输出1和0,读V1/V2/V3状态,如果Vy状态与H1一致,则认为H1与Vy交叉位置的键按下 2.3. H2设置为输出,H1/H3和V1/V2/V3设置为输入 2.4. H2分别输出1和0,读V1/V2/V3状态,如果Vy状态与H2一致,则认为H2与Vy交叉位置的键按下 2.5. H3设置为输出,H1/H2和V1/V2/V3设置为输入 2.6. H3分别输出1和0,读V1/V2/V3状态,如果Vy状态与H3一致,则认为H3与Vy交叉位置的键按下

实验四 键盘扫描及显示设计实验报告

实验四键盘扫描及显示设计实验报告 一、实验要求 1. 复习行列矩阵式键盘的工作原理及编程方法。 2. 复习七段数码管的显示原理。 3. 复习单片机控制数码管显示的方法。 二、实验设备 1.PC 机一台 2.TD-NMC+教学实验系统 三、实验目的 1. 进一步熟悉单片机仿真实验软件 Keil C51 调试硬件的方法。 2. 了解行列矩阵式键盘扫描与数码管显示的基本原理。 3. 熟悉获取行列矩阵式键盘按键值的算法。 4. 掌握数码管显示的编码方法。 5. 掌握数码管动态显示的编程方法。 四、实验内容 根据TD-NMC+实验平台的单元电路,构建一个硬件系统,并编写实验程序实现如下功能: 1.扫描键盘输入,并将扫描结果送数码管显示。 2.键盘采用 4×4 键盘,每个数码管显示值可为 0~F 共 16 个数。 实验具体内容如下: 将键盘进行编号,记作 0~F,当按下其中一个按键时,将该按键对应的编号在一个数码 管上显示出来,当再按下一个按键时,便将这个按键的编号在下一个数码管上显示出来,数 码管上可以显示最近 4 次按下的按键编号。 五、实验单元电路及连线 矩阵键盘及数码管显示单元

图1 键盘及数码管单元电路 实验连线 图2实验连线图 六、实验说明 1. 由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动。抖动时间的长短由按键的机械特性决定,一般为 5~10ms。这是一个很重要的时间参数,在很多场合都要用到。 键抖动会引起一次按键被误读多次。为了确保 CPU 对键的一次闭合仅做一次处理,必须去除键抖动。在键闭合稳定时,读取键的状态,并且必须判别;在键释放稳定后,再作处理。按

行扫描电路原理

行扫描电路原理 行扫描电路包括行激励电路、行输出电路、行逆程变压器(又称行输出变压器)及中、高压形成电路。 行扫描电路的主要功能是给行偏转线圈提供线性良好的锯齿波电流,形成垂直方向线性增长的磁场,控制电子束沿水平方向扫描。同时利用行逆程期间形成的脉冲电压通过行逆程变压器的升压、降压形成的高压、中压、低压,给CRT提供帘栅电压、阳极电压、聚焦极电压、ABL取样电压、CRT灯丝电压、视频放大器供电电压、行AFC比较电压等。 行扫描电路是彩电的关键电路,它工作在高频、高压、大电流状态,其功耗约占整机功耗的70%左右,彩电故障与行扫描电路有关的大约占65%左右,因此它的工作稳定性、可靠性对整机稳定性、可靠性影响很大。 一、一般行扫描电路基本原理 1.行输出极及行扫描锯齿电流 (a) (b)

(c) 上图是典型的行输出级原理电路。Q1是行输出管,工作在开关状态,激励脉冲Vi由脉冲变压器B1藕合输入,行偏转线圈L Y及回扫变压器B2均作为行输出级负载。Cs是S校正电容,C是逆程电容,D1是阻尼二极管,它不同于普通二极管,它耐压高、开关性能好。其反向击穿电压达1~1.5KV。在电路中起开关作用,同时也对L Y─C 之间的自由振荡(即偏转线圈与逆程电容之间的电磁能量交换)起阻尼作用。电源Ec对S校正电容Cs充电,使其两端电压总保持有上正下负,数值为Ec的电压。为便于分析,可将Cs等效成数值为Ec的电源串在偏转支路上,这对分析工作原理并无影响,故将行输出级等效成图(b)。注意:行输出管与阻尼二极管均等效为一开关,但他们导通时流过的电流方向正好相反。 激励电压Vi是矩形脉冲。当正极性脉冲到达Q1基极,Q1饱和导通,在偏转线圈中产生锯齿形电流i Y,其波形如图(c)由三部分组成: (1)时间t从0~t1,行输出管的导通电流形成扫描正程右半段所需电流,随t线性增长,最大幅值为I YM=(Ec/L Y)×(T s/2)(Ts为正

经典按键扫描程序

以下假设你懂C语言,因为纯粹的C语言描述,所以和处理器平台无关,你可以在MCS-51,AVR,PIC,甚至是ARM平台上面测试这个程序性能。以下以AVR的MEGA8作为平台讲解,没有其它原因,因为我手头上只有AVR的板子而已没有51的。用51也可以,只是芯片初始化部分不同,还有寄存器名字不同而已。 核心算法: unsigned char Trg; unsigned char Cont; void KeyRead( void ) { unsigned char ReadData = PINB^0xff; // 1 Trg = ReadData & (ReadData ^ Cont); // 2 Cont = ReadData; // 3 } 下面是程序解释:Trg(triger)代表的是触发,Cont(continue)代表的是连续按下。 1:读PORTB的端口数据,取反,然后送到ReadData 临时变量里面保存起来。(端口值与0XFF 按位异或,有按键按下为0,异或后相应的位就为1,相当于将读取的端口值取反) 2:算法1,用来计算触发变量的。一个位与操作,一个异或操作,我想学过C语言都应该懂吧?Trg为全局变量,其它程序可以直接引用。 3:算法2,用来计算连续变量。 看到这里,有种“知其然,不知其所以然”的感觉吧?代码很简单,但是它到底是怎么样实现我们的目的的呢?好,下面就让我们绕开云雾看青天吧。 我们最常用的按键接法如下:AVR是有内部上拉功能的,但是为了说明问题,我是特意用外部上拉电阻。(STM32可以将端口设置为输入上拉模式)那么,按键没有按下的时候,读端口数据为1,如果按键按下,那么端口读到0。下面就看看具体几种情况之下,这算法是怎么一回事。 (1)没有按键的时候 端口为0xff,ReadData读端口并且取反,很显然,就是 0x00 了。(0XFF^0XFF=0X00)Trg = ReadData & (ReadData ^ Cont); (初始状态下,Cont也是为0的)很简单的数学计算,因为ReadData为0,则它和任何数“相与”,结果也是为0的。 Cont = ReadData; 保存Cont 其实就是等于ReadData,为0; 结果就是: ReadData = 0; Trg = 0; Cont = 0; (2)第一次PB0按下的情况 端口数据为0xfe,ReadData读端口并且取反,很显然,就是 0x01 了。(0XFE^0XFF=0X01)Trg = ReadData & (ReadData ^ Cont); 因为这是第一次按下,所以Cont是上次的值,应为为0。那么这个式子的值也不难算,也就是 Trg = 0x01 & (0x01^0x00) = 0x01 Cont = ReadData = 0x01; 结果就是: ReadData = 0x01; Trg = 0x01;Trg只会在这个时候对应位的值为1,其它时候都为0 Cont = 0x01;

单片机4X4键盘扫描和显示课程设计

二、设计内容 1、本设计利用各种器件设计,并利用原理图将8255单元与键盘及数码管显示单元连接,扫描键盘输入,最后将扫描结果送入数码管显示。键盘采用4*4键盘,每个数码管可以显示0-F共16个数。将键盘编号,记作0-F,当没按下其中一个键时,将该按键对应的编号在一个数码管上显示出来,当在按下一个 键时,便将这个按键的编号在下一个数码管上显示,数码管上 可以显示最近6次按下的按键编号。 设计并实现一4×4键盘的接口,并在两个数码管上显示键盘所在的行与列。 三、问题分析及方案的提出 4×4键盘的每个按键均和单片机的P1口的两条相连。若没有按键按下时,单片机P1口读得的引脚电平为“1”;若某一按键被按下,则该键所对应的端口线变为地电平。单片机定时对P1口进行程序查询,即可发现键盘上是否有按键按下以及哪个按键被按下。 实现4×4键盘的接口需要用到单片机并编写相应的程序来识别键盘的十六个按键中哪个按键被按下。因为此题目还要求将被按下的按键显示出来,因此可以用两个数码管来分别显示被按下的按键的行与列

表示任意一个十六进制数)分别表示键盘的第二行、第三行、第四行;0xXE、0xXD、0xXB、0xX7(X表示任意一个十六进制数)则分别表示键盘的第一列、第二列、第三列和第四列。例如0xD7是键盘的第二行第四列的按键 对于数码管的连接,采用了共阳极的接法,其下拉电阻应保证芯片不会因为电流过大而烧坏。 五、电路设计及功能说明 4×4键盘的十六个按键分成四行四列分别于P1端口的八条I/O 数据线相连;两个七段数码管分别与单片机的P0口和P2口的低七 位I/O数据线相连。数码管采用共阳极的接法,所以需要下拉电阻 来分流。结合软件程序,即可实现4×4键盘的接口及显示的设计。 当按下键盘其中的一个按键时,数码管上会显示出该按键在4×4键 盘上的行值和列值。所以实现了数码管显示按键位置的功能 四、设计思路及原因 对于4×4键盘,共有十六个按键。如果每个按键与单片机的一个引脚相连,就会占用16个引脚,这样会使的单片机的接口不够用(即使够用,也是对单片机端口的极大浪费)。因此我们应该行列式的接法。行列式非编码键盘是一种把所有按键排列成行列矩阵的键盘。在这种键若没有按键按下时,单片机从P1口读得的引脚电平为“1”;若某一按键被按下,则该键所对应的端口线变为地电平。因此0xEX(X表示任意4×4键盘的第一行中的某个按键被按下,相应的0xDX、0xBX、0x7X(X 二、实验内容

场扫描电路故障检修

场扫描电路故障检修 场扫描电路的任务是为场偏转线圈提供锯齿波电流使电子束作上下移动而形成垂直光栅,同时还要为字符电路、亮度电路提供场逆程脉冲,为水平枕形校正电路提供场锯齿波;为扫描制式识别电路提供基本计算单元(即场逆程脉冲)。高档次的大屏幕彩色电视机,为了获得线性良好的图像还设置南北枕形校正电路。为了便于了解,这里把与普通彩色电视机相同的电路称为基础场扫描电路;把在普通彩色电视机基础上增设的场扫描相关电路称为辅助场扫描电路。基础场扫描电路包括场振荡、锯齿波形成、场输出放大、场偏转、场反馈等电路;辅助场扫描电路包括场扫描制式切换、南北枕形校正等电路。 4.1 场扫描电路故障现象 常见的场扫描电路故障现象有: (1) 场振荡、锯齿波形成、场激励、场输出、场偏转、场制式切换等任何一个部位不工作导致水平一条亮线。 (2) 场激励不足、输出放大倍数不够、场负反馈加深导致垂直幅度不足。 (3) 场线性电路异常导致垂直线性不好。 (4) 场升压电路异常引起光栅顶部有数根密集的回扫线,有的机型还伴有无字符显示现象. (5) 场偏转线圈上并联的阻尼电阻阻值变大或开路导致光栅上满屏横条干扰。 (6) 场频调节、定时元件参数变化、扫描制式切换电路异常引起场不同步。 (7) 场集成电路击穿或场输出不工作导致无光栅、无图像、无字符。 (8) 南北枕形校正电路有问题导致光栅在垂直方向枕形失真。 4.2 扫描电路故障判断 4.2.1 场扫描电路的外因 场扫描电路的扫描幅度、频率、相位除受自身电路影响外,还受下列因素的影响:一、复合同步分离电路 复合分离电路虽同时影响行、场两电路的同步,但因行同步分离电路采用AFC鉴相式,其同步范围相对大得多。所以,在复合同步分离电路输出的复合同步信号不理想时,也能使行同步,但却不能使场保持同步或者场同步不良。 二、+12V稳压电路 目前的大屏幕彩色电视机都将行、场振荡电路均集成在同一块集成电路内,有些机型的行、场扫描脉冲都是从对行振荡脉冲(500kHz)分频取得,但因行振荡电路的工作电源取自开关电源+B或+24V,而场振荡电路的工作电源却是+12V稳压电源。因此,在+12V稳压电路无输出或输出电压低时,集成电路内场脉冲振荡器或分频器不工作,从而使电视机呈一条水平亮线。 又因场振荡集成电路中往往还设有一级场激励电路,如果这个集成电路的工作电压(+ 12V)偏低时,虽然场分频电路有场扫描脉冲输出,但由于集成电路内的场激励级工作电压的不足,从而导致电视机出现场幅不够。 三、+24V-56V工作电压形成电路 场输出级电路有分立件和集成电路两种。一般来说分立件场输出级的工作电压,有的只有一个,这个电压值多在+27V。56V之间的某一值;有的有两个工作电压,一个是主供电压,即电压值低的供电电压,其电压值也在+27V-56V之间,另一个是升压电压,即电压值高的供电电压,其电压值往往与行输出管集电极工作电压相同,在+115V-150V之间的某一值。集成电路方式场输出级的工作电压只有一个,其电压值在+24—28V。分立元件场输出

相关文档
最新文档