单片机课程设计——单片机双字节十六进制减法实验设计

合集下载

《单片机原理及接口技术》课程实验大纲

《单片机原理及接口技术》课程实验大纲

《单片机原理及接口技术》课程实验大纲课程名称:《单片机原理及接口技术》实验英文名称:《MCU principles and interface technologies》experiment课程性质:专业选修课程课程编号:0510085所属系部:机电工程学院总学时:14学时预备知识:电路、数字电子技术课程在教学计划中的地位作用:本课程是机械电子工程专业的一门重要专业选修课程。

目前单片机技术开发和应用水平已成为一个国家工业化发展水平的标志之一。

单片机原理及其应用已成为从事电子技术的工程技术人员必须掌握的基础理论和基本技能之一。

通过本课程的学习使学生实践上掌握单片计算机的基本组成、工作原理及常用接口技术,建立单片机系统整体概念,使学生具备单片机应用系统软、硬件开发的初步能力。

教学方式:理论与实践相结合教学的目的与要求:通过本课程的学习,使学生掌握单片机的硬件结构、MCS-51的指令系统、MCS-51汇编语言程序设计、MCS-51的中断系统、MCS-51的定时器/计数器、MCS-51的串行口、MCS-51单片机扩展存储器的设计、MCS-51扩展I/O接口的设计、MCS-51 与键盘、显示器的接口设计、MCS-51单片机与D/A转换器和A/D转换器的接口、MCS-51的功率接口、MCS-51的串行通信技术及其扩展接口。

进一步理解MCS-51单片机的开发装置、工作原理、编程方法,学会使用开发机进行程序。

课程教材:《单片机原理及接口技术》蔡美琴主编高等教育出版社参考书目:1.《单片机程序设计基础》周航慈主编北京航天航空大学出版社2. 《单片机原理及其接口技术》胡汉才主编清华大学出版社编写日期:2012年6月制定课程内容及学时分配:发光二极管显示各相状态。

要求:掌握步进电机控制系统的硬件设计方法;熟悉步进电机驱动程序的设计与调试,提高单片机应用系统设计和调试的能力。

正确连接电路,编写程序,调试运行。

实验一P1口亮灯实验一、实验目的1.学习P1口的使用方法;2.学习延时子程序的编写。

单片机课程设计 报告

单片机课程设计 报告

《单片机应用设计报告》系别电子信息与电气工程系专业自动化班级 09 级 (1) 班姓名王杰王典老师储忠完成时间 2012年5月18日单片机原理及接口技术课程设计报告摘要:单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。

MCS-51单片机是使用极为广泛的一款8位单片机,在此次实训中所用的单片机是美国Atmel公司生产的以8031为内核的AT89S52单片机。

实训分别以构建单片机最小系统版、74HC138流水灯、8255交通灯、8253方波、6N137光耦控制继电器等几个实验关键词:AT89S52 74HC138 8255A 8253 6N137 交通灯目录单片机原理及接口技术课程设计报告 (1)实验一构建单片机最小系统和实验环境熟悉 (3)1.1单片机的工作原理 (3)1.1.1单片机最小系统图 (3)1.1.2运算器简介 (4)1.1.3控制器简介 (5)1.1.4实验解析与总结 (7)实验二跑马灯实验及74HC138译码器 (7)2.1实验内容 (7)2.1.1实验原理 (8)2.1.2实验原理图 (8)2.1.3实验程序流程图 (9)2.1.4实验程序代码 (9)2.1.5完成后的效果图 (10)2.2实验总结 (10)实验三8255控制交通灯实验 (11)3.1实验内容 (11)3.1.3实验原理 (11)3.1.2实验原理电路图 (12)3.1.3程序流程图 (13)3.1.4实验程序代码 (13)3.1.5系统实现图 (15)3.2 8255A寻址原理 (15)3.3实验总结 (16)实验四8253方波实验 (17)4.1实验内容 (17)4.1.1实验原理图 (17)4.1.2实验原理电路图 (17)4.1.3程序流程图 (18)4.1.4程序流程代码 (19)4.1.4系统仿真 (20)4.2实验总结 (21)实训总结 (21)附录 (22)1 实验源程序 (22)2仿真系统电路原理图 (27)3硬件实物照片 (27)实验一构建单片机最小系统和实验环境熟悉1.1单片机的工作原理1.1.1单片机最小系统图单片机最小系统主要有外部晶振电路,系统复位电路以及供电电源组成。

单片机课程设计报告(简易计算器).

单片机课程设计报告(简易计算器).

简易计算器摘要:计算器是人们的日常生活中是最常见的电子产品之一,它应用极广、发展迅猛,并且不断出现着拥有更加强大功能的计算器。

