单片机最小系统设计制作训练

合集下载

单片机最小系统设计安装调试实训总结

单片机最小系统设计安装调试实训总结

单片机最小系统设计安装调试实训总结一、前言单片机是现代电子技术中应用最广泛的一种芯片,其能够实现各种各样的功能。

为了更好地学习和掌握单片机的应用,我们需要进行实际操作,设计单片机最小系统并进行安装调试。

二、单片机最小系统设计1. 硬件部分单片机最小系统由四个基本部分组成:单片机、时钟电路、复位电路和供电电路。

其中,时钟电路是最重要的部分,其作用是为单片机提供稳定的时钟信号。

复位电路可以保证在系统启动时单片机处于一个确定的状态。

供电电路则为整个系统提供所需的稳定电源。

2. 软件部分软件部分主要包括编程工具和编程语言。

常见的编程工具有Keil、IAR 等,编程语言可以选择C语言或汇编语言。

三、安装调试流程1. 硬件连接将单片机与其他器件按照设计图连接好,注意接线正确性和稳定性。

2. 软件设置打开编程工具,在设置中选择正确的芯片型号和下载器型号,并设置好相应参数。

3. 编写程序根据实际需求编写程序,并进行编译和下载。

4. 调试程序通过单步调试、断点调试等方法,逐步排除程序中的错误,确保程序正常运行。

四、实训感悟通过本次实训,我深刻认识到了单片机最小系统设计的重要性和复杂性。

在实际操作中,需要仔细检查每一个连接点,保证电路的稳定性和正确性。

同时,在编写程序时也需要考虑到各种可能出现的问题,并进行充分测试和调试。

五、总结单片机最小系统设计安装调试是单片机应用中不可或缺的一部分。

通过本次实训,我们掌握了相关知识和技能,并在实践中加深了理解。

在今后的学习和工作中,我们将更加注重实践操作,并不断提高自己的技能水平。

单片机最小系统制作实验报告

单片机最小系统制作实验报告

单片机最小系统制作实验报告单片机最小系统实验报告《单片机原理及应用技术》设计课题:系别:专业:学号:姓名:指导老师:课程设计报告2012年6月单片机最小系统(流水灯的设计)一、单片机简介由于单片机技术在各个领域正得到越来越广泛的应用,世界上许多记成电路生产家相继推出各种类型的单片机,在单片机家族的众多成员中,MCS-51系列单片机以其优越的性能、成熟的技术及高可靠性和高性能价格比,迅速占领了工业测控和自动化工程应用的主要市场,成为国内单片机应用领域中的主流。

目前,可用于MCS-51系列单片机开发的硬件越来越多,与其配套的各类开发系统、各种软件也日趋完善,因此,可以极方便地利用现在资源,开发出用于不同目的的各类应用系统。

单片机最小系统是在以MCS-51单片机为基础上扩展,使其能更方便地运用于测试系统中,不仅具有控制方便、组态简单和灵活性大等优点,而且可以大幅度提高被测试的技术指标,从而能够大大提高产品的质量和数量。

单片机以其功能强、体积小、可靠性高、造价低和开发周期短等优点,称为在实时监测和自动控制领域中广泛应用的期间,在工业生产中称为必不可少的器件,尤其是在日常生活中发挥的作用也越来越大。

普遍来说,单片机又称单片微控制器,是在一块芯片中集成了CPU(中央处理器)、RAM(数据存储器)、ROM(程序存储器)、定时器/ 计数器和多种功能的I/O(输入/ 输出)接口等一台计算机所需要的基本功能部件,从而可以完成复杂的运算、逻辑控制、通信等功能。

二、电路简介在我们的单片机最小系统设计中,有些电路的介绍简单如下:复位电路:由电容串联电阻构成,电容电压不能突变的性质,可以知道,当系统一上电,RST脚将会出现高电平,并且,这个高电平持续的时间由电路的RC值来决定。

典型的51单片机当RST 脚的高电平持续两个机器周期以上就将复位,所以,适当组合RC 的取值就可以保证可靠的复位。

