重庆邮电大学自动化电气与工程类 工程实训实验报告单片机最小系统实验报告
基于单片机的最小系统实验报告 (2)
自动化电气与工程类工程实训实验报告课程名称:自动化电气与工程类工程实训实验学院(系):自动化学院专业:自动化班级:0811102学号: 2011212935 201121925学生姓名:陆正媚欧杰基于单片机最小系统设计一、实验任务和性能指标1.1实验任务学习掌握PROTEUS仿真软件的基本使用,熟悉KEIL软件的使用。
并且对单片机最小系统进行仿真设计,实现1.在电路上实现秒表计时功能。
2.同时实现计时器功能,显示时分秒。
3.用单片机及外围接口电路(键盘接口和显示接口电路)制作一个计算器,实现对键盘的扫描,并用八位数码管显示结果。
1.2性能指标秒表计时要求能精确至0.01秒,计时器要求能循环显示,格式为时—分—秒,并能实现时间的调整,包括时间的增加和减小,对键盘的扫描实现4*4矩阵键盘的扫描,并能循环显示。
二、系统设计方案按照系统设计的功能的要求,初步确定设计系统由单片机主控模块、八位数码管显示模块、键扫描接口电路共三个主要模块组成。
主控芯片使用AT89C52单片机,键盘电路采用4*4矩阵键盘电路,并附有三位功能选择键模块,显示模块采用八位一体共阳极数码管。
对于秒表,选择功能一,4*4键盘的加号按钮为秒表的开始按钮,按下时秒表开始计时,再按一次停止计时;减号为清零按钮,按下时秒表清零。
对于时钟,选择功能二,4*4键盘的“1”“2”分别是小时,分钟的增大调节,“4”“5”分别是小时,分钟的减小调节。
三、硬件系统设计1.单片机最小系统单片机最小系统就是支持主芯片正常工作的最小电路部分,包括主控芯片、复位电路和晶振电路。
主控芯片选取AT89C52芯片,因其具有良好的性能及稳定性,价格便宜应用方便。
晶振选取12MHz,晶振旁电容选取30pF。
采用按键复位电路,电阻选取10KΩ,电容选取10μF。
单片机最小系统硬件电路图如附件图一所示。
2.键盘接口电路P3.4-3.7分别接S1-S4。
S1-S4功能分别是功能选择,秒表开关,秒表终止,设置只需要对P3.4-P3.7进行低电平检测就可以看出是否有键按下。
单片机最小系统设计安装调试实训总结
单片机最小系统设计安装调试实训总结一、前言单片机是现代电子技术中应用最广泛的一种芯片,其能够实现各种各样的功能。
为了更好地学习和掌握单片机的应用,我们需要进行实际操作,设计单片机最小系统并进行安装调试。
二、单片机最小系统设计1. 硬件部分单片机最小系统由四个基本部分组成:单片机、时钟电路、复位电路和供电电路。
其中,时钟电路是最重要的部分,其作用是为单片机提供稳定的时钟信号。
复位电路可以保证在系统启动时单片机处于一个确定的状态。
供电电路则为整个系统提供所需的稳定电源。
2. 软件部分软件部分主要包括编程工具和编程语言。
常见的编程工具有Keil、IAR 等,编程语言可以选择C语言或汇编语言。
三、安装调试流程1. 硬件连接将单片机与其他器件按照设计图连接好,注意接线正确性和稳定性。
2. 软件设置打开编程工具,在设置中选择正确的芯片型号和下载器型号,并设置好相应参数。
3. 编写程序根据实际需求编写程序,并进行编译和下载。
4. 调试程序通过单步调试、断点调试等方法,逐步排除程序中的错误,确保程序正常运行。
四、实训感悟通过本次实训,我深刻认识到了单片机最小系统设计的重要性和复杂性。
在实际操作中,需要仔细检查每一个连接点,保证电路的稳定性和正确性。
同时,在编写程序时也需要考虑到各种可能出现的问题,并进行充分测试和调试。
五、总结单片机最小系统设计安装调试是单片机应用中不可或缺的一部分。
通过本次实训,我们掌握了相关知识和技能,并在实践中加深了理解。
在今后的学习和工作中,我们将更加注重实践操作,并不断提高自己的技能水平。
单片机最小系统设计安装调试实训总结
单片机最小系统设计安装调试实训总结单片机最小系统设计安装调试实训总结我在这篇文章中将对单片机最小系统设计安装调试实训进行深入探讨。
我们将从简单到复杂,从基础到进阶,全面了解这一主题。
在本文的结尾,我将分享我的观点和理解。
首先,让我们来介绍一下单片机最小系统设计的概念。
单片机最小系统是指包含处理器、存储器和必要的外设的最基本的硬件配置。
这个系统可以完成最简单的任务,如控制一个LED灯的开关。
了解单片机最小系统的设计原理和调试方法对于学习嵌入式系统编程非常重要。
在进行单片机最小系统设计之前,我们需要明确所使用的单片机的型号和芯片架构。
不同的单片机可能有不同的引脚配置和寄存器设置。
因此,在实际设计之前,我们需要仔细研究单片机的datasheet和用户手册,以确保正确地连接和配置引脚和寄存器。
接下来,我们开始设计单片机最小系统。
首先,我们需要将单片机与外部晶体振荡器相连,以提供时钟信号。
晶体振荡器为单片机提供精确的时钟信号,使其能够按照我们的预期进行计算和操作。
我们需要配置单片机的时钟模块,并将晶体振荡器与相应的引脚相连。
接下来,我们需要将单片机与外部电源相连,以为其提供工作电压。
不同的单片机可能有不同的电源要求,我们需要根据单片机的规格和datasheet来选择适当的电源电压和电源稳压模块。
我们还需要将电源的正负极与相应的引脚相连。
此外,为了与单片机进行交互,我们可能还需要将键盘、显示器、传感器或其他外部设备与单片机相连。
我们需要根据设备的规格和datasheet,选择适当的接口方式,并将其与单片机的引脚相连。
在连接过程中,我们要确保引脚的电平和信号都正确地连接。
完成了硬件的连接之后,接下来是调试阶段。
在调试过程中,我们需要使用相应的调试工具和软件,检查每个引脚的连接和信号是否正确,确保所有的硬件都能正常工作。
如果发现问题,我们需要逐个检查和排除可能的故障点,直到问题得到解决。
在安装和调试完单片机最小系统后,我们可以开始进行简单的程序编写和运行。
单片机系统实验实训报告
一、实验目的1. 熟悉单片机的基本结构和原理。
2. 掌握单片机的编程方法和调试技巧。
3. 培养单片机应用系统的设计能力。
4. 提高实际操作能力和团队协作精神。
二、实验内容本次实验实训主要围绕单片机应用系统展开,包括以下内容:1. 单片机最小系统搭建- 熟悉单片机的最小系统组成,包括复位电路、晶振电路、VCC、GND等。
- 掌握电路板焊接和调试方法。
2. LED流水灯实验- 学习使用51单片机进行简单的单片机应用系统硬件设计。
- 掌握单片机GPIO端口的使用方法。
- 通过编程实现LED灯的流水效果。
3. 按键控制LED灯实验- 学习使用按键输入控制LED灯的亮灭。
- 掌握按键去抖动技术。
4. LCD1602显示屏控制实验- 学习使用LCD1602显示屏显示文字和数字。
- 掌握LCD1602的初始化和显示控制方法。
5. 串口通信实验- 学习使用单片机串口进行通信。
- 掌握串口初始化和通信协议。
6. 温湿度传感器实验- 学习使用温湿度传感器获取环境温度和湿度信息。
- 掌握传感器数据读取和温度湿度计算方法。
7. 多功能密码锁实验- 学习使用单片机实现密码锁功能。
- 掌握按键输入、密码存储和匹配方法。
三、实验步骤1. 实验一:单片机最小系统搭建- 根据实验指导书,准备好实验器材,包括51单片机、电路板、焊接工具等。
- 按照电路图焊接电路,确保电路连接正确。
- 上电测试,观察LED灯是否亮起,确认电路工作正常。
2. 实验二:LED流水灯实验- 编写LED流水灯程序,使用51单片机GPIO端口控制LED灯的亮灭。
- 烧录程序到单片机,观察LED灯的流水效果。
3. 实验三:按键控制LED灯实验- 编写按键控制LED灯的程序,使用按键输入控制LED灯的亮灭。
- 烧录程序到单片机,测试按键控制功能。
4. 实验四:LCD1602显示屏控制实验- 编写LCD1602显示屏显示文字和数字的程序。
- 烧录程序到单片机,观察LCD1602显示屏的显示效果。
单片机最小系统实验设计报告
单片机最小系统实验设计报告一、实验目的(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晶振。
第十三组单片机最小系统实验报告
目录摘要 (2)关键字 (2)系统分布图 (2)一、流水灯 (3)二、数码管 (5)三、矩阵键盘 (7)四、蜂鸣器 (9)五、时钟电路 (11)六、片外扩展 (12)七、LCD1602 (13)八、AD转换电压表 (15)九、DA控制波形 (17)实验总结 (19)附录1:系统总体布局 (19)附录2:本系统所用源程序 (19)单片机最小系统实验报告摘要:本系统以ATMEL 公司生产的AT89C51单片机为核心,包括软件设计和硬件设计两大类。
其中硬件设计包括两部分:一是系统配置,及按照系统要求配置外围电路,如键盘,数码管,流水灯,A/D转换和D/A转换等;二是系统扩展,即是单片机内部功能单元不能满足应系统用要求时,必须在片外给出相应的电路,如单片机的片外扩展。
而系统中的应用软件是根据功能要求设计的,每个应用软件都应可靠地实现系统的各种功能。
我们在设计电路时还充分地考虑了硬件电路的可扩展性和软件的可读性和可移植性。
我们的系统基本完成并能够执行实验所要求的各项功能。
关键字:AT89C51、发光二极管、液晶显示器、数码管、矩阵键盘、74HC573、片外RAM、OP07、ADC0809、DAC0832系统分布图:一、流水灯1、实验原理及实验结果:发光二极管加正向电压时导通,加反向电压时截止。
通过每次对P1口某个I/O口送入高电平使其发光,其余的I/O送低电平使其截止,每次送电平时调用延时0.2s。
通过不断调整高电平的位置,最后达到流水效果。
2、实验原理图:V 54、实验遇到的问题:同一个批次的发光二极管,按照相同的方法连接,在通电时我们发现有一个二极管发光很暗,其余5个都很亮。
我们一直想不通这是为什么,故留在报告里,请大家指点。
(我们猜想是那个二极管接触不良,未证实)5、小结:流水灯是我们做的第一个实验。
在这个实验里我们学到了:1、发光二极管的工作原理及其使用方法(总体原则是保证每个二极管正常发光);2、直流稳压电源的制作方法(整流、滤波、稳压);3、电路板的焊接方法(不要裸线焊接,防止短路)。
重庆邮电大学自动化电气与工程类 工程实训实验报告单片机最小系统实验报告
自动化电气与工程类工程实训实验报告——单片机最小系统实验报告基于PROTEUS仿真平台的51系列单片机最小系统的设计、应用实验一、实验目的和性能指标1、实验目的学习掌握PROTEUS仿真软件的基本使用,熟悉KEIL软件的使用。
并且对单片机最小系统进行仿真设计,实现1.在电路上实现秒表计时、暂停、清零功能。
2.同时实现计时器功能,显示时、分、秒,能够修改时、分、秒。
3.用单片机及外围接口电路实现对键盘的扫描,并用八位数码管显示结果。
2、性能指标秒表计时要求能精确至0.01秒,计时器要求能循环显示,格式为时—分—秒,并能实现时间的调整,包括时间的增加和减小,对键盘的扫描实现4*4矩阵键盘的扫描,并能循环显示。
二、硬件系统设计STC89c51单片机的硬件资源包含:一个8位CPU、振荡器和时钟电路、至少128字节的内部数据存储器,可寻址外部程序存储器和数据存储器个64k字节,21个特殊功能寄存器,4个并行I/O接口,2个16位定时/计数器,至少5个中断源,提供两级中断优先级,可实现两级中断服务程序嵌套。
具有有位寻址功能,有较强的布尔处理能力。
各功能单元(包括IO端口和定时器/计数器等)都由特殊功能寄存器(SFR)集中管理。
中央处理器、ROM、RAM、定时/计数器和I/O口等,各个功能由内部的总线连接起来,从而实现数据通信。
单片机最小系统主要由电源、复位、振荡电路以及扩展部分等部分组成。
1、单片机最小系统单片机最小系统就是支持主芯片正常工作的最小电路部分,包括主控芯片、复位电路和晶振电路。
主控芯片选取AT89C52芯片,因其具有良好的性能及稳定性,价格便宜应用方便。
晶振选取12MHz,晶振旁电容选取30pF。
采用按键复位电路,电阻分别选取10KΩ,电容选取10μF。
2、键盘接口电路共计16个按键,采用4*4矩阵键盘,键盘的行和列之间都有公共端相连,四行采用端口P3.0~P3.3,四列采用端口P3.4~P3.7,通过8个端口的的高低电平完成对矩阵键盘的控制和扫描。
单片机最小应用系统制作实训报告
单片机最小应用系统制作实训报告《单片机最小应用系统制作实训报告》一、实训目的和背景单片机是嵌入式系统的核心,其应用广泛,包括家电控制、智能家居、工业控制等。
为了提高学生对单片机的理论和实践掌握能力,本次实践任务是制作一个单片机最小应用系统,以培养学生的创新意识和动手能力。
二、实训内容和步骤1.实训准备根据实验要求,选取合适的单片机型号,并准备相应的开发板、开发软件和实验器材。
2.系统设计根据实训要求,设计单片机系统的硬件和软件结构。
硬件部分包括单片机、外围设备(如按键、LED等)的连接方式和引脚分配;软件部分包括初始化设置和主程序的设计。
3.硬件搭建根据设计方案,将单片机和外围设备连接起来,并进行电路布线和焊接等工作。
4.软件编程使用开发软件对单片机进行编程,实现系统的功能。
根据设计方案,编写初始化设置的代码和主程序的代码,并进行调试和修改。
5.系统测试将制作好的单片机应用系统与外围设备连接,进行功能测试和性能评估。
调试系统,确保其各项功能正常运行,同时测试系统的稳定性和可靠性。
6.实训总结根据实训经验,总结制作单片机最小应用系统的过程中遇到的问题和解决方法,总结经验教训,并提出改进意见。
三、实训结果和体会通过实践制作单片机最小应用系统,我收获了许多经验和体会。
首先,在系统设计阶段,我深入了解了单片机的硬件和软件结构,对于系统连接和引脚分配有了更深入的理解。
其次,在硬件搭建和焊接过程中,我学会了认真仔细地进行电路布线和焊接,确保电路的正确连接和稳定性。
此外,编程过程中,我掌握了单片机的初始化设置和主程序设计的方法,提高了自己的编程能力。
通过实训测试,我发现单片机最小应用系统能够正常运行,实现了预期的功能,并且稳定性和可靠性良好。
同时,我也意识到在实践过程中,遇到问题是很正常的,关键是要善于思考和解决问题,通过调试和修改,最终找到正确的解决方案。
总之,通过这次实训,我不仅学到了单片机的基本原理和应用技术,更重要的是培养了自己的动手能力和创新意识。
单片机最小化系统原理图绘制 实验报告
一、实验目的
1、熟悉电路原理图的操作工具;
2、提高学生绘制电路原理图的能力;
3、熟悉元件属性的设置
二、实验内容
1、打开一个原理图的空白文档,选择B型图纸,标题栏为标准型;
2、添加常见的元件库如下:
DALLAS MICROPROSESSOR .DDB
INTEL DATABOOKS.DDB
PROTEL DOS SCHEMATIC LIBRARY .DDB
MISCELLANEOUS DEVICES .DDB
3、添加原理图中所需要的元件,各元件在库中的名称如下:
单片机:DS80C320MCG(40) 封装:DIP-40
电阻:RES2 封装:AXIAL0.3
锁存器:74LS373 封装:DIP-20
27C256:27C256 封装:DIP-30
电容: CAP 封装:RAD0.3
电解电容:CAPACITOR 封装:RAD0.3
开关:SW-PB 封装:RAD0.3
4、设置元件的属性,如元件的封装、流水序号等;
5、用导线、网络标号、总线和总线的输入输出端口等工具连接线路,
6、正确放置电源和地符号;
7、对绘制好的原理图进行保存。
绘制的电路图如图1:
图1 局部电路图如下:
图2
图3
图4
三、思考题
1、网络标号的作用是什么?
2、总线和总线输入输出端口有电气意义吗?。
单片机最小系统实验报告
单片机最小系统实验报告
实验目的:
本实验目的是探究微处理器系统最小化原理并实际运用该原理设计一个基于单片机主控的最小系统,用来分析各部件之间的作用以及学习计算机系统的操作。
实验设备:
1.单片机主芯片:亚宝半导体C02晶振
2.外部电路元器件:2个8位数据输入输出口,4个4位数据的输入输出口,4个开关,10K水银温度计,7个键盘,1个指示灯。
实验步骤:
1. 设计单片机最小系统电路:根据实验指导书绘制单片机最小系统电路图,接线涉及到的所有元器件,并标注出每个元器件的引脚号。
2. 编写相关的程序:根据实验的要求,编写相关的CH02语言程序来完成IO口的输入输出功能。
3. 上传程序:将编写的程序用串口烧录到单片机内存中
4. 测试程序:检查所有的管脚,检查程序的正确性,根据程序要求使用按键输入信号,测试输出结果。
实验结果:
在实验过程中,我发现单片机最小系统电路设计较为简单,只需要有基本的电路和编程知识,即可完成本次实验。
经过多次修改和测试,我可以得出程序正确运行的结论。
经过本次实验,我深刻理解了计算机系统的结构,学会了io口的编程,还认识了有关电子元器件的基本用途和功能,研究了系统的最小化原理,以及其背后的道理。
更重要的是,本次实验提高了我的动手能力和分析问题的能力。
单片机最小系统实验总结
单片机最小系统实验总结咱这单片机最小系统实验啊,可真是让我经历了一场不小的折腾。
那实验室啊,一进去就感觉像进了个神秘的小世界。
桌子上摆满了各种仪器设备,电线就跟那蜘蛛网似的,横七竖八的。
旁边那几个同学,有的瞪着大眼睛,满脸好奇地瞅着那些仪器,好像在看啥宝贝似的;有的则皱着眉头,嘴里还时不时嘟囔着,估计是碰到啥难题了。
我呢,刚开始也是一头雾水。
看着那单片机,就跟看一个陌生的小玩意儿一样,不知道从哪儿下手。
我小心翼翼地拿起它,左看看,右看看,心里琢磨着:“这小玩意儿到底咋个工作法儿呢?”开始接线的时候,那可真是考验我的耐心啊。
我眼睛紧紧盯着那些小小的引脚,手里拿着电线,哆哆嗦嗦地往上面插。
这线啊,就跟跟我作对似的,不是插歪了,就是插不进去。
我急得脑门子上都冒出了汗,嘴里还不停地念叨着:“这咋这么难弄啊!”旁边的同学看我这狼狈样儿,忍不住笑了起来:“你看你,手忙脚乱的,跟个新手似的。
”我白了他一眼,说:“你懂啥,我这是在探索呢!”好不容易把线接好了,心里还挺得意的。
可谁知道,一通电,啥反应都没有。
我一下子就像泄了气的皮球似的,耷拉着脑袋。
这时候,心里那股子沮丧啊,就别提了。
我又开始检查线路,一遍又一遍,眼睛都看花了,还是没找出问题在哪儿。
就在我快要放弃的时候,突然,我发现有一根线松了。
我赶紧把它插紧,然后怀着忐忑的心情再次通电。
你还别说,这小单片机还真听话,开始正常工作啦!那一刻,我心里那叫一个高兴啊,就跟中了彩票似的。
脸上的笑容都快咧到耳根子了,忍不住对着旁边的同学喊:“看,成功啦!”通过这次实验啊,我算是明白了,做这实验就跟过日子一样,得有耐心,碰到问题不能轻易放弃。
这单片机最小系统虽然看着复杂,但只要你肯琢磨,总能把它弄明白。
这过程虽然有点折腾,但折腾完了,那收获啊,可真是不小。
单片机最小系统实验报告
长沙学院电子工艺实习报告姓名:潘舟学号:系别:电子与通信工程时间:2011.11.14-2011.11.25专业:电子信息工程指导老师:龙英、刘辉、王新辉、刘亮、马凌云目录1、引言2、目的3、任务4、要求5、主要原理图6、主要程序7、程序实现的功能8、系统调试9、总结目的:通过对单片机最小系统的研究,掌握单片机各引脚功能,理解单片机工作过程及原理,以及与各种外部扩展器件的连接,能够自己运用单片机来解决实际问题。
任务:1、单片机实验板的设计与制作2、声光控延时开光的焊接与调试要求:1、(1)功能要求单片机最小系统(晶振、复位电路);按键输入部分,可以做简单按键输入实验;键盘输入部分,可做矩阵式键盘扫描输入实验;RS-232串行接口部分,可进行单片机与计算机通信实验;LCD显示部分,可做LCD显示实验;LED数码管显示器部分,可进行定时计数等数据显示实验;喇叭发音部分,可做单片机发声实验;LED发光二极管部分,可做基本输出功能实验;稳压电源部分,可提供5V电源;(2)设计要求进行元器件及参数选择;画出电路原理图;PCB 图,焊接电路并调试。
(3)制作要求自行装配和调试,并能发现问题和解决问题。
(4)程序调试要求编写秒表程序和彩灯控制程序,利用自己制作的实验板进行程序调试。
2、(1)、能实现以下功能:a、能够实现光控声控控制灯的点亮;b、能够使灯包点亮后一段时间自动熄灭。
(2)设计要求进行元器件及参数选择;画出电路原理图;PCB 图,焊接电路并调试。
(3)制作要求自行装配和调试,并能发现问题和解决问题。
主要原理图:主要程序:1)编写一程序,达到按键加减的功能。
按一下+1键,显示加一,加到255时,显示归零按。
按下-1键,显示减1,当减到零时,显示变为255。
程序:#include<reg51.h>#include<intrins.h>#define uchar unsigned charsbit k1=P3^0;sbit k2=P3^1;sbit A1=P2^0;sbit A2=P2^1;sbit A3=P2^2;sbit A4=P2^3;uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x 80,0x90};void delay (uchar j){uchar i;for(i=0;i<100;i++){_nop_();j--;}}void xianshi(uchar y){uchar m,n,x,i;m=y%10;n=y/10%10;x=y/100;for (i=0;i<4;i++){A1=0;P0=table[m];delay(1);A1=1;A2=0;P0=table[n];delay(1);A2=1;A3=0;P0=table[x];delay(1);A3=1;}}main(){char t;P2=0;P0=0x80;while(1){if(k1==0){delay(10);if(k1==0){delay(10);while(!k1);t++;if(t>255)t=0;xianshi(t);}}if(k2==0){delay(10);if(k1==0){delay(10);while(!k1);t--;if(t<0)t=255;xianshi(t);}}}}2)编写程序,实现跑秒功能。
单片机小系统制作报告
单片机小系统制作项目报告一:项目描述本项目首先通过一个简单的单片机系统的介绍,使大家对单片机硬件电路及控制程序行成初步认识,随后介绍单片机的内部结构引脚功能与外围电路的连接方法,存储器的配置等相关知识,在此基础上指导大家亲手做一个可以工作的单片机最小系统,该系统可以实现接通电源后控制发光二极管不停闪烁,从而了解单片机的开发过程,掌握常用工具软件的使用,硬件电路的调试方法,为后续项目的需要打下基础。
二:项目内容(1)项目知识内容①单片机的特点、分类、应用。
最小系统硬件电路工作原理以及控制程序的思想。
②单片机内部结构、引脚功能与外围电路的连接,时钟电路、复位电路。
③单片机的片内RAM:寄存器工作区、位寻址区、用户空间。
片外存储器,程序存储器。
④元器件的识别、检测、安装、焊接,线路的布局,项目的建立、源程序的输入、编译。
编程器的使用、写入目标代码。
最小系统的检测与故障的爬出方法。
(2)项目实现①硬件电路描述<1>单片机的外观及引脚排列<2>元器件清单序号元器件数量标称值作用1 U1 1 89C51 单片机2 C1 1 10UF 复位电容3 R2 1 10K 复位电阻4 C2、C3 2 30pF 振荡电容5 Y1 1 11.0592MHz 石英晶振6 R1 1 330 限流电阻7 D1 1 5mm红色显示器件<3>硬件电路图②软件代码描述#include<reg51.h> /*包含针对51系列单片机的基本申明*/sbit LED=P0^0;/*用符号LED表示P0.0引脚*/ main(){unsigned int i;/*定义一个用于延时变量*/while(1){LED=0;/*将P0.0设置为低电平点亮发光管*/for(i=0;i<20000;i++);/*变量i从0到20000,完成延时*/LED=1; /*将P0.0设置为高电平,熄灭发光管*/for(i=0;i<20000;i++);/*变量i从0到20000,完成延时*/}}三:项目总结本次学习我基本上了解单片机的工作原理、结构和功能,也学习了单片机CPU的构造,内部指令,还有程序的格式要求,了解了单片机的开发过程,掌握KEIL和编程器等软件的使用,硬件电路的调试方法。
单片机最小系统设计安装调试实训总结
单片机最小系统设计安装调试实训总结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闪烁或串口通信等,通过下载到单片机芯片中进行测试。
实训单片机实验报告
一、实验目的1. 熟悉单片机的基本结构和工作原理;2. 掌握单片机的编程方法和调试技巧;3. 通过实际操作,加深对单片机原理的理解和应用。
二、实验内容1. 单片机基本原理实验;2. 单片机编程实验;3. 单片机接口实验。
三、实验器材1. 单片机实验板;2. 编程器;3. 调试器;4. 仿真软件;5. 实验指导书。
四、实验步骤1. 单片机基本原理实验(1)搭建单片机最小系统,包括电源、晶振、复位电路、时钟电路等;(2)观察单片机的基本引脚功能,如P1、P2、P3等;(3)了解单片机的存储器结构,包括ROM、RAM、特殊功能寄存器等;(4)学习单片机的指令系统,如数据传送指令、算术逻辑运算指令、控制指令等。
2. 单片机编程实验(1)使用Keil uVision5软件,编写单片机程序;(2)学习C51语言编程,掌握数据类型、运算符、控制结构等;(3)编写程序实现点亮LED灯,观察程序运行效果;(4)编写程序实现按键输入,读取按键状态。
3. 单片机接口实验(1)学习单片机的外设接口,如串口、I2C、SPI等;(2)使用单片机串口通信,实现单片机与PC机的数据传输;(3)编写程序实现I2C通信,读取EEPROM数据;(4)编写程序实现SPI通信,读取传感器数据。
五、实验结果与分析1. 单片机基本原理实验通过搭建单片机最小系统,观察了单片机的基本引脚功能,了解了单片机的存储器结构和指令系统。
实验过程中,掌握了单片机的基本工作原理,为后续编程实验打下了基础。
2. 单片机编程实验使用Keil uVision5软件,编写了点亮LED灯的程序,实现了按键输入读取按键状态。
通过编程实验,掌握了C51语言编程方法,提高了编程能力。
3. 单片机接口实验通过串口、I2C、SPI等接口实验,实现了单片机与PC机的数据传输,读取EEPROM 数据和传感器数据。
实验过程中,了解了单片机的外设接口原理,提高了实际应用能力。
六、实验心得与体会1. 实验过程中,掌握了单片机的基本原理和编程方法,提高了自己的动手能力;2. 通过实验,加深了对单片机原理的理解,为以后的学习和工作打下了基础;3. 在实验过程中,学会了如何查找资料、解决问题,提高了自己的独立思考能力;4. 认识到理论与实践相结合的重要性,只有将所学知识应用于实际,才能真正掌握。
第九组—单片机最小系统实验报告
最 告摘要:本次课题训练设计了一个51的最 , 以AT为控制中心,用P0了一个由8个 的 水灯,用P0 ,P2 和P3示 钟,P1L C D的示 上,用ADC0809,用DAC0832设计 中 用的,本 的 要本 的 的 本 的要 为了 的 , 的 动 路 用的共, 以 了 , , 示高关键 :AT89C51,控制,目录一: 水灯..................................................................................................... 错 !未定义书签 1: 设计 论证............................................................................... 错 !未定义书签 2: 的 ....................................................................................... 错 !未定义书签 3:运行原理:....................................................................................... 错 !未定义书签 4:错 :................................................................................... 错 !未定义书签 : 动 示..................................................................................... 错 !未定义书签 1: 设计 论证:........................................................................... 错 !未定义书签 2: 的 ....................................................................................... 错 !未定义书签 3:运行原理:....................................................................................... 错 !未定义书签 4:错 :................................................................................... 错 !未定义书签 : 键 钟............................................................................. 错 !未定义书签 1: 设计 论证:........................................................................... 错 !未定义书签 2: 的 ....................................................................................... 错 !未定义书签 3:运行原理:....................................................................................... 错 !未定义书签 4:错 :................................................................................... 错 !未定义书签 四:02 示 ......................................................................................... 错 !未定义书签 1: 设计 论证:........................................................................... 错 !未定义书签 2: 的 ....................................................................................... 错 !未定义书签 3:运行原理:....................................................................................... 错 !未定义书签 4:错 :................................................................................... 错 !未定义书签 : R A M............................................................................ 错 !未定义书签 1: 设计 论证:........................................................................... 错 !未定义书签 2: 的 ....................................................................................... 错 !未定义书签 3:运行原理:....................................................................................... 错 !未定义书签 4:错 ....................................................................................... 错 !未定义书签 六: 的AD转换.................................................................................. 错 !未定义书签 1: 设计 论证:........................................................................... 错 !未定义书签 2: 的 ....................................................................................... 错 !未定义书签 3:运行的原理:................................................................................... 错 !未定义书签 4:错 ....................................................................................... 错 !未定义书签 七: 的DA转换.................................................................................. 错 !未定义书签 1: 设计 论证............................................................................... 错 !未定义书签 2: 的 ....................................................................................... 错 !未定义书签 3;运行原理:....................................................................................... 错 !未定义书签 4:错 ....................................................................................... 错 !未定义书签 八: 心得:............................................................................................. 错 !未定义书签 附录 ................................................................................................................ 错 !未定义书签 一: 清 ................................................................................................. 错 !未定义书签 水灯 ............................................................................................. 错 !未定义书签 ............................................................................................. 错 !未定义书签键 ................................................................................................. 错 !未定义书签 钟 ......................................................................................... 错 !未定义书签 LCD 示 ......................................................................................... 错 !未定义书签 ..................................................................... 错 !未定义书签 AD转化 ........................................................................................... 错 !未定义书签 DA转换 ........................................................................................... 错 !未定义书签 : 路 图:..................................................................................... 错 !未定义书签一: 水灯1: 设计 论证水灯的八个 的P1 上,正 +5V ,当给P1输入低, ,当 运行,给P0 入低 , 设计 用 , , 示 定, 路 错, 用 的I/O多 仿真图图 示:2: 的 的 图:3:运行原理:关 上 ,八个 的正 已经 上+5V ,当 运行,P1 八个灯 低 , 行 , , 水灯依次 起4:错 :一次设 ,由 的, 起 错, 以 的 八个水灯 ,高, , 水灯正: 动 示1: 设计 论证:六个 用动 示, 的 P2上, P0 上 用共 , 的 端动 路 用N P N 的共 路 仿真图 图示:2: 的 的 图:3:运行原理:当 运行,要 示的 P0 给 上,P2 的P2.0P2.5端 高 , ,以依次 , , 行一 ,以 , , 的 六个 示 的 4:错 :始示 , 示的 的,原 , ,的 图 的, 的 书上的 个 一 始 示 , ,原 由 清 , 的 动共, 以 , 了 , 示 ,由 多, 多的 , 以以 ,要搞 原 的原理, 要细心: 键 钟1: 设计 论证:键 4*4的16键 ,键 的行 和 的P3.0~P3.3和P3,4~P3.7 上,键 用键 的 , 键 , N P N 和 P2.6 仿真图 图:2: 的 的 图:3:运行原理:(1) 键 的运行原理:键 的 +5V的 , 一端 的P3.0~P3.3 ,行 的P3.4~P3.7 上 键 用 的 , 始运行 , 的 的P3.4~P3.7 输 “0”,读 P3.4~P3.7 的 ,若P3.4~P3.7高 , 键 , 键 若 键 , 键 动,当 键 , 一 一的 若 键 , 个 键键 的 值中将个 键赋一个 定的值,0F , 的键值 示(2) 钟的运行原理:运行 , 钟的秒会走,当 达60 , 示秒 的 清 , 示 钟的 一,当 达 60 , 会清 , 示 的 一,当 示的 达24, 清 ,当 的 键 , 中 ,当 的键 ,会 , 和秒, 一个 键 ,当 键 , 的 一,以 秒的 4:错 :始 , 键 的 和 键值的 了, 键值 示的 , 以仿真 , 要 理 个 的 一 的 , 路 的 上,将 的 和 , , 正 , 正响四:LCD1602 示1: 设计 论证:将LCD的输入端D0D7 的P2端 , P2 入LC D,LCD, 将 转换为 化, 示 RS端 P3.0,RWP3.1,E P3.2,VSS动 一端地,VDD动一端 +5V,VEE动端, 动 LC D的 示 , 正 示,仿真图:2: 的 的 图:3:运行原理:液晶 示的原理 利用液晶的物理特性, 对 示区域进行控制,示,这样即 以示 图 始 ,对液晶进行了初始化设, 定了 示 由 液晶 示 一个 示 , 以 行一定要 的 ,即读 和 地 B F为低 , 示 , 要 示 , 输入示 地, 告 示 ,液晶 以正 示图4:错 :仿真 ,将LCD ,运行 , 正 示,最 将LCD运行 正 示 路上,运行 ,LCD,用 用 量L CD 端,最 槽LCD的 一一对 的, 正 , 示 , 动 动 20 , ,换10 动 , 正 示 以 以 用 ,要 的特性 清路板上: R A M1: 设计 论证:的P0 以地 以 ,P2 地 ,R AM,P0 要 输 要输地 , 以 中,P0 要用地, 用74LS573,由 一 , 以用 R A M 的P0,RAM62256的A0~A7 ,P2RA M的A8~A18 ,RAM 的输的P0仿真图 图:2: 的 的 图:3:运行原理:当 R AM, 低八 的地 由P0, 由地 给 低八 地 , 以 P0 当 用这样 的低八的地 和P2的高八 的地的地 以一起 的地的RAM中,最 P0 当 用,16R A M中 RAM的输 的8 , , 以动 示4:错 输 的 六个 的 一一对 ,示错 , 输 的0~7的P0的0~7 对 , 正 示六: 的AD转换1: 设计 论证:由 中 一路 , 以 用一路 关,本 用用IN0 输入 量,ADDA,ADDB,ADDC 地,A DC0809的控制端CLK,ST,EOC,OE端 的P2 , 进行控制 输入, 输 P0 , P2 ,端 P0输 的 上示 仿真图 :2: 的 的 图:3:运行的原理:由 ADC0809进行A/D转换 要CLK , 的ADC0809的CLK 的P2.4端 上, 要 P2.4输 CLK AD C0809 用 ST 为高始进行转换,IN0输入 量, 经 0809 转换 经 输 端输 P0 进行 示,CLK 的 由ADC0809的参VR EF=VCC, 以转换 的 得用 了;要经理, 上示 值 示的值(D/256*VREF) ,本 上 示的最高 4.972V,最低为0V,最 动为0.019V, 辨率为0.019V4:错 设计 路 ,0809输端 p0 正 ,运行 示为 , ,将0809输端 p0 , 端 ,运行 示正 , 路中0809输 端p0 正 示 正,最 用 , 示正 中了0809的转换原理,了 个端对AD转换的 用, 了 的原理七: 的DA转换1: 设计 论证用DAC0832为D A转换芯 用 即DAC0832的CS XFER,WR1WR2地, 择UA741,DAC0832的 端D0~D0的P2连 上, 图 键 输入 要用 择 键 共设3键,用 择 正 ,89C51 用 行 一 ,D/A转换 的输入端 ,将 转化 量, 运 的 值, 输 端得 的 键 路 图 示,P1.0 键为“ ”键;P1.1 键为“ ”键;P1.2 键为 “正 ” 键 仿真图 :2: 的 的 图:3:运行原理:的 要 :始 ,P1.0,P1.1 ,P1.2 的 ,择的 输 的 . 将 要 进行 . 一 用 键输入要输的 , 以进行 要的 迟的 : 以 键,即 键 , 用 的键转 的 进行理 的 : 输 输 正 输 4:错 上, 要 设计 键控制 , 键起 控制的 用,原 键用的 , 始 的个 的 ,当 进入 , 键 了, 以输 的当 的个 , 键 以 定的控制 的输 了 ,由 以 的 , 这次 要 以 的 上, 以 了很 的八: 心得:这次 , 对 了 对 了初 的了 , 对 中的用 的 的 用,性 , 等了初 的识 要的,中 的 的 的 , , 要 个, ,要 的 量, 次 , 要 要关的知识 , , 要真 细, 上要 , 要细心这 对 用,对 的 很帮助为 的一次 的 , 的 中 了 和错 , 和 的帮助 , 了 的 中, 了很多,当 会 中 很多 题 要 , ,对很多 的 读的水 上, 的 会,的板上运行, ,由 一次 路, 一次 水灯 ,换了新的板,为了 进 , 以 的,对 的 很 响 很多 中, 的 很 , , , 个 的 很 ,以 一 , 中 很多 的 题 这 要的 中 进九:参 文献:原理李朝青MCS—51 用 李华附录一: 清水灯 111B ;最 的E D;1秒111B ;最 个的;1秒111B ;最 个的 以 省略111BD111B011B101B110B111B ; 一次,0.25秒AJMP STAR; 复:MOV R4,#2L3: MOV R2 ,#00HL1: MOV R3 ,#00HL2: DJNZ R3 ,L2RETENDLJMP DISDIS:MOV R0,#00HMOV R2,#01HMOV A,R2MOV DPTR,#TABLP0:MOV P2,AMOV A,R0MOVC A,@A+DPTRMOV P0,ADIMSINC R0MOV A,R2JB P2.5,LP1RL AMOV R2,AAJMP LP0LP1:LJMP DISTAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H DIMS:MOV R7,#04HDL:MOV R6,#0FFHDL1:DJNZ R6,DL1DJNZ R7,DLRET键:MOV 40H,#0FFHWAIT:MOV P2,#3FHMOV P3,#0FHMOV A,P3XRL A,#0FHJZ WAITMOV A,P3XRL A,#0FHJZ WAITARYMOV 40H,BMOV P3,#0F0HMOV A,P3XRL A,#0F0HJZ WAITSWAP AARYLCALLWORDLCALLSHOWMOV P2,#7FH1ARY:MOV B,#00HARY1:JB ACC.0,ARY2RR AINC BJMP ARY1ARY2:RET:MOV 43H,#10L3: MOV 42H,#250L4: DJNZ 42H,L4DJNZ 43H,L3RET1:MOV 44H,#200L5: MOV 45H,#255L6: DJNZ 45H,L6DJNZ 44H,L5RETSHOW:MOV DPTR,#TABMOVC A,@A+DPTRMOV P0,ARETWORD:MOV A,#04HMUL ABADD A,40HRETTAB:DB 0C0H,99H,80H,0C6H,0F9H,92H,90H,0A1HDB 0A4H,82H,88H,86H,0B0H,0F8H,83H,8EH钟 LJMP MAIN ;ORG 000BH; //定 中 入地LJMP TIMER0 ; //定;DATA 20H ;DATA 21HMINH DATA 23H ;MINL DATA 24HSECH DATA 25H ;SECL DATA 26H ; //定义 量MAIN: ; //main 函MOV TH0,#3CH ;MOV TL0,#0AFH ; // 定 中15535 MOV TMOD,#01H ; //SET M0 SETB EASETB ET0SETB TR0 ; //中 定 0MOV DPTR,#SEG,#02H,#03HMOV MINH,#5HMOV MINL,#9HMOV SECH,#5HMOV SECL,#1HMOV R2,#00HLOOP:ACALLDISP; 用 示SJMP LOOP ; // 这 以键:MOV R6,#0FFH:RETDISP:MOV A,#01H; // ;MOV R4,AMOV P2,AMOV A,SECLMOVC A,@A+DPTRCPL AMOV P0,A;MOV A,R4RLC AMOV R4,AMOV P2,AMOV A,SECH MOVC A,@A+DPTR CPL AMOV P0,A;MOV A,R4RLC AMOV R4,AMOV P2,AMOV A,MINL MOVC A,@A+DPTR CPL AMOV P0,A;MOV A,R4RLC AMOV R4,AMOV P2,AMOV A,MINH MOVC A,@A+DPTR CPL AMOV P0,A;MOV A,R4RLC A ; MOV R4,AMOV P2,A MOVC A,@A+DPTR CPL AMOV P0,A;MOV A,R4RLC AMOV P2,A MOVC A,@A+DPTR CPL AMOV P0,A;RETTIMER0: ;定 中 PUSH PSW;INC R2;CJNE R2,#14H,SS3 ; 当一秒 达的 INC SECL; 秒MOV R2,#00H ;清计 r2MOV R3,SECLCJNE R3,#0AH,SS3 ; 秒个 等10MOV SECL,#00HINC SECH; 秒 一MOV R3,SECHCJNE R3,#06H,SS3; 秒 等6MOV SECH,#00H;INC MINL;MOV R3,MINLCJNE R3,#0AH,SS3 ; 钟个 达10MOV MINL,#00H ;INC MINH ;MOV R3,MINHCJNE R3,#06H,SS3 ; 钟 达 6MOV MINH,#0H;CJNE R3,#02H,SS0 ; 2 进制转SS0CJNE R3,#04H,SS3 ; 个 4MOV HOURH,#00H ; 四 ,#00H ;CJNE R3,#0AH,SS3 ;,#00H ;;SS3:MOV TH0,#3CH;MOV TL0,#0AFH;POP PSW;RETISEG: DB 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h, 7fh, 6fh ENDLCD 示RS EQU P3.0RW EQU P3.1E EQU P3.2EQU P2DATE EQU 21H: MOV SP, #5FHMOV P2, #0FFHM GN ITMOV R3, #00H: MOV A, R3MOVC A, @A+DPTRMOV DATE, APUSH ACCT EPOP ACCINC R3LOOP: AJMP LOOPLJMP DISDIS: MOV R0,#00HMOV R2,#01HMOV A,R2MOV DPTR,#TABLP0: MOV P2,AMOV A,R0MOVC A,@A+DPTRLP2DIMSINC R0MOV A,R2JB P2.5,LP1RL AMOV R2,AAJMP LP0LP1: LJMP DISLP2: MOVX @DPTR,AMOVX A,@DPTRMOV P0,ARETTAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92HAD转化 DIMS:MOV R7,#04HDL: MOV R6,#0FFHDL1: DJNZ R6,DL1DJNZ R7,DLRETAD转换 :OE BIT P2.7 ;ADC0808的OE端EOC BIT P2.6 ;ADC0808的EOC端ST BIT P2.5 ;ADC0808的STA RT和ALE端CLK BIT P2.4;ADD0 BIT P3.4 ;ADC0808的 输入 择端;ADD1 BIT P3.5;ADD2 BIT P3.6LED_0DATA 30H ; 示 区DATA 31HDATA 32HDATA 33HADC DATA 34H ; 转换 的; 始ORG 000BH; 定 T0中CPL CLKRETI;------初始化-----------------------------------:MOV TMOD,#02H ;2MOV TH0,#0FEH ;MOV TL0,#0FEHSETB EASETB ET0SETB TR0MOV SP,#60H ;设 堆栈MOV LED_0,#00H ;清 示 区,#00H,#00H,#00HMOV DPTR,#TABLE;地;CLR ADD0;SETB ADD1;SETB ADD2 ; 择ADC0808的道3 ;------ADC0808转换------------------------------WAIT: CLR STSETB STCLR ST ;启动转换JNB EOC,$ ;等待转换 束SETB OEMOV P0,#0FFH ;允许输MOV ADC,P0 ; 转换 CLR OE ;关闭输;------ 理,已备 示------------------------MOV A,ADC ;将AD转换 转换 B C DMOV B,#0C3H ;乘以19.5MVMUL ABMOV R7,AMOV R6,BHB2: CLR A ; 初始化CLR CMOV R3,AMOV R4,AMOV R5,AMOV R2,#10H ;转换 六进制 HB3: MOV A,R7 ; 高端移 待转换 的一CY中RLC AMOV R7,AMOV A,R6RLC AMOV R6,AMOV A,R5 ;进, 当 乘 ADDC A,R5DA A ; 进制 MOV R5,AMOV A,R4ADDC A,R4DA AMOV R4,AMOV A,R3ADDC A,R3MOV R3,A ; 六进制 的 6,用DJNZ R2,HB3MOV A,R5SWAP AANL A,#0FH,AMOV A,R4ANL A,#0FH,AMOV A,R4SWAP AANL A,#0FH,AMOV A,R3ANL A,#0FH,ALCALLDISP ; 用 示 AJMP WAIT; 示DISP:MOV A,LED_0; 示 MOVC A,@A+DPTRSETB P2.3MOV P0,ACLR P2.3MOVC A,@A+DPTRSETB P2.2MOV P0,ACLR P2.2MOVC A,@A+DPTRSETB P2.1MOV P0,ACLR P2.1MOVC A,@A+DPTRCLR ACC.7SETB P2.0MOV P0,ACLR P2.0RET;DELAY:MOV R6,#02H ;5 秒D1: MOV R7,#0FFHDJNZ R7,$DJNZ R6,D1RET;: DB 0C0H,0F9H,0A4H,0B0H,99HDB 92H,82H,0F8H,80H,90HENDDA转换 MAIN:MOV A,P1MOV R0,A ;设 高 MOV R1,#00H ;设 低 BOX GSJMP MAINBOXING: JNB P1.0,SANJIAO ;P1.0控制 的输 JNB P1.1,JUXING;P1.1控制 的输JNB P1.2,JUCHI;P1.2控制 的输RET;******************A O:STR1:MOV R6,#00H; 上 和; 随 上STR2: MOV P2,R6;MOVX @DPTR,AINC R63H,STR2; 随 STR3: DEC R6MOV P2,R63;MOVX @DPTR,ACJNE R6,#00H,STR3JNB P1.0,SANJIA O ;P1.0控制 的输JNB P1.1,JUXING;P1.1控制 的输JNB P1.2,JUCHI;P1.2控制 的输AJMP STR1RET;******************G::MOV A,#000HMOV P2,A ; 地 低 地MOV A,#0FFHMOV P2,A ; 地 高JNB P1.0,SANJIA O ;P1.0控制 的输 JNB P1.1,JUXING;P1.1控制 的输 JNB P1.2,JUCHI;P1.2控制 的输 RET;*********正 ********JUCHI:MOV R1,#00H ; 初值LOOP: ; 定地MOV A,R1BMOVC A,@A+DPTRMOV P2,AINC R1 ; 一2A OGAJMP LOOP ;B:;正DB 80H,83H,86H,89H,8DH,90H,93H,96HDB 99H,9CH,9FH,0A2H,0A5H,0A8H,0ABH,0AEHDB 0B1H,0B4H,0B7H,0BAH,0BCH,0BFH,0C2H,0C5H DB 0C7H,0CAH,0CCH,0CFH,0D1H, 0D4H,0D6H,0D8H DB 0DAH,0DDH,0DFH,0E1H,0E3H, 0E5H,0E7H,0E9H DB 0EAH,0ECH,0EEH,0EFH,0F1H, 0F2H,0F4H,0F5H DB 0F6H,0F7H,0F8H,0F9H,0FAH, 0FBH,0FCH,0FDH DB 0FDH,0FEH,0FFH,0FFH,0FFH, 0FFH,0FFH,0FFHDB 0FFH,0FFH,0FFH,0FFH,0FFH, 0FFH,0FEH,0FDHDB 0FDH,0FCH,0FBH,0FAH,0F9H, 0F8H,0F7H,0F6H DB 0F5H,0F4H,0F2H,0F1H,0EFH, 0EEH,0ECH,0EAH DB 0E9H,0E7H,0E5H,0E3H,0E1H, 0DEH,0DDH,0DAH DB 0D8H,0D6H,0D4H,0D1H,0CFH, 0CCH,0CAH,0C7H DB 0C5H,0C2H,0BFH,0BCH,0BAH, 0B7H,0B4H,0B1H DB 0AEH,0ABH,0A8H,0A5H,0A2H, 9FH, 9CH, 99HDB 96H, 93H, 90H, 8DH, 89H, 86H, 83H, 80HDB 80H, 7CH, 79H, 78H, 72H, 6FH, 6CH, 69HDB 66H, 63H, 60H, 5DH, 5AH, 57H, 55H, 51HDB 4EH, 4CH, 48H, 45H, 43H, 40H, 3DH, 3AH DB 38H, 35H, 33H, 30H, 2EH, 2BH, 29H, 27HDB 25H, 22H, 20H, 1EH, 1CH, 1AH, 18H, 16HDB 15H, 13H, 11H, 10H, 0EH, 0DH, 0BH, 0AH DB 09H, 08H, 07H, 06H, 05H, 04H, 03H, 02HDB 02H, 01H, 00H, 00H, 00H, 00H, 00H, 00HDB 00H, 00H, 00H, 00H, 00H, 00H, 01H, 02HDB 02H, 03H, 04H, 05H, 06H, 07H, 08H, 09HDB 0AH, 0BH, 0DH, 0EH, 10H, 11H, 13H, 15H DB 16H, 18H, 1AH, 1CH, 1EH, 20H, 22H, 25HDB 27H, 29H, 2BH, 2EH, 30H, 33H, 35H, 38HDB 3AH, 3DH, 40H, 43H, 45H, 48H, 4CH, 4EH DB 51H, 55H, 57H, 5AH, 5DH, 60H, 63H, 66HDB 69H, 6CH, 6FH, 72H, 76H, 79H, 7CH, 80H RET;***************DELAY:;MOV R1,#100L1:MOV R2,#250DJNZ R2,$DJNZ R1,L1RETDELAY3:;MOV 45H,#41DJNZ 45H,$RETDELAY2:;正 MOV 44H,#9DJNZ 44H,$RETEND: 路 图:。
单片机最小系统实验报告
单片机最小系统实验报告单片机最小系统实验报告一、引言单片机(Microcontroller)是一种集成了微处理器、存储器和输入/输出接口等功能的微型计算机系统。
它具有体积小、功耗低、成本低等特点,广泛应用于嵌入式系统、电子设备控制等领域。
本实验旨在通过搭建单片机最小系统,深入理解单片机的工作原理和应用。
二、实验器材1. 单片机:选用STC89C52RC型号;2. 开发板:包括电源、晶振、按键、数码管等;3. 连接线:用于连接单片机与开发板。
三、实验步骤1. 连接电源:将开发板的电源模块与单片机相连,确保电源供应正常。
2. 连接晶振:将晶振的两个引脚分别与单片机的两个晶振引脚相连,确保晶振的振荡频率与单片机的要求相符。
3. 连接按键:将按键的引脚与单片机的输入引脚相连,通过按下按键触发单片机的相应操作。
4. 连接数码管:将数码管的引脚与单片机的输出引脚相连,实现数字的显示。
四、实验原理单片机最小系统是指由单片机、晶振和复位电路构成的最基本的工作系统。
其中,晶振提供时钟信号,单片机根据时钟信号进行计算和控制,复位电路用于初始化单片机的状态。
通过连接按键和数码管,可以实现与外部环境的交互。
五、实验结果经过以上步骤的搭建,我们成功搭建了单片机最小系统。
在接通电源后,数码管上显示了默认的初始值。
通过按下按键,我们可以触发单片机的相应操作,例如改变数码管的显示内容、控制外部设备的开关等。
六、实验分析通过本次实验,我们深入了解了单片机最小系统的搭建和工作原理。
单片机作为一种微型计算机系统,具有灵活性和可编程性,可以根据不同的需求进行编程和控制。
通过连接外部设备,如按键和数码管,可以实现与外界的交互,提高系统的功能和扩展性。
七、实验应用单片机最小系统广泛应用于各种嵌入式系统和电子设备控制中。
例如,智能家居系统中的温度控制、照明控制等功能,汽车电子系统中的发动机控制、车载娱乐等功能,工业自动化系统中的生产线控制、传感器数据采集等功能等等。
单片机最小系统实训报告
单片机最小系统实训报告一、实训目的1、掌握并理解单片机最小系统的原理和制作,熟悉电子元件的参数以及应用。
2、熟悉PCB板的工业制作流程,并且要求会使用protel软件绘制相应的PCB图。
3、复习使用keil51软件编写相应程序,编译以及实现其功能。
4、要求具备手工焊接的能力,5、能够使用软件对原理图进行仿真,测试。
二、实训要求1、实现温度检测,并在数码管上显示。
2、流水灯的实现。
左循环和右循环。
3、键盘输入的控制。
三.实验设备及型号1、单片机测试平台;开发系统,PC机、串/并口线。
2、AT89C52单片机,A/D模数转换芯片D/A数模转换芯片,晶体管晶振。
最小系统板及其他外围电路器材。
3、开发软件;Protel 软件。
Keil51软件。
Proteus仿真软件。
四.实训原理最小系统原理电路图由复位电路,单片机和排阻及时钟电路组成最小单片机系统。
AD DA 转换电路图使用proteus软件对系统原理进行仿真测试。
仿真测试此处不一一列举仿真实例,如图为(温度仿真)单片机实现此四个功能的相应的程序代码完整源代码如下;#include<reg52.h>//单片机头文件#include<intrins.h>//左右位移头文件#define uint unsigned int#define uchar unsigned char#define led P1//流水灯端口宏定义#define _data P0//数码管数据宏定义sbit diola=P2^5;//流水灯选通端sbit dula=P2^6; //数码管段选sbit wela=P2^7; //数码管位选sbit DQ=P2^2;//DS18B20数据读取端sbit s1=P3^4;//四个按键sbit s2=P3^5;sbit s3=P3^6;sbit s4=P3^7;uint wendu,key_num=0,led_num=0;uchar code table[]={ //数码管字模0xed,0x48,0xe6,0x6e,0x4b,0x2f,0xaf,0x68,0xef,0x6f,0xeb,0x8f,0xa5,0xce,0xa7,0xa3};/*************DS18B20温度读取模块*************/void tmpDelay(int u) //延时函数{uint x;for(x=u;x>0;x--);}void Init_DS18B20()//初始化ds1820{unsigned char x=0;DQ = 1; //DQ复位tmpDelay(8); //稍做延时DQ = 0; //单片机将DQ拉低tmpDelay(80); //精确延时大于480usDQ = 1; //拉高总线tmpDelay(14);x=DQ; //稍做延时后,如果x=0则初始化成功x=1则初始化失败tmpDelay(20);}unsigned char ReadOneChar() //读一个字节{unsigned char i=0;unsigned char dat = 0;for (i=8;i>0;i--){DQ = 0; // 给脉冲信号dat>>=1;DQ = 1; // 给脉冲信号if(DQ)dat|=0x80;tmpDelay(4);}return(dat);}void WriteOneChar(unsigned char dat) //写一个字节{unsigned char i=0;for (i=8; i>0; i--){DQ = 0;DQ = dat&0x01;tmpDelay(5);DQ = 1;dat>>=1;}}uint Readtemp() //读取温度{unsigned char a=0;unsigned char b=0;unsigned int t=0;float tt=0;Init_DS18B20();WriteOneChar(0xCC); // 跳过读序号列号的操作WriteOneChar(0x44); // 启动温度转换Init_DS18B20();WriteOneChar(0xCC); //跳过读序号列号的操作WriteOneChar(0xBE); //读取温度寄存器a=ReadOneChar(); //连续读两个字节数据b=ReadOneChar();t=b;t<<=8;t=t|a; //两字节合成一个整型变量tt=t*0.0625; //得到真实十进制温度值t= tt*1000+0.5; //放大十倍return(t);}void delay(uint z)//通用延时函数{uint x,y;for(x=z;x>0;x--){for(y=110;y>0;y--);if(!s1||!s2||!s3||!s4) break; //检测到按键退出}}void display(uint z)//数码管显示函数{_data=0xfb;wela=1;wela=0;_data=0x00;dula=1;_data=table[z/1000];delay(2);dula=0;_data=0xf7;wela=1;wela=0;_data=0x00;dula=1;// if(!key_num)_data=table[z/100%10]+0x10;// else// _data=table[z/100%10];delay(2);dula=0;_data=0xef;wela=1;wela=0;_data=0x00;dula=1;_data=table[z/10%10];delay(2);dula=0;_data=0xdf;wela=1;wela=0;_data=0x00;dula=1;_data=table[z%10];delay(2);dula=0;}void led_run_left()//流水灯左移函数{uint temp,j;diola=1;temp=0xf8;for(j=0;j<8;j++){led=temp;delay(300);temp=_crol_(temp,1);led=0xff;}}void led_run_right()//流水灯右移函数{uint temp,j;diola=1;temp=0x1f;for(j=0;j<8;j++){led=temp;delay(300);temp=_cror_(temp,1);led=0xff;}}uchar key_scan()//按键检测函数{if(!s1){delay(10);if(!s1){while(!s1);key_num=0;}}if(!s2){delay(10);if(!s2){while(!s2);key_num=1;led_num++;led_num=led_num%16;}}if(!s3){delay(10);if(!s3){while(!s3);key_num=2;}}if(!s4){delay(10);if(!s4){while(!s4);key_num=3;}}return(key_num);}void chuli()//温度处理函数{wendu=Readtemp()/10;}void main()//主函数{uint temp1;chuli();//读取一次温度while(1){key_scan();//按键检测switch(key_num){case 0://按下键s1时显示当前温度{temp1++;if(temp1==200){temp1=0;chuli();}display(wendu);}break;case 1://按下键s2时数码管显示{_data=0x00;wela=1;wela=0;dula=1;_data=table[led_num];delay(2);dula=0;}break;case 2://按下键s3时流水灯左移{_data=0x00;wela=1;wela=0;dula=1;_data=0x83;led_run_left();}break;case 3://按下键s4时流水灯右移{_data=0x00;wela=1;wela=0;dula=1;_data=0x4a;led_run_right();}break;default:break;}}}五、实训心得通过这几天的单片机的实训,我们在理论的基础上更深刻的掌握了单片机的深层内容及实际生活中的应用,实训锻炼了自己动手能力和思维能力,还有在软件方面的编程能力,让我受益匪浅,同时也暴露出一些平时学习上的问题,让我深刻反思。
单片机最小系统实训报告
单片机最小系统实训报告一、实训目的1、掌握并理解单片机最小系统的原理及制作, 牢记最小系统中各元器件的参数及各元器的作用./2、掌握单片机芯片内部的组成及存储机构。
3、理解常用指令的功能和使用方法。
4、掌握单片机的中断源,中断控制寄存器,中断响应过程,定时/计数器的电路结构、功能我使用方法,定时器/计数控制寄存器.5、复习利用Keil51软件对程序进行编译。
6、用protel软件绘制“单片机最小系统”电路,并用测试程序进行仿真。
7、会根据实际功能,正确选择单片机功能接线,编制正确程序。
对实验结果能做出不分析我解释,能学出符合规格的实验报告。
二、实训工具1、点偏激测试平台:PC机,串口线,并口线,单片机开发板2、软件:keil51测试软件,protel仿真软件,DXP2004软件。
三、实训要求通过实训,学生应达到以下经济方面的要求:素质要求1、以积极认真的态度对待本次实训,遵章守纪、团结协作。
2、善于发现数字电路中存在的问题、分析问题、解决问题,努力培养独立工作能力。
能力要求1、模拟电路的理论知识2、脉冲与数字电路的理念知识3、通过模拟、数字电路实验有一定的动手能力4、能熟练的制作单片机最小系统5、嫩熟练的编写8951单片机汇编程序6、能够熟练的运用仿真软件对单片机最小系统仿真四、实训内容1、掌握并理解“单片机最小系统”的原理及制作,牢记最小系统中各元器件的参数及格元器件的作用。
2、用keil51测试元件编写8951单片机汇编程序3、用peotel软件绘制“单片机最小系统”单路原理图。
4、运用仿真软件对单片机最小系统进行仿真。
五.实训基本步骤1、用peotel乳酸钠几十年绘制“单片机最小系统”单路原理图。
2、根据原理图生成pcb图、GB文件。
钻孔文件3、绘制印刷电路板。
4、根据原理图焊接元件,生成单片机开发板。
5、用keil51软件编写单片机最小系统测试程序。
6、用仿真软件绘制单片机最小系统原理图,测试测量程序。
重邮《单片机系统基础实验》实验报告格式
《单片机系统基础实验》实验报告姓名:班级:学号:指导老师:老师上机时间:2015-2016(1)第9周~16周目录实验一Proteus软件快速入门 (4)一、实验目的与要求 (4)二、实验设备、仪器、工具 (4)三、实验步骤 (4)四、实验绘制的图形 (4)五、实验结果 (4)实验二Keil uVision软件快速入门 (5)一、实验目的与要求 (5)二、实验设备、仪器、工具 (5)三、实验步骤 (5)四、实验绘制的图形 (5)五、实验源程序 (5)六、实验结果 (5)实验三单片机最小应用系统设计 (6)一、实验目的与要求 (6)二、实验设备、仪器、工具 (6)三、实验步骤 (6)四、实验绘制的图形 (6)五、实验源程序 (6)六、实验结果 (6)实验四单片机最小应用系统软件编程 (7)一、实验目的与要求 (7)二、实验设备、仪器、工具: (7)三、实验内容 (7)四、实验步骤 (7)五、实验绘制的图形 (7)六、实验源程序 (7)七、实验结果 (7)实验五单片机LED数码管显示实验 (8)一、实验目的 (8)二、实验设备、仪器、工具 (8)三、实验步骤 (8)四、实验绘制的图形 (8)五、实验源程序 (8)六、实验结果 (9)实验六单片机键盘接口技术实验 (10)一、实验目的 (10)二、实验设备、仪器、工具 (10)三、实验要求 (10)四、实验绘制的图形 (10)五、实验源程序 (10)六、实验结果 (10)实验七单片机外部中断实验 (11)四、实验绘制的图形 (11)五、实验源程序 (11)六、实验结果 (11)实验八测验 (12)一、内容 (12)二、实验绘制的图形 (12)三、实验源程序 (12)四、实验结果 (12)实验一Proteus软件快速入门一、实验目的与要求1、认识Proteus软件;2、掌握用Proteus软件建立文件;3、掌握如何使用Proteus软件元件库;二、实验设备、仪器、工具安装有Proteus和Keil软件的微机。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
自动化电气与工程类工程实训实验报告——单片机最小系统实验报告基于PROTEUS仿真平台的51系列单片机最小系统的设计、应用实验一、实验目的和性能指标1、实验目的学习掌握PROTEUS仿真软件的基本使用,熟悉KEIL软件的使用。
并且对单片机最小系统进行仿真设计,实现1.在电路上实现秒表计时、暂停、清零功能。
2.同时实现计时器功能,显示时、分、秒,能够修改时、分、秒。
3.用单片机及外围接口电路实现对键盘的扫描,并用八位数码管显示结果。
2、性能指标秒表计时要求能精确至0.01秒,计时器要求能循环显示,格式为时—分—秒,并能实现时间的调整,包括时间的增加和减小,对键盘的扫描实现4*4矩阵键盘的扫描,并能循环显示。
二、硬件系统设计STC89c51单片机的硬件资源包含:一个8位CPU、振荡器和时钟电路、至少128字节的内部数据存储器,可寻址外部程序存储器和数据存储器个64k字节,21个特殊功能寄存器,4个并行I/O接口,2个16位定时/计数器,至少5个中断源,提供两级中断优先级,可实现两级中断服务程序嵌套。
具有有位寻址功能,有较强的布尔处理能力。
各功能单元(包括IO端口和定时器/计数器等)都由特殊功能寄存器(SFR)集中管理。
中央处理器、ROM、RAM、定时/计数器和I/O口等,各个功能由内部的总线连接起来,从而实现数据通信。
单片机最小系统主要由电源、复位、振荡电路以及扩展部分等部分组成。
1、单片机最小系统单片机最小系统就是支持主芯片正常工作的最小电路部分,包括主控芯片、复位电路和晶振电路。
主控芯片选取AT89C52芯片,因其具有良好的性能及稳定性,价格便宜应用方便。
晶振选取12MHz,晶振旁电容选取30pF。
采用按键复位电路,电阻分别选取10KΩ,电容选取10μF。
2、键盘接口电路共计16个按键,采用4*4矩阵键盘,键盘的行和列之间都有公共端相连,四行采用端口P3.0~P3.3,四列采用端口P3.4~P3.7,通过8个端口的的高低电平完成对矩阵键盘的控制和扫描。
通过对16个按键进行编码,从而得到键盘的口地址,我们就可以得到是哪个键按下,从而完成键盘的功能。
3、数码管显示电路采用八位一体的数码管对计算数据和结果进行显示,这里选取共阴极数码管,使用P0口对数码管进行段选控制,用P2口对数码管进行位选控制,方便实现动态显示的效果。
三、系统设计方案按照系统设计的功能的要求,初步确定设计系统由单片机主控模块、八位数码管显示模块、键扫描接口电路共三个主要模块组成。
主控芯片使用AT89C52单片机,键盘电路采用4*4矩阵键盘电路,并附有三位功能选择键模块,显示模块采用八位一体共阴极数码管。
51系列单片机定时器的结构及工作原理:组成:两个16位的定时器T0和T1,以及他们的工作方式寄存器TMOD和控制寄存器TCON等组成。
内部通过总线与CPU相连。
定时器T0和T1各由两个8位特殊功能寄存器TH0、TL0、TH1、TL1构成。
工作方式寄存器TMOD:用于设置定时器的工作模式和工作方式;控制寄存器TCON:用于启动和停止定时器的计数,并控制定时器的状态;单片机复位时,两个寄存器的所有位都被清0。
四、软件仿真单片机最小系统电路图如图五、程序#include<reg52.h>#define uchar unsigned char #define uint unsigned short int sbit p14=P1^4; sbit p15=P1^5;sbit p16=P1^6;sbit p17=P1^7; uchar code table1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0,0x40};//定义显示段码uchar num,temp;short int x1=0,x2=0;ucharoperateFlag=0,a=1,b=1,c=1,d=1,e=1,f=1 ,g=1,h=1;bit result=0,keyDown=0,affirm=0;uchartime=0,seconds=0,minutes=0,hours=0,c hoice=0;void delay(uchar k)//定义延时函数{uchar i,j;for(i=k;i>0;i--)for(j=124;j>0;j--);}void TIME0_INT() //初始化定时器0{TMOD=0x01;TH0=(65536-10000)/256;TL0=(65536-10000)%256;a=b=d=e=g=h=0;c=f=16;EA=1;ET0=1;TR0=1;}void timer0() interrupt 1//定时器中断0服务函数{TH0=(65536-10000)/256;TL0=(65536-10000)%256;time++;}void AllInitial()//每种功能的初始化{if(choice==0||affirm==0){a=h=16;b=c=g=f=16;d=0;e=choice;EA=0;}elseif(choice==1&&affirm==1){h=g=f=e=0;a=b=c=d=16;time=seconds=minutes=hours=0;}elseif(choice==2&&affirm==1){time=seconds=minutes=hours=0;c=f=17;EA=1;}elseif(choice==3&&affirm==1){a=b=c=d=e=f=g=16;h=num=0;EA=0;}}char keyscan(){keyDown=0;P3=0xfe;temp=P3;temp=temp&0xf0;while(temp!=0xf0){delay(5);while(temp!=0xf0){temp=P3;switch(temp){case 0xee:num=1;break;case 0xde:num=2;break;case 0xbe:num=3;break;case 0x7e:operateFlag=0x01;break;}while(temp!=0xf0) //判断按键是否松开{temp=P3;temp=temp&0xf0;}keyDown=1;}}P3=0xfd;temp=P3;temp=temp&0xf0;while(temp!=0xf0){delay(5);while(temp!=0xf0){temp=P3;switch(temp){case 0xed:num=4;break;case 0xdd:num=5;break;case 0xbd:num=6;break;case 0x7d:operateFlag=0x02;break;}while(temp!=0xf0){temp=P3;temp=temp&0xf0;}keyDown=1;}}P3=0xfb;temp=P3;temp=temp&0xf0;while(temp!=0xf0){delay(5);while(temp!=0xf0){temp=P3;switch(temp){case 0xeb:num=7;break;case 0xdb:num=8;break;case 0xbb:num=9;break;case 0x7b:break;}while(temp!=0xf0){temp=P3;temp=temp&0xf0;}keyDown=1;}}P3=0xf7;temp=P3;temp=temp&0xf0;while(temp!=0xf0){delay(5);while(temp!=0xf0){temp=P3;switch(temp){case 0xe7:num=0;break;case 0xd7:num=0;break;case 0xb7:break;case 0x77:break;}while(temp!=0xf0){temp=P3; temp=temp&0xf0;}keyDown=1;}}return num;}void smg(uchar a, uchar b,uchar c, uchar d, uchar e,uchar f, uchar g, uchar h){P0=0;P2=0xfe;P0=table1[a];delay(1);P2=0xff;P0=0;P2=0xfd;P0=table1[b];delay(1);P2=0xff;P0=0;P2=0xfb;P0=table1[c];delay(1);P2=0xff;P0=0;P2=0xf7;P0=table1[d];delay(1);P2=0xff;P0=0;P2=0xef;P0=table1[e];delay(1);P2=0xff;P0=0;P2=0xdf;P0=table1[f];delay(1);P2=0xff;P0=0;P2=0xbf;P0=table1[g];delay(1);P2=0xff;P0=0;P2=0x7f;P0=table1[h];delay(1);P2=0xff;}void jishu(uchar num1) {if(h==0&g==16){h=num1;} else if(g==16) {g=h;h=num1; }else if(f==16) {f=g;g=h;h=num1; }else if(e==16) {e=f;f=g;g=h;h=num1; }else if(d==16) {d=e;e=f;f=g;g=h;h=num1; }else if(c==16) {c=d;d=e;e=f;f=g;g=h;h=num1; }else if(b==16) {b=c;c=d;d=e;e=f;f=g;g=h;h=num1;}else if(a==16){a=b;b=c;c=d;d=e;e=f;f=g;g=h; h=num1;}else{a=b;b=c;c=d;d=e;e=f;f=g;g=h; h=num1;}}void calculator(){num=keyscan();if(keyDown==1){jishu(num);num=0;}smg(a,b,c,d,e,f,g,h);}//*******秒表程序********** void mbcs(){num=keyscan();if(keyDown==1){if(operateFlag==0x01){EA=!EA;}if(operateFlag==0x02) time=seconds=minutes=0;}if(time>=100){time=0;++seconds;if(seconds==60){seconds=0;++minutes;if(minutes==60){minutes=0;}}}h=time%10;g=time/10;f=seconds%10;e=seconds/10;a=b=c=d=16;smg(a,b,c,d,e,f,g,h);}//********时钟程序********** void szcs(){num=keyscan();if(keyDown==1){if(num==1)++hours;else if(num==4)--hours;else if(num==2)++minutes;else if(num==5)--minutes;else if(num==3)++seconds;else if(num==6)--seconds;num=0;}if(time==100){seconds++;time=0;}//增长溢出if(seconds==60){minutes++;seconds=0;if(minutes==60){++hours;minutes=0;if(hours>=24)hours=minutes=seconds=0;}}if(minutes==60){++hours;minutes=0;if(hours>=24)hours=minutes=seconds=0;}if(hours>=24)hours=minutes=seconds=0;//消减溢出if(seconds==255){seconds=59;--minutes;}if(minutes==255){minutes=59;--hours;}if(hours==255){hours=minutes=seconds=0;}a=hours/10;b=hours%10;d=minutes/10;e=minutes%10;g=seconds/10;h=seconds%10;smg(a,b,c,d,e,f,g,h);}void singal(int wei,int duan,int timeSpan){P0=0;P2=wei;P0=duan;delay(timeSpan);P2=0xff;}void mainKey()//扫描按键的功能变化{if(p14==0){delay(5);if(p14==0){choice=1;e=choice;}while(!p14);}else if(p15==0){delay(5);if(p15==0){choice=2;e=choice;}while(!p15);}else if(p16==0){delay(5);if(p16==0){choice=3;e=choice;}while(!p16);}if(p17==0){delay(5);if(p17==0&&choice!=0){affirm=!affirm;AllInitial();}while(!p17);}smg(a,b,c,d,e,f,g,h);}void main(){TIME0_INT();EA=0;AllInitial();while(1) //主循环{mainKey();if(affirm==1){switch(choice){case 1:mbcs();break;case 2:szcs();break;case 3:calculator();break;}}}}软件设计好后,在KEIL上面进行编译,把编译得到的hex文件加载到Proteus 里面进行仿真,得到Proteus仿真电路图如图。