为了解和研究计算器,本次课设设计制作了一个简易计算器,能够在十四位的计算范围内进行“+”、“-”、“*”、“/”的基本运算,能进行负数以及小数点后两位的精确结果显示。

该计算器以AT89C51单片机芯片作为核心。

采用LCD1602工业字符液晶进行显示。

完成的计算器经过检验能够完整的实现预设功能,各种细节完善,具有很高的使用价值。

关键词:单片机;简易计算器;AT89C51;LCD1602Simple CalculatorAbstract:Calculator is People's Daily life is one of the most common electronic products, used very wide, developing rapidly, and constantly appear more powerful function with have calculators. In order to understand and study calculator, this class set design made a simple calculator, can the calculation in within 14 "+" and "-" and "*", "/" the basic computing, can carry out negative and two decimal places accurate results are shown. This calculator with AT89C51 chips as the core. Using liquid LCD1602 industrial characters displayed. Complete calculator after inspection can complete realization, various details preset functions to perfect, have high use value.Keywords:MCU; Simple calculator;AT89C51;LCD1602目录中文摘要............................................................1英文摘要............................................................2单片机课程设计......................................................4 1 课程设计任务.....................................................41.1 主要功能设计................................................41.2 任务目的....................................................42 整体设计方案......................................................42.1 方案论证....................................................42.2 系统框图....................................................53 硬件电路的设计...................................................63.1 计算机Protel总图............................................63.2 显示电路设计方案............................................93.3 键盘设计方案................................................93.4 复位电路设计...............................................103.5 晶振电路设计...............................................104 控制软件设计....................................................114.1 程序时序总图...............................................114.2 液晶显示软件设计...........................................124.3 键盘输入软件设计...........................................134.4 计算函数设置...............................................155 系统调试........................................................185.1 硬件调试...................................................185.2 软件调试...................................................18 参考文献...........................................................20 个人小结...........................................................21 附录...............................................................24 附录1..........................................................24 附录2..........................................................251课程设计任务1.1 主要功能设计以AT89C51单片机芯片为核心来制作一个简易计算器,外部由4*4矩阵键盘和一个LCD1602工业字符型液晶显示屏构成,内部由一块AT89C51单片机构成,通过软件编程可实现简单加减乘除。

单片机原理课程教案

单片机原理课程教案

(一)课程教学目的和要求随着科学技术的不断进步,计算机在社会各个领域中的应用也不断得以发展,本课程是信息类基础课程之一,是一门学生学习掌握计算机硬件知识和汇编语言程序设计的入门课程。

通过本课程的学习使学生从理论和实践两方面掌握单片机的基本结构、工作原理、汇编语言程序设计方法、接口电路及单片机应用系统的设计方法,以求达到初步的单片机软硬件设计开发能力。

并为以后从事电子控制类的设计奠定理论基础和实践能力。

《单片机原理及应用》是信息类专业的一门重要专业基础必修课,是一门理论与实际紧密结合并对学生进行工程训练的课程。

通过本课程的教学,学生应掌握51系列单片机CPU、定时/计数器、存储器、串行通信、中断系统、I/O口的硬件结构,能用汇编语言进行程序设计,具备应用单片机知识分析解决工程实际问题,设计较复杂的单片机应用系统能力。

(二)课程教学重点和难点1、重点:硬件结构;指令系统;系统扩展和应用;外围接口技术。

2、难点:指令系统;外围接口技术。

(三)教学方法理论与实验相结合(四)课时安排总课时:64课时,其中:理论课时48,实验课时16。

(五)考核方式本课程的考核采取平时的形成性考核和课程结束时的笔试闭卷考试相结合的考核办法。

平时的考核主要有三个方面:课堂、课外、实验。

课堂考核依据出勤率、听课态度、课堂讨论表现等;课外考核主要依据作业、平时测试、课外的创新和发明等;实验考核依据实验完成的质量和数量等情况来评定。

(六)参考教材刘湘涛.江世明编著《单片机原理与应用》.电子工业出版社. 2006.第一章单片机基础知识教研室:计算机教研室教师姓名:申寿云教学过程1、问题牵引、导入新课(1)单片机是什么?它的主要特点和应用的领域。

(2)计算机中数据有哪些表示?二进制、八进制、十进制、十六进制;原码、反码、补码;ASCII码、BCD码。

2、课程内容本章的主要知识点有:知识点1:单片机的概念。

知识点2:单片机主流机型。

知识点3:80C51系列简介。

51单片机课程设计报告

51单片机课程设计报告

51单片机课程设计报告一、课程目标知识目标:1. 理解51单片机的硬件结构、工作原理及其功能特点;2. 学会使用51单片机的指令系统进行程序设计;3. 掌握51单片机与外围电路的接口技术,能实现简单的硬件控制功能;4. 了解51单片机在嵌入式系统中的应用及发展趋势。

