第一篇:单片机课程设计
目录
第 1 章
概述.....................................................................................6 第 2 章
单片机.................................................................................7
2.1 单片机简介及应用..................................................................7
2.2 AT89C51简介.......................................................................10
2.2.1主要特性..........................................................................11
2.2.2管脚说明..........................................................................11
2.2.3振荡器特性......................................................................12 第 3 章
电子时钟设计方案.............................................................13
3.1电子时钟简介...........................................................................13
3.2电子时钟的基本特点...............................................................13
3.3电子时钟的原理.......................................................................13 第 4 章
电子时钟硬件设计.............................................................15
4.1 Proteus的简介..........................................................................15
4.1.1 EDA工具软件的功能.....................................................15
4.1.2 特点.................................................................................16
4.2 电子时钟原理图及分析...........................................................17
4.2.1原理图...............................................................................17
4.2.2功能说明...........................................................................18 第 5 章
电子时钟软件设计..............................................................20
5.1 软件设计流程图........................................................................20
5.1.1 程序流程图.......................................................................20
5.1.2 源程序...............................................................................21
5.2 系统仿真及程序测试................................................................27 第 6 章
实验心得...............................................................................29 附录 元器件...........................................................................................30 参考文献.................................................................................................30
第一章 概述
一、设计目的
计算机控制系统课程设计是自动化专业的一个重要实践教学环节。在课程设计过程中,学生通过一个较完整的设计过程,可以加深对本门课程所学理论知识的理解与应用,提高学生对所学理论知识的综合运用能力,使学生对计算机控制系统有一个整体认识,掌握计算机控制系统的设计方法。通过课程设计,还可以培养学生独立工作能力,为将来毕业设计打好基础。
二、设计要求
1.用AT89C51单片机及接口电路设计一个电子计时器。
①系统硬件设计:根据任务要求,完成单片机最小系统及其扩展设计,组成功能完整的系统。
②系统软件设计:根据数字电子计时器功能,完成控制软件的编写与调试,并对数码显示进行控制。2.实现的功能:
①开机时,电子钟从12:00:00开始自动计时。②设置按键,能对时、分、秒进行调整。
三、设备及工作环境
1.硬件:计算机一台。
2.软件:Windows操作系统、单片机编译软件,proteus仿真软件。
四、设计思路
电子计时器主要由AT89C51、显示模块、控制模块和计时运算模块四大部分组成。其中控制模块和计时运算模块主要对时、分、秒的数值显示和调整进行操作,并且秒计算到60时,自动清零并向分进1;分计算到60时,自动清零并向时进1;时计算到24时,自动清零。这样,就形成了循环计时,显示模块主要用来显示当前计数值。A89C51是整个设计的核心,主要用来产生定时中断,传输数据和控制各个部件工作。
第二章 单片机
自从1971年微型计算机问世以来,随着大规模集成电路技术的进一步发展,导致微型计算机向两个方向发展:一是高速度、高性能、大容量的高档微型计算机及其系列化,向大、中型计算机的挑战;另一个是稳定可靠、小而廉、能适应各种控制领域需要的单片机。
2.1 单片机简介及应用 1.单片机的简介
单片机是把中央处理单元、随机存储器、只读存储器、定时/计数器以及I/O接口电路等主要部件集成在一块半导体芯片上的微型计算机。虽然单片机只是一个芯片,但从组成和功能上看,它已具有了微型计算机系统的含义,从某种意义上说,一块单片机芯片就是一台微型计算机。
自从1975年美国德克萨斯公司推出世界第一个4位单片机TMS——1000型以来,单片机技术不断发展,目前已成为微型计算机技术的一个独特分支,广泛应用于工业控制、仪器仪表智能化和家用电子产品等各个控制领域。2.单片机的发展
1975年4位单片机的产生开创了单片机的历史,由于4位单片机具有较高的性能价格比,主要用于家用电器和电子玩具,如电视机、空调机、洗衣机、微波炉等。
1976年美国Intel公司首次推出了8位单片机MCS-48系列,从而进入了8位单片机时代。1978年Motorola公司推出6801系列的8位机。早期的8位单片机的功能较差,一般都没有串行I/O口,几乎不带A/D、D/A转换器,中断控制和管理能力也较弱,并且寻址空间的范围小(小于8KB)。随着集成工艺水平的提高,一些高性能8位单片机相继问世,增加了通用串行通信控制,强化中断控制功能,增加了定时/计数器的个数,扩展了存储器的容量,部分系列单片机内还集成了A/D、D/A转换接口。如Intel公司的MCS-51系列、NEC公司的μPD78XX系列等。为了提高单片机的控制功能,拓展其应用领域,在高档8位单片机基础上,又推出新一代8位单片机,如Intel、Phillips、Atmel、华邦公司的80C51 系列,Motorola公司的MC68HC11系列,Microchip公司的PIC16C系列等。8位单片机功能强、品种多、价格低廉,因而广泛应用于各个领域。
继8位单片机以后,16位单片机逐渐问世并得到很大的发展,Intel公司于1983年推出的MCS-96系列单片机就是其中的典型产品。16位单片机的集成度更高,内部除有常规I/O口、定时/计数器、全双工串行口外,还有高速I/O部件、多路A/D转换器、脉冲宽度调制器及监视定时器等,运算速度更快。近年来还出现了32位单片机,例如英国Inmos公司的IMST414单片机、Intel公司的80960单片机、日本NEC公司的μPD77230单片机,可用于高速控制、图像处理、语音偶A/DA处理和数字滤波等
从单片机的结构上看,单片机的发展趋势将向着片内存储器容量增加、高性能、高速度、多功能、低电压、低功耗、低价格以及外围接口电路内装化等方向发展。
1.大容量和高性能化:新一代8位单片机的CPU及寄存器都采用16位,内部总线也采用16位,有的还采用流水线技术以及RISC精简指令集计算机技术,指令执行速度可达100ns,堆栈的空间达64KB,并支持C语言的开发。内部RAM在1MB以上,内部ROM可达48KB,存储器寻址可达16MB。
2.多样化的I/O口及电路内装化:随着集成度的不断提高,尽可能把众多的各种外围功能部件集成在片内。单片机内部一般带有存储器、定时/计数器、串行口、并行口,目前较高档的单片机内部还集成A/D、D/A、DMA控制器、声音发生器、监视定时器、液晶显示驱动、PWM端口、FIP控制、彩色电视机和录像机用的锁相电路等多样的I/O接口。
3.低功耗、宽范围的电源电压:许多单片机工作电压范围大,而且可在低电压下工作。
单片机的发展前景是非常乐观的,其应用范围也将更加广泛。3.单片机的特点
单片机结构上的设计主要是满足控制的需要,因此,它在硬件结构、指令系统及I/O能力等方面均有其独特之处,其显著的特点之一就是具有非常有效的控制功能,故也可以把单片机成为微控制器。
与普通的微型计算机相比,单片机主要具有以下特点:
4(1)体积小、结构简单、可靠性高 单片机把各功能部件集成在一块芯片上,内部采用总线结构,减少了各芯片之间的连线,大大提高了单片机的可靠性与抗干扰能力。另外,其体积小,对于强磁场环境易于采取屏蔽措施,适合于恶劣环境下工作。
(2)控制功能强 单片机虽然结构简单,但是它“五脏俱全”,已经具备了足够的控制功能。单片机具有较多的I/O口,CPU可以直接对I/O口进行I/O操作、算术操作、逻辑操作和位操作,指令简单而丰富。所以单片机也是“面向控制”的计算机。
(3)低电压、低功耗 单片机已可在2.2V的电压下运行,有的已能在1.2V或0.9V电压下工作;工耗降至μA级,一颗纽扣电池就可以长期使用。
(4)优异的性能价格比 由于单片机构成的控制系统硬件结构简单、开发周期短、控制功能强、可靠性高,因此,在达到同样功能的条件下,用单片机开发的控制系统比用其他类型的微型计算机开发的控制系统价格更便宜。
4.单片机的应用与89C51单片机的介绍
由于单片机具有上述显著特点,所以其应用领域无所不及,到处都有它的身影。
A、单片机的典型应用领域
(1)工业控制 单片机广泛用于工业自动化控制系统中,数据采集、过程控制、过程测控和生产线上的机器人系统,都是用单片机作为控制器。自动化使工业系统处于最佳工作状态,从而提高经济效益、、改善产品质量和减轻劳动强度,因此单片机技术广泛应用与机械、电子、石油、化工、纺织和食品等工业领域中。
(2)智能化仪器仪表 在各类仪器仪表中引入单片机,可以使仪器仪表智能化、数字化、自动化,提高测试精度和准确度,简化结构,减小体积及重量,提高性能价格比。例如:只智能仪器,医疗器械和数字示波器等。
(3)智能家电 家电产品智能化程度的进一步提高需要有单片机的参与,例如“微电脑控制”的洗衣机、电冰箱、微波炉、空调机、电视机和音响设备等,这里的 “微电脑”实际上就是单片机。
(4)信息与通信技术 图形终端机、传真机、复印机、调制解调器、声像 5 处理器和数字滤波器等。
5.单片机的应用实例
下面以单片机在遥控及数字调谐电视接收机中的应用为例进行介绍。单片机在电视接收机中的应用,大致分为两个领域:一是用于操作控制系统;二是用于图像、声音信息的处理。属于前一领域的应用有红外遥控、数字调谐、节目预约、功能显示和语言遥控等。
现在以数字调谐选台电路为例加以说明,如图1所示。当进行预置选台是,有本机键盘或遥控发出预置选台指令、单片机控制器读入指令后首先进行解码(通过执行解码程序完成,每一种控制功能都对应一段控制程序,分别写于程序存储器ROM中的不同区域,用地址码来选择)。解码的结果是识别出输入的控制功能指令代码所代表的控制功能,即找到该控制功能所对应控制程序的首地址,然后从该首地址开始执行这段程序。在控制程序的控制下,对时钟脉冲进行变换处理,由微控制器的搜索计数器进行加减计数,产生数字选台数据,其中数字频信息送至频段译码电路,得到三个频段(VL、VH、U)的控制电压送至调谐器完成频段的切换;而数字调谐电压信息送至微控制器内的D/A转换器,以便合成频率和宽度为特定值的脉冲宽度调制(PWM)信号,经低通滤波器变换成直流调谐控制电压VT,也送至调谐器进行频段内不同频道的选择,两种信号共同作用完成选台。控制电路还送出供显示选台及接收机调整状态的标记用的信号。
2.2
AT89C51简介
AT89C51 AT89C51 单片机简介 AT89C51 是一种带 4K 字节闪烁可编程可擦除只读存储器(FPEROM— Falsh Programmable and Erasable Read Only Memory)的低电压,高性能 CMOS8 位微处理器,俗称单片机。A单片机的可擦除只读存储器可以反复擦除 100 次。该 器件采用 ATMEL 高密度非易失存储器制造技术制造,与工业标准的 MCS-51 指令 集和输出管脚相兼容。由于将多功能 8 位 CPU 和闪烁存储器组合在单个芯片中,ATMEL 的 AT89C51 是一种高效微控制器。
2.2.1主要特性
与 MCS-51 兼容;4K 字节可编程闪烁存储器;寿命:1000 写/擦循环;数据保留时间:10 年;全静态工作:0Hz-24Hz;三级程序存储器锁定;128*8 位内部 RAM;32 可编程 I/O 线;两个 16 位定时器/计数器;5 个中断源;可编程串行通道;低功耗的闲置和掉电模式;片内振荡器和时钟电路。
2.2.2管脚说明
VCC:供电电压。GND:接地。P0 口:P0 口为一个 8 位漏级开路双向 I/O 口,每脚可吸收 8TTL 门电流。当 P1 口的管脚第一次写 1 时,被定义为高阻输入。P0 能够用于外部程序数据 存储器,它可以被定义为数据/地址的第八位。在 FIASH 编程时,P0 口作为原 码输入口,当 FIASH 进行校验时,P0 输出原码,此时 P0 外部必须被拉高。P1 口:P1 口是一个内部提供上拉电阻的 8 位双向 I/O 口,P1 口缓冲器能 接收输出 4TTL 门电流。P1 口管脚写入 1 后,被内部上拉为高,可用作输入,P1 口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在 FLASH 编程和校验时,P1 口作为第八位地址接收。P2 口:P2 口为一个内部上拉电阻的 8 位双向 I/O 口,P2 口缓冲器可接收,输出 4 个 TTL 门电流,当 P2 口被写“1”时,其管脚被内部上拉电阻拉高,且 作为输入。并因此作为输入时,P2 口的管脚被外部拉低,将输出电流。这是由 于内部上拉的缘故。P2 口当用于外部程序存储器或 16 位地址外部数据存储器 进行存取时,P2 口输出地址的高八位。在给出地址“1”时,它利用内部上拉 优势,当对外部八位地址数据存储器进行读写时,P2 口输出其特殊功能寄存器 的内容。P2 口在 FLASH 编程和校验时接收高八位地址信号和控制信号。P3 口:P3 口管脚是 8 个带内部上拉电阻的双向 I/O 口,可接收输出 4 个 TTL 门电流。当 P3 口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3 口将输出电流(ILL)这是由于上拉的 缘故。P3 口也可作为 AT89C51 的一些特殊功能口,如下表所示: 口管脚 备选功能 P3.0 RXD(串行输入口)P3.1 P3.2 P3.3 P3.4 P3.5 TXD(串行输出口)/INT0(外部中断 0)/INT1(外部中断 1)T0(记时器 0 外部输入)T1(记时器 1 外部输入)P3.6 /WR(外部数据存储器写选通)P3.7 /RD(外部数据存储器 读选通)P3 口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持 RST 脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地 位字节。在 FLASH 编程期间,此引脚用于输入编程脉冲。在平时,ALE 端以不 变的频率周期输出正脉冲信号,此频率为振荡器频率的 1/6。因此它可用作对 外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器 时,将跳过一个 ALE 脉冲。如想禁止 ALE 的输出可在 SFR8EH 地址上置 0。此时,ALE 只有在执行 MOVX,MOVC 指令是 ALE 才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态 ALE 禁止,置位无效。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个 机器周期两次/PSEN 有效。但在访问外部数据存储器时,这两次有效的/PSEN 信 号将不出现。/EA/VPP:当/EA 保持低电平时,则在此期间外部程序存储器(0000HFFFFH),不管是否有内部程序存储器。注意加密方式 1 时,/EA 将内部锁定为 RESET;当/EA 端保持高电平时,此间内部程序存储器。在 FLASH 编程期间,此 引脚也用于施加 12V 编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。
2.2.3振荡器特性
XTAL1 和 XTAL2 分别为反向放大器的输入和输出。该反向放大器可以配置 为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2 应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外 部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
图 AT89C51
第三章 电子时钟设计方案
3.1电子时钟简介
电子钟亦称数显钟(数字显示钟),是一种用数字电路技术实现时、分、秒计时的装置,与机械时钟相比,直观性为其主要显著特点,且因非机械驱动,具有更长的使用寿命,相较石英钟的石英机芯驱动,更具准确性。电子钟已成为人们日常生活中必不可少的必需品,广泛用于个人家庭以及车站、码头、剧院、办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大地方便。
相对于其他时钟类型,它的特点可归结为“两强一弱 ”:比机械钟强在观时显著,比石英钟强在走时准确,但是它的弱点为显时较为单调。
3.2电子时钟的基本特点
本设计由单片机 AT89C51 芯片和 LED 数码管为核心,辅以必要的电路,构成了一个单片机电子时钟。与传统机械表相比,它具有走时精确,显示直观等特点。它的计时周期为 24 小时,显满刻度为“23 时 59 分 59 秒”,另外具有校时功能等特点。该电子钟可以做到的功能:上电或按键复位后能自动显示系统提示符“P.”进入时钟准备状态 2.第一次按电子钟启动/ 调整键,电子钟从 0 时 0 分 0 秒开始运行,进入时钟运行状态。再次按电子钟启动/调整键,则电子钟进入时钟调整状态,此时可利用各调整键调整时间,调整结束后可按启动/调整键 再次进入时钟运行状态。通过设置的 A、B、C、D 四个键来调整运行,并且利用了 8 位 LED 显示时分秒。
3.3电子时钟的工作原理
电子钟是一个将“ 时”,“分”,“秒”显示于人的视觉器官的计时装置。它的计时周期为24小时,显示满刻度为23时59分59秒,具有校时功能和报时功能。因此,一个基本的数字钟电路主要由译码显示器、“时”,“分”,“秒”计数器、校时电路、报时电路和振荡器组成。主电路系统由秒信号发生器、“时、分、秒”计数器、译码器及显示器、校时电路、整点报时电路组成。秒信号产生器是整个系统的时基信号,它直接决定计时系统的精 度,一般用石英晶体振荡器加分频器来实现。将标准秒信号送入“秒计数器”,“秒计数器”采用60进制计数器,每累计60秒发出一个“分脉冲”信号,该信号将作为“分计数器”的时钟脉冲。“分计数器”也采用60进制计数器,每累计60分钟,发出一个“时脉冲”信号,该信号将被送到“时计数器”。“时计数器”采用24进制计时器,可实现对一天24小时的累计。译码显示电路将“时”、“分”、“秒”计数器的输出状态用七段显示译码器译码,通过七段显示器显示出来。整点报时电路时根据计时系统的输出状态产生一脉冲信号,然后去触发一音频发生器实现报时。校时电路时用来对“时”、“分”、“秒”显示数字进行校对调整。
第 四 章
电子时钟硬件设计
4.1 Proteus的简介
Proteus(海神)的ISIS是一款Labcenter出品的电路分析实物仿真系统,可仿真各种电路和IC,并支持单片机,元件库齐全,使用方便,是不可多得的专业的单片机软件仿真系统。
4.1.1 EDA
工具软件的功能
(1)智能原理图设计(ISIS)
丰富的器件库:超过27000种元器件,可方便地创建新元件;
智能的器件搜索:通过模糊搜索可以快速定位所需要的器件;
智能化的连线功能:自动连线功能使连接导线简单快捷,大大缩短绘图时间;
支持总线结构:使用总线器件和总线布线使电路设计简明清晰;
可输出高质量图纸:通过个性化设置,可以生成印刷质量的BMP图纸,可以方便地供WORD、POWERPOINT等多种文档使用。
(2)完善的电路仿真功能(Prospice)
※ ProSPICE混合仿真:基于工业标准SPICE3F5,实现数字/模拟电路的混合仿真;
※ 超过27000个仿真器件:可以通过内部原型或使用厂家的SPICE文件自行设计仿真器件,Labcenter也在不断地发布新的仿真器件,还可导入第三方发布的仿真器件;
※ 多样的激励源:包括直流、正弦、脉冲、分段线性脉冲、音频(使用wav文件)、指数信号、单频FM、数字时钟和码流,还支持文件形式的信号输入;
※ 丰富的虚拟仪器:13种虚拟仪器,面板操作逼真,如示波器、逻辑分析 11 仪、信号发生器、直流电压/电流表、交流电压/电流表、数字图案发生器、频率计/计数器、逻辑探头、虚拟终端、SPI调试器、I2C调试器等;
※ 生动的仿真显示:用色点显示引脚的数字电平,导线以不同颜色表示其对地电压大小,结合动态器件(如电机、显示器件、按钮)的使用可以使仿真更加直观、生动;
※ 高级图形仿真功能(ASF):基于图标的分析可以精确分析电路的多项指标,包括工作点、瞬态特性、频率特性、传输特性、噪声、失真、傅立叶频谱分析等,还可以进行一致性分析;
(3)独特的单片机协同仿真功能(VSM)
※ 支持主流的CPU类型:如ARM7、8051/
52、AVR、PIC10/
12、PIC16、PIC18、PIC24、dsPIC33、HC11、BasicStamp、8086、MSP430等,CPU类型随着版本升级还在继续增加,如即将支持CORTEX、DSP处理器;
※ 支持通用外设模型:如字符LCD模块、图形LCD模块、LED点阵、LED七段显示模块、键盘/按键、直流/步进/伺服电机、RS232虚拟终端、电子温度计等等,其COMPIM(COM口物理接口模型)还可以使仿真电路通过PC机串口和外部电路实现双向异步串行通信;
※ 实时仿真:支持UART/USART/EUSARTs仿真、中断仿真、SPI/I2C仿真、MSSP仿真、PSP仿真、RTC仿真、ADC仿真、CCP/ECCP仿真;
※ 编译及调试:支持单片机汇编语言的编辑/编译/源码级仿真,内带8051、AVR、PIC的汇编编译器,也可以与第三方集成编译环境(如IAR、Keil和Hitech)结合,进行高级语言的源码级仿真和调试;
4.1.2 特点
① 全部满足我们提出的单片机软件仿真系统的标准,并在同类产品中具有明显的优势。
②具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿 12 真、RS-232动态仿真、C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。
③ 目前支持的单片机类型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。
④ 支持大量的存储器和外围芯片。总之该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大,可仿真
51、AVR、PIC。
4.2 电子时钟原理图及分析
4.2.1原理图
1.系统总体原理图
图1系统总体原理图
4.2.2功能说明
1.整体功能说明
在LED数码管上能实现数字计时器的时、分、秒显示,并能对时、分、秒进行加1校对和清零.通过控制键控制计时器的开始,暂停,继续和清零.并且开机时时钟时从00:00:00开始计时的。
2.模块功能说明
(1)AT89C51简介,如下图
图2 AT89C51引脚图
①TMOD定时器/计数器方式寄存器
定时器方式控制寄存器TMOD在特殊功能寄存器中,字节地址为89H,无位地址。
②TCON定时器/计数器控制寄存器
TCON在特殊功能寄存器中,字节地址为88H,位地址(由低位到高位)为 14 88H--8FH,由于有位地址,十分便于进行位操作。③定时器/计数器的初始化
由于定时器/计数器的功能是由软件编程确定的,所以一般在使用定时/计数器前都要对其进行初始化,使其按设定的功能工作.初始货的步骤一般如下:
1、确定工作方式(即对TMOD赋值),预置定时或计数的初值。
2、根据需要开放定时器/计数器的中断(直接对IE位赋值)。
3、启动定时器/计数器。(2)时钟电路
单片机芯片可使用内部时钟电路和外部时钟电路两种方式产生电路所需的时钟脉冲,内部时钟电路实现可用石英晶体和微调电容外接即可达到,外部时钟电路实现需要一个外部脉冲源引入脉冲信号以保证个单片机之间时钟信号的同步。从硬件实现难易角度考虑,内部时钟电路的实现比外部时钟电路的实现更简易。既本数字电子钟设计所需的时钟源采用内部时钟电路实现。所用定时方式为工作方式1,石英晶振为12M,即最小定时时间为1us,最大定时时间约为65.5ms,其电路图如下图2所示。
图3 时钟电路图(3)LED数码管
7SEG-MPX6-CC是7段6位共阴级数码管,DP为小数点,位码(1-6)应轮流通低电位,段码控制数码管的显示:0-b,1-g,2-a,3-f,4-c,5-e,6-h,7-d.共阴极LED数码管,它是将发光二极管的阴极(负极)短接后作为公共阴极.当驱动信号为高电平才能发光。
第
五 章
电子时钟软件设计
5.1 软件设计流程图
5.1.1 程序流程图.1.时钟显示程序流程图 时钟显示程序流程图如下图
图 4 时钟显示程序流程图
5.1.2 源程序
源程序清单
ORG 0000H LJMP MAIN ORG 0003H LJMP MIAO ORG 000BH LJMP SHI ORG 0013H LJMP FEN ORG 001BH LJMP SZ
MAIN:
MOV R7, #20 MOV R4, #00H MOV R5, #00H MOV R6, #00H
MOV TMOD, #16H MOV TH1, #3CH MOV TL1, #0B0H MOV TH0, #0FFH MOV TL0, #0FFH SETB TR0 SETB
TR1 SETB EA SETB ET1 SETB PT1 SETB IT0 SETB IT1 CLR EX0 CLR EX1 CLR ET0
LOOP:
MOV A, R4
MOV B, #10 DIV AB MOV DPTR, #TAB MOVC A, @A+DPTR MOV P0, A MOV P1,#01H LCALL DELAY MOV P0, #0FFH MOV A, B
MOVC A, @A+DPTR MOV P0, A MOV P1,#02H LCALL DELAY MOV P0, #0FFH MOV P2, #0FFH JNB
P2.0,TIAOJIE
MOV P1, #04H MOV P0, #0F6H LCALL DELAY MOV P0,#0FFH MOV A, R5
MOV B, #10 DIV AB MOV DPTR, #TAB MOVC A, @A+DPTR MOV P0, A MOV P1,#08H LCALL DELAY MOV P0, #0FFH MOV A, B
MOVC A, @A+DPTR MOV P0, A MOV P1,#10H LCALL DELAY MOV P0, #0FFH MOV P2, #0FFH
JNB
P2.0,TIAOJIE
MOV P1, #20H MOV P0, #0F6H LCALL DELAY
MOV P0, #0FFH MOV A, R6
MOV B, #10 DIV AB MOV DPTR, #TAB MOVC A, @A+DPTR MOV P0, A MOV P1,#40H LCALL DELAY MOV P0, #0FFH MOV A, B
MOVC A, @A+DPTR MOV P0, A MOV P1,#80H LCALL DELAY MOV P0, #0FFH MOV P2, #0FFH JNB
P2.0,TIAOJIE
LCALL DELAY LJMP
LOOP
TIAOJIE:CPL ET0
CPL ET1
CPL EX0
CPL EX1
LJMP LOOP
DELAY: MOV R3, #100
DEL2:
MOV R2, #10
NOP
DJNZ
R2,$
DJNZ
R3,DEL2
RET LCALL DELAY LJMP LOOP
ORG
0100H SZ: PUSH ACC
MOV TH1, #3CH
MOV TL1, #0B0H DJNZ R7, L2 MOV R7, #20 INC R4 MOV A, R4 CJNE A, #60, L2 MOV R4, #00H INC R5
MOV A, R5 CJNE A, #60, L2 MOV R5, #00H INC R6 MOV A, R6 CJNE A, #12, L2 MOV R6, #00H L2: POP ACC RETI ORG
0200H MIAO:
CLR EA INC R4 SETB EA
RETI FEN: CLR EA INC R5 SETB EA RETI SHI:
CLR EA INC R6 SETB EA RETI
TAB:
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
5.2 系统仿真及程序测试
1.调秒
图5 调秒原理图
2.调分
图6调分原理图
3.调时
图7调时原理图
第
六 章
实验心得
这个星期参加单片机实习,让我受益匪浅。通过这次的实训,让我学会了Proteus和Keil软件的使用。整个设计通过了软件和硬件上的调试。我想这对于自己以后的学习和工作都会有很大的帮助。在这次设计中遇到了很多实际性的问题,在实际设计中才发现,书本上理论性的东西与在实际运用中的还是有一定的出入的,所以有些问题不但要深入地理解,而且要不断地更正以前的错误思维。一切问题必须要靠自己一点一滴的解决,而在解决的过程当中你会发现自己在飞速的提升。对于教材管理系统,其程序是比较简单的,主要是解决程序设计中的问题,而程序设计是一个很灵活的东西,它反映了你解决问题的逻辑思维和创新能力,它才是一个设计的灵魂所在。因此在整个设计过程中大部分时间是用在程序上面的。很多子程序是可以借鉴书本上的,但怎样衔接各个子程序才是关键的问题所在,这需要对系统的结构很熟悉。因此可以说系统的设计是软件和硬件的结合,二者是密不可分的。通过这次课程设计我也发现了自身存在的不足之处,虽然感觉理论上已经掌握,但在运用到实践的过程中仍有意想不到的困惑,经过一番努力才得以解决。
在老师的精心指导下,花费的时间与精力终于没有白费,效果渐渐地出现了。这是我们共同努力的结果,在享受我们成果之时,不得不感慨单片机的重要性与高难度性,所以为期一周的单片机课程设计没有浪费,我们从中学到了很多知识。也让我们对单片机有了更深一步的了解。
附录 元器件 AT89C51
1个 8位数码管
1个 电阻
电容
晶振
按键
电源
GND
13个 3个 1个 4个
3个 4个 26
参考文献
[1]李朝清.单片机原理与接口技术[M].北京航空航天大学出版社。2005.10.[2]耿永刚.单片机与接口应用技术[M].华东师范大学出版社.2008.4.[3]范立南, 谢子殿.单片机原理及应用教程[M].北京大学出版社.2006.1.[4]梅丽凤.王艳秋,汪毓铎.单片机原理及接口技术[M].清华大学出版社.2003.5.[5]何立民.单片机应用系统设计[M].北京航空航天大学出版社.2002.[6]胡汉才.单片机原理及其接口技术[M].清华大学出版社.2004.10.27
第二篇:单片机课程设计
设计题目: 单片机课程设计
学生姓名:
学
院: 电气与信息工程学院
班
级: 电子111班 指导教师:
日 期: 2014年9月20日
一、课程设计目的:
了解电子元器件的功能与原理,掌握单片机的结构和原理,学会使用单片机应用开发技术的相关软件如 keill、STC_ISP_V394等,能够使用c语言的语言编程简单的功能。
二、设计的思想:
利用所提供的单片机和开发板的原理图用keill软件编程程序以实现一些功能。然后用STC_ISP_V394.exe软件将编译完全正确的程序生成的hxe文件下载到开发板上,再调试编译的程序能否实现其所设计的功能。
1、对蜂鸣器的了解:
蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,它由振荡器、电磁线圈、磁铁、振动膜片及外壳组成,接通电源后,振荡器产生的音频信号由电流通过电磁线圈,使电磁线圈产生磁场,振动膜片在电磁线圈和磁铁的相互作用下,周期性的振动发声。
2、设计:
我们所使用的开发板实物图如图一,单片机对右上角蜂鸣器的控制是加入三极管接入vcc,单片机的第22引脚和负极上,以此来控制蜂鸣器工作。单片机我们选择STC89C52RC+1602液晶来实现对蜂鸣器的控制及显示所需要的信息。
图一 调试说明:
首先用Keil软件创建一个工程,将程序源代码输入并编译生成单片可执行的.hex文件。其次,打开单片机实践板的电源,接好串口线,用STC-ISP烧录软件,将.hex文件烧录入单片机中。程序下载完毕后,单片机会自动执行程序功能。最后,观察程序功能的执行情况,看是否达到了设计要求。
如果单片机实践板硬件电路的执行结果与设计结果一致,则说明设计过程及流程没有问题,完全符合设计要求。否则,先检查单片机实践板的硬件电路是否完好,是否有断点、漏焊、虚焊以及元器件是否完好等情况,排除故障重新连接后重新进行调试。如果仍然无法正
常实现,则说明程序编写有误,需要认真检查程序流程,然后经过反复的修改与调试排除故障,实现设计要求的各项功能。编译和烧写该程序到单片机:
(1)用Keil编译上面的代码,并设置产生16进制代码文件*.hex.(2)用专用下载线,连接好实验板和电脑串口(DB9)(2)运行hex文件烧写软件STC_ISP_V394.exe
选单片机的型号,并打开编译产生好的hex文件
点击下载,给开发板上电。
3、实现的功能:使用单片机将歌曲《八月桂花》的调子通过蜂鸣器播放出来,用1602液晶将想要表达的信息有步骤地显示在液晶显示屏上,并且调子与显示内容可以任意通过修改的程序烧录到单片机内,实现设计产品的使用性与灵活性。
三、实验程序:
/************************************************************************
[主题] C51音乐程序《八月桂花》
[功能]
通过单片机演奏音乐,显示一些内容
/**********************************************************************/
#include
#include
//本例采用89C52, 晶振为11.0592MHZ
//关于如何编制音乐代码, 其实十分简单,各位可以看以下代码.//频率常数即音乐术语中的音调,而节拍常数即音乐术语中的多少拍;
//所以拿出谱子, 试探编吧!
unsigned char i=0;sbit Beep = P2^7;
unsigned char p,m;
//m为频率常数变量
unsigned char n=0;//n为节拍常数变量
unsigned char code music_tab[] ={
0x18, 0x30, 0x1C , 0x10, //格式为: 频率常数, 节拍常数, 频率常数, 节拍常数,0x20, 0x40, 0x1C , 0x10,0x18, 0x10, 0x20 , 0x10,0x1C, 0x10, 0x18 , 0x40,0x1C, 0x20, 0x20 , 0x20,0x1C, 0x20, 0x18 , 0x20,0x20, 0x80, 0xFF , 0x20,0x30, 0x1C, 0x10 , 0x18,0x20, 0x15, 0x20 , 0x1C,0x20, 0x20, 0x20 , 0x26,0x40, 0x20, 0x20 , 0x2B,0x20, 0x26, 0x20 , 0x20,0x20, 0x30, 0x80 , 0xFF,0x20, 0x20, 0x1C , 0x10,0x18, 0x10, 0x20 , 0x20,0x26, 0x20, 0x2B , 0x20,0x30, 0x20, 0x2B , 0x40,0x20, 0x20, 0x1C , 0x10,0x18, 0x10, 0x20 , 0x20,0x26, 0x20, 0x2B , 0x20,0x30, 0x20, 0x2B , 0x40,0x20, 0x30, 0x1C , 0x10,0x18, 0x20, 0x15 , 0x20,0x1C, 0x20, 0x20 , 0x20,0x26, 0x40, 0x20 , 0x20,0x2B, 0x20, 0x26 , 0x20,0x20, 0x20, 0x30 , 0x80,0x20, 0x30, 0x1C , 0x10,0x20, 0x10, 0x1C , 0x10,0x20, 0x20, 0x26 , 0x20,0x2B, 0x20, 0x30 , 0x20,0x2B, 0x40, 0x20 , 0x15,0x1F, 0x05, 0x20 , 0x10,0x1C, 0x10, 0x20 , 0x20,0x26, 0x20, 0x2B , 0x20,0x30, 0x20, 0x2B , 0x40,0x20, 0x30, 0x1C , 0x10,0x18, 0x20, 0x15 , 0x20,0x1C, 0x20, 0x20 , 0x20,0x26, 0x40, 0x20 , 0x20,0x2B, 0x20, 0x26 , 0x20,0x20, 0x20, 0x30 , 0x30,0x20, 0x30, 0x1C , 0x10,0x18, 0x40, 0x1C , 0x20,0x20, 0x20, 0x26 , 0x40,0x13, 0x60, 0x18 , 0x20,0x15, 0x40, 0x13 , 0x40,0x18, 0x80, 0x00
};
void int0()interrupt 1
//采用中断0 控制节拍
{ TH0=0xd8;
TL0=0xef;
n--;
}
void delay(unsigned char m)
//控制频率延时
{
unsigned i=3*m;
while(--i);
}
void delayms(unsigned char a)//豪秒延时子程序
{
while(--a);
//采用while(--a)不要采用while(a--);各位可编译一下看看汇编结果就知道了!
}
typedef unsigned char BYTE;typedef bit BOOL;
sbit LCD_RS = P2^0;
sbit LCD_RW = P2^1;sbit LCD_EP = P2^2;
BYTE code dis1[] = {“
WLCOME TO
”};BYTE code dis2[] = {“
DanPianJi ”};BYTE code dis3[] = {“
111iZnaiD
”};BYTE code dis4[] = {“
eiXeiX ”};
delays(int ms){
// 延时子程序 int i;while(ms--){
for(i = 0;i< 250;i++)
{
_nop_();
_nop_();
_nop_();
_nop_();
} } }
BOOL lcd_bz(){
// 测试LCD忙碌状态 BOOL result;LCD_RS = 0;LCD_RW = 1;LCD_EP = 1;_nop_();_nop_();_nop_();_nop_();result =(BOOL)(P0 & 0x80);LCD_EP = 0;return result;}
lcd_wcmd(BYTE cmd){
while(lcd_bz());LCD_RS = 0;LCD_RW = 0;LCD_EP = 0;_nop_();_nop_();P0 = cmd;_nop_();_nop_();_nop_();_nop_();LCD_EP = 1;_nop_();_nop_();_nop_();_nop_();LCD_EP = 0;
}
lcd_pos(BYTE pos){
lcd_wcmd(pos | 0x80);
// 写入指令数据到LCD //设定显示位置
}
lcd_wdat(BYTE dat)
{
//写入字符显示数据到LCD while(lcd_bz());LCD_RS = 1;LCD_RW = 0;LCD_EP = 0;P0 = dat;_nop_();_nop_();_nop_();_nop_();LCD_EP = 1;_nop_();_nop_();_nop_();_nop_();LCD_EP = 0;}
lcd_init(){
lcd_wcmd(0x38);
delays(1);lcd_wcmd(0x0c);
delays(1);lcd_wcmd(0x06);
delays(1);lcd_wcmd(0x01);
delays(1);}
void main()
{
BYTE j;
lcd_init();
delays(10);
//LCD初始化设定
//16*2显示,5*7点阵,8位数据//显示开,关光标 //移动光标 //清除LCD的显示内容
// 初始化LCD
lcd_wcmd(0x06);
//向右移动光标
lcd_pos(0);
//设置显示位置为第一行的第1个字符
j = 0;
while(dis1[ j ]!= ' ')
{
//显示字符“Welcome TO”
lcd_wdat(dis1[ j ]);
j++;
delays(30);
//控制两字之间显示速度
}
lcd_pos(0x40);
j = 0;
while(dis2[ j ]!= ' ')
{
lcd_wdat(dis2[ j ]);
j++;
delays(30);
}
delays(800);
lcd_wcmd(0x01);
delays(1);
lcd_wcmd(0x04);
lcd_pos(15);
j = 0;
while(dis3[ j ]!= ' ')
{
lcd_wdat(dis3[ j ]);
j++;
delays(30);
}
lcd_pos(0x4F);
j= 0;
while(dis4[ j ]!= ' ')
{
lcd_wdat(dis4[ j ]);
j++;
delays(30);
}
delays(800);
//设置显示位置为第二行第1个字符 //显示字符“ DanPianJi ”
//控制两字之间显示速度
//控制停留时间
//清除LCD的显示内容
//向左移动光标
//设置显示位置为第一行的第16个字符
//显示字符“DianZi111”
//控制两字之间显示速度
//设置显示位置为第二行的第16个字符//显示字符“ XieXie ”
//控制两字之间显示速度
//控制停留时间
TMOD&=0x0f;
TMOD|=0x01;
TH0=0xd8;TL0=0xef;
IE=0x82;
play:
while(1)
{
a: p=music_tab[i];
if(p==0x00)
{ i=0, delayms(1000);goto play;}
//如果碰到结束符,延时1秒,回到开始再来一遍
else if(p==0xff){ i=i+1;delayms(100),TR0=0;goto a;} //若碰到休止符,延时100ms,继续取下一音符
else
{m=music_tab[i++], n=music_tab[i++];} //取频率常数 和 节拍常数
TR0=1;
//开定时器1
while(n!=0)Beep=~Beep,delay(m);
//等待节拍完成, 通过P1口输出音频(可多声道哦!)
TR0=0;
//关定时器1
}
}
四、电路图的protue仿真
五、单片机课程设计心得体会:
这个学期的单片机课已经早早的上完了,但是理论纯属理论,没有与实践的结合总让我们学的不踏实,感觉没有达到学以致用的效果。所庆幸的是在课程介绍考试完之后,老师给我们安排了这次单片机课程设计,给了我们学以致用的做好的实践
关于这次课程设计,我们花费了比较多的心思,既是对课程理论内容的一次复习和巩固,还让我们丰富了更多与该专业相关的其他知识,比如软件应用等,在摸索中学习,在摸索中成长,在学习的过程中带着问题去学我发现效率很高,这是我做这次课程设计的又一收获,在真正设计之前我们做了相当丰富的准备,首先巩固一下课程理论,再一遍熟悉课程知识的构架,然后结合加以理论分析、总结,有了一个清晰的思路和一个完整的的软件流程图之后才着手设计。在设计程序时,我们不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;养成注释程序的好习惯是非常必要的,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也能为资料的保存和交流提供了方便;我觉得在设计课程过程中遇到问题是很正常,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题的课程设计又出错了。
除了对此次设计的准备工作之外,我们还学到了很多平时难得的东西,首先是团队协作,在这次设计当中,难免和同学产生观点和意见的分歧,以及分工明细、时间安排等不合理,通过这次设计,我们体会到了团结合作的重要性及力量之强大,还有让我们处理事情更加有条理,思路更加清晰明了了,发现、提出、分析、解决问题和实践能力的提高都将受益于我在以后的学习、工作和生活中。
除了对此次设计的准备工作之外,我们还学到了很多平时难得的东西,首先是团队协作,在这次设计当中,难免和同学产生观点和意见的分歧,以及分工明细、时间安排等不合理,通过这次设计,我们体会到了团结合作的重要性及力量之强大,还有让我们处理事情更加有条理,思路更加清晰明了了,发现、提出、分析、解决问题和实践能力的提高都将受益于我在以后的学习、工作和生活中。
第三篇:单片机课程设计
基于单片机的火灾智能报警控制系统的设计
前言
在各种灾害中,火灾是最经常、最普通地威胁公众安全和社会发展的灾害之一。人类能够对火进行利用和控制,是文明进步的一个重要标志。火,给人类带文明进步、光明和温暖。但是,失去控制的火,就给人类造成灾害。据统计,我国 70 年代火灾年平均损失不到 2.5 亿元,80 年代火灾年平均损失不到
3.2 亿元。进入 90 年代,特别是 1993 年以来,火灾造成的直接财产损失上升到年均十几亿元,年均死亡 2000 多人。2010年上海静安区高层住宅着火,导致58人死亡,70余人受伤。2014年1月云南香格里拉大火,烧毁房屋100多栋,直接经济损失1亿多元人民币。火灾事件经常发生,防止火灾事故关系到人民群众的生命财产安全和社会和谐稳定。现在各种电子产品的普及,再加上人们防火意识的不强,这些都给火灾的发生带来了巨大的安全隐患。
对于火灾最关键的问题在于预防,目前防火报警系统趋于智能化、自动化,灵敏程度也越来越高。在这种背景下,基于单片机的火灾智能报警控制系统能突显出其巨大的优越性。目前,国内大多数偏重于商场、宾馆、高级写字楼、大型仓库等大型火灾报警系统的研发和设计。本系统侧重于小型火灾智能报警系统的设计,可在火灾发生初期检测到并且报警,还能够实时显示温度和烟雾浓度。
第四篇:单片机课程设计
单片机课程设计
课题: 简易电子琴设计
学
院:
电气与信息工程学院 专
业:
电子信息工程 姓
名:
李琳琳 学
号:
093411106
指导老师:
田巍
河南城建学院
2014年
01 月
01 日
第五篇:单片机课程设计
单片机课程设计
---------
机电汽车工程学院
同组成员:(机091-1)姓名(学号):