晶振电路:典型的晶振取11.0592MHz (因为可以准确地得到9600波特率和19200波特率,用于有串口通讯的场合)//12MHz (产生精确的us级时歇,方便定时操作(来自: 写论文网:单片机最小系统制作实验报告))。

51单片机最小系统的设计与制作(推荐初学者)

51单片机最小系统的设计与制作(推荐初学者)

51单片机最小系统制作(推荐初学者)实物图功能:1.流水灯2.数码管动态显示3.蜂鸣器唱歌4.红外遥控接受遥控近照:背面:虽然先看着多点。

但其实一点也不复杂,只能说费事而已。

八位LED灯八位LED灯蜂鸣器:蜂鸣器是从网卡上拆下来的,数码管一、确定任务开发单片机最小系统二、任务分析:该系统具有的功能:(1)具有2位LED数码管显示功能。

(2)具有八路发光二极管显示各种流水灯。

(3)可以完成各种奏乐,报警等发声音类实验。

(4)具有复位功能。

三、功能分析(1)两位LED数码管显示功能,我们可以利用单片机的P0口接两个数码管来现这个功能;(2)八路发光二极管显示可以利用P1口接八个发光二极管实现这个功能;(3)各种奏乐、报警等发声功能可以采用P2.0这个引脚接一蜂鸣器来实现。

(4)利用单片机的第9脚可以设计成复位系统,我们采用按键复位;利用单片机的18、19脚可以设计成时钟电路,我们利用单片机的内部振荡方式设计的。

四、设计框图五、硬件电路设计根据本系统的功能,和单片机的工作条件,我们设计出下面的电路图。

本人又添加了红外一体化接收头。

可以对单片机进行遥控了。

使用USB口供电。

六、元件清单的确定:数码管:共阴极2只(分立)电解电容:10UF的一只30PF的电容2只220欧的电阻9只4.7K的电阻一只1.2K的电阻一只4.7K的排阻一只,12MHZ的晶振一只有源5V蜂名器一只AT89S51单片机一片常开按钮开关1只紧锁座一只(方便芯取下来的,绿色的)发光二极管(5MM红色)8只万能板电路版15*17CMS8550三极管一只4.5V电池盒一只,导线若干。

七、硬件电路的焊接按照原理图把上面的元件焊接好,详细步骤省略。

八、相关程序编写针对上面的电路原理图,设计出本系统的详细功能:(1)、第一个发光二极管点亮,同时数码管显示“1”。

(2)、第二个发光二极管点亮,同时数码管显示“2”。

(3)、依次类推到第八个发光二极管点亮,同时数码管显示“8”。

单片机最小系统的设计与制作

单片机最小系统的设计与制作

设计课题题目:单片机最小系统的设计与制作一、设计任务与要求自制一套单片机最小系统,具有显示和键盘输入,并设计该系统具有实现时钟、温度测量。

1.显示日期功能(年、月、日、时、分、秒以及星期)。

2.可通过按键随时调整年、月、日或时、分、秒。

3.可显示温度。

二、系统设计方案方案一、最小系统以51单片机为核心,其包括复位电路、晶振电路、按键电路、显示电路等。

外围电路可以利用单片机控制温度传感器DS18B20进行实时的温度检测,并在其中加入DS1302时钟芯片以获取时间,利用按键进行随时的时间调节。

系统框图:DS18B20通过一条I/O接口与单机机相连进行温度的读与写操作,DS1302与I /O 接口相连获取时间,通过按键的扫描进行时间的调节,并在LCD1602上显示。

三、单元电路分析与设计1.晶振电路单片机内部有一个用于构成振荡器的高增益反相放大器。

引脚XTAL1和XTAL2分别是此放大器的输入端和输出端。

这个放大器与作为反馈元件的片外晶体谐振器一起构成一个自激振荡器。

外接晶体谐振器以及电容C1和C2构成并联谐振电路,接在放大器的反馈回路中。

对外接电容的值虽然没有严格的要求,但电容的大小会影响震荡器频率的高低、震荡器的稳定性、起振的快速性和温度的稳定性。

因此,此系统电路的晶体振荡器的值为12MHz,电容应尽可能的选择陶瓷电容,电容值约为30pF。

2.复位电路复位是由外部的复位电路来实现的。