技能目标:1. 能够运用C语言编写51单片机的程序,实现基础控制功能;2. 能够运用仿真软件对51单片机程序进行调试,分析并解决简单问题;3. 能够设计简单的51单片机硬件系统,进行电路连接和功能测试;4. 培养学生的动手能力、创新能力和团队协作能力。

情感态度价值观目标:1. 培养学生对电子技术的兴趣,激发学习热情;2. 培养学生严谨、务实的科学态度,提高自主学习能力;3. 培养学生关注社会发展,了解科技在生活中的应用,增强社会责任感;4. 培养学生团队合作精神,尊重他人意见,善于沟通交流。

课程性质:本课程为实践性较强的电子技术课程,以51单片机为核心,结合硬件和软件,培养学生的实际操作能力和创新能力。

学生特点:学生具备一定的电子技术基础知识,对单片机有一定了解,但实践经验不足。

教学要求:结合学生特点,注重理论与实践相结合,强调动手实践,提高学生的实际操作能力和解决问题的能力。

通过课程学习,使学生能够独立完成简单的51单片机控制系统设计。

二、教学内容根据课程目标,教学内容分为以下几个部分:1. 51单片机硬件结构及原理- 熟悉51单片机的内部结构、引脚功能;- 掌握51单片机的工作原理及性能特点。

2. 51单片机指令系统与编程- 学习51单片机的指令集,理解各指令的功能和使用方法;- 掌握C语言在51单片机编程中的应用。

3. 51单片机外围接口技术- 学习51单片机与常见外围电路(如LED、LCD、键盘等)的接口技术;- 掌握外围设备的控制原理及编程方法。

4. 仿真软件的使用- 学习使用Keil、Proteus等仿真软件进行51单片机程序设计和调试;- 掌握仿真软件的操作方法,提高程序调试效率。

基于单片机双字节简易计算器程序设计

基于单片机双字节简易计算器程序设计

