4乘4矩阵键盘输入数码管显示四位数要点
4×4矩阵键盘控制实验

4×4矩阵键盘控制实验一、实验内容摘要设计一个4×4键盘接口控制器,在QuartusII软件上实现基设计,将其与开发板连接,实现电路功能。
当按下某一键时,4位LED上显示对应的键值,以二进制代码形式从0至F显示。
二、实验源代码LIBRARY ieee;USE ieee.std_logic_1164.ALL;USE ieee.std_logic_unsigned.ALL;ENTITY DEBOUNCING ISPORT(clk, key:IN STD_LOGIC ;clr: IN STD_LOGIC;dly_out, dif_out: OUT STD_LOGIC);END DEBOUNCING;ARCHITECTURE a OF DEBOUNCING ISSIGNAL sample,dly,diff: STD_LOGIC;BEGINfree_counter:blocksignal QQ:std_logic_vector(4 downto 0);signal d0:std_logic;beginprocess (CLR,clk)beginif clr='0' thend0<='0';QQ<=(OTHERS=>'0');ELSif clk'event and clk='1' thend0<=QQ(4); --QQ的最高位同时作为d0信号,即d0的周期为2的5次方个clk.QQ<=QQ+1;end if;end process;sample<=not(QQ(4) and (not d0));--当d0为0,QQ(4)为1时,sample产生采样脉冲,低电平时间为1个clkend block free_counter;debunce:blocksignal d0,d1,s,r:std_logic;beginprocess(clk,clr)beginif clr='0' thendly<='0';elsif rising_edge(clk) thenif sample='1' thend1<=d0;d0<=key;s<=d0 and d1;r<=not d0 and not d1;if s<='0' and r<='0' thendly<=dly;elsif s<='0' and r<='1' thendly<='0';elsif s<='1' and r<='0' thendly<='1';elsedly<='0';end if;end if;end if;end process;dly_out<=dly;end block debunce;differential:blocksignal d1,d0:std_logic;beginprocess(clk,clr)beginif clr='0' thend0<='0';d1<='0';elsif rising_edge(clk) thend1<=d0;d0<=dly;end if;diff<=d0 and not d1;end process;dif_out<=diff;end block differential;END a;--****************************************************************** --* 4x4标准键盘板读取并点亮实验箱底板上的L1-L4--* Filename: keyboard4_4--* 扫描键盘,译码并点亮实验箱底板上的L1-L4--* 已加入去抖程序--****************************************************************** library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity keyboard4_4 isport(rst : in std_logic;clk_in : in std_logic;keyin : in std_logic_vector(3 downto 0);scan : out std_logic_vector(3 downto 0);leds : out std_logic_vector(3 downto 0);state : out std_logic;M : out std_logic_vector(3 downto 0));end keyboard4_4;architecture keyboard4_4_arch of keyboard4_4 is----********************************************* component debouncingport( key : IN STD_LOGIC ;clk,clr : IN STD_LOGIC ;dly_out : OUT STD_LOGIC ) ;end component ;--*********************************************--signal clkfrq : std_logic;signal cntscn : std_logic_vector(1 downto 0);signal scnlin : std_logic_vector(3 downto 0);signal cntfrq : std_logic_vector(14 downto 0);signal lednum : std_logic_vector(7 downto 0);signal key_tmp : std_logic_vector(3 downto 0);signal clk : std_logic;signal cntfrq1 : std_logic_vector(5 downto 0); beginM <= "0101"; --键盘功能选择scan <= not scnlin;lednum <= scnlin & (not key_tmp);-- key_tmp <= keyin;--debounuing cktdebounuing : blockbeginU1: debouncing PORT MAP (KEY => keyin(0) ,DLY_OUT => key_tmp(0) ,clr=>rst,clk => CLK);U2: debouncing PORT MAP (KEY => keyin(1) ,dly_out => key_tmp(1) ,clr=>rst,clk => CLK);U3: debouncing PORT MAP (key => keyin(2) ,dly_out => key_tmp(2) ,clr=>rst,clk => CLK);U4: debouncing PORT MAP (key => keyin(3) ,dly_out => key_tmp(3) ,clr=>rst,clk => CLK);END block debounuing ;--******************************************************--process(rst,clk_in) -- 晶振为40MHz,进行40000分频产生去抖时钟(1000Hz)beginif rst = '0' thencntfrq <= (others => '0');elsif rising_edge(clk_in) thenif (cntfrq = "100111000011111" or not (key_tmp="1110" or key_tmp="1101" or key_tmp="1011" or key_tmp="0111") ) then--if (cntfrq = "100111000011111" or key_tmp="1111" ) then--if cntfrq = "1111" thencntfrq <= (others => '0');clk <= not clk;--去抖时钟elsecntfrq <= cntfrq + 1;end if;end if;end process;process(rst,clk) --去抖时钟,50分频,形成扫描时钟beginif rst = '0' thenclkfrq <= '0';cntfrq1 <= (others => '0');elsif rising_edge(clk) thenif cntfrq1 = "11000" thencntfrq1 <= (others => '0');clkfrq <= not clkfrq;elsecntfrq1 <= cntfrq1 + 1;end if;end if;end process;process(rst,clkfrq) -- 根据扫描时钟产生扫描线beginif rst = '0' thencntscn <= "00";elsif rising_edge(clkfrq) thenif cntscn = "11" thencntscn <= "00";elsecntscn <= cntscn+1;end if;case cntscn iswhen "00" => scnlin <= "0001";when "01" => scnlin <= "0010";when "10" => scnlin <= "0100";when "11" => scnlin <= "1000";when others => null;end case;end if;end process;process(rst, clkfrq) -- 根据按键点亮相应的ledsbeginif(rst = '0' ) thenleds <= "0000";elsif clkfrq'event and clkfrq = '0' thencase lednum iswhen "10001000" =>leds <= "0001"; --1when "01001000" =>leds <= "0010"; --2when "00101000" =>leds <= "0011"; --3when "00011000" =>leds <= "1010"; --Awhen "10000100" =>leds <= "0100"; --4when "01000100" =>leds <= "0101"; --5when "00100100" =>leds <= "0110"; --6when "00010100" =>leds <= "1011"; --Bwhen "10000010" =>leds <= "0111"; --7when "01000010" =>leds <= "1000"; --8when "00100010" =>leds <= "1001"; --9when "00010010" =>leds <= "1100"; --Cwhen "10000001" =>leds <= "1110"; --*when "01000001" =>leds <= "0000"; --0when "00100001" =>leds <= "1111"; --#when "00010001" =>leds <= "1101"; --Dwhen others =>null;end case;end if;end process;process(rst,key_tmp)beginif(rst = '0' ) thenstate <= '1';elsif (key_tmp="1110" or key_tmp="1101" or key_tmp="1011" or key_tmp="0111") thenstate <= '0';elsif (key_tmp="1111") thenstate <= '1';end if;end process;end keyboard4_4_arch;三、实验工具软件的选用以及实验过程1、打开QuartusII软件。
AVR学习笔记十九、4X4矩阵键盘实验