片内复位电路是复位引脚RST通常采用上电自动复位和按键手动复位两种方式,此电路系统采用的是按键手动复位电路,高电平时复位。

当时钟频率选用12MHz时,C取10μF,R约为1K。

3.按键电路因为本设计需要的键盘比较少,所以采用独立式键盘。

在键盘的应用中,需要解决键盘消抖的问题,一般使用的是软件消抖的方法。

加10k的上拉电阻用来提高抗干扰能力。

其中K1是复位键,K2、K3个是调整时间增加、减少的键,K4是切换年、月、日及时、分、秒的显示状态并在所切换的显示状态下配合加减两个键调整时间。

单片机最小系统电路图绘制

单片机最小系统电路图绘制
●P0~P3=FFH P0~P3口用作输入口时,必须先写入“1”。
单片机在复位后,已使P0~P3口每一端线为“1”,为这些端线 用作输入口做好了准备。
●SP=07H 表明堆栈底部在07H。一般需重新设置SP值。
●其余特殊功能寄存器的状态为00H
2021/5/23
7
二 绘制简单电路图
1 .原理图设计过程
图1-1原理图设计流程
2021/5/23
10
操作步骤
1.2.2 新建一个设计库 (1)点击桌面图标
面,如图1-2所示。
,启动Protel 99 se,出现以下启动界
图1-2 启动界面
2021/5/23
11
启动后出现的窗口如下图1-3所示。
图1-3 启动后的窗口
2021/5/23
12
(2)选取菜单File/New Design来新建一个设计库,出现如下图1-4对话框。 Database File Name处可输入设计库存盘文件名,点击Browse...改变存盘目录。
图1-4 新建设计库对话框
2021/5/23
13
(3)选取File/New...打开New Document对话框,如图1-6, 选取Schematic Document建立一个新的原理图文档。
图1-6 新建文档对话框
2021/5/23
14
1.2.3 添加元件库 在放置元件之前,必须先将该元件所在的元件库载入内存才行。
如上图1-7所示。
2021/5/2(3 4)然后点击OK按钮,完成该元件库的添加。
18
1.2.4 添加元件 由于电路是由元件(含属性)及元件间的边线所组成的,所
以现在要将所有可能使用到的元件都放到空白的绘图页上。 通常用下面两种方法来选取元件。 1. 通过输入元件编号来选取元件 做法是通过菜单命令Place/Part或直接点击电路绘制工具栏

单片机最小系统实验设计报告

单片机最小系统实验设计报告

单片机最小系统实验设计报告一、实验目的(1)熟悉单片机最小系统的组成,上机步骤及调试方法;(2)加深理解C51汇编语言逻辑结构,能够使用汇编进行简单的程序编写;(3)将课上学到的理论知识联系实际,完成简单的电子控制系统;二、实验所需仪器及设备三、实验线路及原理下图为实验板电路图:(1)硬件组成及原理硬件组成:89S52单片机、8D锁存器74LS573两片、16选1译码器74LS154、16位七段数码显示器、轻触开关;原理:采用扫描显示,利用人眼视觉暂留效应,产生稳定的数码显示效果。

基于上述基本原理,利用单片机的P0口作为七段数码显示器的段选控制,通过两片8D 锁存器74LS573将段选控制分配到两组总共16位七段数码显示器上;单片机的P1.0-P1.3作为16位七段数码显示器的位选,而如何用单片机的4个管脚控制两组总共16位的七段数码显示器呢?这里使用的是1片16选1的译码器74LS154。