;================= Const =============================== SysStack Equ 07h ;08H...1FHDark Equ 10H;----------------- Hardware ----------------------------DisSegPort Equ 0000H ;0:Light upDisCSPort Equ 2000H ;1:SelectKeyOutPort Equ DisCSPort;Key Output Port;KeyInout:p1.0,P.1..P1.3 ;0:Pressed;------------------ Byte Units -------------------------KeyGetF Bit 20H ;1:Get A New KeyKeyPress Bit 21H ;1:Key ReleasedSumPress Bit 22H ;1 +SumPress1 Bit 23HEqualPress Bit 24H ;1 =DivPress Bit 25H ;1 /DivPress1 Bit 26HMulPress Bit 27H ;1 *MulPress1 Bit 28HSubbPress Bit 29H ;1 -SubbPress1 Bit 31HNegPress Bit 32HNegPress1 Bit 33H ;+/-NegPress2 Bit 34HDataPress Bit 35H ;数字键FuncPress Bit 36H ;运算功能键Sign Bit 37HKeyCode Equ 60HDisBuf Equ 70H;..75HDeciPos Equ 76H ;Bit=1:Show DeciPointSumVa Equ 77H ;press func KEY,Memory the DATA ON dis DivVa Equ 78H ;the same UPMulVa Equ 79H ;the same UPSubbVa Equ 85H ;the same UP;=======================================================Org 0000HAJmp Main;======================================================= Display: Mov R1,#00000001B ;R1=DisCSMov R0,#DisBuf ;DisBuf PointerDisLoop: Mov B,#0FFHMov A,DeciPos ;小数点?Anl A,R1Jz DisNext ;0没小数点Clr B.7 ;1小数点DisNext: Mov Dptr,#DisCSPort;Do Display CSMov A,R1Movx @Dptr,AMov A,@R0 ;Get Dis CharMov Dptr,#DisTabMovc A,@A+DptrAnl A,BMov Dptr,#DisSegPort;Use TableMovx @Dptr,A ;Send to DisSeg PortACall DelayInc R0Mov A,R1RL AMov R1,ACjne R0,#DisBuf+6,DisLoopRet;-------------------------------------------------------; Char: '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' ; Code: 00H, 01H, 02H, 03H, 04H, 05H, 06H, 07H, 08H, 09H DisTab: DB 0C0H,0F9H,0A4H,0B0H, 99H, 92H, 82H,0F8H, 80H, 90H ; Char: 'A', 'B', 'C', 'D', 'E', 'F', '10H'; Code: + , - , * , / , = , ON/C ,DarkDB 088H,0BFH,0c6H,0a1H, 86H, 8eH ,0FFH;--------------------------------------------------------Delay: Mov R2,#04hDelay1: Mov R3,#0Djnz R3,$Djnz R2,Delay1Ret;-------------------------------------------------------InitDis: Mov DisBuf+0,#0Mov DisBuf+1,#DarkMov DisBuf+2,#DarkMov DisBuf+3,#DarkMov DisBuf+4,#DarkMov DisBuf+5,#DarkMov DeciPos,#00000000BRet;------------------------------------------------------NegDis: Mov DisBuf+5,#0BHRet;-------------------------------------------------------ScanKey: Mov Dptr,#KeyOutPortMov A,#0Movx @Dptr,AMov A,P1Cpl A ;取反处理,以便用A进行是否全0判断.指令只可判断全0不可判断全1ANl A,#0FH ;屏蔽掉无关位Ret;-----------------------------------------------------------------------ReadKey: ACall ScanKeyJnz ReadKey1 ;A为0时无按键,只要有一位为1即有按键Clr KeyPressReadKeyQ: RetReadKey1: Jb KeyPress,ReadKeyQ ; 键压着可以准确定位是哪个键压着,故返回 Mov R2,#11111110B ;Mov R3,#0 ;准备扫描第一列ReadKeyLp: Mov Dptr,#KeyOutPortMov A,R2 ;列扫描值,选则列输出,检测Movx @Dptr,AMov A,#0Jnb P1.0,ReadKeyOkMov A,#6Jnb P1.1,ReadKeyOkMov A,#12Jnb P1.2,ReadKeyOkMov A,#18Jnb P1.3,ReadKeyOkInc R3Mov A,R2RL AMov R2,AAJmp ReadKeyLpReadKeyOk: Add A,R3 ;加上列扫描值Setb KeyGetFSetb KeyPressMov Dptr,#KeyChgTabMovc A,@A+DptrMov KeyCode,ARet;----------------------------------------------------------------; KeyCode 00H,01H,02H,03H,04H,05H,06H,07H,08H,09H,0AH,0BH,0CH,0DH,0EH,0FH,10H,11H,12H,13H ,14H,15H,16H,17H; OldKey Spc, 0 ,Dot,Equ,+ ,M+ ,% , 1 , 2 ,3 ,? ,M- ,+/-, 4 , 5 ,6 , - ,MRC, C , 7 ,8 , 9 , X , /KeyChgTab: DB 10, 0 ,11 ,12 ,13 ,14 ,15 , 1 , 2 ,3 ,16 ,17, 18 , 4 , 5 ,6 , 19,20 ,21 , 7 ,8 , 9 , 22,23;-------------------------------------------------------InitKey: Clr KeyGetFRet;--------------------------------------------------------InitFunck: Clr SumPressClr EqualPressClr DivPressClr MulPressClr SubbPressInitNeg: Clr NegPress1Clr NegPress2Ret;--------------------------------------------------------;=================================================================;执行运算Final:Jb SumPress1,AddA ;是否按下过加法键加法Jb DivPress1,DivDJb MulPress1,MulMJb SubbPress1,SubbSAjmp MainLoop;---------------------------------------------------------AddA: Clr SumPress1 ;执行加法运算ACall FromLEDJnb NegPress,AddC1Clr NegPressMov A,R6Orl A,#10000000BMov R6,AAddC1: ACall InitDisACall AddF ;调用加法子程序ACall ToLEDRet;----------------------------------------------------------DivD: Clr DivPress1 ;执行除法运算ACall FromLEDJnb NegPress,DivC1Clr NegPressMov A,R6Orl A,#10000000BMov R6,ADivC1: ACall InitDisACall DivFACall ToLEDRet;--------------------------------------------------------------; R6R7*R4R5=R2R3R6R7MulM: Clr MulPress1ACall FromLEDJnb NegPress,MulC1Clr NegPressMov A,R6Orl A,#10000000BMov R6,AMulC1: ACall InitDisACall MulF ;调用乖法子程序Acall ToLEDRet;-----------------------------------------------------------------; R4R5-R6R7=R6R7SubbS: Clr SubbPress1ACall FromLEDJnb NegPress,SubbC1Clr NegPressMov A,R6Orl A,#10000000BMov R6,ASubbC1: ACall InitDiSACall SubbFACall ToLEDRet;------------------------;R4R5*R6R7=R6R7MulF: Mov A,R4 ;判断两数符号同或异 Xrl A,R6Mov C,ACC.7Mov Sign,CMov A,R4Clr ACC.7Mov R4,AMov A,R6Clr ACC.7Mov R6,AMov A,R7Mov B,R5MUL ABXCH A,R7Mov R2,BMov B,R4MUL ABAdd A,R2Mov R2,AClr AAddc A,BMov R3,AMov A,R6Mov B,R5MUL ABAdd A,R2Mov R2,AMov A,BAddc A,R3Mov R3,AClr AAddc A,#00HXCH A,R6Mov B,R4MUL ABAdd A,R3Mov R3,AMov A,BAddc A,R6XCH A,R2Mov R6,AClr OVMov A,R6Mov C,SignMov ACC.7,CMov R6,ABackMul: Ret;------------------------;R4R5/R6R7=R6R7 先R0R1 余R2R3DivF: MOV A,R4XRL A,R6MOV C,ACC.7MOV Sign,CMOV A,R4CLR ACC.7MOV R4,AMOV A,R6CLR ACC.7MOV R6,AMov R0,#0Mov R1,#0 ;商赋初值零Div2Byte_1:Mov A,R5Clr cSubb A,R7 ;低字节相减Mov R5,AMov A,R4Subb A,R6 ;高位相减Mov R4,AJc Div2Byte_3 ;如果高字节都需要借位则退出循环 Clr cMov A,R1 ;R1自增AddC A,#1Mov R1,AJnc Div2Byte_2Inc R0 ;商加一Div2Byte_2:Sjmp Div2Byte_1Div2Byte_3:Mov A,R0Mov R6,AMov A,R1Mov R7,AMOV A,R6JB ACC.7,IDIVEJB OV,IDIVEMOV C,SignMOV ACC.7,CMOV R6,ARETIDIVE: SETB OVBackDiv: Ret;-----------------------------------------------------------------------------AddF: MOV A,R4MOV C,ACC.7MOV Sign,CXRL A,R6 ; 判断R3R6是否同号MOV C,ACC.7MOV A,R4Clr ACC.7MOV R4,AMOV A,R6CLR ACC.7MOV R6,AJC DAB2ACall Add1MOV A,R6JB ACC.7,DABEDAB1 : MOV C,SignMOv ACC.7,CMOV R6,ACLR OVRETDABE : SETB OVRETDAB2 : LCALL Subb1MOV A,R6JNB ACC.7,DAB1ACALL CmptCPL SignSJMP DAB1BackA: Ret;-----------------------------------------------------------------------------SubbF: MOV A,R6CPL ACC.7MOV R6,AMOV A,R4MOV C,ACC.7MOV Sign,CXRL A,R6 ; 判断R3R6是否同号MOV C,ACC.7。