A VR学习笔记十九、4X4矩阵键盘实验19.1 实例功能在前面的实例中我们已经学习了在单片机系统中检测独立式按键的接口电路和程序设计,独立式按键的每个按键占用1位I/O口线,其状态是独立的,相互之间没有影响,只要单独测试链接案件的I/O口线电平的高低就能判断键的状态。
独立式按键电路简单、配置灵活,软件结构也相对简单。
此种接口方式适用于系统需要按键数目较少的场合。
在按键数量较多的情况下,如系统需要8个以上按键的键盘时,采用独立式接口方式就会占用太多的I/O口,这对于I/O口资源不太丰富的单片机系统来说显得相当浪费,那么当按键数目相对较多的时候,为了减少I/O口资源的占用,应该采取什么样的方式才能够既满足多按键识别,又减少I/O口的占用呢?当然我们可以采用端口扩展器件比如串并转换芯片实现单片机I/O口的扩展,但是这种方式既增加了电路的复杂性,又增加了系统的成本开销。
有没有比较经济实惠的方法呢?事实上,在实际引用中我们经常采用矩阵式键盘的方式来节约I/O口资源和系统成本。
在这个实验中,我们采用4X4矩阵键盘来实现使用8个I/O口识别16个按键的实验,本实例分为三个功能模块,分别描述如下:●单片机系统:利用A Tmega16单片机与矩阵键盘电路实现多按键识别。
●外围电路:4X4矩阵键盘电路、LED数码管显示电路。
●软件程序:编写软件,实现4X4矩阵键盘识别16个按键的程序。
通过本实例的学习,掌握以下内容:●4X4矩阵键盘的电路设计和程序实现。
19.2 器件和原理19.2.1 矩阵键盘的工作原理和扫描确认方式当键盘中按键数量较多时,为了减少对I/O口的占用,通常将按键排列成矩阵形式,也称为行列键盘,这是一种常见的连接方式。
矩阵式键盘接口见图1所示,它由行线和列线组成,按键位于行、列的交叉点上。
当键被按下时,其交点的行线和列线接通,相应的行线或列线上的电平发生变化,MCU通过检测行或列线上的电平变化可以确定哪个按键被按下。
数码管显示4×4键盘矩阵按键实验

5、4×4键盘矩阵按键实验一、实验目的及要求键盘实质上是一组按键开关的集合。
通常,键盘开关利用了机械触点的合、断作用。
键的闭合与否,反映在行线输出电压上就是呈高电平或低电平,如果高电平表示键断开,低电平则表示键闭合,反之也可。
通过对行线电平高低状态的检测,便可确认按键按下与否。
为了确保CPU对一次按键动作只确认一次按键有效,还必须消除抖动。
当按键较多时会占用更多的控制器端口,为减少对端口的占用,可以使用行列式键盘接口,本实验中采用的4×4键盘矩阵可以大大减少对单片机的端口占用,但识别按键的代码比独立按键的代码要复杂一些。
在识别按键时使用了不同的扫描程序代码,程序运行时LED灯组会显示相应按键的键值0~15的二进制数。
本实验中P2端口低4位连接是列线,高4位连接的是行线。
二、实验原理(图)三、实验设备(环境):1、电脑一台2、STC-ISP(V6.85I)烧写应用程序3、Keil应用程序四、实验内容(算法、程序、步骤和方法):#include<STC15F2K60S2.h> //此文件中定义了STC15系列的一些特殊功能寄存器#include"intrins.h"#define uint unsigned int#define uchar unsigned charuchar code dsy_code[]={0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0 F,0xff};uchar Pre_keyno=16,keyno=16;void delayMS(char x){uchar i;while(x--)for(i=0;i<120;i++) ;}void keys_scan(){uchar tmp;P2=0x0f;delayMS(5);tmp=P2^0x0f;switch(tmp){case 1:keyno=0;break;case 2:keyno=1;break;case 4:keyno=2;break;case 8:keyno=3;break;default:keyno=16;}P2=0xf0;delayMS(5);tmp=P2>>4^0x0f;switch(tmp){case 1:keyno+=0;break;case 2:keyno+=4;break;case 4:keyno+=8;break;case 8:keyno+=12;break;}}main(){P0=0x00;while(1){P2=0xf0;if(P2!=0xf0)keys_scan();if(Pre_keyno!=keyno){P0=~dsy_code[keyno];Pre_keyno=keyno;}delayMS(50);}}五、实验结论(结果):本实验实现了XXX功能,核心算法采用了XXX的方式,达到了预期目的。
实验七 4X4矩阵键盘的显示电路

黄淮学院机械与能源工程学院
单片机应用技术课程报告
实验名称4X4矩阵键盘的显示电路实验时间年月日学生姓名实验地点钉钉群线上
同组人员专业班级汽服1802B
1、实验目的
1、能够在Keil软件中查看变量,掌握程序调试的基本方法;
2、掌握按键功能设计特点;
3、当键盘中按键数量较多时,为了减少I/O端口线的占用,通常将按键排列成矩阵形式,学习按键的相关知识。
2、任务设计要求
没有按键按下时,所有输出端均为高电平,即“1”,行线输入也是高电平,即“1”;有键按下时,相应列的输出为低电平,即“0”,对应行输入线也为低电平,即“0”。
通过检测输入线的状态可知是否有键按下。
通过51单片机P1端口构成4×4矩阵式键盘,要求:当按下某一按键时,在数码管显示该按键的值。
3、总体设计方案
根据实验任务要求,通过功能分析,设计的系统总体方案如图所示。
复习软件的使用方法,软件关键字如下:
4、硬件电路设计
5、软件程序设计
如果要实现上图所示电路中转向灯的控制,需要设计控制P1.0端口输出低电平,其设计思路如图所示。
(2)程序清单
#include <reg51.h>
#define uchar unsigned char
sbit L1=P1^4; // 定义列
sbit L2=P1^5;
sbit L3=P1^6;
sbit L4=P1^7;
按下相应的键就会显示对应的字母或数字。
数码管显示4×4矩阵键盘

