单片机_两个数码管显示00~99
00-99计数器单片机课程设计
单片机课程设计题目00~99计数器的设计学生姓名小红1 课程设计的目的(1) 利用单片机定时器/计数器中断设计秒表,从而实现秒、十分之一秒的计时。
(2) 综合运用所学的《单片机原理与应用》理论知识,通过实践加强对所学知识的理解,具备设计单片机应用系统的能力。
(3) 通过本次课程设计加深对单片机掌握定时器、外部中断的设置和编程原理的全面认识复习和掌握,对单片机实际的应用作进一步的了解。
(4) 通过本次试验,增强自己的动手能力。
认识单片机在日常生活中的应用的广泛性,实用性。
明确学习目的,端正学习态度,提高对课程设计重要性的认识,以积极认真的态度参加课程设计工作,按要求完成规定的设计任务。
2 设计思路本实验利用单片机的定时器/计数器定时和计数的原理,通过采用仿真软件来模拟实现。
模拟利用AT89C2052单片机、LED数码管以及各种控制器件来控制表的计数以及计数的开启/暂停/继续与复位等。
利用单片机AT89S51单片机来制作一个手动计数器,在AT89S51单片机的P1.7管脚接一个轻触开关,作为手动计数的按钮,用单片机的P2.0-P2.7接一个共阴数码管,作为00-99计数的个位数显示,用单片机的P0.0-P0.7接一个共阴数码管,作为00-99计数的十位数显示。
3 设计过程3.1 方案论证3.1.1 用单片机技术来实现多功能定时计数器的控制多功能定时计数器控制系统的原理。
它主要由单片机、发光二极管、晶振和双位数码管等部分组成。
1、总体描述(1)单片机采用STC89C52型。
(2)数据显示电路:七段四位共阴极数码管,P1口控制八位段码,P3.4到P3.7控制四位码。
(3)数据输入电路:四个按键完成输入,一号键控制个位加1,可以实现从1加到9;二号键控制十位加一;三号键控制百位加一;四号键控制千位加一。
(4)功能指示电路:上电指示发光二极管,P26口控制蜂鸣器报警功能。
2、总体设计:设计总体框架图如图3-1所示:图3-1总体框架图3.1.2 最小控制系统的设计STC89C52单片机最小系统包括晶体振荡电路、复位开关和电源部分。
两位数码管显示
课程设计说明书课程名称:《单片机技术》设计题目:两位数码管显示设计学院:电子信息与电气工程学院学生姓名:学号:专业班级:指导教师:2014年6 月13日课程设计任务书两位数码管显示摘要:两位数码管显示设计是基于AT89S52单片机的两位数码显示系统,通过AT89S52进行控制,利用汇编语言编写两位数码管循环扫描动态显示的专用程序来实现两位数码管动态显示系统。
系统主要由电源模块、复位模块、外部时钟电路模块、数码管显示模块构成。
电源电路通过桥堆2W10和三端稳压器7805将交流电压变为5V的直流电压。
复位电路由电容与按键的并联来实现。
时钟通过外部12M的晶振来控制。
两位数码管显示由两个共阳极的三极管进行驱动。
将汇编语言编写的两位数码管动态显示程序写入单片机,使数码管相应段点亮,同时利用人眼的视觉暂留的特性和数码管的余辉效应,在扫描频率足够高时,人眼无法感觉数码管的变化,从而实现数码管的动态显示。
关键词:AT89S52;两位数码管;7805;2W10;动态显示目录1.设计背景 (1)1.1单片机的应用背景 (1)1.2共阳极数码管的显示方法 (1)1.3共阳极数码管的驱动设计 (1)2.设计方案 (1)2.1方案一:共阳极数码管静态显示 (1)2.2方案二:共阳极数码管动态显示 (2)2.3数码管静态与动态显示的优缺点比较 (3)3.方案实施 (3)3.1电源电路设计 (3)3.2复位及震荡电路 (4)3.3单片机接口 (4)3.4软件设计 (4)3.5调试仿真 (6)4.结果与结论 (7)4.1设计结果 (7)4.2设计结论 (7)5.收获与致谢 (7)6.参考文献 (8)7.附件 (8)1.设计背景1.1单片机的应用背景在信息时代的今天,单片机技术应用越来越广泛,涉及各行各业,几乎很难找到哪个领域没有单片机的踪迹。
如洗衣机、空调、冰箱等的控制系统,就可以用单片机实现。
为了让人们很直观的了解相关设备当前的工作状态,很多时候需要将当前的时间、温度、工作程序等状态通过数码管显示出来,这就涉及到单片机的数码管显示技术。
proteus控制数码管增减课设报告
一、任务说明1、按照设计要求自行定义电路图纸尺寸;2、设计任务如下:利用51单片机和2位共阴极数码管及2个按键等器件,设计一个控制数码管增减的单片机系统,数码管显示范围为00-99。
3、按照设计任务在Proteus 6 Professional中绘制电路原理图;4、根据设计任务的要求编写程序,在Proteus下进行仿真,实现相应功能。
二、应用PROTEUS软件绘制原理图的过程1、进入proteus7 professional。
2、设置图纸尺寸。
单击system,再单击set sheet sizes,将尺寸设置A4,单击OK。
如图1所示。
图1 设置图纸尺寸3、选择原理图所需要元件。
点击左侧栏第二个图标,再点击P,在搜索栏输入需要的元件名称。
数码管为7seg,排阻为respack-8,按键为button,单片机为89c51,晶振为crystal,电阻为res,电容有两种,分别为cap-elec,capacitor。
如图2所示。
图2选择原理图所需要元件4、选择电源及地线。
单击左侧栏第8个图标,选择电源VCC,地线GROUND。
如图3所示。
图3 选择电源及地线5、设置元件参数。
双击需要改变参数的元件,按需要修改参数。
6、连接时钟电路部分。
鼠标单击需要连接的一段,这时鼠标变成连线,再将鼠标落在需要连接的另一端即可将原理图完成。
如图4所示。
图4 时钟电路部分7、连接共阴极数码管部分。
因为数码管为共阴极,所以在连接P0口同时,与1k欧姆排阻相连,排阻另一端接5V直流电源,通过P2.6和P2.7控制数码管。
如图5所示。
图5 数码管部分连接电路8、连接按键部分。
通过P3口第二功能放置按键。
用外部中断源0,1控制按键1,2。
按键1,2的功能分别为控制计数的加减,如图6所示。
图6 按键部分原理图9、原理图连接完成。
三、应用PROTEUS软件对原理图进行仿真的步骤以及过程结果1、在keil中编写程序。
由于设计任务是用按键控制正计数和倒计数,则利用两个外部中断分别控制。
单片机课程设计00-99加计数器(完结版qq)
课程设计课程名称51单片机原理及应用单片机“0~99”加法计数器题目名称程序设计专业班级12级计算机科学与技术2班学生姓名郑伟、刘刚、纪强、岳向阳学号51202012032、5120201200751202012021、51202012018 指导教师刘粉二○一四年十二月蚌埠学院计算机科学与技术系课程设计任务书目录一.前言 (4)二.单片机介绍 (4)(一).AT89C51简介编辑 (4)(二).主要特性编辑 (5)(三).特性概述编辑 (5)(四).管脚说明编辑 (5)(五).芯片擦除编辑 (7)(六).串口通讯 (7)三.课程设计的目的和要求 (11)(一).设计目的 (11)(二).课程设计题目 (11)(三).设计任务及要求 (11)四.总体设计思路 (11)(一).硬件设计思路及系统框图 (11)1.硬件设计思路: (11)2.原器件清单 (12)3.系统框图 (12)(二).软件设计思路: (12)(三).对照表 (12)(四).程序流程图 (13)五.硬件设计 (15)(一).芯片主要特性 (15)(二)管脚说明: (15)(三).排阻的作用 (16)(四).电路图说明 (17)1.添加晶振和复位 (17)2.添加P0和P2两个按键 (17)3. 数码管动态显示 (17)六.软件设计说明 (17)七.使用Keil、preoteus软件调试仿真说明 (19)八.结束语 (20)九.参考文献 (21)附录: (22)(一).汇编源程序 (22)(二).原理图 (24)前言单片机全称叫单片微型计算机(Single Chip Microcomputer),是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。
两位数码管计时0-99 实验
{ P31=0; P2=a[y]; P30=1; P30=0; P2=a[x]; P31=1;
} } main() { for(i=0;i<100;i++) { b=i/10; //shiwei
c=i%10; //gewei xianshi(c,b); } }
4
单片机实验报告
上述两种编程语言编写程序的思路基本一致,都是通过修改程序中动态显示的 时长实现显示时长的调节。上述两个程序有一个共同的缺点,那就是无法特别准确 的定时。在计时不要求很准确的场合使用可以,但是在对计时准确性要求较高的场 合使用时,则不是很适合。如果要求显示准确性较高,例如秒表,可以采用定时器 中断的方式修改以上程序。
对于没有 Keil 编程软件的编程者,可以将如下代码存入 HEX 文件中,再将该 HEX 文件下载至单片机或导入仿真软件中。 程序 HEX 代码如下: :0300000002008576 :0C008500787FE4F6D8FD758107020000CA :02000000802E50 :100030007530007830B6640050061145053080F503 :1000400075300080F0E53075F00A84F53185F032C6 :100050007C0A7B0A7AFFC2B190B000C2B0E53293F5A0D2B100DAE7DB3E :10007000E3DCDF22C0F9A4B0999282F880908883F3
第2讲 单片机控制两个数码管
共阳极代码 6FH 77 H 7CH 39H 5EH 79H 71H 00H
4 5 6 7 8
99H 92H 82H F 8H 80H
66H 6DH 7 DH 07 H 7FH
思考:y、J、L、H的编码?
2
任务2-1 单片机控制两个数码管静态显示 单片机控制两个数码管静态显示00-99 任务
1、两个共阳 极数码管; 2、P2控制十 位,P1控制个 位 3、延时方式: 延迟时间1秒。
第2讲 单片机控制两个数码管 讲
本讲内容: 1、单片机控制两个数码管静态显示00-99 2、单片机控制两个数码管静态显示按钮 次数
1
十六进制数字型代码表
字型 0 1 2 3
共阳极代码 共阴极代码 C0H F 9H A4H B0H 3FH 06H 5BH 4FH
字型 9 A B C D E 1H 86H 84H FFH
3
程序框图
4
second
汇编程序设计
分析: 1, 两个数码管显示:十 位值放在(A),个位值放 在(B),方法:采用 DIV,(20H)/10,商A,余数B 2,将second从00到99循 环附值 3,每个second显示一次, 只要将前面的程序作为子 程序调用。 4,显示间隔:采用延迟 子程序(延迟时间为1秒)
EQU 20H ORG 0000H START: MOV second,#00H LOOP: ACALL SHOW ACALL DELAY1S INC second MOV R0,second CJNE R0,#64H,LOOP SJMP START SHOW: MOV A,20H MOV B,#10 DIV AB SHOW1: MOV DPTR,#TAB MOVC A,@A+DPTR ;十位 MOV P2,A MOV A,B ;个位 MOVC A,@A+DPTR MOV P1,A RET DELY1S: MOV R6,#100 D2: MOV R5,#20 D1: MOV R4,#248 DJNZ R4,$ DJNZ R5,D1 DJNZ R6,D2 RET TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H DB 82H,0F8H,80H,90H
基于单片机的00秒-99秒的秒表设计
工程技术学院课程设计题目:用单片机AT89C51设计一个2位的LED数码显示作为“秒表”专业:电气工程及其自动化年级: 2009级学号: 20091447 20091414 20091444 姓名:付忠林梁宗林李座指导教师: 杨彦鑫日期: 2012年12月12日云南农业大学工程技术学院目录一、设计题目和要求:................................................................................... 错误!未定义书签。
二、设计目的:ﻩ错误!未定义书签。
三、设计内容:ﻩ错误!未定义书签。
四、课程设计心得体会ﻩ错误!未定义书签。
五、参考文献ﻩ错误!未定义书签。
六、课程设计指导教师评审标准及成绩评定............................................... 错误!未定义书签。
附件1:秒表原理图(实际接线图)............................................................ 错误!未定义书签。
附件2:仿真图1ﻩ错误!未定义书签。
附件3:仿真图2ﻩ错误!未定义书签。
一、设计题目和要求:题目三:秒表应用AT89C51的定时器设计一个2位的LED数码显示作为“秒表”:显示时间为00~99s,每秒自动加1,设计一个“开始”键,按下“开始”键秒表开始计时。
设计一个“复位”键,按下“复位”键后,秒表从0开始计时。
任务安排:李座负责绘制电路原理图;梁宗林负责收集资料及电子版整理;付忠林负责程序和仿真。
二、设计目的:1.进一步掌握AT89C51单片机的结构和工作原理;2.掌握单片机的接口技术及外围芯片的工作原理及控制方法;3.进一步掌握单片机程序编写及程序调试过程,掌握模块化程序设计方法;4.掌握PROTEUS仿真软件的使用方法;5.掌握LED数码管原理及使用方法。
单片机0-99计数器 秒表报告
姓名班级指导老师时间信息工程学院图1 硬件电路连接图(二)显示电路两位数码管循环显示00~99电路数码管只要就是用于数字得显示.数码管有共阴与共阳得区分,单片机都可以进行驱动,但就是驱动得方法却不同。
两位数码管循环电路就是由电阻、二极管与数码管组成,电源+5V通过560得电阻直接给数码管得7个段位供电,P0、0—P0、7对应了两个接数码管得A,B,C,D,E,F,G与小数点位,P2、6接显示个位数得数码管得3、8引角,P2、7则接十位数得。
P2、6与P2、7端口分别控制数码管得十位与个位得供电,当相应得端口变成低电平时,驱动相应得三极管会导通,+5V通过二极管与驱动三极管给数码管相应得位供电,这时只要P0口送出数字得显示代码,数码管就能正常显示需要得数字。
图2 十位显示动态数码管(共阳数码管)图3 个位显示静态数码管(共阴数码管)(三)时钟电路时钟电路得晶振频率越高,系统得时钟频率越高,单片机得运行速度也越快。
晶振频率根据设计需要设为12MHz,又根据谐振性质,电路中得电容应选择为30pF左右。
图4 时钟电路(四)复位电路MCS—51单片机得复位就是靠外部电路实现得。
MCS—51单片机工作之后,只要在她得RST引线上加载10ms以上得高点平,单片机就能有效地复位。
MCS-51单片机通常采用上电自动复位与按键复位两种方式。
最简单得复位电路如图5:图5 复位电路上电瞬间,RC电路充电,RST引线出现正脉冲,只要RST保持10ms以上得高电平,就能使单if(i++==100)//如果i=0{i=0;count++;P0=CODE[count/10];P2=~CODE[count%10];if(count==99)count=0; //如果到了99,则重新从0开始计数}}结果与分析(可以加页):(一)调试结果1.初始状态图7:初始状态结果图2.开始计时后按下按键暂停图8:中间状态图示(二)问题分析及解决措施1、一开始时没有分清楚数码管就是共阴数码管还就是共阳数码管,C语言程序中默认数码管就是共阴,所以两个P接口得值都就是按照共阴去写得,导致数码管选段及位显有问题,后来经过老师得指点,将共阳数码管P2得接口改成了共阴。
七段数码管动态显示控制
实验二七段数码管动态显示控制一、实验目的利用AT89S52和使用两位数码管显示器,循环显示两位数00-99。
其中P2.0和P2.1端口分别控制数码管的个位和十位的供电,当相应的端口变成低电平时,驱动相应的三极管会导通,+5V通过驱动三极管给数码管相应的位供电,这时只要P3口送出数字的显示代码,数码管就能正常显示数字。
二、实验要求1、使用两位数码管显示器,循环显示两位数00-99;2、具有电源开关和指示灯,有复位键;3、数码管动态显示,即扫描方式,每一位每间隔一段时间扫描一次。
字符的亮度及清晰度与每位点亮的停留时间和每位显示的时间内轮换导通次数有关。
三、实验电路四、实验器材AT89S52;动态扫描显示;共阳极数码管;电阻五、实验原理说明图1 AT89S52引脚图图2 共阳极七段数码管引脚图1AT89S52引脚图,说明如下:按照功能,AT89S52的引脚可分为主电源、外接晶体振荡或振荡器、多功能I/O 口、控制和复位等。
1.多功能I/O口AT89S52共有四个8位的并行I/O口:P0、P1、P2、P3端口,对应的引脚分别是P0.0 ~ P0.7,P1.0 ~ P1.7,P2.0 ~ P2.7,P3.0 ~ P3.7,共32根I/O线。
每根线可以单独用作输入或输出。
①P0端口,该口是一个8位漏极开路的双向I/O口。
在作为输出口时,每根引脚可以带动8个TTL输入负载。
当把“1”写入P0时,则它的引脚可用作高阻抗输入。
当对外部程序或数据存储器进行存取时,P0可用作多路复用的低字节地址/数据总线,在该模式,P0口拥有内部上拉电阻。
在对Flash存储器进行编程时,P0用于接收代码字节;在校验时,则输出代码字节;此时需要外加上拉电阻。
②P1端口,该口是带有内部上拉电阻的8位双向I/O端口,P1口的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。
对端口写“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管脚。
两位数码管显示设计
课程设计说明书课程名称:单片机原理及应用设计题目:两位数码管显示设计院系:电子信息与电气工程系学生姓名:学号:专业班级:指导教师:2010年 5 月10 日课程设计任务书两位数码管显示设计摘要:两位数码管的显示设计主要有硬件部分和软件部分组成,硬件部分以单片机为核心,在其周围有电源电路、时钟电路、复位电路、驱动电路和显示电路组成。
软件部分用汇编语言编程,用keil软件编译、调试。
最后用proteus软件仿真,形成以单片机为枢纽,以程序为动力,使两位数码管循环显示00-99。
关键词:AT89C52 数码管 keil proteus 汇编语言动态显示目录1.设计背景 (1)1.1设计课题及目的 (1)1.2相关技术与应用领域 (1)2.设计方案 (2)2.1静态设计 (2)2.2动态显示 (2)2.3硬件电路设计方案 (2)3. 方案实施 (3)3.1方案论证 (3)3.2设计内容 (3)3.3硬件设计 (4)3.4软件设计 (6)4. 结果与结论 (7)4.1 结果 (7)4.2 结论 (7)5. 收获与致谢 (7)5.1 收获与致谢 (7)6. 参考文献 (8)7. 附件 (9)7.1仿真原理图 (9)7.2汇编程序 (10)7.3 LED的段码 (10)7.4元件清单 (11)1.设计背景1.1设计课题及目的本课题是以单片机为核心,通过动态扫面的方式,实现两位数码管的动态显示。
单片机即单片微型计算机,是集CPU,RAM,ROM,定时,计数,和多种接口于一体的微控制器,他体积小,成本低,功能强,广泛应用于智能产品和工业自动化上,AT89C52单片机是各单片机中比较具有代表性的一种。
这次课程设计通过对他的学习,应用,从而达到学习,设计,开发软硬件的能力.1.2相关技术与应用领域单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器的CPU、随机存储器RAM、只读存储器ROM、多种输入输出口和中断系统、定时器∕计数器等功能集成到一个硅片上构成一个小而完善的计算机系统。
两位数码管循环显示00-99
两位数码管循环显示00-99
现在让我们用实验板上的两个数码管来做一个循环显示00~99数字的实验,先来完成必要的硬件部分。
数码管有共阴和共阳的区分,单片机都可以进行驱动,但是驱动的方法却不同,并且相应的0~9的显示代码也正好相反。
首先我们来介绍两位共阳数码管的单片机驱动方法,电路如下图:
P2.6和P2.7端口分别控制数码管的十位和个位的供电,当相应的端口变成低电平时,驱动相应的三极管会导通,+5V通过IN4148二极管和驱动三极管给数码管相应的位供电,这时只要P0口送出数字的显示代码,数码管就能正常显示数字。
因为要显示两位不同的数字,所以必须用动态扫描的方法来实现,就是先个位显示1毫秒,再十位显示1毫秒,不断循环,这样只要扫描时间小于1/50秒,就会因为人眼的视觉残留效应,看到两位不同的数字稳定显示。
下面我们再介绍一种共阴数码管的单片机驱动方法,电路如下图:
+5V通过1K的排阻直接给数码管的8个段位供电,P2.6和P2.7端口分别控制数码管的十位和个位的供电,当相应的端口变成低电平时,相应的位可以吸入电流。
单片机的P0口输出的数据相当于将数码管不要显示的数字段对地短路,这样数码管就会显示需要的数字。
共阴数码管的硬件更简单,所以在批量生产时,硬件开销小,节省PCB面积,减少焊接工作量,降低综合成本,所以采用共阴数码管更有利于批量生产,现在销售的试验板都是采用共阴数码管了。
以下是用AT89C51实验板的两位数码管显示00~99依次循环的汇编语言程序。
数字秒表系统的设计说明
基于单片机的数字秒表系统设计1.引言在科技高度发展的今天,集成电路和计算机应用得到了高速发展。
尤其是计算机应用的发展,它在人们日常生活中已经崭露头角。
大多数电子产品多是由计算机电路组成,如:手机、MP3等。
而且将来的不久它们的身影将会更频繁的出现在我们身边,各种家用电器多会实现微电脑技术。
电脑各部分在工作时多是以时间为基准的。
本文就是基于计算机电路的时钟脉冲信号、状态控制等原理设计出来的数字秒表,秒表在很多领域充当一个很重要的角色。
在各种比赛中对秒表的精确度要求更高,尤其是一些科学实验,它们对时间精确度达到了几纳秒的要求。
本设计是设计一个单片机控制的数字电子秒表本秒表采用8051为中心器件,利用其定时器/计数器定时和记数的原理,结合显示电路、电源电路、LED数码管以及外部中断电路来设计计时器。
将软、硬件有机地结合起来,使得系统能够实现两位LED显示,显示时间为00~99秒,每秒自动加1,能正确地进行计时,且具有快加功能。
其软件系统采用汇编语言编写程序,包括显示程序,定时中断服务,快加程序,外部中断服务程序,延时程序等,并在keil下调试通过,硬件电路通过proteus模拟连接,并与软件相结合,调试修改,使达到预期的目的。
2.设计方案及原理2.1该数字秒表所要实现的功能。
设计一个秒表,按“开始”按键,开始计数,数码管显示从00每秒自动加一;按“复位”按键,系统清零,数码管显示00;按“暂停”按键,系统暂停计数,数码管显示当前的计数;按“快加”按键,系统每10ms快速加一,即数码管显示在原先的计数上快速加一。
(1)使用两位数码管显示,显示时间00~99秒;(2)正常计数时,每秒自动加一;(3)一个开始按键,一个复位按键,一个暂停按键和一个快加按键;(4)实现计数、复位、清零和快加功能;(5)单片机通电后,首先初始化,然后进行对按键扫描。
开始键用来控制秒表工作的开始;暂停键用来暂停程序的运行;快加键控制快速计数的开始,利用暂停键停止;复位键是用来对程序复位用的,当程序出现死循环或想从00开始重新计时,按下复位键可返回程序开始,重新执行。
山东建筑大学单片机实验整理
1、0-99数码管显示ORG 00HAJMP MAINORG 30HMAIN: MOV 30H,#0MOV 31H,#0 LP: ACALL PLAYACALL DELAYINC 30HMOV A,30HCJNE A,#10,LPMOV 30H,#0INC 31HMOV A,31HCJNE A,#10,LPAJMP MAIN PLAY: MOV R0,#30HMOV DPTR,#TAB LL: MOV A,@R0MOVC A,@A+DPTRSETB P2.1MOV P1,ACLR P2.1INC R0MOV A,@R0MOVC A,@A+DPTRSETB P2.0MOV P1,ACLR P2.0RETDELAY:MOV R7,#0DEL: MOV R6,#0DJNZ R6,$DJNZ R7,DELRETTAB:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,8 0H,90HEND0-9实验ORG 00HAJMP MAINORG 30H MAIN:MOV 30H,#0 LOOP:ACALL PLAYACALL DELAYINC 30HMOV A,30HCJNE A,#10,LOOPMOV 30,#0AJMP LOOP PLAY:MOV R0,#30HMOV DPTR,#TAB LP:MOV A,@R0MOVC A,@A+DPTRMOV P1,ARETDELAY:MOV R7,#0DEL:MOV R6,#0DJNZ R6,$DJNZ R7,DELRETTAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H END9数码管动态显示ORG 0HAJMP MAIN ORG 30HMAIN:MOV 30H,#0 MOV 31H,#0LOP1: MOV DPTR,#TAB MOV R0,#30H ACALL DISPLAY ACALL DELAYINC 30H MOV A,30H CJNE A,#10,LOP1 MOV 30H,#0 INC 31H MOV A,31H CJNE A,#10,LOP1 AJMP MAINDISPLAY: MOV A,@R0 MOVC A,@A+DPTRMOV P0,A SETB P2.1 CLR P2.1INC R0 MOV A,@R0 MOVC A,@A+DPTRSETB P2.0 MOV P0,A CLR P2.0 RETDELAY: ;误差 0usMOV R7,#0A7HDL1:MOV R6,#0ABHDL0:MOV R5,#10H DJNZ R5,$ DJNZ R6,DL0 DJNZ R7,DL1NOP RETTAB: DB 3FH 06H 5BH 4FH 66H 6DH DB 7DH 07H 7FH 6FH 77H 7CH 3DB 9H 5EH 79H 71H 80HEND10数码管动态显示138位选; 数码管动态显示0~99,; 用74HC138控制77SEG-MPX2-CC-BULL数码管位选,; 当138输入**10 0000(取20H)时位1开,位2关; 当138输入**10 0001(取21H 时位1关,位2开ORG 0AJMP MAINORG 30HMAIN:MOV 30H,#0HMOV 31H,#0HLOP1: MOV DPTR,#TABMOV R0,#30HACALL DISPLAY;ACALL DELAYINC 30HMOV A,30HCJNE A,#10,LOP1MOV 30H,#0INC 31HMOV A,31HCJNE A,#10,LOP1AJMP MAINDISPLAY: MOV R4,#013HLOP4: MOV R3,#014HLOP3: MOV R2,#82HLOP2: MOV A,@R0MOVC A,@A+DPTRMOV P0,AMOV P2,#01H;ACALL DELAY1MOV P2,#3HINC R0MOV A,@R0MOVC A,@A+DPTRMOV P0,AMOV P2,#0;ACALL DELAY1MOV P2,#3HMOV R0,#30HDJNZ R2,LOP2DJNZ R3,LOP3DJNZ R4,LOP4RETDELAY: ;误差0us 1MSMOV R7,#0A7HDL1:MOV R6,#0ABHDL0:MOV R5,#10HDJNZ R5,$DJNZ R6,DL0DJNZ R7,DL1NOPRETDELAY1: ;误差0us 10USMOV R6,#01HDL01:MOV R5,#02HDJNZ R5,$DJNZ R6,DL01RETTAB: DB 3FH 06H 5BH 4FH 66H 6DHDB 7DH 07H 7FH 6FH 77H 7CH 3DB 9H 5EH 79H 71H 80HEND164驱动0-99ORG 00HAJMP MAINORG 30H MAIN:MOV DPTR,#TABMOV 30H,#0MOV 31H,#0 LOOP:ACALL DISPLAYACALL DELAYINC 30HMOV A,30HCJNE A,#10,LOOPMOV 30H,#0INC 31HMOV A,31HCJNE A,#10,LOOPMOV 31H,#0AJMP LOOP DISPLAY:MOV R0,#30HMOV DPTR,#TAB LP:MOV A,@R0MOVC A,@A+DPTRMOV SBUF,AJNB TI,$CLR TIINC R0CJNE R0,#32H,LPRETDELAY:MOV R7,#0DEL:MOV R6,#0DJNZ R6,$DJNZ R7,DELRETTAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80 H,90HEND独立按键识别ORG 00HAJMP MAINORG 30 MAIN:JB P1.0,KEY1MOV P2,#0C0HACALL DELAY KEY1:JB P1.1,KEY2MOV P2,#0F9HACALL DELAY KEY2:JB P1.2,KEY3MOV P2,#0A4HACALL DELAY KEY3:JB P1.3,KEY4MOV P2,#0B0HACALL DELAY KEY4:JB P1.4,KEY5MOV P2,#99HACALL DELAY KEY5:JB P1.5,KEY6MOV P2,#92HACALL DELAY KEY6:JB P1.6,KEY7MOV P2,#82HACALL DELAY KEY7:JB P1.7,LOOPMOV P2,#0F8HACALL DELAY DELAY:MOV R7,#0 DEL:MOV R6,#0DJNZ R6,$DJNZ R7,DELRETLOOP:END交通灯ORG 00HAJMP MAIN ORG 30H MAIN:MOV P2,#00010001B MOV R1,#100 L1:ACALL DELAY DJNZ R1,L1MOV P2,#00100001B MOV R1,#10 L2:ACALL DELAY DJNZ R1,L2MOV P2,#00001010B MOV R1,#100 L3:ACALL DELAY DJNZ R1,L3MOV P2,#00010100B MOV R1,#10 L4:ACALL DELAY DJNZ R1,L4 AJMP MAINDELAY:MOV R7,#0 DEL:MOV R6,#0 DJNZ R6,$ DJNZ R7,DEL RET END流水灯ORG 00H AJMP MAINORG 30HMAIN: MOV A,#0FEHLOOP:MOV P0,ARL A ACALL DELAY SJMP LOOP DELAY: MOV R7,#0DEL:MOV R6,#0DJNZ R6,$ DJNZ R7,DELRETEND流水灯与闪烁交替RG 00HAJMP MAINORG 03HAJMP WWORG 30HMAIN:MOV A,#0FEHSETB IT0SETB EASETB EX0LOOP:MOV P0,ARL AACALL DELAYSJMP LOOPWW:MOV P0,#0ACALL DELAYMOV P0,#0FFHACALL DELAYSJMP WWRETI DELAY: MOV R7,#0DEL: MOV R6,#0 DJNZ R6,$ DJNZ R7,DELRETEND闪烁灯AJMP loopORG 30HLOOP: MOV P0,#0ACALL DELAYMOV P0,#0FFHACALL DELAYSJMP LOOPDELAY:MOV R7,#0DEL: MOV R6,#0DJNz R6,$DJNz R7,DELRETend定时器org 00hajmp mainorg 0bhajmp aaorg 30hmain: mov tmod,#01hmov th0,#0d8hmov tl0,#0f0hmov p1.0,#0ffhsetb easetb et0setb tr0ajmp $aa: clr eamov th0,#0d8hmov tl0,#0f0hcpl p1.0setb earetiORG 0HMAIN:MOV 40H,#253 ;测试显示用语句LOP:ACALL DISPLAY ;调用显示子程序ACALL AD0808 ;调用AD转换子程序ACALL DELAY ;调用延时子程序SJMP LOP ;循环进行AD0808:MOV DPTR,#7FF8H ;给出ADC0808的芯片地址P2.7, A0,A1,A2为0MOV A,#0 ;无意义MOVX @DPTR,A ;通过给DPTR送数,使P2.7为0,WR为低,从而使START为高,使ADC0808启动转换ACALL DELAY ;延时等待ADC0808转换完毕MOVX A,@DPTR ;将ADC0808转换完的数据送AMOV 40H,A ;A将转换完的数据转存40HRET ;转换子程序返回DISPLAY: ;显示子程序MOV DPTR,#TAB ;显示码表首地址MOV A,40H ;取出ADC转换结果MOV B,#100 ;以100为除数DIV AB ;进行除法运算MOV 32H,A ;将百位送32HMOV A,B ;十位、个位数送AMOV B,#10 ;以10为除数DIV AB ;进行除法运算MOV 31H,A ;10位数送31HMOV 30H,B ;个位数送30HMOV R0,#30H ;以R0为寄存器间址的首地址DISLOP:MOV A,@R0 ;将30H内的数送AMOVC A,@A+DPTR ;取显示码MOV SBUF,A ;送串行口显示JNB TI,$ ;未送出(TI<>1)等待CLR TI ;已送出将TI清零INC R0 ;指向下一个单元CJNE R0,#33H,DISLOP;若不是到33H继续RET ;已经显示到32H,返回DELAY:MOV R7,#0DEL1:MOV R6,#0DJNZ R6,$DJNZ R7,DEL1RETTAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH END2LED流水灯ORG 0HAJMP MAINORG 30HMAIN:MOV A,#0FEHLOOP:RL AMOV P0,AACALL DELAYSJMP LOOPDELAY: MOV R7,#0DEL1: MOV R6,#0DJNZ R6,$DJNZ R7,DEL1RETEND3LED闪烁(延时)ORG 0HAJMP MAINORG 30HMAIN:MOV P0, #0FFHACALL DELAYMOV P0,00HACALL DELAYAJMP MAINDELAY::MOV R7,#0HDEL: MOV R6,#0HDJNZ R6,$DJNZ R7,DELRETEND4现流水灯和闪烁的交替出现(利用中断ORG 0HAJMP MAINORG 03HAJMP INT0ORG 30HMAIN: MOV SP,#60HSETB IT0SETB EX0SETB EAMOV A,#0FEH LOP:RL AMOV P0,AACALL DELAY1SJMP LOPINT0: PUSH P0CLR EAMOV P0,#0HACALL DELAY2MOV P0,#0FFHACALL DELAY2MOV P0,#0HACALL DELAY2MOV P0,#0FFHACALL DELAY2SETB EAPOP P0CLR IE0RETIDELAY1:MOV R7,#0 DEL1: MOV R6,#0DJNZ R6,$DJNZ R7,DEL1RETDELAY2: MOV R5,#0 DEL3: MOV R4,#0del4: mov r3,#03djnz r3,$DJNZ R4,del4DJNZ R5,DEL3RETEND12矩阵式按键识别ORG 0HMAIN:MOV R0,#0HMOV DPTR,#TAB KEYSCAN:KEY1:CLR P1.0SETB P1.1JB P1.6,KEY2MOV 32H,#1SJMP DIS1KEY2:JB P1.7,KEY3MOV 32H,#2SJMP DIS1KEY3:SETB P1.0CLR P1.1JB P1.6,KEY4MOV 32H,#3SJMP DIS1KEY4:JB P1.7,KEYSCANMOV 32H,#4DIS1:ACALL DISPLAYACALL DELAYAJMP KEYSCAN DISPLAY:MOV A,32HMOVC A,@A+DPTRSETB P2.2CLR P2.1CLR P2.0MOV P0,AACALL DELAYRETDELAY:MOV R7,#0FHDEL: MOV R6,#0HDJNZ R6,$DJNZ R7,DELRETTAB:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H END两个数比较大小:DATA1 EQU 2000HDATA2 EQU 2001HDATA3 EQU 2002HORG 00HAJMP MAINORG 30HMAIN:CLR CMOV DPTR,#DA TA1MOVX A,@DPTRMOV R3,AINC DPTRMOVX A,@DPTRSUBB A,R3JNC BIG2XCH A,R3SJMP BIG1BIG2:MOVX A,@DPTRBIG1:INC DPTRMOVX @DPTR,AEND流水灯ORG 00HAJMP MAINORG 30HMAIN: MOV A,#0FEHLOOP: MOV P0, ARL AACALL DELAYSJMP LOOPDELAY: MOV R7,#0DEL : MOV R6,#0DJNZ R6,$DJNZ R7,DELRETEND定时org 0hajmp mainorg 1bhajmp t1intorg 30hmain:mov a,#0mov dptr,#tabmov tmod,#10hmov th1,#3chmov tl1,#0b0hsetb easetb et1setb tr1sjmp $t1int:mov th1,#3chmov tl1,#0b0hinc 30hmov r1,30hcjne r1,#10,loopmov 30h,#0inc acjne a,#10,lp1clr alp1:mov 31h,amovc a,@a+dptrmov p0,amov a,31hloop:retitab:db0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90hend中断:ORG 00HAJMP MAINORG 03HAJMP INTOORG 30HMAIN:MOV SP,#60HSETB IT0SETB EX0SETB EAMOV A,#0FEHLOP:RL AMOV P0,AACALL DELAY1SJMP LOP INTO:PUSH P0CLR EAMOV P0,#0HACALL DELAY2MOV P0,#0FFHACALL DELAY2MOV P0,#0HACALL DELAY2MOV P0,#0FFHACALL DELAY2SETB EAPOP P0RETDELAY1:MOV R7,#0 DEL:MOV R6,#0DJNZ R6,$DJNZ R7,DELRETDELAY2:MOV R5,#0 DEL2:MOV R4,#0DJNZ R4,$DJNZ R5,DEL2RETEND按键显示:org 000hajmp mainorg 30h main:jb p1.0,key1mov p0,#0c0hacall delaykey1:jb p1.1,key2mov p0,#0f9hacall delaykey2:jb p1.2,key3mov p0,#0a4hacall delaykey3:jb p1.3,key4mov p0,#0b0hacall delay key4:jb p1.4,key5mov p0,#99hacall delay key5:jb p1.5,key6mov p0,#99hacall delay key6:jb p1.4,key7mov p0,#92hacall delay key7:jb p1.4,key8mov p0,#82hacall delay delay:mov r7,#0 del:mov r6,#0djnz r6,$djnz r7,delretend矩阵式按键识别独立按键控制数码管控制LED灯两个数比较大小:DATA1 EQU 2000HDATA2 EQU 2001HDATA3 EQU 2002HORG 00HAJMP MAINORG 30HMAIN:CLR CMOV DPTR,#DA TA1MOVX A,@DPTRMOV R3,AINC DPTRMOVX A,@DPTRSUBB A,R3JNC BIG2XCH A,R3SJMP BIG1BIG2:MOVX A,@DPTRBIG1:INC DPTRMOVX @DPTR,AEND流水灯ORG 00HAJMP MAINORG 30HMAIN: MOV A,#0FEHLOOP: MOV P0, ARL AACALL DELAYSJMP LOOPDELAY: MOV R7,#0DEL : MOV R6,#0DJNZ R6,$DJNZ R7,DELRETEND定时org 0hajmp mainorg 1bhajmp t1intorg 30hmain:mov a,#0mov dptr,#tabmov tmod,#10hmov th1,#3chmov tl1,#0b0hsetb easetb et1setb tr1sjmp $t1int:mov th1,#3chmov tl1,#0b0hinc 30hmov r1,30hcjne r1,#10,loopmov 30h,#0inc acjne a,#10,lp1clr alp1:mov 31h,amovc a,@a+dptrmov p0,amov a,31hloop:retitab:db0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90hend中断:ORG 00HAJMP MAINORG 03HAJMP INTOORG 30HMAIN:MOV SP,#60HSETB IT0SETB EX0SETB EAMOV A,#0FEHLOP:RL AMOV P0,AACALL DELAY1SJMP LOPINTO:PUSH P0CLR EAMOV P0,#0HACALL DELAY2MOV P0,#0FFHACALL DELAY2MOV P0,#0HACALL DELAY2MOV P0,#0FFHACALL DELAY2SETB EAPOP P0RETDELAY1:MOV R7,#0 DEL:MOV R6,#0DJNZ R6,$DJNZ R7,DELRETDELAY2:MOV R5,#0 DEL2:MOV R4,#0DJNZ R4,$DJNZ R5,DEL2RETEND按键显示:org 000hajmp mainorg 30h main:jb p1.0,key1mov p0,#0c0hacall delaykey1:jb p1.1,key2mov p0,#0f9hacall delaykey2:jb p1.2,key3mov p0,#0a4hacall delaykey3:jb p1.3,key4mov p0,#0b0hacall delaykey4:jb p1.4,key5mov p0,#99hacall delaykey5:jb p1.5,key6mov p0,#99hacall delaykey6:jb p1.4,key7mov p0,#92hacall delaykey7:jb p1.4,key8mov p0,#82hacall delaydelay:mov r7,#0del:mov r6,#0djnz r6,$djnz r7,delretendADC0808:ORG 0HMAIN: mov 40h,#234ACALL DISPLAYmov p1,#0ADLOOP: MOV A,#0MOV DPTR,#7FF8HMOVX @DPTR,AACALL DELAYMOVX A,@DPTRMOV 40H,AACALL DISPLAYACALL DELAYSJMP ADLOOPDISPLAY: MOV A,40HMOV B,#100DIV ABMOV 32H,AMOV A,BMOV B,#10DIV ABMOV 31H,AMOV 30H,BMOV DPTR,#TABMOV R0,#30HDISLOP: MOV A,@R0MOVC A,@A+DPTRMOV SBUF,AJNB TI,$CLR TIINC R0CJNE R0,#33H,DISLOPRETDELAY: MOV R7,#0DEL1: MOV R6,#0DJNZ R6,$DJNZ R7,DEL1RETTAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FHEND21。
两位数码管显示
目录
1.设计背影……………………………………………………… ……1 1.1 课题设计的提出………………………………………1 1.2 LED 数码管的前景……………………………………………1 1.3 研究 LED 数码管循环显示的意义…………………………………1
2.设计方案…………………………………………………………1 2.1 动态显示与静态显示……………………………………………1 2.2 硬件设计与软件设计………………………………… 2
2.2 硬件设计与软件设计
桥堆 2W10 通过整流把从变压器获得的 220V 交流电压变成直流电压并且通过 7805 的稳压作用把直流电压变成稳定的+5V 电压,发光二极管与电阻串联后和上述稳压电路 并联,一方面提示电路的正常运行,另一方面没有分得主电路的电压,保证电压的稳定; AT89C51 的 EA 口接上述电路;AT89C51 的 RES 口接上复位电路使电路具有复位功能,XTAL1 与 XTAL2 接上晶振电路,给电路提供稳定的时钟频率;P3 口通过电阻接段选显示,P2 口接位选显示;三极管基极接 P2 口作为位选,射极接 LED 数码管的共阳极,集电极接 +5V 电路中,三极管作为 LED 数码管的驱动电路,驱动 LED 数码管的显示;LED 数码管 的七段连接在 P3 口上,循环显示数字 00~99.整个电路完成了循环显示数字 00~99 电路。
利用 AT89C52 芯片控制两位数码管的显示,三极管作为驱动电路驱动数码管的显示, 桥堆 2W10 和 7805 作为整流和稳压电路提供稳定的+5V 电压,复位电路为电路提供复位 功能,晶振电路提供稳定的时钟频率,组成带有复位功能的循环显示数字 00~99 的电路。 利用 Keil 编写程序并且调试成功,在 Protus 下仿真导入程序的电路,并调试使电路能 够循环显示数字 00~99.
单片机控制秒表显示时间为00—99(每秒自动加1),暂停,复位
(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
创新实践实训报告
学院
信息电子技术学院
专业
电子信息工程
两位数码管循环显示00
两位数码管循环显示00~99的实验现在让我们用实验板上的两个数码管来做一个循环显示00~99数字的实验,先来完成必要的硬件部分,数码管有共阴和共阳的区分,单片机都可以进行驱动,但是驱动的方法却不同,并且相应的0~9的显示代码也正好相反。
首先我们来介绍两位共阳数码管的单片机驱动方法,电路如下图:网友可以看到:P2.6和P2.7端口分别控制数码管的十位和个位的供电,当相应的端口变成低电平时,驱动相应的三极管会导通,+5V通过IN4148二极管和驱动三极管给数码管相应的位供电,这时只要P0口送出数字的显示代码,数码管就能正常显示数字。
因为要显示两位不同的数字,所以必须用动态扫描的方法来实现,就是先个位显示1毫秒,再十位显示1毫秒,不断循环,这样只要扫描时间小于1/50秒,就会因为人眼的视觉残留效应,看到两位不同的数字稳定显示。
下面我们再介绍一种共阴数码管的单片机驱动方法,电路如下图:网友可以看到:+5V通过1K的排阻直接给数码管的8个段位供电,P2.6和 P2.7端口分别控制数码管的十位和个位的供电,当相应的端口变成低电平时,相应的位可以吸入电流。
单片机的P0口输出的数据相当于将数码管不要显示的数字段对地短路,这样数码管就会显示需要的数字。
网友可以看到,共阴数码管的硬件更简单,所以在批量生产时,硬件开销小,节省PCB面积,减少焊接工作量,降低综合成本,所以采用共阴数码管更有利于批量生产,现在销售的试验板都是采用共阴数码管了。
以下是用AT89C51实验板的两位数码管显示00~99依次循环的汇编语言程序a_bit equ 20h ;数码管个位数存放内存位置b_bit equ 21h ;数码管十位数存放内存位置temp equ 22h ;计数器数值存放内存位置star: mov temp,#0 ;初始化计数器,从0开始stlop: acall display;调用显示子程序inc temp;对计数器加1mov a,tempcjne a,#100,next ;判断计数器是否满100?mov temp,#0;满100就清零重新开始next: ljmp stlop;不满就循环执行;显示子程序display: mov a,temp ;将temp中的十六进制数转换成10进制mov b,#10 ;10进制/10=10进制div abmov b_bit,a ;十位在amov a_bit,b ;个位在bmov dptr,#numtab ;指定查表启始地址mov r0,#4dpl1: mov r1,#250 ;dplop: mov a,a_bit ;取个位数MOVC A,@A+DPTR ;查个位数的7段代码mov p0,a ;送出个位的7段代码clr p2.7 ;开个位显示acall d1ms ;显示162微秒setb p2.7;关闭个位显示,防止鬼影mov a,b_bit ;取十位数MOVC A,@A+DPTR ;查十位数的7段代码mov p0,a ;送出十位的7段代码clr p2.6 ;开十位显示acall d1ms ;显示162微秒setb p2.6;关闭十位显示,防止鬼影djnz r1,dplop ;循环执行250次djnz r0,dpl1 ;循环执行250X4=1000次ret;2+2X80=162微秒,延时按12MHZ计算D1MS: MOV R7,#80DJNZ R7,$RET;实验板上的7段数码管0~9数字的共阴显示代码numtab: DB 0CFH,03H,5DH,5BH,93H,0DAH,0DEH,43H,0DFH,0DBH end;如果是共阳数码管的显示代码numtab: DB 30H,0FCH,0A2H,0A4H,06CH,25H,21H,0BCH,20H,24H 两位数码管显示00--99依次循环实验设备JS100A,JS200,JS300等仿真器,实验板都可直接实验。
单片机实践-时间片轮询法应用
返回
10MS中断函数流程图
41 代码实现
41 代码实现
任务1:数码管内容加1
任务2:数码管显示
任务3:按键扫描
THANK YOU
时间片轮询法应用 举例
CONTENTS
任务要求 编程思路 流程图 代码实现
1 任务要求
任务:通过时间片轮询法,实现以下功能: 1、数码管显示00-99,每隔1S加1;
1
2、可通过2个按键分别控制数码管的内容 加1和减1。
21 编程思路
编程思路:使用10MS定时器,采用时间片轮询法,每隔1S数码显示内 容加1,每隔20MS扫描一次按键,每隔20MS显示数码管。
分3个任务: 任务1:每1S数码管显示内容加1; 任务2:每20MS执行一次按键扫描; 任务3:每20MS显示数码管。
31 流程图
开始 端口初始化 定时器初始化,i=0
i<3
否
i=0
是
i++
否
任务i计时器是否大于 任务i的时间间隔
是
任务i计时器清0, 调用任务i函数
主程序流程图
开始
i<3 是 任务iБайду номын сангаас时器加1
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
P0_1=1; //关闭个位显示
}
}
void key_ccan(void)
{
unsigned char ii;
P1=0xff;
ii=P1;
shi=num/10; //取出十位数
ge=num%10; //取出个位数
P0_0=1;P0_1=1; //关闭显示
P2=Tab[shi]; //P2口送出十位数据显示代码
P0_0=0; //打开十位显示
delay(10); //延时
P0_0=1; //关闭显示
P2=Tab[ge]; //P2口送出个位数据显示代码
P0_1=0; //打开个位显示
按键控制加、减显示00-99(P1接8个独立按键,P10按下为加,P11按下为减,P2
接LED数码管的A- -H并加一个560欧的上拉排阻,P0接数码管DS1- -DS8位选)//
#include<reg52.h>
sbit P0_0=P0^0; //个位数字
sbit P0_1=P0^1; //十位数字
void main()
{
P2=Tab[0];P0_0=0;P0_1=0;//显示00
num=0; //被显示的数置0
while(1)
{
key_ccan(); //调用按键扫描程序
for(i=0;i<count;i++) //显示个位、十位count次后显示的数加1
}
{
case 0xfe: num++;if(num==100) num=0; break;
case 0xfd: if(num==0) num=99;else num--;break;
default: break;
}
void delay(int k); //Tab为数码管显示值,存入一个数组内
void key_ccan(void); //声明按键扫描函数
unsigned char code Tab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71}unsigned char i,shi,ge,num,count=10; //num为被显示的数字
if(ii!=0xff)
{
P1=0xff;
delay(50);
ii=P1;
if(ii!=0xff)
{
switch(ii)
}
}
}
void delay(int k) //最简单的C延时程序
{ unsigned char i;
while(k--) //直至K减为0则跳出
{for(i=100;i>0;i--);}
/按键控制加、Байду номын сангаас显示00-99(P1接8个独立按键,P10按下为加,P11按下为减,P2
接LED数码管的A- -H并加一个560欧的上拉排阻,P0接数码管DS1- -DS8位选)
**************************************************************//