单片机实验2-多字节加法


实验目的
1、学习51运算指令的用法及对标志位的 影响。
2、学习循环程序编程方法。 3、掌握51内部RAM和寄存器之间的关
系。
实验内容及要求
1、编写多字节十进制加法程序( P49 ),实 现下式运算 : 4574+6728=11302 要求:被加数在片内RAM区20H、21H单元; 加数在片内RAM区30H、31H单元; 结果在片内RAM区20H(最高位进位)、 21H(高位)、22H(低位)单元。 结果:20H=1,21H =13,22H=02
实验内容及要求
2、开机启动Keil C51软件进入µVision2 集成开 发环境,确认89C51处于软件仿真状态。 3、完成程序的设计、编辑、编译、连接。 4、进入DEBUG方式,打开存储器Memory 1窗 口,在窗口Address栏键入D:20H;点击鼠标 右键,选择最后一项Modify Memory ,输入被 加数;在窗口Address栏键入D:30H;点击鼠 标右键,选择最后一项Modify Memory ,输入 加数。
结 束
实验内容及要求
5、调试和运行程序并记录存储器Memory 1窗 口实验结果。 6、完成实验报告。
实验报告要求
1、设计说明:说明程序的功能、结构、原理及 算法。 2、调试说明:上机时遇到的问题及解决办法和 调试情况,观察到的现象及其分析,对程序设 计技巧的总结以及程序输出结果的分析,实验 的心得体会等。 3、程序框图。 4、程序清单。

单片机综合实验设计

单片机综合实验设计
单片机综合实验设计是一门综合运用单片机相关知识和技术的实践课程。

通过该实验设计,学生可以巩固和运用所学的单片机基础知识,提高自己的动手能力和问题解决能力。

在单片机综合实验设计中,学生需要根据特定的实验要求和题目进行设计和搭建电路,采集并处理输入信号,进行相应的控制和输出。

实验的内容可以包括数字电路设计、模拟电路设计、传感器与执行器的应用、通信接口等。

在实验过程中,学生需要运用单片机的编程技巧,使用适当的软件工具,完成相应的程序编写、调试和下载。

在进行单片机综合实验设计时,学生需要具备一定的电路设计能力和单片机编程能力,并且要具备良好的团队合作精神和实验操作技巧。

他们需要仔细理解实验要求,合理安排实验步骤,独立思考和解决问题。

通过单片机综合实验设计,学生可以提高自己的实践能力和创新能力,培养工程实践意识,并且更加深入地了解和掌握单片机的相关知识和应用技术。