《单片机原理及应用课程设计》报告——数码管显示4×4矩阵键盘的键盘号专业:自动化班级: 1106姓名:王佳俊学号: 110240171指导教师:卜旭芳2014年 10月15日1、课程设计目的1.1巩固和加深对单片机原理和接口技术知识的理解;1.2培养根据课题需要选学参考书籍、查阅手册和文献资料的能力;1.3学会方案论证的比较方法,拓宽知识,初步掌握工程设计的基本方法;1.4掌握常用仪器、仪表的正确使用方法,学会软、硬件的设计和调试方法;1.5能按课程设计的要求编写课程设计报告,能正确反映设计和实验成果,能用计算机绘制电路图和流程图。
2、课程设计要求单片机的P1口的P1.0~P1.7连接4×4矩阵键盘,P0口控制一只数码管,当4×4矩阵键盘中的某一按键按下时,数码管上显示对应的键号。
例如,1号键按下时,数码管显示“1”, 14号键按下时,数码管显示“E”等等。
3、硬件设计3.1 设计思想分析本任务的要求,在课程设计的基础上,添加要求,使设计能够完成当4×4矩阵键盘中的某一按键按下时,数码管上显示对应的键号。
3.2主要元器件介绍:AT89C51单片机 LED数码管 4X4矩阵键盘3.3 功能电路介绍AT89C51单片机:控制器。
程序中将单片机的引脚置高电平低电平,单片机通过读取IO引脚的电平,在根据读取的数据去查找数组中相应的按键值,然后在送到数码管也就是P0口去显示.(51单片机通过IO口来读取键盘的电平,再通过程序来查找对应的数值,在送到数码管去显示)LED数码管 :输出设备4X4矩阵键盘:输入设备4、软件设计4.1 设计思想通过对矩阵键盘的逐行扫描,来获得所按下键的键盘号,最终通过数码管显示出来。
4.2软件流程图开始初始化结束,返回若有按键按下,显示键盘号扫描键盘第一行若无按键按下扫描键盘第二行若无按键按下扫描键盘第三行若无按键按下扫描键盘第四行若无按键按下结束,返回4.3源程序#include<reg52.h>#define uchar unsigned char#define uint unsigned intuchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71};//定义显示段码uchar num,temp;void delay(uchar k)//定义延时函数uchar i,j;for(i=k;i>0;i--)for(j=110;j>0;j--);}void disp(char num1)//定义显示函数{P0=table[num1];//将段码值送入P0口显示}char keyscan()//定义键盘检测函数{P1=0xfe;//给P1口送检测信号11111110,即先检测第一列有无按键被按下(key1~key4)temp=P1;//将检测信号赋给变量temptemp=temp&0xf0;//与11110000相“与”去除低四位检测部分while(temp!=0xf0)//判断是否有按键被按下,即key1-key4有任意按键被按下temp便不等于0xff{delay(5);//按键防抖动延时(时间要求不严格)while(temp!=0xf0)//延时之后再次判断{temp=P1;//进入函数说明有按键被按下,再将p1值赋给temp进行判断是哪位被按下switch(temp)//利用switch函数判断temp值{case 0xee://若P0等于0xee,即11101110,则由判断为0的位被按下即第四位(最低位),则应赋值num为0;num=0;break;case 0xde://11011110同理判断其为第三位被按下(该行第二位)num=1num=1;break;case 0xbe://同上则num=2num=2;break;case 0x7e://同上num=3num=3;break;}while(temp!=0xf0)//判断按键是否松开,循环判断直至按键松开{temp=P1;temp=temp&0xf0;}}}P1=0xfd;//给P1口再次送检测信号11111101,来检测第二列有无按键被按下(key5~key8),以下几步同上temp=P1;temp=temp&0xf0;while(temp!=0xf0){delay(5);while(temp!=0xf0){temp=P1;switch(temp){case 0xed:num=4;break;case 0xdd:num=5;break;case 0xbd:num=6;break;case 0x7d:num=7;break;}while(temp!=0xf0){temp=P1;temp=temp&0xf0;}}}P1=0xfb;//给P1口再次送检测信号11111011,来检测第三列有无按键被按下(key9~key12),以下几步同上temp=P1;temp=temp&0xf0;while(temp!=0xf0){delay(5);while(temp!=0xf0){temp=P1;switch(temp){case 0xeb:num=8;break;case 0xdb:num=9;break;case 0xbb:num=10;break;case 0x7b:num=11;break;}while(temp!=0xf0){temp=P1;temp=temp&0xf0;}}}P1=0xf7;//给P1口再次送检测信号11110111,来检测第四列有无按键被按下(key13~key16),以下几步同上temp=P1;temp=temp&0xf0;while(temp!=0xf0){delay(5);while(temp!=0xf0){temp=P1;switch(temp){case 0xe7:num=12;break;case 0xd7:num=13;break;case 0xb7:num=14;break;case 0x77:num=15;break;}while(temp!=0xf0){temp=P1;temp=temp&0xf0;}}}return num;//子函数最后返回num值}void main(){P0=0x00;//清屏delay(5);//延时while(1)//主循环{disp(keyscan());//检测并显示}}}5、调试运行电路图依次按下开关k1-k16,数码管会对应显示出0—f的16个数字K=5的数码管显示4.K=16时的数码管显示F:6、设计心得体会硬件设计方面,此课题所需的硬件并不负责,只许少量的导线、简单的电路便可以完成。
44矩阵式键盘与显示