(2)软件原理程序流程图:显示主循环个按键完成设置、加、在按键子程序中以及加减闪烁的值,数据缓FLASH修改显示缓冲 区闪烁位在显示子程序中,只需负责将显示缓冲区的数据取出来进行显示即可按键子程序说明:KEYIN: JNB SSET,KEYIN1 ;判断SET键是否按下ACALL DELAY1 ;延时去抖动JNB SSET,KEYIN1JB SSET,$ ;判断SET键是否松开INC FLASH ;SET键按下调整闪烁标志位MOV R7,FLASHCJNE R7,#17,KEYIN1;判断FLASH是否已经移出16位MOV FLASH,#0HKEYIN1: MOV TEMP1,R0JNB SSUB,KEYIN2;判断减键是否按下ACALL DELAY1;延时去抖动JNB SSUB,KEYIN2JB SSUB,$ ;判断减键是否松开MOV A,FLASHADD A,#60HMOV R0,ADEC @R0;减键按下修改数据缓冲区对应位的值CJNE @R0,#0FFH,KEYIN2MOV @R0,#0BHKEYIN2: JNB AADD,KEYIN3;判断加键是否按下ACALL DELAY1;延时去抖动JNB AADD,KEYIN3JB AADD,$ ;判断加键是否松开MOV A,FLASHADD A,#60HMOV R0,AINC @R0; 加键按下修改数据缓冲区对应位的值CJNE @R0,#0CH,KEYIN3MOV @R0,#0KEYIN3: MOV R0,TEMP1RET显示子程序:DISP: MOV A,@R0ACALL TAB;查表取得由第一片74LS573送出的段代码的值 ACALL SEGU9;调用第一片74LS573数据锁存子程序MOV A,@R1ACALL TAB1;查表取得由第二片74LS573送出的段代码的值 ACALL SEGU10;调用第二片74LS573数据锁存子程序INC R0;调整显缓指针INC R1;调整显缓指针ACALL SENDBIT;调用位选子程序点亮16位7段LED中的两位 ACALL DELAY;延时CJNE R0,#58H,DISP;判断是否已完成16位显示MOV R0,#50H;显缓指针付初值MOV R1,#58H;显缓指针付初值RET主程序:FLAG EQU 20HFG1 BIT FLAG.0FG2 BIT FLAG.1DATABUF1 EQU 60HDATABUF2 EQU 61HDATABUF3 EQU 62HDATABUF4 EQU 63HDATABUF5 EQU 64HDATABUF6 EQU 65HDATABUF7 EQU 66HDATABUF8 EQU 67HDATABUF9 EQU 68HDATABUF10 EQU 69HDATABUF11 EQU 6AHDATABUF12 EQU 6BHDATABUF13 EQU 6CHDATABUF14 EQU 6DHDATABUF15 EQU 6EHDATABUF16 EQU 6FHFLASH EQU 70H ;TEMP0 EQU 71HTEMP1 EQU 72HTEMP2 EQU 73HTEMP3 EQU 74HTEMP4 EQU 75HSSET BIT P3.0; SET键AADD BIT P1.7; 加键SSUB BIT P1.6; 减键ORG 0000HAJMP MAINORG 0030HMAIN: CLR CSETB FG1MOV R0,#50HMOV R1,#58HMOV TEMP0,#0MOV TEMP2,#40MOV FLASH,#16MOV DATABUF1,#2MOV DATABUF2,#0MOV DATABUF3,#0MOV DATABUF4,#5MOV DATABUF5,#0BHMOV DATABUF6,#0MOV DATABUF7,#3MOV DATABUF8,#0BHMOV DATABUF9,#0MOV DATABUF10,#9MOV DATABUF11,#0BHMOV DATABUF12,#0MOV DATABUF13,#2MOV DATABUF14,#0BHMOV DATABUF15,#5MOV DATABUF16,#0 MAIN1: ACALL KEYINACALL GETDATAMOV A,FLASHCJNE A,#16,MAIN4AJMP MAIN3MAIN4: DJNZ TEMP2,MAIN2MOV TEMP2,#60CPL FG1MAIN2: JB FG1,MAIN3MOV A,FLASHADD A,#50HMOV R0,AMOV @R0,#0AHMOV R0,#50HMAIN3: ACALL DISPAJMP MAIN1GETDATA:MOV TEMP3,R0MOV TEMP4,R1MOV R0,#50H ;//显缓 MOV R1,#60H NEXT: MOV A,@R1MOV @R0,AINC R0INC R1CJNE R0,#60H,NEXTMOV R0,TEMP3MOV R1,TEMP4RETDISP: MOV A,@R0ACALL TABACALL SEGU9MOV A,@R1ACALL TAB1ACALL SEGU10INC R0INC R1ACALL SENDBITACALL DELAYCJNE R0,#58H,DISPMOV R0,#50HMOV R1,#58HRETKEYIN: JNB SSET,KEYIN1ACALL DELAY1JNB SSET,KEYIN1JB SSET,$INC FLASHMOV R7,FLASHCJNE R7,#17,KEYIN1MOV FLASH,#0HKEYIN1: MOV TEMP1,R0JNB SSUB,KEYIN2ACALL DELAY1JNB SSUB,KEYIN2JB SSUB,$MOV A,FLASHADD A,#60HMOV R0,ADEC @R0CJNE @R0,#0FFH,KEYIN2 MOV @R0,#0BHKEYIN2: JNB AADD,KEYIN3ACALL DELAY1JNB AADD,KEYIN3JB AADD,$MOV A,FLASHADD A,#60HMOV R0,AINC @R0CJNE @R0,#0CH,KEYIN3 MOV @R0,#0KEYIN3: MOV R0,TEMP1RETSENDBIT:MOV A,P1ANL A,#0F0HORL A,TEMP0INC TEMP0MOV P1,AMOV R2,TEMP0CJNE R2,#8H,SENDBIT1 MOV TEMP0,#0 SENDBIT1:RETSEGU9: CLR P1.4CLR P1.5MOV P2,ASETB P1.4MOV P1,#0AHRETSEGU10: CLR P1.4CLR P1.5MOV P2,ASETB P1.5MOV P1,#0AHRETTAB: ADD A,#1MOVC A,@A+PCRETDB 0C0H,0F9H,0A4HDB 0B0H,99H,92HDB 82H,0F8H,80HDB 90H,0FFH,0BFHTAB1: ADD A,#1MOVC A,@A+PCRETDB 03H,09FH,25HDB 0DH,99H,49HDB 41H,1FH,01HDB 09H,0FFH,0FDHDELAY1: MOV R7,#200TM2: MOV R6,#100TM1: DJNZ R6,TM1DJNZ R7,TM2RETDELAY: MOV R7,#4TMM2: MOV R6,#50TMM1: DJNZ R6,TM1DJNZ R7,TM2RETEND元件清单:C1:104C2:103C3:103C4:103C5:33pC6:33pC7:220u电解C8:103C9: 220u电解C10:103C11:4.7u电解D1--D8以及DP:LEDD9:1N4001Jmper:IDC-20Jpower:电源接插件Q1—Q9:9012R1—R16:75欧R17—R25:220欧R26—R30:1KRESET以及S1,S2,S3:轻触开关RP1—RP4:4XLED七段数码管RP5—RP6:10K排阻U1:89s52U2:74ls145U3:lm7805U9,U10:74ls573Y1:12M晶振。

