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

合集下载

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

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

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

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

二、单片机最小系统设计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.实训总结根据实训经验,总结制作单片机最小应用系统的过程中遇到的问题和解决方法,总结经验教训,并提出改进意见。

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

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

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

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

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

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

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

protel课程设计实验报告--单片机最小系统的设计

protel课程设计实验报告--单片机最小系统的设计

工程应用软件上机实训报告学院: 机电工程学院专业: 测控技术与仪器班级:学号:姓名:时间:目录1 任务 (2)2 所用设备 (2)3 设计过程 (2)3.1原理图的绘制 (2)3.1.1 单片机89C51芯片的绘制 (2)3.1.2 按键电路 (3)3.1.3 复位电路 (3)3.1.4 晶振电路 (4)3.1.5 蜂鸣器电路 (4)3.1.6 数码管显示电路 (4)3.1.7总原理图 (5)3.2 PCB板的生成 (6)3.2.1数码管的封装 (6)3.2.2各元器件的封装号 (6)3.2.3 PCB图 (7)4 结论 (7)5参考文献 (7)实训报告1、任务1.熟悉PROTEL的基本操作。

2.掌握用PROTEL绘制原理图的基本方法3.掌握用PROTEL制作PCB板的方法4.设计一个89C51单片机最小系统系统, 其中包括晶振电路、按键复位电路、两位数码管、一个蜂鸣器、两个按键输入。

2.所用设备1.WINDOWS XP环境2.PROTEL 99 SE软件3.设计过程3.1原理图的绘制1、首先启动PROTEL 99 SE软件;在File>New中新建一个名为YY.ddb的数据库文件, 并将其设置合适的保存位置;4、3.双击Documents文件夹, 再次选择File>New菜单, 弹出New Document对话框。

双击其中的Schematic Document图标, 新建一个名为Sheet1.Sch的原理图文件;5、双击原理图子文档, 启动原理图编辑器;6、添加元件库, 需要的有Miscellaneous Devices.ddb;添加元件, 手动编辑自己想要的元件并导入元件库, 本次设计编辑了一个单片机89C51元器件;7、连接线路, 形成原理图。

3.1.1 单片机89C51芯片的绘制在Documents文件夹中选择File>New菜单, 弹出New Document对话框。

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

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

常熟理工学院单片机实验报告实验名称:8051单片机最小系统设计与制作班级:电科121小组:第7组姓名:050212127 张勇050212129 周飞翔050212123 姚尧050212131 朱陶实验时间:2014.10.10一.实验目的1、掌握采用Keil uVision集成开发环境下单片机程序的编辑、编译、连接方法;2、掌握程序的下载(烧写);3、熟悉器件,掌握单片机最小系统的设计与制作二.实验仪器面包板 1单片机编程器 1示波器 1开关 3电源 1万用表 1晶振 1二极管8三.实验内容进行两个按键控制8个发光二极管的跑马灯控制相关硬件与软件设计,并完成制作与调试。

四.实验步骤:1.硬件部分图1如图1:主要包括复位开关,晶振,开关按钮,二极管4个部分2.软件部分在Keil 环境下编写程序,生成.hex文件,并通过Proteus进行功能仿真,测试电路是否可以满足实验要求。

程序代码如下:#include"reg51.h"#define DELAY_1S 25000void delay(unsigned int n){unsigned int i;for(i=0;i<n;i++);}void main(){ unsigned char d[8]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};char i;while(1){if((P1&0x01)==0) //S1按下循环左移{ i=0;while((P1&0x02)!=0) //当S0按下时停止左循环{P2=~d[i];delay(DELAY_1S);i++;if(i==8)i=0;}}else if((P1&0x02)==0) //S0按下循环右移{ i=7;while((P1&0x01)!=0) //当S1按下停止右循环{P2=~d[i];delay(DELAY_1S);i--;if(i==-1)i=7;}}}}3.调试采用编程器进行程序烧写,并将烧写好的芯片放到设计系统中进行实物验证本组成员所连面包板实物图,如图2图2按下S1,二极管从左依次点亮,按下S0,二极管向右依次点亮。

实验二、绘制《单片机最小系统》原理图

