单片机最小系统实验报告
单片机最小系统实训报告

单片机最小系统实训报告一、实训目的1.掌握并理解“单片机最小系统”的原理及制作,牢记最小系统中各元器件的参数及各元器的作用。
2.掌握单片机芯片的内部组成及存储器结构。
3.理解常用指令的功能和使用方法。
3.掌握各种寻址方式。
4.掌握单片机的中断源,中断控制寄存器,中断响应过程,定时/计数器的电路结构、功能和使用方法,定时器/计数控制寄存器。
5.复习利用Keil51软件对程序进行编译6.用 Protel 软件绘制“单片机最小系统”电路,并用调试程序进行仿真。
7.会根据实际功能,正确选择单片机功能接线,编制正确程序。
对实验结果能作初步分析和解释,能写出合乎规格的实训报告。
二、实训工具1、单片机测试平台:PC机,串口线,并口线,单片机开发版2、软件:Keil51测试软件,Protel仿真软件,DXP2004软件三、实训要求通过本实训,学生应达到以下几方面的要求:素质要求•以积极认真的态度对待本次实训,遵章守经、团结协作。
•善于发现数字电路中存在的问题、分析问题、解决问题,努力培养独立工作的能力。
能力要求•模拟电路的理论知识。
•脉冲与数字电路的理念知识。
•通过模拟、数字电路实验有一定的动手能力。
•能够熟练地制作单片机最小系统。
•能够熟练地编写 8951 单片机汇编程序。
•能够熟练地运用仿真软件对单片机最小系统仿真。
四、实训内容•掌握并理解“单片机最小系统”的原理及制作,牢记最小系统中各元器件的参数及各元器的作用。
•用Keil51测试软件编写 8951 单片机汇编程序•用 Protel 软件绘制“单片机最小系统”电路原理图。
•运用仿真软件对单片机最小系统仿真五、实训基本步骤①用 Protel 软件绘制“单片机最小系统”电路原理图。
②根据原理图生成PCB图、GB文件、钻孔文件。
【见附件】③绘制印刷电路板。
④根据原理图焊接个原件。
生成单片机开发版。
⑤用Keil51软件编写单片机最小系统测试程序。
⑥用仿真软件绘制单片机最小系统原理图,测试测量程序。
单片机最小系统实验报告

单片机最小系统实验报告第二组陈志杰占绪强武昌理工理工学院2014年4月7日目录一.流水灯----------------------------------------- 二.数码管----------------------------------------- 三.矩阵键盘----------------------------------------- 四.电子钟----------------------------------------- 五.蜂鸣器----------------------------------------- 六.片外扩展----------------------------------------- 七.A/D转换----------------------------------------- 八.D/A转换-----------------------------------------流水灯一、实验要求在单片机实验主板上添加八根发光二极管,并使它们按一定规律逐个发光二、实验器件发光二极管LED、限流电阻(470Ω)三、电路图四、实验思路通过对P1口进行位操作,给LED提供一个低电平。
通过延时程序将两灯发光的时间间隔扩大到人眼可识别的程度。
由于我组采用的是共阳极接线方式,所以我们在接线方面较容易。
(不采用共阴极接线方式的原因:1、需要接上拉电阻来增强引脚的驱动能力;2、会在电阻上消耗不必要的功耗)五、实验程序ORG 0000HAJMP STARTORG 0030HSTART: MOV SP,#60HCLR P1.0LCALL DELAYSETB P1.0CLR P1.1LCALL DELAYSETB P1.1CLR P1.2LCALL DELAYSETB P1.2CLR P1.3LCALL DELAYSETB P1.3CLR P1.4LCALL DELAYSETB P1.4CLR P1.5LCALL DELAYSETB P1.5CLR P1.6LCALL DELAYSETB P1.6CLR P1.7LCALL DELAYSETB P1.7LCALL DELAYLJMP START DELAY: MOV R7,#250 D1: MOV R6,#250D2: DJNZ R6,D2DJNZ R7,D1RETEND六、实验出现的问题1、LED灯在没有进行程序模拟时就会发光,按下复位键后会有个别灯灭掉。
51单片机最小系统实验报告