4×4键盘与数码显示的设计键盘是微型计算机系统中最常用的人机对话输入设备。
在单片机应用系统中,为了控制系统的工作状态,以及向系统输入数据,应用系统需要单独设计专用的小键盘。
在计算机系统中,键盘有两种基本类型:编码键盘和非编码键盘。
编码键盘本身除了按键以外,还包括产生编码的硬件电路,使用虽然方便,但价格较高,在一般单片机应用系统中很少采用。
非编码键盘靠软件来识别键盘上的闭合键,由此得出键码,在单片机应用系统中普遍采用。
本次实验即是利用单片机技术,采用中断查询的方法,设计了一个4×4的键盘模块,并利用数码管显示相应的按键值。
一、设计目的1.掌握键盘的中断工作方式;2.掌握矩阵式键盘接口的工作的原理以及按键的识8别方法;3.掌握单片机汇编语言程序设计的方法;4.设计键盘模块,便于其他程序的模块调用。
二、设计内容4×4矩阵式的键盘,当有按键按下时,系统会产生中断,中断服务程序会识别键值并通过数码管对其相应的值进行显示。
三、键盘与I/O接口四、程序流程图五、汇编源程序ORG0000HLJMP MAIN ORG 0003H AJMP INTORG0030HMAIN: MOV P0,#0FFH; 程序启动时灯灭MOV P1,#0F0H SETB TCON.0; 外部中断为下降沿触发 MOVIE,#81H;外部中断开中断SJMP $INT: CLR EA PUSHPSWLCALL DELAYLCALL KS图一 4×4键盘/显示主程序流程图图二 中断服务程序流程图JNZ SAOMIAOLJMP INT0RSAOMIAO:MOV DPTR,#TAB;ACALL K1; 调用键盘扫描程序MOVC A,@A+DPTR; 查表后将值送入累加器MOV P0,A; 在P0口显示键盘值K1: MOV R2,#0EFH; 将扫描值送入 R2暂存MOV R4,#00H; R4用于存放列值,并将00H暂存K3: MOV P1,R2;L6: JB P1^0,L1;MOV A,#00H;AJMP LK;L1: JB P1^1,L2;MOV A,#04H;AJMP LK;L2: JB P1^2,L3;MOV A,#08H;AJMP LK; 跳转到键值处理程序L3: JB P1^3,NEXT ;MOV A,#0cH;LK: ADD A,R4;PUSH ACC;K4: LCALL DELAY; 调用延时程序,去抖动LCALL KS;JNZ K4; 按键没有松开继续返回检测POP ACC;RETNEXT:INC R4; 将列值加一MOV A,R2;JNB ACC.7,INT0R; 未扫描出键值退出中断RL A; 扫描未完成将A中的值右移一位进行下一列的扫描MOV R2,A; 将ACC的值送入R2暂存AJMP K3;KS: MOV P1,#0FH; 按键检测程序MOV A,P1;XRL A,#0FH;RETDELAY:; 10ms延时去抖动子程序2*FA*2=10msMOV R5,#02HL7: MOV R6,#0FAHL8: DJNZ R6,L8DJNZ R5,L7RETINT0R: POP PSWMOV P1,#0F0HSETB TCON.0;MOV IE,#81H;RETITAB:; 采用共阳极LED显示器DB 0C0H; 0DB 0F9H; 1DB 0A4H; 2DB 0B0H; 3DB 099H; 4DB 092H; 5DB 082H; 6DB 0F8H; 7DB 080H; 8DB 090H; 9DB 088H; ADB 083H; bDB 0C6H; CDB 0A1H; dDB 086H; EDB 08EH; FEND六、电路图:图三 4×4键盘/显示电路图七、键盘及数码显示的仿真:图四4×4矩阵式键盘/显示仿真图。
单片机-4x4个矩阵按键控制数码管显示数字程序

单⽚机-4x4个矩阵按键控制数码管显⽰数字程序1 #include "8051.h"2 typedef unsigned char u8;3 typedef unsigned int u16;4 u8 smgduan[]= {5/*0 1 2 3 4 5 6 7 */60x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07,7/*8 9 A B C D E F */80x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71};910// P0⼝为数码管的位选的8位输⼊引脚11// P0 = 0x00;121314void Delayms(u16 ms);15void shumaguan(u8 n);16void DigDisplay();17void KeyTest();18void smg(u8 n, u8 m);19void key_4x4();2021void main()22 {23while(1)24 {25 key_4x4();26 }27 }2829// 不精确的延时函数30void Delayms(u16 ms)31 {32 unsigned int i, j;33for(i = ms; i > 0; i--)34for(j = 110; j > 0; j--);35return;36 }3738// 数码管根据74HC138译码器选择对应的段(选择哪个数码管显⽰)39void shumaguan(u8 n)40 {41switch(n)42 {43case0:44 LSA = 0;LSB = 0;LSC = 0;break;45case1:46 LSA = 1;LSB = 0;LSC = 0;break;47case2:48 LSA = 0;LSB = 1;LSC = 0;break;49case3:50 LSA = 1;LSB = 1;LSC = 0;break;51case4:52 LSA = 0;LSB = 0;LSC = 1;break;53case5:54 LSA = 1;LSB = 0;LSC = 1;break;55case6:56 LSA = 0;LSB = 1;LSC = 1;break;57case7:58 LSA = 1;LSB = 1;LSC = 1;break;59 }60 }6162// 数码管显⽰数字,并以⼗进制递增63void DigDisplay()64 {65 u8 i1 = 0;66 u8 i2 = 0;67 u8 i3 = 0;68 u8 i4 = 0;69 u8 i5 = 0;70 u8 i6 = 0;71 u8 i7 = 0;72 u8 i8 = 0;7374757677for (i8 = 0; i8 < 10; i8++)78for (i7 = 0; i7 < 10; i7++)79for (i6 = 0; i6 < 10; i7++)80for (i5 = 0; i5 < 10; i5++)81for (i4 = 0; i4 < 10; i4++)82for (i3 = 0; i3 < 10; i3++)83for (i2 = 0; i2 < 10; i2++)84for (i1 = 0; i1 < 10; i1++)85 {86 u16 cnt = 10;87while (cnt--)88 {89 shumaguan(0); //选中第⼀个数码管90 P0 = smgduan[i1]; //给他送⼀个数字91 Delayms(1); //稍微延时⼀下下92 shumaguan(1); //然后切换到第⼆个数码管。
四乘四键盘控制LED数码管显示电路.doc要点