实验二、绘制《单片机最小系统》原理图

实验二、《单片机最小系统》原理图的设计一、实验目的:熟悉原理图设计步骤、电气法则测试的方法及网络表的形成。

二、实验内容:1、用原理图设计系统设计原理图2、用电气法则测试绘制好的原理图3、由原理图生成网络表三、实验仪器:PC机四、实验要求:将《单片机最小系统》原理图绘制在图纸尺寸为A号,方向水平,标题栏为标准型的图纸上,要求操作环境为捕捉栅格为10mil,可视栅格为10mil,电气栅格为8mil。

原理图绘制好后,用电气法则进行测试并生成网络表。

五、实验步骤:1、启动原理图编辑器(1)、双击Protel99SE图标,启动Protel99SE(2)、创建一个新的设计文件。

执行菜单命令:[File]/[New…](3)、启动原理图编辑器,进入原理图设计环境。

2、设置原理图设计环境执行菜单命令[Design]/[Options],按实验要求进行设置。

3、装入所需要的元件库点击原理图管理器窗口中的[Add]/[Remove…]按钮装入所需的Miscellaneous Devices. ddb 、Microprocessor. Ddb、Inter Databooks. Ddb、Protel DOS Schematic. ddb元件库。

4、放置元件用原理图管理器窗口中的[Place]按钮放置元件并设置它们的属性。

5、编辑与调整6、原理图布线利用画图工具箱对原理图进行布线。

7、文件的存盘执行下拉菜单命令[File]/[Save]进行存盘。

8、进行电气法则测试执行菜单命令[Tools]/[ERC…]进行电气法则测试。

9、生成网张表执行菜单命令[Design]/[Create Netlist…]生成网络表。

六、实验原理图及信息表:C R Y 118.723M H zS 1.....元件信息列表如下:Part Type Designator Footprint Description1K R2 AXIAL0.418.723MHz CRY1 XTAL1 Crystal22uF C3 RAD0.3 Capacitor27C256 U3 DIP-2860pF C1 RAD0.2 Capacitor60pF C2 RAD0.2 Capacitor74LS373 U2 DIP-20200 R1 AXIAL0.4DS80C320 U1 DIP-40 HIGH SPEED/LOW POWER MICRO SW-PB S1 RAD0.4。

51单片机最小系统

51单片机最小系统

51系列单片机最小系统设计与调试实验实验指导书目录一:实验目的 (1)二:原理 (1)三:实训任务. (2)四:最小系统的构成 (3)五:程序 (7)六:心得体会 (7)一:实验目的1. 了解单片机的基本工作原理2. 学习并掌握相关软件的使用方法(Protel、keil)2. 掌握单片机片内程序存储器下载方法3. 掌握单片机程序设计(汇编及C51)二:原理1、什么是单片机单片微型计算机简称单片机,是典型的嵌入式微控制器(Microcontroller Unit),常用英文字母的缩写MCU表示单片机,它最早是被用在工业控制领域。

单片机由芯片内仅有CPU的专用处理器发展而来。

最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。

用专业语言讲,单片机就是在一块硅片上集成了微处理器、存储器及各种输入/输出接口的芯片。

2、最小系统的概念单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统.对51系列单片机来说,单片机+晶振电路+复位电路,便组成了一个最小系统.但是一般我们在设计中总是喜欢把按键输入、显示输出AT89C51高性能8位单片机功能AT89C51提供以下标准功能:8K字节Falsh闪速存储器,256字节内部RAM,32个I/O口线,3个16位定时/计数器,一个6向量两级中断结构,一个全双工串行通信口,片内震荡器及时钟电路,同时A T89C51可降至0HZ的静态逻辑操作,并支持两种软件可选的节电工作模式。

空闲方式停止CPU的工作,但允许RAM,时/计数器,串行通信口及中断系统持续工作。

掉电方式保存RAM中的内容,但震荡器停止工作并禁止其他所有部件工作等加到上述电路中,成为小系统三:实训任务.1)认识MCS-51的ROM及片外RAM空间:认识51系列单片机的程序存储器(ROM)的空间范围;汇编指令编码在ROM中存储形式;掌握指令编码和指令编码所在地址的概念;了解51系列单片机的程序存储器(ROM)固定地址的用途。