(整理)单片机最小系统设计

(整理)单片机最小系统设计

第4章单片机最小系统设计制作训练内容提要在电子竞赛设计中,单片机作为系统的控制核心广泛应用。

本章介绍了单片机最小系统电路板、通用键盘显示电路、液晶显示模块、A/D及D/A转换等单元电路设计及其程序设计。

知识要点:单片机最小系统,可编程键盘和显示器的接口电路,MDLS点阵字符型液晶显示模块,点阵图形型液晶显示模块,A/D与D/A,程序设计。

教学建议: 本章的重点是掌握单片机最小系统与接口电路的设计与制作。

建议学时数为8学时。

单片机最小系统在竞赛中可以选用成品。

但单片机作为竞赛作品中的核心部件,软件编程训练可以利用单片机开发系统进行培训,通过对单片机最小系统硬件的设计制作,可以使学生加深对单片机的了解。

液晶显示模块采用成品,接口电路与程序设计是训练的重点。

A/D与D/A等电路需要进行设计制作。

设计制作的产品可以作为子系统或者模块保留备用。

训练中要求学生完成电原理图、印制板图、装配图、实际制作、电路调试、设计总结报告。

4.1 单片机最小系统设计制作4.1.1 单片机最小系统电路板硬件设计单片机最小系统电路板可选用AT89C51、AT89C52等DIP-40封装的单片机作为MCU。

系统包括时钟电路,复位电路,扩展了片外数据存储器和地址锁存器。