51单片机最小系统实验报告1.实验目的:1).学习、了解单片机原理,即单片机的各引脚功能、特殊功能寄存器、中断系统、定时/计数器和通信方式等;2).了解指令系统,各指令的功能;3).学习电路原理设计,PC板设计以及编排;2.方案设计:1).最小系统部分的设计能够用于基本的数字信号处理,运行一些简单的程序。
此部分主要包括电源电路、复位电路、时钟电路、USB 接口设计等;2).扩展电路的设计对于51最小系统CPU芯片等在芯片出厂时不可能让片内存储器的大小满足所有功能的要求,如果将片内存储器做太大,必然造成芯片成本的提高。
所以合适的外部RAM、液晶、外部中断和串行接口电路设计等。
3.任务:51单片机最小系统的设计1)CPU选择:STC15W4K系列选择原因:a.宽电压(2.5V-5.5V)b. 大容量4K字节SRAM和多组并行端口c.16/32/56/61/63.5字节多选Flash程序储存器以及普通定时、计数器T0-T4外部管脚可掉电唤醒。
d.内置高精准时钟(5-28MHz任意设置)和集成MAX810专用复位电路e.看门狗、对外输出时钟及复位2).系统要实现的功能:以UPU为核心器件,并利用外存储器对最小系统电路进行扩展。
在介绍CPU基本特点的基础上,通过学习指导,开展出51单片机最小系统板。
系统要实现以下功能,最小系统部分的设计能够用于基本的数字信号处理,运行一些简单的程序。
此部分主要包括电源电路、复位电路、时钟电路、中断系统,USB 接口的设计和相对扩展等。
4.外围器件选择及说明:1).外部RAM:IS62C256AL。
ISSI的IS62C256AL是一个32Kx8位字长的低功耗CMOS静态随机存取存储器。
IS62C256AL采用ISSI公司的高性能,低功耗CMOS工艺制造。
当/CE处于高电平(未选中)时,IS62C256AL进入待机模式。
在此CMOS 输入标准的待机模式下,功耗低至150 μW(典型值)。
CAD课程设计51单片机最小系统报告

CAD课程设计51单片机最小系统报告第一篇:CAD课程设计51单片机最小系统报告目录第一章、功能要求.............................................2 第二章、原理图设计..........................................3 2.1 元器件的绘制.............................................3 2.2 绘制原理图................................................6 第三章、PCB板的绘制.......................................9 第四章、设计心得与体会 (10)第一章功能要求此次设计是一个51单片机的最小系统,整个系统包括电源电路、AD转换电路、51单片机主控芯片、温度采集电路、串口部分、复位电路等,其中P1口设计了一个4×4的矩阵键盘,P2口和P2口作为段选和片选的地址线,以驱动数码管的静动态显示,P3口就是一个控制口了,有接串口、复位和时钟电路。
此电路的设计是想利用18B20这一芯片实现温度的采集,并进行AD转换输出。
第二章原理图的设计原理图的设计,会影响到后来的PCB板的规划,所以最初的设计就必须最优的设计方案,设计方案的选择、元器件的选择等,是至关重要的环节。
所有的项目的设计,都需要在最初建立一个项目,文件菜单栏中的创建PCB项目,以下所有的工作都在此项目中完成。
图2建立项目2.1元器件的绘制原理图的绘制之前都需要装载元器件库,选择“元器件“,在如下窗口中找到自己需要的元器件安装。
图2.1元件库安装由于元器件库里大部分的元器件都没有,所以大部分都需要绘制,建立自己 3 的组件库。
绘制元器件的过程如下:打开DXP软件,在文件菜单栏里面创建原理图元件库,就会产生一个以Schlib为后缀的文件,在编辑区的中心有一个十字坐标轴将元件编辑区分成4个象限,但是我们一般在第四象限绘制。
单片机最小系统实验设计报告

