单片机主程序流程

合集下载

单片机设计说明书

单片机设计说明书

单片机课程设计报告(电气工程学院)设计题目:倒计时计时器设计专业班级:指导教师:学生姓名:设计地点:第二实验楼设计日期: 2016.6.12—2016。

6.19设计任务书目录摘要 (1)第一章设计方案 (1)1.1 设计任务书分析 (1)1。

2 设计思路 (1)1。

3 设计方案 (1)第二章硬件设计 (3)2.1 功能模块设计 (3)2.2 芯片介绍 (3)第三章程序设计 (5)3.1 程序设计思路 (5)3.2 程序设计工具简介 (5)3。

3 程序流程框图 (5)第四章系统调试 (6)4。

1 调试思路 (6)4.2 调试方法及过程 (6)4。

3 问题及解决措施 (6)第五章总结 (7)5.1硬件 (7)5。

2 程序 (7)心得体会 (8)参考文献 (9)附录一电路原理图 (10)附录二源程序清单 (11)倒计时计数器设计摘要近年来随着计算机在社会领域的渗透,单片机的应用正在不断地走向深入,同时带动着传统控制检测日新月异的更新。

由于单片机具有体积小、易于产品化、面向控制、集成度高、功能强、可靠性高、价格低等特点,其在工业控制、机电一体化、智能仪表、通信等诸多领域中得到了广泛的应用。

在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用。

但是仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。

本课程设计针对倒计时系统的设计的需求,介绍了STC15F204EA单片机和数码显示管的部分基本原理,如STC15单片机元件和四位数码显示管在电路板上焊接,电路原理图的介绍,以及写定时器程序等等。

通过Keils软件撰写倒计时定时器程序并且用Proteus仿真电路的绘制并仿真成功,之后把程序输入到单片机中,再做最后的调试工作。

关键词:STC15F204EA单片机;Keils软件;Proteus仿真软件。

In recent years, with the penetration of computer in the social field, SCM applications are constantly go, drive the traditional control detection update changing at the same time。

单片机系统开发流程

单片机系统开发流程

单片机系统开发流程1. 硬件设计硬件设计是单片机系统开发的第一步,它涉及到电路原理图设计、PCB布局和元器件选型等工作。

1.1 电路原理图设计根据项目需求,使用相应的EDA软件(如Altium Designer、Cadence等)进行电路原理图设计。

在设计过程中,需要注意以下几点: - 确定单片机型号和外部器件的连接方式,包括引脚定义和功能。

- 根据外设模块的要求进行接口设计,如LCD显示屏、按键、传感器等。

- 考虑电源管理电路,包括稳压器、滤波电容和保护电路等。

- 进行信号调试和仿真验证,确保原理图没有错误。

1.2 PCB布局根据电路原理图进行PCB布局设计。

在布局过程中,需要注意以下几点: - 根据外部器件的位置和尺寸进行布局安排,尽量减少信号线的长度和干扰。

- 分析信号线的走向和层次分配,在不同层次上布置不同类型的信号线(如时钟线、数据线、地线等)。

- 合理安排元器件的焊盘位置和间距,方便手工焊接或自动插件。

- 添加必要的电源和地平面,增强电磁兼容性(EMC)和信号完整性(SI)。

1.3 元器件选型根据项目需求和硬件设计要求,选择合适的元器件。

在选型过程中,需要注意以下几点: - 确定单片机型号,考虑处理器性能、存储容量、接口等因素。

- 根据外设模块的要求选择合适的器件,如LCD显示屏、按键、传感器等。

- 考虑元器件的可获得性、价格和可靠性等因素。

2. 软件开发软件开发是单片机系统开发的核心环节,它涉及到嵌入式软件编程和调试等工作。

2.1 嵌入式软件编程根据项目需求和硬件设计要求,选择合适的嵌入式开发平台(如Keil、IAR Embedded Workbench等),进行软件编程。

在编程过程中,需要注意以下几点:- 编写初始化代码,配置单片机的时钟源、引脚功能和外设模块等。

- 设计主程序框架,包括任务调度、中断处理和状态机控制等。

- 编写驱动程序,实现对外设模块的控制和数据交互。

单片机程序流程图及源代码

单片机程序流程图及源代码

单片机上机实验报告【实验一】端口实验,掌握通过端口编程实现数据输出和输入的方法,并观察结果。

实验内容:1)输出实验:假定4个端口全部连接发光二极管,编程实现所有发光二极管同时亮,延迟一定时间(自定)后,又同时灭,如此循环。

2)输入:从P0口输入某个数据到累加器A,打开观察窗口观察数据是否进入累加器A。

实现方式:通过peripherals实现端口数据观察实验。

程序流程图:将P0到P3端口先赋值为0,调用延迟后,再赋1,然后循环执行。

源代码:ORG 0000H ;程序入口地址LJMP MAIN ;跳转到主程序ORG 0300H ;主程序地址MAIN:MOV P0,#00H;MOV P1 ,#00H;MOV P2 ,#00H;MOV P3 ,#00H ;P0~P3均赋值为0ACALL DEL;调用延迟MOV P0 ,#0FFH;MOV P1 ,#0FFH;MOV P2 ,#0FFH;MOV P3 ,#0FFH;P0~P3均设为1MOV A,P0;将P0口值赋给累加器ACALL DEL;AJMP MAIN;跳转到主程序入口ORG 0200H;延迟程序入口地址DEL:MOV R5,#04H;寄存器实现延迟,F3:MOV R6,#0FFH;若主频为12MHZ则F2:MOV R7,#0FFH;延时为256*256*4F1:DJNZ R7,F1;0.26S,人眼可分辨DJNZ R6,F2;DJNZ R5,F3;RET;从延迟程序返回END;结束3.假设P0口外接一个数码管(共阴),如图,请在数码管上轮流显示数字0~9(采用软件延时)。

程序流程图:将数码管的真值编码0~9依次赋给P0并调用延迟,然后循环运行程序即可。