系统还设置了8个并行键盘S1~S4,S6~S9,6个共阳极LED数码管LED1~LED6。

系统无需扩展程序存储器,用户可根据系统程序大小选择片内带不同容量闪存的单片机,例如PHILIPS半导体公司推出的P89C66X Flash单片机,其片内Flash ROM容量最大可达64KB。

系统还提供基于8279的通用键盘显示电路、液晶显示模块、A/D及D/A转换等众多外围器件和设备接口。

单片机最小系统原理框图如图4.1.1所示。

最小系统电路原理图如图4.1.2所示。

LED数码管和并行键盘电路原理图如图4.1.3所示。

图4.1.1单片机最小系统原理框图图4.1.2 单片机最小系统电原理图图4.1.3 LED数码管和并行键盘电路原理图单片机时钟信电路原理图如图4.1.4所示。

单片机最小应用系统制作实训报告

单片机最小应用系统制作实训报告

单片机最小应用系统制作实训报告《单片机最小应用系统制作实训报告》一、实训目的和背景单片机是嵌入式系统的核心,其应用广泛,包括家电控制、智能家居、工业控制等。

为了提高学生对单片机的理论和实践掌握能力,本次实践任务是制作一个单片机最小应用系统,以培养学生的创新意识和动手能力。

二、实训内容和步骤1.实训准备根据实验要求,选取合适的单片机型号,并准备相应的开发板、开发软件和实验器材。

2.系统设计根据实训要求,设计单片机系统的硬件和软件结构。

硬件部分包括单片机、外围设备(如按键、LED等)的连接方式和引脚分配;软件部分包括初始化设置和主程序的设计。

3.硬件搭建根据设计方案,将单片机和外围设备连接起来,并进行电路布线和焊接等工作。

4.软件编程使用开发软件对单片机进行编程,实现系统的功能。

根据设计方案,编写初始化设置的代码和主程序的代码,并进行调试和修改。

5.系统测试将制作好的单片机应用系统与外围设备连接,进行功能测试和性能评估。

调试系统,确保其各项功能正常运行,同时测试系统的稳定性和可靠性。

6.实训总结根据实训经验,总结制作单片机最小应用系统的过程中遇到的问题和解决方法,总结经验教训,并提出改进意见。

三、实训结果和体会通过实践制作单片机最小应用系统,我收获了许多经验和体会。

首先,在系统设计阶段,我深入了解了单片机的硬件和软件结构,对于系统连接和引脚分配有了更深入的理解。

其次,在硬件搭建和焊接过程中,我学会了认真仔细地进行电路布线和焊接,确保电路的正确连接和稳定性。

此外,编程过程中,我掌握了单片机的初始化设置和主程序设计的方法,提高了自己的编程能力。

通过实训测试,我发现单片机最小应用系统能够正常运行,实现了预期的功能,并且稳定性和可靠性良好。

同时,我也意识到在实践过程中,遇到问题是很正常的,关键是要善于思考和解决问题,通过调试和修改,最终找到正确的解决方案。

总之,通过这次实训,我不仅学到了单片机的基本原理和应用技术,更重要的是培养了自己的动手能力和创新意识。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第3章单片机最小系统设计制作训练3.1单片机最小系统设计制作3.1.1 单片机最小系统电路板硬件设计单片机的主要功能是负责整个系统的控制,不承担复杂的数据处理任务,因此在设计单片机最小系统时通常选用AT89C5l、AT89C52、AT89S51、AT89S52(S系列芯片支持ISP功能)等型号的8位单片机作为MCU。

一个典型的单片机最小系统一般由时钟电路、复位电路、片外RAM、片外ROM、按键、数码管、液晶显示器、外部扩展接口等部分组成,图3.1 、图3.2分别给出了单片机最小系统的结构框图、原理图。

图3.1 单片机最小系统的结构框图图3.2原理图单片机最小系统时钟、复位、译码电路简介1、时钟源电路单片机部具有一个高增益反相放大器,用于构成振荡器。

通常在引脚XTALl和XTAL2跨接石英晶体和两个补偿电容构成自激振荡器,结构如图2 中Y1、C16、C17。