这对于计算机、电子、通信等相关专业的学生来说,都具有重要的意义。

总之,单片机综合实验设计是一门实践课程,旨在帮助学生巩固和应用所学的单片机知识和技能。

通过设计和搭建相应的电路,并通过编程进行控制和输出,学生可以提高自己的实践能力和动手能力。

这门实验设计将对学生的专业知识和就业前景产生良好的影响。

单片机技术及应用课程设计报告

课程设计报告第一部分:概述1.1 课程设计的背景和意义单片机技术在现代工业生产和科研中起着举足轻重的作用,因此对单片机技术的理论和应用知识的学习显得尤为重要。

本课程设计的目的在于通过理论与实践相结合的方式,使学生能够全面掌握单片机技术的基本原理和应用方法,为将来的工作和研究打下坚实的基础。

1.2 课程设计的目标和要求本课程设计旨在培养学生对单片机技术的全面理解和应用能力,具体要求包括:- 掌握单片机的基本原理和结构- 熟练掌握单片机的编程语言和开发工具- 能够设计并实现简单的单片机应用系统- 具备一定的单片机故障排除和维护能力第二部分:课程内容2.1 单片机基础知识- 单片机的定义和分类- 单片机的基本结构和工作原理- 单片机的发展历程及应用领域2.2 单片机编程语言- C语言在单片机编程中的应用- 汇编语言在单片机编程中的应用- 单片机常用编程语言对比与选择2.3 单片机开发工具- 单片机编程与仿真工具的选用- 常用单片机开发板介绍与使用- 单片机调试工具的应用2.4 单片机应用系统设计- 单片机控制原理- 单片机在自动控制领域的应用案例- 单片机在智能监控领域的应用案例2.5 单片机故障排除与维护- 单片机常见故障及解决方法- 单片机维护的注意事项- 单片机相关知识的拓展与学习第三部分:课程设计方法3.1 教学内容的设置本课程设计旨在通过理论教学和实践操作相结合的形式展开教学,具体内容包括课堂讲解、实验演示、课程设计等多种形式。

3.2 教学方法的选择- 教师为主导,学生为主体的教学方式- 实验操作和项目设计为主要形式- 多媒体教学与互动授课相结合3.3 课程评估方式本课程将通过平时表现、实验报告、课程设计报告和期末考核等方式对学生的学习情况进行全面评估。

第四部分:课程设计实施4.1 教学内容详细安排- 第1-2周:单片机基础知识- 第3-4周:单片机编程语言- 第5-6周:单片机开发工具- 第7-8周:单片机应用系统设计- 第9-10周:单片机故障排除与维护4.2 实验教学实施方案- 设置不同难度的实验内容- 强调实验操作的规范性和实用性- 配备实验教学相关设备和工具4.3 课程设计作业安排- 各阶段的课程设计报告要求- 课程设计报告的提交时间和形式- 课程设计报告的评分标准第五部分:课程总结和展望5.1 课程总结通过本次课程设计,学生对单片机技术的基本理论和应用能力得到了显著提升,实践操作能力也得到了锻炼和提高。

单片机原理实验报告

实验一:系统认识实验一、设计目的:1. 学习 Keil C51 集成开发环境的操作;2. 熟悉 TD-51 系统板的结构及使用。

二、设计内容:编写程序,将 00H~0FH 共 16 个数写入单片机内部 RAM 的 30H~3FH 空间。

三、设计步骤:1. 创建 Keil C51 应用程序(1)运行 Keil C51 软件,进入 Keil C51 集成开发环境。

(2)选择工具栏的 Project 选项,弹出下拉菜单,选择 NewProject 命令,建立一个新的μVision2 工程。

这时会弹出文件保存对话框,选择工程目录并输入文件名 Asm1 后,单击保存。

(3)工程建立完毕后,μVision2 会马上弹出器件选择窗口。

器件选择的目的是告诉μVision2 使用的 80C51 芯片的型号是哪一个公司的哪一个型号,不同型号的 51 芯片内部资源是不同的。

此时选择 SST 公司的 SST89E554RC。

(4)到此建立好一个空白工程,现在需要人工为工程添加程序文件,如果还没有程序文件则必须建立它。

选择工具栏的 File 选项,在弹出的下拉菜单中选择 New 目录。

(5)输入程序,完毕后点击“保存”命令保存源程序,将 Text1 保存成Asm1.asm。

Keil C51 支持汇编和 C 语言,μVision2 会根据文件后缀判断文件的类型,进行自动处理,因此保存时需要输入文件名及扩展名.ASM 或.C。

保存后,文件中字体的颜色会发生一定变化,关键字会变为蓝色。