源代码:ORG 0000H; 程序入口SJMP MAIN; 跳转到主程序ORG 0300H; 主程序入口地址MAIN:MOV P0,#0FCH; 将数码管0的编码赋给P0口ACALL DELAY; 调用延迟,使数码管亮0持续0.33SMOV P0,#60H; show 1ACALL DELAY;MOV P0,#0DAH; show 2ACALL DELAY;MOV P0,#0F2H; show 3ACALL DELAY;MOV P0,#66H; show 4ACALL DELAY;MOV P0,#0B6H; show 5ACALL DELAY;MOVP0,#0BEH; show 6ACALL DELAY;MOV P0,#0E0H; show 7ACALL DELAY;MOV P0,#0FEH; show 8ACALL DELAY;MOV P0,#0F6H; show 9ACALL DELAY;AJMP LOOP; 跳转到主程序入口ORG 0200H; 延迟程序入口DEL:MOV R5,#05H; 采用软件延迟,若主频为12MHz,则DEL1:MOV R6,#0FFH; 定时时间为256*256*5*1uS=0.33S,DEL2:MOV R7,#0FFH; 人眼可分辨。

单片机课程设计

单片机课程设计

单片机课程设计《机器人入门》2021年亚太大学生机器人大赛——胜利鼓乐课程名称:单片机课程设计系部:自控系则专业班级:计算机控制20931学生姓名:陆小祥一、总体方案:1.工作原理:本设计使用stc89c52rc单片机做为本系统的掌控模块。

单片机可以把由ds18b20、ds1302、at24c02中的数据利用软件去展开处置,从而把数据传输至表明模块,同时实现温度、日历和闹铃的表明。

以lcd液晶显示器为表明模块,把单片机响起的数据表明出,并且表明多样化。

在表明电路中,主要依靠按键去同时实现各种表明建议的挑选与转换。

2.总体设计:设计总体框架图例如图二、系统硬件设计(单元电路设计及分析):1.stc89c52rc单片机最轻系统:最小系统包括晶体振荡电路、复位开关和电源部分。

图2为stc89c52rc单片机的最小系统。

图2最轻系统电路图2.温度测量模块:温度测量传感器使用dallas公司ds18b20的单总线数字化温度传感器,测温范围为-55℃~125℃,可编程为9十一位~12十一位a/d切换精度,测温分辨率达至0.0625℃,使用真菌电源工作方式,cpu只需一根口线便能够与ds18b20通信,挤占cpu口线太少,可以节省大量引线和逻辑电路。

USB电路例如图3右图。

图3ds18b20测量电路3.时钟模块:时钟模块采用ds1302芯片,ds1302是dallas公司推出的涓流充电时钟芯片内含有一个实时时钟/日历和31字节静态ram通过简单的串行接口与单片机进行通信实时时钟/日历电路提供秒分时日日期月年的信息每月的天数和闰年的天数可自动调整时钟操作可通过am/pm指示决定采用24或12小时格式ds1302与单片机之间能简单地采用同步串行的方式进行通信仅需用到三个口线:rst复位、i/o数据线、sclk串行时钟。

时钟/ram的读/写数据以一个字节或多达31个字节的字符组方式通信。

ds1302工作时功耗很低,保持数据和时钟信息时功率小于1mw,其接线电路如图4所示:图4时钟电路4.存储器模块:图5at24c02存储器电路5.lcd液晶显示模块:lcd液晶显示模块使用lcd1602型号,具备很低的功耗,正常工作时电流仅2.0ma/5.0v。

单片机课程设计

单片机课程设计

单片机课程设计一、目的和意义本课程设计是在学完单片机原理及课程之后综合利用所学单片机知识完成一个单片机应用系统设计并在实验室实现。

该课程设计的主要任务是通过解决一、两个实际问题,巩固和加深“单片机原理与应用”课程中所学的理论知识和实验能力,基本掌握单片机应用电路的一般设计方法,提高电子电路的设计和实验能力,加深对单片机软硬知识的理解,获得初步的应用经验,为以后从事生产和科研工作打下一定的基础。

二、选题要求在现有的开发装置上掌握相关硬件,正确地进行连线在计算机上编写汇编程序、调试、下载、配合外部电路进行系统功能测试,设计并实现参考选题中要求设计的系统。

要求按设计要求制订方案,直至正确地实现系统功能;写出课程设计报告;理解设计方案后再自己动手设计程序,并正确联线、构成硬件电路,通过独立调试实现设计方案。

三、任务及要求(一)课题要求1.数字电压表的设计技术要求:利用51单片机,ADC0809转换芯片,键盘显示系统,设计一个测量模拟电压的数字电压表,可以显示3位有效数字,通过汇编语言设计。

工作要求:画出设计原理图,编写出软件,并调试出各种功能2.温度检测系统的设计技术要求:利用51单片机,DS18B20芯片,键盘显示系统,设计温度检测系统,通过键盘控制,实现数字温度的采集,用汇编语言设计。

工作要求:画出设计原理图,编写出软件,并调试出各种功能。

(二)设计报告要求要求设计报告按以下条目顺序编写:1.封面2.内容提要3.正文概述所作题目的意义、本人所做的工作及系统的主要功能;硬件电路设计及描述;软件设计流程及描述;源程序代码(要有注释)。

4.课程设计体会5.参考文献四、进程安排1.介绍课程设计的教学内容,指导学生根据兴趣选题。

2.原理设计3.原理设计及软件设计4.课程设计报告要求及示例介绍,原理设计5.硬件调试,软件设计及调试6.验收答辩五、考核方法与成绩评定1、考核方法(1)理论设计方案,演示所设计的系统,总成绩50%;(2)设计报告,占总成绩20%;(3)回答教师所提出的问题,占总成绩20%;(4)考勤情况,占总成绩10%;2.有下列情况之一者,要酌情减分:(1)设计报告有抄袭行为或有意给别人抄袭。

单片机课程设计---单片机控制全自动洗衣机

单片机课程设计---单片机控制全自动洗衣机

教育部直属国家“211工程”重点建设高校单片机原理课程设计报告指导教师:王宪学生学号:0702100229学生姓名:王侠学生班级:通信1002一、设计目标用51系列单片机控制全自动洗衣机的运行,使其能自动地完成进水、洗涤、漂洗、脱水等功能。