四乘四键盘控制LED数码管显示电路目录一、设计内容及要求 (2)二、系统硬件设计方案 (2)三、系统软件设计 (8)四、效果演示 (12)摘要矩阵式键盘系统以N个端口链接控制N*N个按键,使数字显示在LED数码管上。
单片机控制的是键盘显示系统,该系统可以对不同的按键进行实时显示,其核心是单片机和键盘矩阵电路部分,主要对按键与显示电路的关系、矩阵式技术及设备的硬件、软件等各个部分进行实现。
对于4*4矩阵式键盘,我想采用STC89C52RC单片机为核心,主要由矩阵式键盘电路、译码器、显示电路等组成,软件选用汇编语言编程。
单片机将检测到的按键信号转成数字量,显示于LED显示器上。
该系统灵活性强,易于操作,可靠性高,将会有更广阔的开发前景。
一、设计内容及要求用protues仿真设计一个单片机小系统,该小系统外接一个4*4键盘及一个LED数码管,要求按下一个键,数码管上显示该键的对应号码。
键盘的布局如下图所示:主要内容如下:1.根据矩阵式键盘的特点,进行键盘控制系统的整体研究与设计。
2.LED实时显示信息。
3.采用软件编程方法实现按键信息的提取和显示。
二、系统硬件设计方案1.芯片的选择STC89C52RC单片机是51系列单片机的一个成员,是8051单片机的简化版。
内部自带8K字节可编程FLASH存储器,拥有2K+字节的EEPROM作为程序存储器的拓展。
由于STC89C52RC具有下图中的配置,因此具有结构简单、造价低廉、效率高的特点,省去了外部的RAM、ROM和接口器件,减少了硬件的开销,节省了成本,提高了系统的性价比。
STC89C52RC的主机系统图:STC89C52RC的实物图:2.系统原理图2.1时钟电路时钟电路用来提供单片机片内各种位操作的时间基准。
51单片机芯片内部有一个高增益反相放大器,用于构成时钟振荡电路,XTAL1为该放大器的输入端、XTAL2为该放大器的输出端。
借助内部时钟方式或外部时钟方式形成时钟。
4X4矩阵键盘控制数码管显示按键值

4X4矩阵键盘控制数码管显示按键值4X4矩阵键盘控制数码管显示按键值一、设计内容与要求用80C51单片机控制系统显示按键值0~F。
二、设计目的意义2.1 设计目的1、了解单片机系统中实现LED动态显示的原理及方法;2、详细了解8051芯片的性能及编程方法;3、了解单片机系统基本原理,了解单片机控制原理;4、掌握AT89C51输入/输出接口电路设计方法;5、掌握AT89C51程序控制方法;6、掌握单片机汇编编程技术中的设计和分析方法;7、掌握使用PROTEUS软件进行仿真的方法。
8、学会使用并熟练掌握电路绘制软件Protel99SE;9、掌握电路图绘制及PCB图布线技巧。
2.2 设计意义1、在系统掌握单片机相应基础知识的前提下,熟悉单片机应用系统的设计方法及系统设计的基本步骤。
2、完成所需单片机应用系统原理图设计绘制的基础上完成系统的电路图设计。
3、完成系统所需的硬件设计制作,在提高实际动手能力的基础上进一步巩固所学知识。
4、进行题目要求功能基础上的软件程序编程,会用相应软件进行程序调试和测试工作。
5、用AT89C51设计出题目所要求的数码管动态循环显示,并针对实际设计过程中软、硬件设计方面出现的问题提出相应解决办法。
6、通过单片机应用系统的设计将所学的知识融会贯通,锻炼独立设计、制作和调试单片机应用系统的能力;领会单片机应用系统的软、硬件调试方法和系统的研制开发过程,为进一步的科研实践活动打下坚实的基础。
三、系统硬件电路图3.1 Proteus软件简介以及仿真电路图Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。
是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、1ARM、8086和MSP430等,2010年即将增加Cortex和DSP系列处理器,并持续增加其他系列处理器模型。
4乘4矩阵键盘扫描加数码管显示代码