(6)程序文件建立后,并没有与 Asm1.Uv2 工程建立任何关系。

此时,需要将 Asm1.asm 源程序添加到 Asm1.Uv2 工程中,构成一个完整的工程项目。

在Project Window 窗口内,选中Source Group1 点击鼠标右键,选择 Add Files to Group‘Source Group1’命令,此时弹出添加源程序文件对话框,选择文件Asm1.asm,点击 Add 命令按钮即可将源程序文件添加到工程中。

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

可修改可编辑 精选文档 单片机双字节十六进制减法实验设计 摘要

本设计是基于51系列的单片机进行的双字节十六进制减法设计,可以完成计

算器的键盘输入,进行加、减、3位无符号数字的简单运算,并在LED上相应的显示结果。 设计过程在硬件与软件方面进行同步设计。硬件方面从功能考虑,首先选择内部存储资源丰富的AT89C51单片机,输入采用5个键盘。显示采用3位7段共阴极LED动态显示。软件方面从分析计算器功能、流程图设计,再到程序的编写进行系统设计。编程语言方面从程序总体设计以及高效性和功能性对C语言和汇编语言进行比较分析,针对计算器四则运算算法特别是乘法和除法运算的实现,最终选用KEIL公司的μVision3软件,采用汇编语言进行编程,并用proteus仿真。

引言 十六进制减法计算器的原理与设计是单片机课程设计课题中的一个。在完成理论学习和必要的实验后,我们掌握了单片机的基本原理以及编程和各种基本功能的应用,但对单片机的硬件实际应用设计和单片机完整的用户程序设计还不清楚,实际动手能力不够,因此对该课程进行一次课程设计是有必要的。

单片机课程设计既要让学生巩固课本学到的理论,还要让学生学习单片机硬件电路设计和用户程序设计,使所学的知识更深一层的理解,十进制加法计算器原理与硬软件的课程设计主要是通过学生独立设计方案并自己动手用计算机电路设计软件,编写和调试,最后仿真用户程序,来加深对单片机的认识,充分发挥学生的个人创新能力,并提高学生对单片机的兴趣,同时学习查阅资料、参考资料的方法。

关键词:单片机、计算器、AT89C51芯片、汇编语言、数码管、加减

可修改可编辑

精选文档 目录 摘 要 ..........................................01 引 言 ..........................................01

一、 设计任务和要求............................. 1、1 设计要求 1、2 性能指标 1、3 设计方案的确定 二、 单片机简要原理.............................

2、1 AT89C51的介绍 2、2 单片机最小系统 2、3 七段共阴极数码管 三、 硬件设计...................................

3、1 键盘电路的设计 3、2 显示电路的设计 四、 软件设计...................................

4、1 系统设计 4、2 显示电路的设计 五、 调试与仿真.................................

5、1 Keil C51单片机软件开发系统 5、2 proteus的操作 六、 心得体会....................................

参考文献......................................... 附录1 系统硬件电路图............................ 附录2 程序清单..................................

一、 设计任务和要求可修改可编辑

精选文档 1.1 设计要求 本次课程设计,我选择的课题是单片机十进制加法计算器软硬件设计 ,设计任务为:

设计一键盘显示装置,键盘上除需定义16个十六进制数字键外还要相应的功能键,其它键不定义无响应。利用此系统可分别可输入十六进制被减数与减数,实现两数相减并将结果以十六进制形式显示出来。(扩展:多位16进制数相减)

1.2 性能指标

本课程设计的十六进制减法,计算结果全为整数,计算结果溢出结果不显示。

1 、减法:三位减法,计算结果若小于零溢出不显 3、有显示差的功能

1.3 设计方案的确定 按照1.1的设计要求,本课题需要使用数码管显示和扩展1*5键盘,由于AT89C51芯片的I口不够多,而且为了硬件电路设计的简单化,故选择串行动态显示和用P1口扩展1*5键盘,扩展的1*5键盘定义十个数字键,5个功能键,使用串行动态显示显示运算结果。 主程序进行初始化,采用行列扫描进行查表得出键值,每次按键后调用显示子程序。

二、 单片机简要原理 在该课程设计中,主要用到一个AT89C51芯片和串接的共阴数码管。作为该设计的主要部分,下面将对它们的原理及功能做详细介绍和说明。

2.1 AT89C51的介绍:可修改可编辑

精选文档 图一 AT89C51外形结构和引脚分布图 芯片AT89C51的外形结构和引脚图如图一所示。AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

2.2 单片机最小系统 单片机最小系统就是支持主芯片正常工作的最小部分,包括主控芯片、复位电路和晶振电路。

(一) 复位电路

图二 复位电路 本设计采用上电与手动复位电路,电阻分别选取100和10K,电容选取10uF,系统一上电,芯片就复位,或者中途按按键也可以进行复位。可修改可编辑 精选文档 (二) 晶振电路