采用LED和数码显示管显示洗衣机所处在的模式和水位,所处的的洗衣状态,水温,以及完成洗衣的剩余时间。

实现不同模式下水位的选择一共三种模式(标准,轻柔,快洗),四种水位,当洗衣机启动后,上水电磁阀打开注水,当水到达设定的限位时,上水电磁阀断电,注水过程停止,启动电机全自动控制洗衣操作,整个过程的进行按时间控制,时间自定,软件编程使用汇编语言。

洗衣机功能要求二、洗衣机的硬件设计本系统实现了对洗衣机整个洗衣过程的控制,包括用户参数输入、洗衣、漂洗、排水和脱水等阶段。

控制系统主要由电源电路、单片机控制系统和外部硬件电路构成。

电源采用三端集成固定稳压器7805提供+5V电源,单片机控制系统负责控制洗衣机的工作过程,主要由AT89S51单片机、2位共阳数码管、按键、蜂鸣器、LED指示灯组成;外部硬件电路有继电器、三极管、电动机、进水电磁阀、排水电磁阀组成。

2.1 按键洗衣机面板上有4个按钮:1K1为启动键,K2用于模拟洗衣机的盖板打开,K3用于快速洗衣方式;当脱水时,模拟盖板合闭,K4用于脱水。

2.2 洗衣程序洗衣机的主要工作程序是:洗涤——脱水——漂洗——脱水——漂洗——脱水。

(1)洗涤过程:放好待洗物,启动开关,进水阀通电,向洗衣机供水,当供水达到预定水位时,水位开关接通,进水阀断电关闭,停止供水。

洗涤电动机接通电源,带动波轮(或桶)旋转,产生各种形式的水流搅动衣物进行洗涤。

通过电动不停的正转、停、反转、反复循环,形成洗涤水对洗涤物产生强烈的翻滚作用。

同时,衣物之间、衣物与四周桶壁之间产生互相摩擦和撞击力,以次达到洗涤衣物的目的。

(2)漂洗过程:漂洗的目的在于清除衣物上的洗涤液,因此,漂洗过程与洗涤过程的电器动作是完全相同的。

单片机控制秒表显示时间为00—99(每秒自动加1),暂停,复位

单片机控制秒表显示时间为00—99(每秒自动加1),暂停,复位

标准文档9创新实践实训报告学院信息电子技术学院专业电子信息工程班级14学籍号姓名指导教师蒋野2017年06月29日单片机控制秒表电路一、电路工作原理1.工作原理用STC89C52设计一个2位的LED数码显示作为“秒表”:显示时间为00—99秒,每秒自动加1,另设计一个“暂停”键S2和一个“继续”键S3。

为使本设计系统更加完善,可以引入一个“复位”键S1,以方便对系统的控制。

如图。

本系统采用STC89C51单片机为中心器件,利用其定时器/计数器定时计数的原理,结合硬件电路如电源电路,晶振电路,复位电路和显示电路,以及一些按键电路等来设计计数器,将软硬件有机结合起来,其中软件系统采用汇编语言编写程序,包括显示程序,计数程序,中断,硬件系统利用Protues强大的功能来实现,简单易于观察,在仿真中就可以观察到实际的工作状态。

2.元器件作用(1)STC89C52单片机在电子行业中有着广泛的应用。

AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2 个读写口线,STC89C52可以按照常规方法进行编程,也可以在线编程。

其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的 Flash存储器可有效地降低开发成本。

(2)时钟电路作用是为电路提供唯一的时钟信号。

(3)复位电路外接一个开关,控制电路复位,接通电源电路直接复位,如果没有开关亦可将复位电路引出导线接电源后断开。

(4)本设计要求使用共阳极的数码管,如下是共阳极的数码管的0-9编码:0xc0,0x92,0x82,0xf8,0x80,0x90,0xf9,0xa4,0xb0,0x99.(5)控制电路:S2按下电路停止计时,S3按下电路恢复计时。

二、程序流程图主程序流程图三、检测安装与调试1.元件检测共阳极数码管检测管脚序号利用万用表二极管档红表笔接一个抵住两个管脚,利用另一个接触其他,找出1,2两个管脚,继续分别找出A,D,C,D,E,F,G,Dp管脚。

单片机实验熟悉μ’nSP

单片机实验熟悉μ’nSP

单片机原理实验报告学生姓名所在班级实验日期实验组成员实验成绩2014.5.8实验一熟悉μ’nSP™IDE集成开发环境下C语言程序的编写【实验目的】1. 熟悉μ’nSP™IDE集成开发环境的使用方法;2.掌握利用 C 语言来实现 A 口作为输入口、B 口作为输出口的方法。

【实验设备】1. 装有 Windows 系统和 µ’nSP™ IDE 集成开发环境的 PC 机一台,µ’nSP™十六位单片机实验箱一个。

2. 本实验用到的实验箱硬件模块为:SPCE061A 核心及周边电路模块(包含 32 个 I/O 口),发光二极管电路模块,高低电平发生按键电路模块。

【实验要求】1. 编程要求:编写 C 语言程序, 实现IOA 口低八位接键盘,IOB 口低八位接 8 个发光二极管,按下按键,控制点亮对应的发光二极管。

2. 实现功能:IOA 口低八位接键盘,IOB 口低八位接 8 个发光二极管,按下按键,控制点亮对应的发光二极管。

3.根据功能设计,理论上应得到的现象:不同的发光二极管点亮表示有不同的键按下。

当第一个按键按下时,第一个发光二极管点亮,第i(1≤i≤8)个按键按下时,第(1≤i≤8)个发光二极管点亮。

【实验原理】1.I/O口的设置SPCE061A的I/O口可以被单独定义为输入或者输出口,它们的输入输出方式是由方向控制向量Dir、属性向量Attrib、数据向量Data的组合设置确定的,I/O口的组合控制设置如表2-1所示。

表2-1 I/O端口的组合控制设置比如:IOA口低八位被设置为带下拉电阻的输入口、IOB口低八位被设置为同相低电平输出口,设置如表2-2。