单片机最小系统实验设计报告一、实验目的(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晶振。
单片机最小系统实验报告

单片机实验报告民生学院11级电子信息科学与技术最小系统:1、画实验原理图:2、焊接的实物图:3、流水灯程序,看能否运行4、在INT0、INT1装两个轻触按键,实现二进制加减程序:5、装LCD1602液晶并测试,装DS18B20并测试。
液晶、测温器:6用软件画PCB图实验指导书:一、名称:单片机最小系统二、功能:流水灯、加减程序、测温三、基本介绍:本单片机最小系统全手工焊制,总耗时五个小时,本组成员运用科学合理的布局,除能实现最基本的流水灯之外,还安装有温度传感器,时时刻刻监测你身边温度四、本产品售价$ 10,有意者联系马松松串口通信程序:ORG 0000HAJMP MAINORG 0023HAJMP RECEIVE ;跳转到接收中断入口ORG 0030HMAIN: MOV TMOD,#20H ;T1工作方式2MOV TH1,#0FDH ;波特率9600MOV SCON,#50H ;传口工作方式1,允许中断接受SETB EA ;打开总中断SETB ES ;打开串口中断SETB TR1 ;打开定时器1AJMP $RECEIVE:CLR RIMOV A,SBUF ;串口接收数据MOV R0,AMOV SBUF,A ;将接收的数据再传送给计算机JNB TI,$CLR TIMOV A,R0MOV DPTR,#TAB ;查表显示MOVC A,@A+DPTRMOV P2,#0FFHNOPMOV P2,#00H ;送LED显示MOV P0,ARETITAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;共阳字码表END。
单片机最小应用系统制作实训报告

单片机最小应用系统制作实训报告《单片机最小应用系统制作实训报告》一、实训目的和背景单片机是嵌入式系统的核心,其应用广泛,包括家电控制、智能家居、工业控制等。
为了提高学生对单片机的理论和实践掌握能力,本次实践任务是制作一个单片机最小应用系统,以培养学生的创新意识和动手能力。
二、实训内容和步骤1.实训准备根据实验要求,选取合适的单片机型号,并准备相应的开发板、开发软件和实验器材。
2.系统设计根据实训要求,设计单片机系统的硬件和软件结构。
硬件部分包括单片机、外围设备(如按键、LED等)的连接方式和引脚分配;软件部分包括初始化设置和主程序的设计。
3.硬件搭建根据设计方案,将单片机和外围设备连接起来,并进行电路布线和焊接等工作。
4.软件编程使用开发软件对单片机进行编程,实现系统的功能。
根据设计方案,编写初始化设置的代码和主程序的代码,并进行调试和修改。
5.系统测试将制作好的单片机应用系统与外围设备连接,进行功能测试和性能评估。
调试系统,确保其各项功能正常运行,同时测试系统的稳定性和可靠性。
6.实训总结根据实训经验,总结制作单片机最小应用系统的过程中遇到的问题和解决方法,总结经验教训,并提出改进意见。
三、实训结果和体会通过实践制作单片机最小应用系统,我收获了许多经验和体会。
首先,在系统设计阶段,我深入了解了单片机的硬件和软件结构,对于系统连接和引脚分配有了更深入的理解。
其次,在硬件搭建和焊接过程中,我学会了认真仔细地进行电路布线和焊接,确保电路的正确连接和稳定性。
此外,编程过程中,我掌握了单片机的初始化设置和主程序设计的方法,提高了自己的编程能力。
通过实训测试,我发现单片机最小应用系统能够正常运行,实现了预期的功能,并且稳定性和可靠性良好。
同时,我也意识到在实践过程中,遇到问题是很正常的,关键是要善于思考和解决问题,通过调试和修改,最终找到正确的解决方案。
总之,通过这次实训,我不仅学到了单片机的基本原理和应用技术,更重要的是培养了自己的动手能力和创新意识。
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对话框。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机最小系统实验报告长沙学院电子工艺实习报告姓名潘舟 2009044211 学号:系别:电子与通信工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图,焊接电路并调试。
1(3)制作要求自行装配和调试,并能发现问题和解决问题。
(4)程序调试要求编写秒表程序和彩灯控制程序,利用自己制作的实验板进行程序调试。
2、(1)、能实现以下功能:a、能够实现光控声控控制灯的点亮;b、能够使灯包点亮后一段时间自动熄灭。
(2)设计要求进行元器件及参数选择;画出电路原理图;PCB图,焊接电路并调试。
(3)制作要求自行装配和调试,并能发现问题和解决问题。
主要原理图:2主要程序:键,显)编写一程序,达到按键加减的功能。
按一下+11,1-1键,显示减时,显示归零按。
按下示加一,加到255 255。
当减到零时,显示变为程序:#include<reg51.h>#include<intrins.h>#define uchar unsigned char3sbit k1=P3^0;sbit k2=P3^1;sbit A1=P2^0;sbit A2=P2^1;sbit A3=P2^2;sbit A4=P2^3;ucharcodetable[]={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_x0010_;4n=y/10_x0010_;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(){5char 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)6{delay(10); while(!k1); t--;if(t<0)t=255;xianshi(t);}}}}2)编写程序,实现跑秒功能。
程序:#include<reg51.h>#define uchar unsigned char//******************************义定位殊特*******************************sbit p30=P3^0;sbit p31=P3^1;sbit p32=P3^2;sbit p33=P3^3;用来控制计时器的走与停(复//P3.4sbit sten=P3^4;7位清零)用来存计数与读计数sbit storeshow=P3^5; //p3.4sbit p37=P3^7;)码管的90~码(数存//*****************放点量**************************codeuchartab1[10]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0 90~)//x00,0x10}; 存放点量数码管的段选码( uchar code tab2[4]={0x0fe,0x0fc,0x0fb,0x0f7};位)3~0 //存放点量数码管的位选码(义//********************************定量变****************************uchar0,0,00,0,0} 个计时,{0,0,0,0}}; //预存10用来放四位数即分、十uchar tab4[4]={0,0,0,0}; ////秒秒、个秒、1/10 定义变量uchar n,s,S1,m,k,a; // //////////////////子程序申明//**************** 8void initT0(void); //定时器0的初始化void display1(void); //数码管显示程序void display2(void); //显示存入的计时数void delay5ms(uchar i); //延时5ms程序void speak2(void);//按键提示音void speak(void);//开机提示音//*************子程序内容///////////////voidspeak2(void)//************************************* **按键提示音**********************{uchar i;for(i=0;i<5;i++){p37=0;delay5ms(1);p37=1;delay5ms(1);}}9void speak(void)//*********************开机提示音***********************{uchar i;for(i=0;i<5;i++){p37=0;delay5ms(2);p37=1;delay5ms(2);}}void initT0(void) //****************************定时器0的初始化程序、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、{TMOD=0x01;TH0=0x63;TL0=0x0c0; //定时50msEA=1;ET0=1;10TR0=1;}voidtimer0(void)interrupt1//***************************************定时中断程序、、、、、、、、、、、、、、、、、、、、、、{TF0=0;TH0=0x63;TL0=0x0c0; //定时50msn++;if(n==2){n=0; //定时中断次数清0s++; //十分之一秒加1if(s==10) //***秒{s=0;S1++; //秒加1if(S1==60) //***分{S1=0;11m++; //分加1}}tab4[0]=m; //将分存入数组tab4[1]=S1/10; //取得秒十位tab4[2]=S1_x0010_; //取得秒个位tab4[3]=s;}if(tab4[0]==9&tab4[1]==5&tab4[2]==9&tab4[3]==9) {speak();delay5ms(10);speak2();TR0=0;}}void display1(void)//*******************数码管动态显示程序、、、、、、、、、、、、、、、、、、、、、、、、、、、、{uchar i;while(1)12{for(i=0;i<4;i++){P3=tab2[i]; //选正位P0=tab1[tab4[i]]; //点量对应位的段码 delay5ms(1);}if(!sten){delay5ms(2); //消抖if(!sten){ k++;speak2();//按键提示音while(!sten);//等待sten按键释放break; //按sten键k加1 表示停止计时}}if(!storeshow){//消抖 delay5ms(2);if(!storeshow){13a++;speak2();//按键提示音while(!storeshow);//等待按键storeshow释放break; //按storeshow 表示存入一个当前计时数到tab3数组中}}}}void display2(void) // *************************显示存入的计时数、、、、、、、、、、、、、、、、、、、、、、、{uchar i;while(1){while(1){for(i=0;i<4;i++)14{P3=tab2[i]; //选正位P0=tab1[tab4[i]]; //点量对应位的段码delay5ms(1);}if(!storeshow) break;if(!sten) break;}delay5ms(2);//消抖if(!sten){k++;speak2();//按键提示音while(!sten);break;}if(!storeshow){speak2();//按键提示音while(!storeshow);//等待按键storeshow释放break; //打断跳回显示下一个计时数}15}}void delay5ms(uchar i) //**********************延时5ms秒程序*、、、、、、、、、、、、、、、、、、、、、、、、{uchar j,f,g;for(j=0;j<i;j++){for(g=19;g>0;g--)for(f=130;f>0;f--);}}//************************************************* ***********主程序段************************************************ void main(){uchar b;speak();//开机提示音16while(1){a=0;k=0;n=0,s=0,S1=0,m=0; //变量初始化while(sten) ; //等待开始按键delay5ms(2);if(!sten) //按键sten开始{speak2();//按键提示音while(!sten); //等待按键松开就开始计时 initT0(); //定时器0初始化开始计时 while(k==0|k==1){display1(); //调用动态显示程序) if(k==1) //按键sten{TR0=0; //按键sten 表示关计时display1();//按键sten后显示最后计时数if(k==1) //按的是storeshow键即显示存入计时数(从最后一个开始){17a--;while(a){a--;for(b=0;b<4;b++)tab4[b]=tab3[a][b]; //从 tab3数组中取出之前存入的计时数显示存入的计// display2(); 时数}}}表按键storeshowif(k==0&a<=10) //k=0,tab3数组中示存入一个当前计时数到{for(b=0;b<4;b++)将当前计时数tab3[a-1][b]=tab4[b]; //tab3数组中存入}if(k==2){(即清显示)关位选 P3=0x0ff;//1819tab4[0]=0;//清零tab4[1]=0;tab4[2]=0;tab4[3]=0;n=0,s=0,S1=0,m=0;//清零}}}}总结:单片机最小系统经过我一段时间的调试,终于能够达到预定的功能,虽然只是简单的调试,但从中我也接触了不少的关于单片机的知识。