图三 晶振电路 晶振电路是单片机的心脏,它用于产生单片机工作所需要的时钟信号。单片机的晶振选取11.0592MHz,晶振旁电容选取30pF。

2.3 七段共阴极数码管

图四 七段共阴数码管

图为七段共阴数码管的引脚图,从左到右数码管的段码分别为a,b,c,d,e,f,g和小数点dp,低电平时点亮,最右边为位选端。

三、 硬件设计

简易数字计算器系统硬件设计主要包括:显示电路以及其他辅助电路。下面分别进行设计。

3.1 显示电路的设计 可修改可编辑 精选文档 当系统需要显示少量数据时,采用LED数码管进行显示是一种经济实用的方法。数码管显示有静态显示和动态显示两种方法。为了减少端口的使用,故选择动态显示。 电路如下图六所示:

图六 三位数码管的显示电路

四、 软件设计

在十进制加法计算器的软件规划要求下,简易计算器的程序主要包

括以下功能模块:(1) 主模块,为系统的初始化。(2) 显示与读键模块,分为判键程序段、运算操作子程序、显示子程序等部分;

4.1 系统设计

(一) 系统模块图可修改可编辑

精选文档 单片机运算模块显示模块输入模块

图六 系统模块图 此系统包括输入、运算和显示模块,由单片机控制。其中通过输入键盘模块将数字0~9和运算符号“+”、“-”、“*”、“/”输入单片机进行运算;运算模块分别根据输入的运算符进行加减乘除运算;显示模块将运算后的数值通过动态扫描使之在数码管上输出。 (二) 系统总流程图 主程序主要是用来进行初始化的,调用其他子程序,清空各个标志位,清空缓存区,读取键码,判断功能,在LED上作出回应,主程序流程图如图六所示。

(1)数字送显示缓冲程序设计 简易计算器所显示的数值最大位三位。要显示数值,先判断数值大小和位数,如果是超过三位或大于255,将不显示数字。可重新输入数字,再次计算。 (2)运算程序的设计 首先初始化参数,送LED三位显示“0”,其它位不显示。然后扫描键盘看是否有键输入,若有,读取键码。判断键码是数字键、清零键还是功能键,是数值键则送LED显示并保存数值,是清零键则做清零处理,是功能键则又判断是“=”还是运算键,若是“=”则计算最后结果并送LED显示,若是运算键则保存相对运算程序的首地址。 可修改可编辑

精选文档

图七 主程序流程图

初始化参数 清零键 LED显示 输入数值 读取键值 状态清零 数值送显示缓存 开始 按键输入? 分析键值 数字键 等待数值输入 结果送显示缓存

保存结果和功能键 根据上次功能键和输入的数据计算结果

功能键 否

是数字键 是清零键

是功能键 可修改可编辑

精选文档 4.2 显示与按键设计 (一) LED显示程序设计 LED显示器由七段发光二极管组成,排列成8字形状,因此也称为七段LED显示器。为了显示数字或符号,要为LED显示器提供代码,即字形代码。七段发光二极管,再加上一个小数点位,共计8段,因此提供的字形代码的长度正好是一个字节。简易计算器用到的数字0~9的共阴极字形代码如下表:

显示字型 g f e d c b a 段码 0 0 1 1 1 1 1 1 0c0h 1 0 0 0 0 1 1 0 0f9h 2 1 0 1 1 0 1 1 0a4h 3 1 0 0 1 1 1 1 0b0h 4 1 1 0 0 1 1 0 99h 5 1 1 0 1 1 0 1 92h 6 1 1 1 1 1 0 1 82h 7 0 0 0 0 1 1 1 0f8h 8 1 1 1 1 1 1 1 80h 9 1 1 0 1 1 1 1 90h 表一 共阴极数码管段码对照表 (二) 读键子程序设计 为了实现键盘的数据输入功能和命令处理功能,每个键都有其处理子程序,为此每个键都对应一个码——键码。为了得到被按键的键码,现使用行扫描法识别按键。其程序框图如图八: 读键程序使用的是反转法读键,不管键盘矩阵的规模大小,均进行两次读键。第一次所有列线均输出低电平,从所有读入键盘信息(行信息);第二次所有行线均输出低电平,从所有行线读入键盘信息(列信息)。将两次读键信息进行组合就可以得到按键的特征编码,然后通过查表得到按键的顺序编码。将各特征编码按希望的顺序排成一张表,然后用当前读得的特征码来查表。当表中有该特征码时,它的位置就是对应的顺序编码;当表中没有该特征码时,说明这是一个没有定义的键码,与没有按键(0FFH)同等看待。

相关文档
最新文档