表2-2 IOA0~7为带下拉电阻的输入口、IOB0~7为同相低电平输出口SPCE061A输出的高低电平及发光二极管的点亮与熄灭原理:如下图2-3实验箱发光二极管的电路原理图。

当IO端输出高电平时,发光二极管导通,即二极管点亮;输出低电平时,发光二极管截止,即二极管熄灭。

《单片机原理及应用》课程设计软件流程图

《单片机原理及应用》课程设计软件流程图

1.函数波形发生器流程图主程序流程T0中断服务程序流程2. 255秒定时器流程主程序流程图INT0中断服务程序流程T1中断服务程序流程T0中断服务程序流程3. 比例电压变换器流程主程序流程图4. 模拟电压显示器流程主程序流程图注:P1口和P3.0-P3.3接12个LED 灯,其中P3.3接最高位灯L12,P1.0接最低位灯L0。

5. 脉冲计数器流程主程序流程图T1中断服务程序流程图T0中断服务程序流程图6. 水塔水位控制器流程主程序流程图T0中断服务程序流程图T1中断服务程序流程图7. 占空比可调的方波发生器流程主程序流程图T0中断服务程序流程图注:T0的中断服务程序编制过程中必须注意使程序所有流程的执行时间小于100μS 。

否则,输出波形的频率不符合题目的要求8. 双机通过串行接口互传数据流程主程序流程图T0中断服务程序流程图串口中断服务程序流程图9. 花样流水灯流程主程序流程图T0中断服务程序流程图注:在主程序中由于仅使用了8bit运算,故实际A/D采样值为255时,得到的延时时间间隔为1280mS。

若要完全符合题意,则需要使用16bit的算术运算才能满足要求。

10. 模拟电压比较器流程主程序流程图T0中断服务程序流程图T1中断服务程序流程图11. 利用PWM 信号实现直流小电机的调速流程主程序流程图注:在程序的编制过程中,必须仔细调整延时37微秒的延时子程序的延时时间,使输出波形的频率满足题目要求。

12. 调频信号发生器流程主程序流程图T0中断服务程序流程图注:该程序编制过程中须注意,T0中断服务程序与主程序均使用0区的工作寄存器。

另外,T0的中断服务程序中最长流程的执行时间必须小于50微秒13. 频率计主程序流程图T1中断服务程序流程图动态显示子程序流程图主程序流程图14. 电子钟T0中断服务程序流程图INT0中断服务程序流程图动态显示子程序流程图15. 数字电压表主程序流程图T0中断服务程序流程图动态显示子程序流程图16. 数字跑表主程序流程图INT0中断服务程序流程图T0中断服务程序流程图动态显示子程序流程图17. 步进电机驱动器主程序流程图INT0中断服务程序流程T0中断服务程序流程。

第5章 MCS-51单片机的程序设计

第5章 MCS-51单片机的程序设计

X + 1, X > 0 Y = 0, X = 0 1, X < 0
5.3.4 循环程序
循环程序一般由如下四部分组成: 循环程序一般由如下四部分组成: ①初始化部分:用来设置循环初值,包括预置变量、计数器和数据指针 初始化部分:用来设置循环初值,包括预置变量、 初值,为实现循环做准备。 初值,为实现循环做准备。 ②循环处理部分:要求重复执行的程序段,是程序的主体,称为循环体。 循环处理部分:要求重复执行的程序段,是程序的主体,称为循环体。 循环体既可以是单个指令,也可以是复杂的程序段,通过它可完成对数据 循环体既可以是单个指令,也可以是复杂的程序段, 进行实际处理的任务。 进行实际处理的任务。 ③循环控制部分:控制循环次数,为进行下一次循环而修改计数器和指 循环控制部分:控制循环次数, 针的值,并检查该循环是否已执行了足够的次数。也就是说, 针的值,并检查该循环是否已执行了足够的次数。也就是说,该部分用条 件转移采控制循环次数和判断循环是否结束。 件转移采控制循环次数和判断循环是否结束。 ④循环结束部分:分析和存放结果。 循环结束部分:分析和存放结果。
√ × 机器汇编


×

×

×
5.3.1 16位加减法程序 位加减法程序
位二进制数分别存放在R1R0和R3R2中,试求其和, 例5-1:已知两个 位二进制数分别存放在 :已知两个16位二进制数分别存放在 和 中 试求其和, 并将结果存入R1R0中。 中 并将结果存入 汇编语言程序: 汇编语言程序: ORG CLR R1 R3 R1 R0 R2 R0 MOV ADD MOV MOV ADDC MOV SJMP END 0000H C A,R2 A,R0 R0,A A,R3 A,R1 R1,A $

杭州电子科技大学单片机自主式学习实验系统实验指导书

杭州电子科技大学单片机自主式学习实验系统实验指导书

单片机自主式学习实验系统(单片机基础实验部分)实验指导书杭州电子科技大学2016年1月目录目录 (1)实验一开关量输入输出实验 (2)实验二LED轮换点亮实验 (3)实验三LED数码管显示实验 (5)实验四脉冲计数实验 (9)实验五LED数码管显示与按钮输入实验 (11)实验六点阵显示实验 (17)实验七单温度采集实验 (19)实验一开关量输入输出实验一、实验要求1.利用STC12C5A16S2单片机的P0口作开关量输入口,P1口作开关量输出口;2.当P0.x端开关闭合时,对应的P1.x口的LED发光二极管点亮;当P0.x端开关断开时,对应的P1.x口的LED发光二极管不亮;3.完成全部程序和电路调试工作。

二、实验目的1.掌握STC12C5A16S2单片机的最基本电路的设计;2.了解单片机I/O端口的使用方法。

三、电路图1 电路图四、接线说明1.JP0连接JP10;2.JP1连接JP4;3.请勿将液晶屏和步进电机插上。

1.当P0.x 端开关闭合时,P0.x 端对应的IO 口为低电平,将相应P0.x 端对应的IO 口值赋给P1.x 端,二极管低电平点亮即可满足实验要求。