可以根据情况选择6MHz、12MHz或24MHz 等频率的石英晶体,补偿电容通常选择30pF左右的瓷片电容。

2、复位电路单片机小系统采用上电自动复位和手动按键复位两种方式实现系统的复位操作。

上电复位要求接通电源后,自动实现复位操作。

手动复位要求在电源接通的条件下,在单片机运行期间,用按钮开关操作使单片机复位。

其结构如图2 中R24、R26、C18和K17。

上电自动复位通过电容C18充电来实现。

手动按键复位是通过按键将电阻R26与VCC接通来实现。

3、地址译码电路最小系统上的全部硬件除EEPROM以外均是采用总线方式进行扩展的,每一个硬件均占用特定的物理地址。

为了减少芯片的使用数量和降低PCB板布线的复杂度,本系统使用小规模可编程逻辑器件GAL 代替74系列芯片实现译码电路。

具体硬件见图2 中U24。

3.2 键盘显示电路设计3.2.1键盘接口电路及程序设计单片机键盘通常使用机械触点式按键开关,其主要功能是把机械上的通断转换成为电气上的逻辑关系。

也就是说,它能提供标准的TTL逻辑电平,以便与通用数字系统的逻辑电平相容。

小系统上设置了一个2行乘8列的阵列式键盘,系统硬件电路如图4所示。

电路结构采用总线扩展方式进行设计,同时使用P13和P14进行行选择,按键信号通过一片74LS245挂接到数据总线上,片选信号为KEY_CS,为其分配的物理地址为0xA100。

图3.3 键盘接口电路由于系统的键盘接口采用的是总线方式,因此读取按键数值变得相当方便,下面是使用C编写的读取键盘程序:#define KEY XBYTE [0xA100] //键盘地址sbit first_row = P1^4; //键盘第一行控制sbit second_row = P1^3; //键盘第二行控制uchar M_key; //键盘数值暂存单元first_row = 0; //读取第一行键盘数值second_row = 1;M_key = KEY;first_row = 1; //读取第二行键盘数值second_row = 0;M_key = KEY;系统采用定时扫描的方式(扫描间隔为4ms,部定时器定时中断间隔为2ms,每两次定时中断进行一次键盘扫描)进行键盘识别,设计程序时通常要进行以下四个方面的处理:(1)每隔4ms读取一次键盘的数值,判断有无按键按下。

具体方法是令first_row = 0,second_row= 0,M_key = KEY,判断M_key的值是否为0xFF,如果等于0xFF说明没有按键按下,如果不等于0xFF说明有按键按下。

(2)去除按键的机械抖动影响。

通过设置状态标志位first_getkey来判断连续两次扫描键盘是否都检测到有按键按下。

如果没有连续两次都检测到按键按下则按照键抖动处理;否则,认为确实有按键按下。

(3)准确输出按键值keynum,并提供获得有效按键标志getkey。

(4)防止按键冲突。

在获得有效按键以后设定状态标志位keyon来实现每次只处理一个按键,且无论一次按键时间有多长,系统仅执行一次按键功能程序。

键盘识别程序流程如图3.4所示。

程序代码将在介绍完数码管显示器以后统一给出。

图3.4键盘识别程序流程3.2.2数码管接口电路及程序设计本系统共设置了8个7段码数码管显示器,电路结构如图3.5所示。

图3.5 8个7段码数码管显示器电路电路结构同样采用总线扩展方式进行设计,其中使用的数码管为连4位的共阳型数码管。

通过芯片U15(74HC573)锁存,为数码管提供段码数据。

通过芯片U14(74HC573)、U13(74HC138)以及三极管Q1—Q8将低三位地址A2..0进行硬件译码,为每个数码管提供一个唯一的物理地址,具体地址为0xA000—0xA007。

此外本电路结构还考虑了不同数码管进行显示切换时的消隐问题,在编写程序时不用通过额外的处理进行消隐。

由于为每个数码管都分配了一个固定的物理地址,在编写程序时只要将相应的段码数据写入到对应的地址当中便可以完成显示,例如要在第二个数码管上显示“1”,使用C 语言办成实现如下:#define 7SEG_LED2 XBYTE [0xA001] //第二个数码管的地址定义7SEG_LED2 = 0xF9; //将“1”的段码数据“0xF9”输出到段码锁//存器U15上,同时低三位地址A2..0“001”//经过硬件译码使位码LED2为高。