第3章 单片机最小系统 设计制作训练.

第3章 单片机最小系统 设计制作训练.
{ if(first_getkey == 0) { first_getkey = 1; }
else //当有有效按键按下时,进一步识别是哪一个按键 { if(keyon == 0) //防止按键冲突,当还有未释放的按键时不对其它按 键动作响应
{ first_row = 0; //扫描第一行按键 second_row = 1; M_key = KEY; if(M_key != 0xff) { switch(M_key) { case 0xfe: keynum = 0x00; break; case 0xfd: keynum = 0x01; break; case 0xfb: keynum = 0x02;
下则按照键抖动处理;否则,认为确实有按键按下。
(3)准确输出按键值keynum,并提供 获得有效按键标志getkey。 (4)防止按键冲突。在获得有效按键以 后设定状态标志位keyon来实现每次只 处理一个按键,且无论一次按键时间有多
长,系统仅执行一次按键功能程序。
图3.4键盘识别程序流程
3.2.2数码管接口电路及程序设计
3、地址译码电路 最小系统上的全部硬件除EEPROM
以外均是采用总线方式进行扩展的,每 一个硬件均占用特定的物理地址。为了 减少芯片的使用数量和降低PCB板布线 的复杂度,本系统使用小规模可编程逻 辑器件GAL代替74系列芯片实现译码电 路。具体硬件见图2 中U24。
3.2 键盘显示电路设计
3.2.1键盘接口电路及程序设计
/*键盘物理地址*/
#define KEY XBYTE [0xA100] /*扫描键盘使用的变量 */ sbit first_row = P1^4; //键盘第一行控制 sbit second_row = P1^3; //键盘第二行控制 bit first_getkey = 0,control_readkey = 0; //读 键盘过程中的标志位

单片机实训指导书(最小系统)

单片机实训指导书(最小系统)

《单片机实训》指导书【课程名称】:单片机实训【适用专业】:自动化(本科)【学时】:1周【学分】:2一、设计的题目利用最小系统板进行二次开发的实训二、设计目的本次设计是在学生学习《数字电路》、《模拟电子》、《单片机原理及应用》的基础上开展的。

通过本次课程实训,使学生能够掌握单片机最小系统板的焊接要点,同时掌握在最小系统板上进行二次开发的方法,提高学生的动手操作能力,并在此基础上加深对所开《单片机控制技术》课程的理解。

三、设计要求1.绘制出最小系统图,进行仿真调试。

2.在最小系统的基础上,用一个按键来控制2个数码管,要求按一下键(按键有两种形式,一种是用并口,一种是采用中断),数码管开始从00到99轮流显示,再按一下数码管锁定。

同时一个发光二极管一秒钟闪烁。

其中:(1)学会用万用表确定数码管引脚的方法。

(2)掌握用单片机的并行口进行按键和显示的扩展方法。

(3)掌握根据硬件设计进行软件编程的方法,设计的程序中,数码管显示的延时程序用两种方法实现,软件延时和定时器中断的形式。

(4)利用编程器,完成调试好程序的下载。

(5)借助示波器完成硬件的纠错。

(6)软硬件调试通过,达到实训要求。

四、设计文档的要求设计结束后,学生应提交设计说明书一份,约5000字~10000字,具体如下:1.封面2.摘要3.关键词4.目录5.正文①概述所作题目的意义、本人所做的工作及系统的主要功能②硬件电路设计及描述;③软件设计流程及描述;④源程序代码(要有注释)6.设计体会7.参考文献。

8.致谢五、时间安排六、参考资料单片机教材单片机通讯技术电气元器件选型手册集成电路选型手册。

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

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

单片机最小系统设计安装调试实训总结1. 引言单片机最小系统是指由单片机芯片、晶振、复位电路和电源构成的基本硬件系统,是进行单片机开发的基础。

本次实训旨在通过设计、安装和调试单片机最小系统,加深对单片机工作原理和硬件组成的理解,并能够熟练操作相关工具和设备。

2. 设计方案2.1 硬件选型根据实际需求选择合适的单片机芯片,并考虑其性能、功能和价格等因素。

同时选择合适的晶振频率,一般选择常用的4~20MHz晶振。

2.2 复位电路设计复位电路用于保证单片机在上电或复位时能够正常初始化,并进入预期状态。

一般需要使用一个稳压芯片来提供稳定的复位电压,并使用一个复位按钮来手动触发复位。

2.3 电源设计根据单片机芯片的工作电压要求选择合适的电源模块,并注意提供足够稳定的电流输出。

同时需要考虑是否需要添加滤波电容来减小噪声干扰。

3. 安装步骤3.1 焊接电路板根据设计方案,将单片机芯片、晶振、复位电路和电源模块等元件焊接在电路板上。

注意焊接时要保证焊点的良好连接,避免短路和虚焊等问题。

3.2 连接调试工具使用USB转串口模块将单片机最小系统与计算机连接起来,以便通过串口进行调试和通信。

根据单片机芯片的规格书,确定相应的引脚连接方式。

3.3 烧录程序选择合适的烧录工具和烧录软件,将编写好的程序下载到单片机芯片中。

在烧录过程中需要注意选择正确的芯片型号和端口,并确保烧录成功。

4. 调试步骤4.1 复位测试按下复位按钮或重新上电后,观察单片机是否能够正常复位,并进入预期状态。

可以通过串口打印输出一些信息来验证单片机是否正常工作。

4.2 晶振测试观察晶振是否能够正常振荡,并使用示波器检测晶振输出的波形频率是否与选用的晶振频率一致。

4.3 电源测试检测电源模块的输出电压是否稳定,并使用示波器检测电源线上的纹波情况。

如果有较大纹波,可以考虑添加滤波电容来降低噪声。

4.4 程序测试编写一个简单的程序,如LED闪烁或串口通信等,通过下载到单片机芯片中进行测试。

实验5-制作单片机最小系统PCB

实验5-制作单片机最小系统PCB

实验5 制作单片机最小系统PCB【目标】1.会利用向导规划电路板。

2.会修改元器件参数,比如引脚位置、封装等。

3.会对PCB板进行DRC操作和排除违规错误【练习】图5.1是单片机最小系统原理图,该系统包含了最简单的电源及保护电路、振荡电路、复位电路、发光二极管指示电路、ISP在线编程电路和一个40脚插针。

其中40脚插针将单片机的各路信号引出,可以扩展不同的应用电路。

本实验要求制作大小为3200mil X 2800mil的双面电路板,电源、地线宽度设置为30mil,其它线宽10mil。

电路中各元器件及其封装如表5.1所示。

图5.1单片机最小系统表5.1 单片机最小系统电路元件及其封装一览表序号库元器件名注释/参数值元器件封装所在库C1 Cap Plo1 10uF CAPPR1.5-4X5 Miscllaneous Devices.IntLibC2 Cap 30pF RAD-0.2 Miscllaneous Devices.IntLibC3 Cap 30pF RAD-0.2 Miscllaneous Devices.IntLibC4 Cap 0.01uF RAD-0.2 Miscllaneous Devices.IntLibC5 Cap Plo1 10uF CAPPR2-5X6.8 Miscllaneous Devices.IntLibR1 Res2 300 AXIAL-0.3 Miscllaneous Devices.IntLibR2 Res2 10K AXIAL-0.3 Miscllaneous Devices.IntLib VD1 LED1 LED LED-1 Miscllaneous Devices.IntLib VD2 Diode 1N4007 1N4007 DIODE-0.4 Miscllaneous Devices.IntLibU1 DS83C520-MCL DS83C520-MCL DIP-40B Dallas Microcontroller 8 - Bit.IntLib S1 SW-PB SW-PB SPST-2 Miscllaneous Devices.IntLibY1 XTAL XTAL BCY-W2/D3.1 Miscllaneous Devices.IntLibJP1 Header 6 Header 6 HDR1X6 Miscllaneous Connectors.IntLib JP2 Header 2 Header 2 HDR1X2 Miscllaneous Connectors.IntLib JP3 Connector 40 Connector 40 HDR2X20 Miscllaneous Connectors.IntLib【步骤】1.新建工程,绘制原理图文件如果不知道原理图中的元器件在哪个库,或者不会使用加载库操作,可以直接使用“查询”功能查找元器件,但要注意必须将查询范围改为“路径中的库”,路径必须定位到自己电脑上DXP2004安装文件夹中的Library。

51单片机最小系统工程训练指导书

51单片机最小系统工程训练指导书

单片机实验板工程训练指导书物理与电子工程系目录实验一 LED闪烁灯设计-------------------------------------------------4 实验二模拟开关控制指示灯设计---------------------------------------------7 实验三多路开关状态指示设计---------------------------------------————10 实验四广告灯左、右移设计---------------------------------------14 实验五查询法设计广告灯---------------------------------18 实验六报警产生器设计---------------------------------------------21 实验七 I/O并行口直接驱动LED显示设计-----------------------------——25 实验八单键识别设计---------------------------------------———29 实验九一键多功能按键识别设计---------------------------------33 实验十 00-99计数器设计--------------------------------————38 实验十一六十秒计时器设计------------------------——————————42 实验十二可预置可逆4位计数器设计-----------------------------------46 实验十三动态数码显示设计---------------------------------------51 实验十四 4×4矩阵式键盘识别设计--------------------------------55 实验十五定时计数器T0作定时应用设计(一)----------------------64 实验十六定时计数器T0作定时应用设计(二)——----------------------71 实验十七 9.9秒跑马表设计------------------------------------------76 实验十八“嘀、嘀、……”报警声设计---------------------------------82 实验十九“叮咚”门铃设计-------------------------------------------87 实验二十智能电子钟设计---------------------------------------------92 实验二十一“新年好”音乐设计-----------------------------------------------102 实验二十二电子琴设计-------------------------------------------------108 实验二十三模拟计算器数字输入及显示设计-------------------------119 实验二十四数字电压表设计--------------------——-------------------------126 实验二十五DS18B20数字温度计设计---------------------------------131 附录A实验板中模拟/数字转换器ADC0804的参数及使用说明------------------------139 附录B 实验板中DS18B20智能温度控制器的参数及使用----------------------------141单片机实验板详细说明该单片机实验板设计巧妙,经过了严格的检查,可放心使用。

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

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

单片机最小应用系统制作实训报告
首先,我选用了一块常见的8051单片机作为系统的核心芯片。

这款单片机具有强大的处理能力和丰富的外设接口,非常适合用于小型应用系统的开发。

然后,我进行了硬件的搭建。

首先,我将单片机与外部电源和晶振进行了连接,以提供运行所需的电源和时钟信号。

接下来,我通过GPIO口将单片机与LED灯连接,以便控制LED的亮灭。

为了简化系统的搭建,我直接使用了面包板进行连接,并通过杜邦线将各个元件连接在一起。

在硬件搭建完成后,我转入软件部分的开发。

首先,我使用Keil软件进行编写和调试单片机的程序。

我采用了C语言作为开发语言,编写了一个简单的程序,用于控制LED灯的亮灭。

程序的基本逻辑是利用单片机的GPIO口输出高低电平信号,从而控制LED灯的开关。

经过多次调试和修改,我最终成功地实现了LED灯的亮灭控制。

当单片机输出高电平信号时,LED灯会亮起;当单片机输出低电平信号时,LED灯会熄灭。

这样,我就成功地完成了最小应用系统的制作。

通过这次实训,我对单片机应用系统的制作过程和原理有了更深入的了解。

我学会了如何选用合适的单片机、搭建硬件系统、编写程序并进行调试。

我也发现了在实际制作过程中可能出现的问题和解决方法。

这对提高我对单片机应用系统的开发能力非常有帮助。

总之,通过这次实训,我成功地制作了一个单片机最小应用系统,并对该系统的制作过程和原理有了更深入的了解。

我相信这次实训经验对我的学习和将来的工作都将有所帮助,我会继续深入学习和探索单片机应用系统的开发。

  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) //如果有连续两次按键按下,认为有有效按键按下。

相关文档
最新文档