六、程序设计图2 流程图实验二 LED 轮换点亮实验一、实验要求1.利用SN74HC573对STC12C5A16S2单片机的P0口进行扩展,驱动LED 控制输出;2.编写程序,使P0.0~P0.7上的发光二极管循环点亮;P2.7控制SN74HC573芯片的使能;3.完成全部程序和电路调试工作。

二、实验目的1.掌握STC12C5A16S2单片机的I/O 电路设计; 2.学习SN74HC573数据锁存输出方法。

三、电路图1 电路图入口P0电平值赋给P1循环1.JP0连接JP15;2.请勿将液晶屏和步进电机插上。

五、原理说明1.数码管低电平有效;2.SN74HC573芯片,当锁存使能端LE为高时,这些器件的锁存对于数据是透明的(也就是说输出同步)。

精品课件-单片机原理及应用系统设计-第4章

精品课件-单片机原理及应用系统设计-第4章

;
PUSH
DPL
;
保护现场, 将主程序中
; DPTR的低八位放入堆
MOV
DPTR, #TABLE
; 在子程
第四章 单片机程序设计语言
恢复现场,
MOVC A, @A+DPTR
POP
DPL
将主程序中DPTR
; ;
;的低八位从堆栈中弹出
POP 场, 将主程序中DPTR
DPH
; 恢复现
;的高八位从堆栈中弹出
图 4-8 循环程序的典型形式
第四章 单片机程序设计语言
【例 4-4】 冒泡程序。假设有N个数, 它们依次存放 于LIST地址开始的存储区域中, 将N个数比较大小后, 使它 们按照由小到大的顺序排列,
编写该程序的方法: 依次将相邻两个单元的内容作比较, 即第一个数和第二个数比较,第二个数和第三个数比 较, ……, 如果符合从小到大的顺序则不改变它们在内存 中的位置,否则交换它们之间的位置。如此反复比较, 直到 数列排序完成为止。
LJMP MAIN
;
MAIN: MOV A, X
XRL A, Y
; (X)与(Y)进行异或操作
JB ACC.7, NEXT1
; 累加器A的第7位
为1, 两个数
;符号不同, 转移到
第四章 单片机程序设计语言
MOV
CJNE
转移到NEQUAL
CLR
P1.0置0
S
MOV DXCE1COUNTER, #00H
; 将DXCE1COUNTER赋值为0
而如下的注释则给出了额外有用的信息:
JNZ PC Comm_Err
;
第四章 单片机程序设计语言
(2) 注释应与其描述的代码相近, 对单条语句的注释应 放在其上方或右方相邻位置, 不可放在下面, 如放于上方

单片机整套实验及程序(交通灯_跑马灯等)

单片机整套实验及程序(交通灯_跑马灯等)

实验1 跑马灯实验一、实验目的●初步学会Proteus ISIS和uVision2单片机集成开发环境的使用;●初步掌握采用汇编语言与C语言开发单片机系统的程序结构;●掌握80C51单片机通用I/O口的使用;●掌握单片机内部定时/计数器的使用及编程方法以及中断处理程序的编写方法。

二、实验设备及器件●硬件:PC机,HNIST-1型单片机实验系统●软件:Proteus ISIS单片机仿真环境,uVision2单片机集成开发环境三、实验内容●编写一段程序,采用P1口作为控制端口,使与P1口相接的四个发光二极管(D1、D2、D3、D4)按照一定的方式点亮。

如点亮方式为:先点亮D1,延时一段时间,再顺序点亮D2……D4,然后又是D4……D1,同时只能有一个灯亮;然后每隔一段时间一次使相邻两个灯亮,三个灯亮,四个灯亮,最后闪烁三次,接着循环变化。

●基于Proteus ISIS仿真环境完成上述功能的仿真。

●基于uVision2单片机集成开发环境与硬件平台完成程序的脱机运行。

四、实验原理图图3.1 跑马灯实验电路原理图电路原理图如上图3.1所示,AT89S52的P1.0~P1.3控制4个发光二极管,发光二极管按照一定次序发光,相邻发光二极管的发光时间间隔可以通过定时器控制,还可以通过软件延时实现。

五、软件流程图与参考程序●主程序流程图如下:●参考程序#include<reg52.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intuchar aa,num,speed,flag;uchar code table[]={0x0e,0x0d,0x0b,0x07};uchar code table1[]={0x0a,0x05,0x09,0x06};uchar codetable2[]={0x0c,0x09,0x03,0x08,0x01,0x0e,0x0c,0x08,0x00};void delay(uint z)//延时函数{uint x;uchar y;for(x=z;x>0;x--)for(y=200;y>0;y--);}void init()//条件初始化函数{ flag=0;speed=10;//控制跑马灯流水速度TMOD=0x01;//中断方式TH0=(65535-50000)/256;TL0=(65536-50000)%256;//初值EA=1;//打开总中断ET0=1;//打开外中断0TR0=1;}void main(){init();//调用初始化函数while(1){if(flag){delay(2000);//调用延时函数for(num=0;num<4;num++)//从左至右间隔一个依次闪烁{P1=table[num];delay(2000);}for(num=3;num>0;num--)//从左至右间隔一个依次闪烁{P1=table[num];delay(2000);}for(num=0;num<4;num++)//从左至右间隔两个依次闪烁{P1=table1[num];delay(2000);}for(num=3;num>0;num--)//从左至右间隔两个依次闪烁{P1=table1[num];delay(2000);}for(num=0;num<6;num++)//两个,三个,四个跑马灯依次闪烁{P1=table2[num];delay(2000);}for(num=0;num<5;num++)//闪烁5次{P1=0xff;//全暗delay(2000);P1=0X00;//全亮delay(2000);}speed=speed-3;//变速if(speed==4){speed=10;}}}}void timer0() interrupt 1//中断函数{TH0=(65535-50000)/256;TL0=(65536-50000)%256;aa++;if(aa==speed){aa=0;flag=1;}}六、实验思考题●请用汇编指令完成本实验内容,深刻理解汇编语言程序设计结构。

单片机课程设计完整版《PWM直流电动机调速控制系统》

单片机课程设计完整版《PWM直流电动机调速控制系统》