通过上面一条语句便可以实现在第二个数码管上显示“1”的操作。

但由于全部数码管的段码线共用,在同一时刻只能点亮一个数码管,所以在实际应用中必须采用动态扫描的方式进行8个数码管的显示。

具体实现方法是使用部定时器每2ms产生一次定时中断,系统在每进入到一次定时中断后更新一次显示容,对于每个数码管来说其显示的周期为16ms,由于显示频率足够高人眼感觉不到闪烁的存在。

数码管显示程序流程如下:图3.6 数码管显示程序流程在编写程序时考虑到单片机的资源利用情况,使用一个定时器为键盘扫描和数码管显示更新提供定时服务,定时中断函数流程如图3.7所示。

定时器定时间隔为2ms,每次进入中断调用一次显示更新函数,每两次进入中断调用一次扫描键盘函数。

图3.8给出了利用以上给出的键盘扫描和数码管显示以及中断函数实现一个最简单系统的主程序流程图。

在主程序过查询方式判断getkey(获得有效按键标志位,当获得一个有效按键后键盘扫描函数讲其置为1),当获得有效按键后令所有的数码管显示按键的数值。

图3.7 定时中断函数流程图3.8主程序流程图C程序代码如下:#include <absacc.h>#include <reg51.h>#include<intrins.h>#define uchar unsigned char/*数码管物理地址*/#define LED1 XBYTE [0xA000]#define LED2 XBYTE [0xA001]#define LED3 XBYTE [0xA002]#define LED4 XBYTE [0xA003]#define LED5 XBYTE [0xA004]#define LED6 XBYTE [0xA005]#define LED7 XBYTE [0xA006]#define LED8 XBYTE [0xA007]/*键盘物理地址*/#define KEY XBYTE [0xA100]/*扫描键盘使用的变量 */sbit first_row = P1^4; //键盘第一行控制sbit second_row = P1^3; //键盘第二行控制bit first_getkey = 0,control_readkey = 0; //读键盘过程中的标志位bit getkey = 0; //获得有效键值标志位,等于1时代表得到一个有效键值bit keyon = 0; //防止按键冲突标志位uchar keynum = 0; //获得的有效按键值寄存器/*数码管显示使用的变量和常量*/uchar lednum = 0; //数码管显示位控制寄存器uchar led[8] = {0,0,0,0,0,0,0,0}; //数码管显示容寄存器uchar code segtab[18] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6, 0xa1,0x86,0x8e,0x8c,0xff}; //七段码段码表// "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "P" ,"black" /*函数声明*/void leddisp(void); //数码管显示更新函数void readkey(void); //键盘扫描函数/ *T0 定时中断处理函数*/void intT0() interrupt 1{TH0 = -4230/256; //定时器中断时间间隔 2msTL0 = -4230%256;leddisp(); //每次定时中断显示更新一次if(control_readkey == 1) //每两次定时中断扫描一次键盘{readkey();}control_readkey = !control_readkey;}/*主函数*/void main(void){TMOD = 0x01; //设定定时器T0工作模式为模式1TH0 = -4230/256; //定时器中断时间间隔 2msTL0 = -4230%256;TCON = 0x10;ET0 = 1;EA = 1;while(1) //等待获得有效按键{if(getkey == 1) //判断是否获得有效按键{getkey = 0; //当获得有效按键时,清除标志位。

led[0] = keynum; //令全部数码管显示按键值led[1] = keynum;led[2] = keynum;led[3] = keynum;led[4] = keynum;led[5] = keynum;led[6] =keynum;led[7] =keynum;}}}/***************************************************键盘扫描函数原型: void readkey(void);功能: 当获得有效按键时,令getkey=1,keynum为按键值****************************************************/void readkey(void){uchar M_key = 0; ////键盘数值暂存单元first_row = 0;second_row = 0;M_key = KEY;if(M_key != 0xff) //如果有连续两次按键按下,认为有有效按键按下。

相关文档
最新文档