4*4矩阵键盘扫描加数码管显示师学院(工学院)电气工程及其自动化黎卫星/***************************************************************/ //º¯ÊýÍ·Îļþ/***************************************************************/ #include<reg51.h>#include<delay.h>#include<ciodziku.h>#include<keyjiance.h>#include<displychushihua.h>/***************************************************************/ //Ö÷º¯Êý/***************************************************************/ void main(){displaychushihua();while(1){num=keyjiance();dula=1;P0=~table[num-1];dula=0;}}/***************************************************///ÑÓʱº¯Êý/***************************************************/void delay(unsigned int z){unsigned int x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}/***************************************************************/ //Êý×Ö¿â/***************************************************************/ sbit dula = P2^6;sbit wela = P2^7;/***************************************************************/ /***************************************************************/ unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00//0x00Ϊ¹Ø±ÕËùÊýÂë¹ÜÏÔʾ};/***************************************************************/ //¼üÅÌɨÃè/***************************************************************/ unsigned int temp,num;/***************************************************************/ /***************************************************************/ unsigned int keyjiance()// unsigned int º¯Êý·µ»ØÖµÀàÐÍ Ê¹ÓÃvoidΪÎÞ·µ»ØÖµ»á³ö´í{P3=0XFE; //µÚÒ»Ðмì²âtemp=P3;temp=temp&0xf0;while(temp!=0xf0){delay(5);temp=P3;temp=temp&0xf0;while(temp!=0xf0){temp=P3;switch(temp){ case 0xee:num=1;break;case 0xde:num=2;break;case 0xbe:num=3;break;case 0x7e:num=4;break;}while(temp!=0xf0)//°´¼üËÉÊÖ¼ì²â{temp=P3;temp=temp&0xf0;}//dula=1;//P0=~table[num-1];// dula=0;}}P3=0XFD; //µÚ¶þÐмì²âtemp=P3;temp=temp&0xf0;while(temp!=0xf0){delay(5);temp=P3;temp=temp&0xf0;while(temp!=0xf0){temp=P3;switch(temp){ case 0xed:num=5;break;case 0xdd:num=6;break;case 0xbd:num=7;break;case 0x7d:num=8;break;} while(temp!=0xf0)//°´¼üËÉÊÖ¼ì²â{temp=P3;temp=temp&0xf0;}//dula=1;//P0=~table[num-1];// dula=0;}}P3=0XFB; //µÚÈýÐмì²âtemp=P3;temp=temp&0xf0;while(temp!=0xf0){delay(5);temp=P3;temp=temp&0xf0;while(temp!=0xf0){temp=P3;switch(temp){ case 0xeb:num=9;break;case 0xdb:num=10;break;case 0xbb:num=11;break;case 0x7b:num=12;break;} while(temp!=0xf0)//°´¼üËÉÊÖ¼ì²â{temp=P3;temp=temp&0xf0;}// dula=1;// P0=~table[num-1];// dula=0;}}P3=0XF7; //µÚËÄÐпªÊ¼¼ì²âtemp=P3;temp=temp&0xf0;while(temp!=0xf0){delay(5);temp=P3;temp=temp&0xf0;while(temp!=0xf0){temp=P3;switch(temp){ case 0xe7:num=13;break;case 0xd7:num=14;break;case 0xb7:num=15;break;case 0x77:num=16;break;} while(temp!=0xf0)//°´¼üËÉÊÖ¼ì²â{temp=P3;temp=temp&0xf0;}//dula=1;//P0=~table[num-1];//dula=0;}}return (num); //º¯Êý·µ»ØÖµ// dula=1;// P0=~table[num-1];// dula=0;}/***************************************************************/ /***************************************************************/ void displaychushihua(){num=17;//µÚ17¸öÊýΪ¹Ø±ÕËùÓÐÊýÂë¹Ü0x00 // dula=1;//P0=0xff;//³õʼ»¯ÇåÁã ²»¸ø¶ÏÑ¡ËÍÊý ÊýÂë¹Ü²»ÁÁ// dula=0;wela=1;P0=~0xc0;wela=0;}。
4x4键盘(任意同时按键按下有效)扫程序-数码管显示键值

}
}
void main()
{
unsigned char i, key_key[16];
while(1)
{
for(i=0;i<16;i++)
{
key_4x4();
duan_xuan();_xuan();
}
}
for(i=x;i>0;--i)
for(j=114;j>0;--j);
}
void duan_xuan()
{
wr=0; //时钟输入端WR置低电平
cs1=0;//cs1为低电平选通段码锁存IC
wr=1; //时钟输入端WR置高电平,WR得到上升沿
cs1=1;//cs1为高电平,段码锁存IC锁存输出保持不变
case 4:if(col3==0) key=3;n=5;break;
case 5:row1=0;row0=1;if(col0==0) key=4;n=6;break;
case 6:if(col1==0) key=5;n=7;break;
case 7:if(col2==0) key=6;n=8;break;
{
static unsigned char n=1;
// P2=0XFF;
switch(n)
{
case 1:row0=0;row3=1;if(col0==0) key=0;n=2;break;
case 2:if(col1==0) key=1;n=3;break;
case 3:if(col2==0) key=2;n=4;break;
数码管显示4×4矩阵键盘

2013年1月1.课程设计目的1.1巩固和加深对单片机原理和接口技术知识的理解;1.2培养根据课题需要选学参考书籍、查阅手册和文献资料的能力;1.3学会方案论证的比较方法,拓宽知识,初步掌握工程设计的基本方法;1.4掌握常用仪器、仪表的正确使用方法,学会软、硬件的设计和调试方法;1.5能按课程设计的要求编写课程设计报告,能正确反映设计和实验成果,能用计算机绘制电路图和流程图。
2.课程设计要求单片机的P1口的P1.0~P1.7连接4×4矩阵键盘,P0口控制一只数码管,当4×4矩阵键盘中的某一按键按下时,数码管上显示对应的键号。
例如,1号键按下时,数码管显示“1”, 14号键按下时,数码管显示“E”等等。
3.硬件设计3.1 设计思想分析本任务的要求,使设计能够完成当4*4矩阵键盘中的某一按键按下时,数码管上显示对应的键盘号。
则本系统主要由以下几大模块构成:显示模块,共阴极LED数码管;输入模块,4*4矩阵键盘;3.2主要元器件介绍矩阵键盘又称为行列式键盘,它是用4条I/O线作为行线,4条I/O线作为列线组成的键盘。
在行线和列线的每一个交叉点上,设置一个按键。
这样键盘中按键的个数是4×4个。
这种行列式键盘结构能够有效地提高单片机系统中I/O 口的利用率。
数码管不同位显示的时间间隔可以通过调整延时程序的延时长短来完成。
数码管显示的时间间隔也能够确定数码管显示时的亮度,若显示的时间间隔长,显示时数码管的亮度将亮些,若显示的时间间隔短,显示时数码管的亮度将暗些。
若显示的时间间隔过长的话,数码管显示时将产生闪烁现象。
所以,在调整显示的时间间隔时,即要考虑到显示时数码管的亮度,又要数码管显示时不产生闪烁现象。
4.1 设计思想按键采用线反转法先把列线置成低电平,行线置成输入状态,读行线;再把行线置成低电平,列线输入状态,读列线。
当有键按下时,由两次所读状态即可确定所按键的位置,不需扫描,键盘响应速度大大加快。
矩阵键盘按键的数码管显示矩阵键盘按键的数码管显示

一、矩阵键盘按键的数码管显示1.实验目的(1)掌握VHDL语言的语法规范,掌握时序电路描述方法(2)掌握多个数码管动态扫描显示的原理及设计方法2.实验所用仪器及元器件计算机一台实验板一块电源线一根扁平线一根下载线一根3.实验任务要求设计出4*4矩阵键盘对某一按键按下就在数码管显示一个数字。
按键从左上角到右下角依次为1,2, (16)4.实验原理按键模块原理键盘扫描的实现过程如下:对于4×4键盘,通常连接为4行、4列,因此要识别按键,只需要知道是哪一行和哪一列即可,为了完成这一识别过程,我们的思想是,首先固定输出4行为高电平,然后输出4列为低电平,在读入输出的4行的值,通常高电平会被低电平拉低,如果读入的4行均为高电平,那么肯定没有按键按下,否则,如果读入的4行有一位为低电平,那么对应的该行肯定有一个按键按下,这样便可以获取到按键的行值。
同理,获取列值也是如此,先输出4列为高电平,然后在输出4行为低电平,再读入列值,如果其中有哪一位为低电平,那么肯定对应的那一列有按键按下。
键盘键值的获取:键盘上的每一个按键其实就是一个开关电路,当某键被按下时,该按键的接点会呈现0的状态,反之,未被按下时则呈现逻辑1的状态。
扫描信号由r o w进入键盘,变化的顺序依次为1110-1101-1011-0111-1110。
每一次扫描一排,依次地周而复始。
例如现在的扫描信号为1011,代表目前正在扫描9,10,11,12这一排的按键,如果这排当中没有按键被按下的话,则由column读出的值为1111;反之当9这个按键被按下的话,则由colu mn读出的值为1110。
根据上面所述原理,我们可得到各按键的位置与数码关系如表所示:1110 1110 1110 1110 1101 1101 1101 1101row1110 1101 1011 0111 1110 1101 1011 0111 column1 2 3 4 5 6 7 8键值row 1011 1011 1011 1011 0111 0111 0111 0111column1110 1101 1011 0111 1110 1101 1011 0111键值9 10 11 12 13 14 15 16动态显示原理为使得输入控制电路简单且易于实现,采用动态扫描的方式实现设计要求。
数码管显示4×4矩阵键盘的键盘号--万意要点

数码管显示4X4矩阵键盘的键盘号学院:物理与电子工程学院专业:自动化班级:13级7班学号:姓名:万意指导教师:马世榜日期:2013年12月31日目录1引言 (1)2设计方案 (2)3硬件设计 (3)3.1AT89S51 (3)3.24*4矩阵式键盘 (6)3.2.1 矩阵式键盘介绍 (6)3.2.2 键盘扫描原理 (7)3.3硬件电路连接 (9)3.4.1 单片机时钟电路 (9)3.4.2单片机复位电路 (10)3.4.3 矩阵式键盘电路 (10)3.4.4 LED数码管显示电路 (10)4软件设计 (12)4.1所用软件简介 (12)4.1.1 Keil (12)4.1.2 Proteus (12)4.2程序流程图 (14)4.3源程序 (15)5电路原理图 (17)参考文献 (18)1引言矩阵式键盘乃是当今使用最为广泛的键盘模式,该系统以N个端口连接控制N*N个按键,即时在LED数码管上。
单片机控制的据这是键盘显示系统,该系统可以对不同的按键进行实时显示,其核心是单片机和键盘矩阵电路部分,主要对按键与显示电路的关系、矩阵式技术及设备系统的硬件、软件等各个部分进行实现。
4*4矩阵式键盘采用AT89S51单片机为核心,主要由矩阵式键盘电路、译码电路、显示电路等组成,软件选用汇编语言编程。
单片机将检测到的按键信号转换成数字量,显示于LED显示器上。
该系统灵活性强,易于操作,可靠性高,将会有更广阔的开发前景。
2设计方案单片机的P1口的P1.0~P1.7连接4×4矩阵键盘,P0口控制一只数码管,当4×4矩阵键盘中的某一按键按下时,数码管上显示对应的键号。
例如,1号键按下时,数码管显示“1”, 14号键按下时,数码管显示“E”等等。
本论文主要研究单片机控制的键盘识别显示系统,分别对按键信息和显示电路以及软、硬件各个部分进行研究。
主要内容如下:①根据矩阵式键盘的特点,进行键盘控制系统的整体研究与设计;② LED实时显示按键信息;③采用软件编程的方法实现按键信息的提取和显示。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Proteus 软件功能的理解,学会用这个软件设计三相步进电机控制系统,将理论
知识与实践相联系,为以后在学习和工作的发展打下一个良好的基础
。然后,
通过该课程设计, 初步理解了利用计算机控制技术进行三相步进电机控制系统的
设计。
最后,我明白:知识不是孤立的,相互之间有联系的,我们要学会理解知识
点以及学科之间的融合渗透。 本次课程设计涉及到了计算机技术, 自动控制技术,
微机技术, 数字电子技术等众多知识, 因而我们需要把把各个学科之间的知识融
合起来,形成一个整体。认识到 Proteus这个软件的强大功能,为以后的学习和
工作打下基础 。
我相信未来是属于我们的, 随着科学技术的发展, 控制技术的应用将将越来
越广泛,发挥越来越重要的作用。
参考文献
[1] 阎石主编 . 数字电子技术 . [M] 北京:高等教育出版社, 2006 年 [2] 陈振官等编著 . 新颖高效声光报警器 . [M] 北京:国防工业出版社, 2005 年 [3] 王东峰等主编 .单片机 C 语言应用 100 例 . [M] 北京:电子工业出版社, 2009 年 [4] 胡耀辉等主编 .单片机系统开发实例经典 . [M] 北京:冶金工业出版社, 2006 年 [5] 李鸿主编 .单片机原理及应用 . [M] 湖南:湖南大学出版社, 2005 年 [6] 谭浩强主编 .C 语言程序设计 . [M] 北京:清华大学出版社, 2005 年
Y 主程序
7
沈阳航空航天大学综合课程设计
六、性能的测试
1、输入、显示一位数字
2、输入、显示两位数字
图 8 显示一位数字
图 9 显示两位数字
8
沈阳航空航天大学综合课程设计
3、输入、显示三位数字
4、 输入、显示四位数字
图 10 显示三位数字
图 11 显示四位数字
七、结论
键盘输入 0 到 9 的任意数字,数码管显示;再次输入任意数字,前一位数
如果给定工作方式正序换相通电 , 步进电机正转。若步进电机的励磁方式为 三相六拍 , 即 A-AB-B-BC-C-CA。如果按反序通电换相 , 即则电机就反转。其他 方式情况类似。 (4) 步进电机的启停控制
2
沈阳航空航天大学综合课程设计
步进电机由于其电气特性 , 运转时会有步进感 , 即振动感。为了使电机转动
三相步进电机可以在三相单拍,三相双拍和三相六拍三种工作过方式下工 作。在三相单三拍工作方式运行时, 通电顺序为: A-B-C-A; 三相双三拍工作方式 运行时,通电顺序为: AB-BC-CA-AB三; 相六拍工作方式运行时,通电顺序为: A-AB-B-BC-C-CA-A,因此要输出相应的控制字进行控制。 (3) 步进电机的转向控制
( 1)用 4x4 键盘输入步进电机的工作频率及工作状态,如单三拍、双三拍、三 相六拍。 ( 2) 正转时数码管显示 1,反转时数码管显示 2,不转时数码管显示 0; ( 3)用数码管显示工作状态。
四、电路设计
1.单片机最小系统 单片机最小系统由晶振、瓷片电容、电解电容、电阻、开关及电源组成。单
片机最小系统复位电路的极性电容的大小直接影响单片机的复位时间, 一般采用 10~30uF,51 单片机最小系统容值越大需要的复位时间越短;单片机最小系统晶 振可以采用 6MHz 或者 11.0592MHz,在正常工作的情况下可以采用更高频率的 晶振; 51 单片机最小系统晶振的振荡频率直接影响单片机的处理速度,频率越 大处理速度越快, 单片机最小系统起振电容一般采用 15~33pF,并且电容离晶振 越近越好,晶振离单片机越近越好。
直接和显示器相连。 3 控制状态的读取
方案 1:把按键接到单片机的中断口,若有按键按下,单片机接收到中断信
1
沈阳航空航天大学综合课程设计
号,再通过软件编写的中断程序来执行中断,优点是接线简单,简化了电路,但 软件编写较为复杂,不易掌握。
方案 2:不使用中断,直接把开关分别接在单片机的接口上,通过查询端口 信号来动作。
九、课设体会
经过一个月的努力和付出, 完成了本次课程设计, 通过本次课程设计提高了
我的设计方案和分析问题的能力, 加深了对理论知识的理解, 做到了理论知识与
实践的联系。学会了 Proteus 这个仿真软件的运用,积累进行课程设计的经验。
其次,通过本次课程设计, 大大提高了自己的动手能力和设计能力, 加深对
采用单极性驱动方式,使三相步进电机能在( 1)三相单三拍,( 2)三相双三拍 ,
( 3)三相六拍三种工作方式下正常工作;能实现的功能有 : 启动 / 停止控制、方 向控制;速度控制;用 LED数码管显示工作方式。键盘输入工作频率。本次课程 设计采用 80C51 单片机作为主控芯片,程序采用 C 语言来编写,驱动电路采用 ULN2003A集成电路,显示采用 7SEG-MPX4-CC即, 四位共阴数码管 ,P0 接段码,
方案 2:使用专门的电机驱动芯片 ULN2003A来驱动电机运行。驱动芯片的 优点是便于电路的集成, 且驱动电路简单, 驱动信号很稳定, 不易受外界环境的 干扰,因而设计的三相步进电机控制系统性能更好。
通过对两种方案的比较,我选择方案 2 使用 ULN2003A电机驱动芯片来作为
驱动。 2 数码管显示方案选择
图 3 单片机最小系统
2.4x4 矩阵键盘电路 首先,对 P1 赋值使 P1=0x11,然后令第一行即 P17 等于零,如果第一行有
按键按下,则 P0 至 P3 的值会发生变化:如果第一个按键按下,则 P10 等于 0; 如果第二个按键按下,则 P11 等于 0;如果第三个按键按下,则 P12 等于 0;如 果第四个按键按下,则 P13 等于 0。按此规律,直至四行扫描完毕。
脉冲的频率越高,电动机运转的速度越快,否则,速度就越慢。因而通过延 时程序控制输出脉冲的频率,就可以实现对步进电机速度的控制。 2 控制系统的设计思路
此次我所设计的是一个三相步进电机控制系统,主要由单片机 80C51,3 相 步进电机, 7 段数码管,及一些其他相关元件设计而成。可以通过开关来控制系 统的启 / 停工作,当系统运转时,用开关来控制方向,并使相应的指示灯亮起, 同样由开关来选择工作模式。 运转时, 用 7 段数码管来显示工作状态。 最后根据 思路所设计出来的硬件图设计相适应的软件。 3 控制系统的整体框图
邮电出版社, 1993 年
六、按照要求撰写课程设计报告
成绩评定表
评语、建议或需要说明的问题:
指导教师签字:
日期:
成绩
沈阳航空航天大学综合课程设计
沈阳航空航天大学综合课程设计
一、概述
本次毕设的题目是:三相步进电机控制电路的设计。本次毕设使用
80C51
单片机作为主控芯片,利用 ULN2003A集成电路作为三相步进电机的驱动电路,
综合课程设计
三相步进电机控制器电路的设计
班
级
学
号
学生姓名
指导教师
课程设计任务书
一、设计说明 步进电机是工业过程控制及仪表控制中的主控元件之一, 作为执行元件其特
点为能够快速起启停、 精度高且能直接接收数字量, 由于这些特点使其在定位场 合得到了广泛的应用。
设计一个三相步进电机控制器,使其能够控制步进电机的工作状态,如步进 电机正、反转,步进电机的工作方式等。
开始
键盘 扫 描
是 进 入 中断
是 否有 键 按下
否 显示 函 数
图 6 主函数流程图
6
2 显示函数流程图
沈阳航空航天大学综合课程设计
动态显示子程序
输入要显示的数据
待显示数据的移位
求下一位选码
送位段码到 P0 口输出 送位选码到 P2.0-P2.3 输出
修改数组地址
延时
4 位显示完了吗 N
返回
图 7 显示模块的程序框图
9
沈阳航空航天大学综合课程设计
字向前移位,作为十位数字,后输入数字,作为个位数字;按此规律,可以输入 任意一位、两位、三位或四位数字。
八、性价比
本设计用简单的常用的器件以及易编写的软件程序实现了要求功能。 51 单 片机价格便宜甚至实验室即可提供;共阴数码管相较液晶显示,不尽价格便宜, 而且简单、易实现, 4x4 键盘既是简单的按键开关;电容、电阻等 价格几乎不 计,所有这些器件实验室都能提供,成本只有几十元。性价比偏高。
通过对方案的比较,我选择通过中断来读取端口信号。
三 、控制系统的工作原理
1 三相步进电机控制工作原理 (1) 步进电机的工作原理
图 1 步进电机三相接线图
如图 1 所示, U1、V1、W1接电源,分别有三个开关控制, U2、 V2、W2分别 接地。
如果给处于错齿状态的相通电, 则转子在电磁力的作用下, 将向磁导率最大 (即最小磁阻位置)位置转动,即向趋于对齿的状态转动。 (2) 步进电机的工作方式
并用 8 只 1K 欧左右电阻上拉。 P2 的 4 位 IO 口接位选码。 正转,数码管显示 1。 反转,数码管显示 2. 不转,数码管显示 0. 采用 Proteus 软件进行仿真。在 Keil uVsuon3编程环境下编程和编译生成 HEX文件,导入到 80C51单片机,实现对各 个模块的控制,实现我们所需要的功能。
4
沈阳航空航天大学综合课程设计
图 4 矩阵键盘
3.数码管显示电路 四位 7 段数码管,位选端接 P2 口,段选端通过排阻连接到接