单片机原理及应用课程设计报告设计题目:学院:专业:班级:学号:学生姓名:指导教师:年月日目录设计题目 (1)1 设计要求及主要技术指标: (1)1.1 设计要求 (1)1.2 主要技术指标 (2)2 设计过程 (2)2.1 题目分析 (4)2.2 整体构思 (4)2.3 具体实现 ................... 错误!未定义书签。

3 元件说明及相关计算 (5)3.1 元件说明 (5)3.2 相关计算 (6)4 调试过程 (6)4.1 调试过程 (6)4.2 遇到问题及解决措施 (7)5 心得体会 (7)参考文献 (8)附录一:电路原理图 (9)附录二:程序清单 (9)设计题目:PWM直流电机调速系统本文设计的PWM直流电机调速系统,主要由51单片机、电源、H桥驱动电路、LED 液晶显示器、霍尔测速电路以及独立按键组成的电子产品。

电源采用78系列芯片实现+5V、+15V对电机的调速采用PWM波方式,PWM是脉冲宽度调制,通过51单片机改变占空比实现。

通过独立按键实现对电机的启停、调速、转向的人工控制,LED实现对测量数据(速度)的显示。

电机转速利用霍尔传感器检测输出方波,通过51单片机对1秒内的方波脉冲个数进行计数,计算出电机的速度,实现了直流电机的反馈控制。

关键词:直流电机调速;定时中断;电动机;PWM波形;LED显示器;51单片机1 设计要求及主要技术指标:基于MCS-51系列单片机AT89C52,设计一个单片机控制的直流电动机PWM调速控制装置。

1.1 设计要求(1)在系统中扩展直流电动机控制驱动电路L298,驱动直流测速电动机。

(2)使用定时器产生可控的PWM波,通过按键改变PWM占空比,控制直流电动机的转速。

(3)设计一个4个按键的键盘。

K1:“启动/停止”。

K2:“正转/反转”。

K3:“加速”。

K4:“减速”。

(4)手动控制。

在键盘上设置两个按键----直流电动机加速和直流电动机减速键。

AT89C51单片机-毕业设计

AT89C51单片机-毕业设计

AT89C51单片机-毕业设计1.绪论 (3)1.1 课程设计要求 (3)1.2 数字电压表介绍 (3)2.硬件单元电路设计 (3)2.1数字电压表结构框图 (3)2.1.1 AT89C51单片机简介 (4) (5)2.1.3 时钟电路 (6)2.1.4 复位电路 (6)73 (7)789 (9)4.10 (10)10115.程序代码 (12)6.项目设计总计 (19)7.参考文献 (19)1.绪论1.1 课程设计要求使用单片机AT89C51和ADC0832设计一个数字电压表,能够测量0-5V之间的直流电压值,两位数码显示。

在单片机的作用下,能监测两路的输入电压值,用8位串行A/D转换器,8位分辨率,逐次逼近型,基准电压为 5V;能用两位LED进行轮流显示或单路选择显示,显示精度0.1伏。

1.2 数字电压表介绍数字电压表简称DVM,数字电压表基本原理是将输入的模拟电压信号转化为数字信号,再进行输出显示。

而A/D转换器的作用是将连续变化的模拟信号量转化为离散的数字信号,器基本结构是由采样保持,量化,编码等几部分组成。

因此AD转换是此次设计的核心元件。

输入的模拟量经过AD转换器转换,再由驱动器驱动显示器输出,便得到测量的数字电压。

2.硬件单元电路设计2.1数字电压表结构框图结构如(图1)所示2.1.1 AT89C51单片机简介AT89C51是一个低功耗,高性能CMOS 8位单片机,片内含4kBytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,AT89C51在众多嵌入式控制应用系统中得到广泛应用。

51单片机内包含以下几个部件:1) 8位微处理器(CPU)。

2) 数据存储器(128B RAM)。

单片机主程序流程

单片机主程序流程

单片机主程序流程1.初始化部分:单片机在执行主程序之前需要进行一些初始化操作,包括配置端口和寄存器的初始状态,设置中断和定时器,初始化外设等。

首先需要确定单片机的时钟源和时钟频率,并根据需要配置相应的时钟模块。

然后需要配置定时器和中断源,使得单片机能够在指定的时间间隔内执行特定的代码。

接下来需要初始化各个外设模块,包括ADC模块、串口模块、PWM模块等。

通过设置相应的寄存器标志位,使得外设能够正常工作。

这些初始化过程需要根据具体的单片机型号和外设模块进行操作。

2.循环部分:初始化完成后,单片机进入主循环部分。

主循环是单片机最重要的部分,其中包含了系统的核心功能和业务逻辑。

首先读取输入设备,例如检测按键的按下情况、读取传感器的数据等。

通过读取输入设备,可以获取外部环境的信息,并根据这些信息进行判断和处理。

然后进行数据处理和控制操作。

根据读取到的输入数据,进行算法运算、数据转换和逻辑判断等操作。

然后根据处理结果控制其他设备的状态,例如控制LED灯的亮灭、电机的运转等。

在循环过程中,可能还需要进行一些通信操作,例如与其他设备进行数据交换或通信。

需要根据具体的通信协议和通信方式进行配置和操作。

3.中断处理部分:除了主循环部分,单片机还需要处理各种中断事件,以及相应的中断服务程序。

这些中断事件通常是由外部的触发信号引起的。

例如,外部中断信号、定时器中断、串口接收中断等。

当发生中断事件时,单片机会在合适的时机中断主循环的执行,转而执行中断服务程序。

中断服务程序是一段特殊的代码,用来处理中断事件并响应。

执行完中断服务程序后,单片机会恢复到原来的位置继续执行主循环。

在中断服务程序中,通常需要保存现场、处理中断事件、清除中断标志位、恢复现场等。

需要根据中断源和中断向量表进行配置和编写相应的中断服务程序。

4.总结部分:在单片机主程序的末尾,通常需要进行总结和清理工作。

总结部分可以对程序的运行结果进行统计和分析,例如输出统计信息、保存运行数据等。

单片机控制秒表显示时间为00—99(每秒自动加1),暂停,复位

单片机控制秒表显示时间为00—99(每秒自动加1),暂停,复位
(3)二次接通电源,电路依然不工作。
(4)复查电路:重新检测电路,利用万用表电流档,检测电路电流,发现电路无电流,检查40引脚VCC,发现单片机40引脚与插座短路,接触不良导致,陆续检查其他引脚。发现还有部分引脚短路。
(5)继续检查电路,直至数码管显示数字为止。
结果显示,秒表运行正常。按照预期实现了99s计时、暂停以及继续的功能。
附件
1.利用单片机完成一定的任务,你的创意(创新)是什么?
我的创意就是电路的布局,实验操作起来与仿真不同,需要注意很多细节,例如原件检测。我的电路布局既节省空间,又不影响电路结构。
2.程序
#include<reg52.h>
sbit W=P1^4;
sbit H=P1^6;
unsigned char msec,sec;
void delay(unsigned char i)
{
unsigned int j,k;
for(k=0;k<i;k++)
for(j=0;j<255;j++);
}
void To_INT(void) interrupt 1
2.元器件作用
(1)STC89C52单片机在电子行业中有着广泛的应用。AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2 个读写口线,STC89C52可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的 Flash存储器可有效地降低开发成本。
9
创新实践实训报告
学院
信息电子技术学院
专业
电子信息工程

51单片机程序执行流程详细分析

51单片机程序执行流程详细分析

51单片机程序执行流程详细分析单片机执行程序的过程,侧重硬件过程为了加深初学者对51单片机指令的理解,现在把指令执行的过程在此详细说明,希望对你有启发!单片机执行程序的过程,实际上就是执行我们所编制程序的过程。

即逐条指令的过程。

计算机每执行一条指令都可分为三个阶段进行。

即取指令-----分析指令-----执行指令。

取指令的任务是:根据程序计数器PC中的值从程序存储器读出现行指令,送到指令寄存器。

分析指令阶段的任务是:将指令寄存器中的指令操作码取出后进行译码,分析其指令性质。

如指令要求操作数,则寻找操作数地址。

计算机执行程序的过程实际上就是逐条指令地重复上述操作过程,直至遇到停机指令可循环等待指令。

一般计算机进行工作时,首先要通过外部设备把程序和数据通过输入接口电路和数据总线送入到存储器,然后逐条取出执行。

但单片机中的程序一般事先我们都已通过写入器固化在片内或片外程序存储器中。

因而一开机即可执行指令。

下面我们将举个实例来说明指令的执行过程:开机时,程序计算器PC变为0000H。

然后单片机在时序电路作用下自动进入执行程序过程。

执行过程实际上就是取出指令(取出存储器中事先存放的指令阶段)和执行指令(分析和执行指令)的循环过程。

例如执行指令:MOV A,#0E0H,其机器码为“74H E0H”,该指令的功能是把操作数E0H送入累加器, 0000H单元中已存放74H,0001H单元中已存放E0H。

当单片机开始运行时,首先是进入取指阶段,其次序是:1. 程序计数器的内容(这时是0000H)送到地址寄存器;2. 程序计数器的内容自动加1(变为0001H);3. 地址寄存器的内容(0000H)通过内部地址总线送到存储器,以存储器中地址译码电跟,使地址为0000H的单元被选中;4. CPU使读控制线有效;5. 在读命令控制下被选中存储器单元的内容(此时应为74H)送到内部数据总线上,因为是取指阶段,所以该内容通过数据总线被送到指令寄存器。

n第八章_80C51单片机的应用系统实例(1)

n第八章_80C51单片机的应用系统实例(1)

第八章
80C51单片机的应用系统 实例
② 负电压发生电路主要产生一个-5 V的 电压,为仪表放大器U4(INA118)提供负 电源。电路由U7(7660)和电容C5、C6组 成。 ③仪表放大器U4(INA118)可将压力传 感器桥路输出的毫伏(mV)级电压放大,以 适应VF变换器U5(AD654)的需要。电阻 R7是调节仪表放大器的放大倍数用的。
第八章
80C51单片机的应用系统 实例
图8-2 主机板电路原理图
第八章
80C51单片机的应用系统 实例
(2) 信号电路板 信号电路板电路原理图如图8-3所示。它 通过插座W1与主机板联接,通过插座W与 压力传感器相联,通过插座W′与流速传感 器相联。其中包含压力信号调理电路、流 速信号调理电路和模拟电源控制电路。
第八章
80C51单片机的应用系统 实例
图8-3 信号电路板电路原理图
第八章
80C51单片机的应用系统 实例
(3) 通信接口板电路 通信接口板电路的原理图如图8-4所示。 当系统从井下采集完数据回到地面或进行 标定实验时,该板用插座W1’与主机板上的 W1联接。
第八章
80C51单片机的应用系统 实例
第八章
80C51单片机的应用系统 实例
2) 流速数据采集子程序 设定T0为定时器,定时时间为100 ms/次,采集时 间为6 s=100 ms/次×60次;设定 T1 为计数方 式,所计流量脉冲写入片外RAM中。
第八章
LIU: MOV MOV MOV MOV MOV
80C51单片机的应用系统 实例
第八章
8.1.1
80C51单片机的应用系统 实例
设计目标 本系统使用89C51作为控制芯片,对来自压力 及流速传感器的信号进行采集,并把采集到的数 据存放在数据存储器中。系统可以工作在标定和 实际测量两种工作状态下。标定状态是为了修正 系统误差而在测量前进行一组标准压力和流速数 据的测量。具有可与通用计算机联接的串行通信 接口。在等待状态时,系统工作在低功耗方式。 系统具有工作状态显示系统,可以显示标定、测 量、通信、等待等不同的工作状态。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SETB 01H; 20H.1位置1(执行闪烁功能2标志)
CLR 00H
CLR 02H
CLR 03H
OUT2: RET

;闪烁功能(备用)键处理程序
KEY3: LCALL DL10MS
END; 程序结束
12个经典单片机程序设计实例:
闪烁LED小灯主程序图
数码管时钟电路的主程序
单键学习型遥控器的设计
15路电器遥控器的设计
自行车里程/速度计的设计
自动往返行驶小汽车的设计
遥控小汽车的设计
数码管时钟电路的设计
8*8点阵LED字符显示器的设计
DJNZ R4,LOOP3
RET

;25ms延时子程序,调用扫键子程序延时,可快速读出功能按键值
DL25MS:MOV R5,#OFFH
LOOP4: LCALL KEYWORK
DJNZ R5,LOOP4
RET
FUNOO: MOV P1,A; 累加器值送至P1口
LCALL DL05S; 延时
JNB ACC.7.MAIN;累加器最高位为0时转MAIN
RL A; 累加器A中数据循环左移1位
AJMP FUNOO; 转FUNOO循环
JNB P3.0,KEYO;读P3.0口,若为0转KEYO
JNB P3.1,KEY1;读P3.1口,若为0转KEY1
JNB P3.2,KEY2;读P3.2口,若为0转KEY2
JNB P3.3,KEY3;读P3.3口,若为0转KEY3
本控制器在使用中,如要改变闪烁的方式,可按下相应的功能按键。当一个完整的闪烁循环结束后,即可转入新的闪烁方式。由于键扫描是在闪烁循环结束时进行,因此,功能开关按下的时间应较长才能被读入。改进的方法是把DL05S延时子程序用键扫描子程序来替代,这样,只要按下按键即可被键扫描程序读入。
以下是LED小灯闪烁控制器的完整源程序:
单片机教程 栏目导航 第一页..单片机入门教程 第二页..单片机c语言 第三页..红外遥控和步进电机 第四页..单片机问答
3.主程序流程图---51系列单片机设计实例教程
主程序流程图如图6.2所示。
图6.2 主程序流程图
8路输入模拟信号数值显示电路的设计
8路输入模拟信号数值显示电路程序
单键学习型遥控器的程序如果对本文有疑问,请到论坛提问 编辑:51单片机学习网 @ 2009-10-20校对 中国开发板最佳品牌 版权:部分由编辑摘引,权利属原著作人
JB P3.2,OUT2
SETB 02H; 20H.2位置1(执行闪烁功能3标志)
CLR 01H
CLR 00H
CLR 03H
OUT2: RET

;闪烁功能(备用)键处理程序
;* * * * * * * * * * * *;

CLEAR: MOV 20H,#00H;20H单元内存清0(闪烁标志清0)
SETB 00H; 20H.0位置1(上电时,自动执行闪烁功能1)
RET; 子程序返回
AJMP MAIN; 返回主程序MAIN

;* * * * * * * * * * * *;
; 功能程序 ;
;* * * * * * * * * * * *;
;第1种闪烁功能程序
FUNO: MOV A,OFEH; 累加器赋初值

ORG OOOOH;程序执行开始地址
LJMP START;跳至START执行
ORG OOO3H;外中断0中断入口地址
RETI; 中断返回(不开中断)
ORG OOOBH;定时器TO中断入口地址
RETI; 中断返回(不开中断)
ORG OO13H;外中断1中断入口地址
KEY3: LCALL DL10MS
JB P3.3,OUT3
SETB 03H; 20H.3位置1(执行闪烁功能3标志)
CLR 01H
CLR 02H
CLR 00H
;* * * * * * * * * * * *;
; 小灯控制程序 ;
;* * * * * * * * * * * *;

;* * * * * * * * * * * *;
; 中断入口程序 ;
;* * * * * * * * * * * *;
RETI; 中断返回(不开中断)
ORG 001BH;定时器T1中断入口地址
RETI; 中断返回(不开中断)
ORG 0023H;串行口中断入口地址
RETI; 中断返回(不开中断)

;* * * * * * * * * * * *;
; 初始化程Biblioteka ; ; ;* * * * * * * * * * * *;
; 主程序 ;
;* * * * * * * * * * * *;

START: ACALL CLEAR; 调用初始化子程序
MAIN: LCALL KEYWORK; 调用键扫描子程序
CLR 01H; 20H.1位清0
CLR 02H; 20H.2位清0
OUTO: RET; 子程序返回

;闪烁功能1键处理程序
KEY1: LCALL PL10MS
JB P3.1,OUT1
RET

;10ms延时子程序(调用20次0.5ms延时子程序)
DL10MS:MOV R3,#14H
LOOP2: LCALL DL512
DJNZ R3,LOOP2
RET

;延时子程序,改变R4寄存器初值可改变闪烁的快慢(时间为25msX15)
OUT3: RET

;* * * * * * * * * * * *;
; 延时程序 ;
;* * * * * * * * * * * *;
;延时子程序,执行一次时间为513us
DL512: MOV R2,#OFFH
LOOP1: DJNZ R2,LOOP1
LCALL DL05S; 延时
AJMP MAIN; 转MAIN
;* * * * * * * * * * * *;
; 扫键程序 ;
;* * * * * * * * * * * *;

KEYWORK:MOV P3#OFFH; 置P3口为输入状态
JB OOH,FUNO;20H.0位为1时执行FUNO
JB 01H,FUN1;20H.1位为1时执行FUN1
JB 02H,FUN2;20H.2位为1时执行FUN2
JB 03H,MAIN;备用
DL05s: MOV R4,#OFH
LOOP3: LCALL DL25MS
DJNZ R4,LOOP3
RET

;延时子程序,改变R4寄存器初值可改变闪烁的快慢(时间为25msX15)
DL05S: MOV R4,#OFH
LOOP3: LCALL DL25MS
RET; 子程序返回

;闪烁功能0键处理程序
KEYO: LCALL DL10MS; 延时10ms消抖
JB P3.0,OUTO;P3.0为1,子程序返回(干扰)
SETB OOH; 20H.0位置1(执行闪烁功能1标志)

;第2种闪烁功能程序
FUN1: MOV A,#OFEH; 累加器赋初值
FUN11: MOV P1,A; 累加器值送至P1口
LCALL DLO5S; 延时
CPL A; A中各位取反
MOV P1,A; 累加器值送至P1口
相关文档
最新文档