单片机两位数码管计数设计1
两位数码管计数显示
![两位数码管计数显示](https://img.taocdn.com/s3/m/add3f2c880eb6294dd886cd8.png)
虚拟仪器技术课程设计报告2017-2018 学年第 1 学期班级:测控152姓名:学号:20150032021指导教师:陈建国湖北汽车工业学院机械工程学院仪器科学与技术系两位数码管计数显示1、课程设计的任务与要求(1)设计任务通过计算机实时控制数码管的显示。
(2)基本要求采用事件结构完成相应的功能。
显示范围:0-99,通过数据采集卡控制共阳极数码管的显示数字。
(3)所需仪器与设备数据采集卡1个,面包板1个,1K电阻2个,共阳极数码管JM-S03641-B 1个,螺丝刀1个,面包板线1包,万用表1个。
2、总体方案与流程图任意输入一个两位数字,通过把十位与个位分开显示在数码管的十位和个位上。
然后通过顺序结构进行动态数字显示。
3、基本单元的设计与说明前面板前面板用来输入需要显示的两位数字,通过布尔构成的数码管显示两位数,同时停止按钮用来终止程序的运行。
程序框图(1)(2)(3)(4)(5)(6)(7)(1)对输入的两位数通过取余运算把个位和十位分开,进行分别显示。
(2)对布尔数组的数组搜索在前面板显示两位数。
(3)首先打开数据采集卡,在数码管显示前先把7个out口赋1清零。
(4)对DA1口给电压,对DA2口给0,使个位上的7个码管显示。
通过对个位的局部变量对共阳极的数码管的码表进行数组搜索,在个位的数码管上显示个位数,随后在对7个out口经行清零。
(5)延时程序,让个位和十位的显示延时。
(6)给DA2口高电压,对DA1口关闭。
通过条件结构对于十位大于零的数进行显示。
对十位的数字进行码表进行数组索引显示数字。
(7)最后对7个out口清零,关闭采集卡。
4、各阶段运行的截图5、硬件电路的接线图及说明DA1通过串联一个1K的电阻与数码管的管脚6连接;DA2同样串联一个1K的电阻与数码管管脚8连接;PWM1和PWM2分别与管脚11和7连接;out3-7分别与与管脚4,2,1,10,5,3连接。
USB数据线一端与计算机的USB接口连接,另一端与采集卡的USB 接口连接。
两位数码管计时0-99 实验
![两位数码管计时0-99 实验](https://img.taocdn.com/s3/m/38c34203eefdc8d377ee3219.png)
{ 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
单片机两位数码管计数设计1
![单片机两位数码管计数设计1](https://img.taocdn.com/s3/m/385809e3e009581b6bd9eb2c.png)
目录一、设计目的 (4)二、设计要求 (4)三、设计电路图 (4)四、设计说明 (5)1、数码管的显示原理 (5)2、晶振的作用 (5)五、参考程序框图: (6)六、参考代码…………………………………………………7-9七、设计时使用的主要参考书及手册 (9)八、设计心得: (9)两位数码管计数一、设计目的:1. 学习外部中断技术的基本使用方法。
2. 学习中断处理程序的编程方法。
3. 学习51单片机内部计数器的使用和编程方法。
4. 学习使用数码管的显示原理以及应用。
二、设计要求:按开关开始,在按开关停止计秒,计秒从0开始,讲到99,再从0开始计秒。
按下复位键开关,数码管就会显示0.三、设计电路连线:四、设计说明:1、数码管的显示原理:@单片机系统扩展LED数码管时多用共阳LED:共阳数码管每个段笔画是用低电平(“0”)点亮的,要求驱动功率很小;而共阴数码管段笔画是用高电平(“0”)点亮的,要求驱动功率较大。
@通常每个段笔画要串一个数百欧姆的降压电阻。
字形0123456789黑共阳0C00F90A40B09992820F880900FF 共阴FC60da F266B6BE E0FE F600计时计算:fosc= 12MHz 则:(振荡周期)1Tc=1/12MHz(机器周期)1Tm=12Tc=12/12MHz=1 S故选择方式1 工作可以得到:则初值为:3CB0H2、晶振的作用晶振的作用是为系统提供基本的时钟信号。
晶振两边的电容叫负载电容,单片机的晶振工作于并联谐振状态,晶振的频率是在负载电容下测得的,能最大限度的保证频率值的误差。
也能保证温漂等误差。
两个电容的取值都是相同的,或者说相差不大,如果相差太大,容易造成谐振的不平衡,容易造成停振或者干脆不起振.五、参考程序框图:主程序流程图↓两位数码管显示模块六、参考代码:ORG 0000HLJMP MAINORG 0003HLJMP SERORG 000BHLJMP IT0PORG 0100HMAIN: MOV R6,#00HMOV DPTR,#TABMOV R3,#20CLR 20HMOV TMOD,#01HMOV TL0,#0B0HMOV TH0,#3CHSETB TR0SETB IT0SETB ET0SETB EX0SETB PX0CLR PT0SETB EALOOP: MOV A,R6MOV B,#10DIV ABMOVC A,@A+DPTRMOV P0,#00001110BMOV P1,ALCALL DELAYMOV A,BMOVC A,@A+DPTRMOV P0,#00001101BMOV P1,AAJMP LOOPTAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H SER: PUSH PSWPUSH ACCPUSH DPHPUSH DPLCPL 20HPOP DPLPOP DPHPOP ACCPOP PSWRETIIT0P: PUSH PSWPUSH ACCMOV TL0,#0B0HMOV TH0,#3CHDJNZ R3,LOOP1MOV R3,#20JNB 20H,LOOP1INC R6CLR CMOV A,R6SUBB A,#100JC LOOP1MOV R6,#0LOOP1: POP ACCPOP PSWRETIDELAY: PUSH PSWPUSH ACCMOV R5,#4HDEL4: MOV R4,#19HDEL5: DJNZ R4,DEL5DJNZ R5,DEL4POP ACCPOP PSWRETEND七、设计时使用的主要参考书及手册1、《单片机原理及应用》(“十五”国家级规划教材) 张毅刚主编高教出版社2、单片机原理与应用实验指导书(自编)3、《单片微型计算机原理及应用》张坤毅等编西安电子科技大学出版社1997年4、《单片机原理及接口技术》胡汉才编清华大学出版社5、依据图书馆现有资料及网络资源。
两位数码管显示电路
![两位数码管显示电路](https://img.taocdn.com/s3/m/b86333c23186bceb19e8bbbe.png)
EDA设计论文题目学院专业班级学生姓名指导教师2016年 1 月10 日目录摘要 (3)Abstract (4)第1章绪论 (5)1.1 概述 (5)1.2 设计的目的 (5)1.3 设计的基本内容 (1)第2章 EDA、Verilog HDL简介 (2)2.1 EDA技术 (2)2.1.1 EDA技术的概念 (2)2.1.2 EDA技术的特点 (2)2.1.3 EDA设计流程 (2)2.2 硬件描述语言(Verilog HDL) (7)2.2.1 Verilog HDL简介 (3)2.2.2 Verilog HDL语言的特点 (3)第3章两位数码管的动态显示电路的设计过程 (4)3.1 系统需求分析 (4)3.2 设计原理 (4)3.3 MAXII晶体管说明 (5)3.4 编写代码 (6)3.5 管脚分配 (8)第4章系统仿真 (9)结论 (10)参考文献 (11)附录 (12)致谢 (13)\摘要在信息时代的今天,单片机技术应用越来越广泛,涉及各行各业,也渗透到人们的日常生活之中,如洗衣机、空调、冰箱等的控制系统,就可以用单片机实现。
为了让人们很直观的了解相关设备当前的工作状态,很多时候需要将当前的时间、温度、工作程序等状态通过数码管显示出来,这就涉及到单片机的数码管显示技术。
在实际应用中,单片机的数码管显示,正确、高效应用数码管显示技术设计成功与否的一个关键问题之一。
本文介绍了通过学习版开设计两位数码管的显示十六进制数。
采用汇编进行编程,可以实现从00到FF的十六进制数的循环显示。
在Quartus Ⅱ软件平台上,完成了两位数码管的显示电路的设计。
采用Verilog HDL硬件描述语言描述两位数码管的显示电路,完成对电路的功能仿真。
关键词:两位数码管的显示 Quartus Ⅱ状态机循环AbstractIn the information age today, SCM technology is applied more and more widely, involved in all walks of life, but also penetrate into people's daily life, such as washing machines, air conditioners, refrigerators and other control system, you can with MCU. In order to let people very intuitive understanding of the relevant equipment current state, most of the time to the current time, temperature, and work procedures state through the digital tube display, which involves the MCU digital tube display technology. In practical application, the digital tube display of single chip microcomputer is generally used in dynamic display mode, and it is one of the key problems in the design of dynamic display technology with correct and high efficiency. This paper introduces the dynamic display of the two bit digital tube through the learning version of the sixteen digit number. Assembly for programming, can be achieved from 1 to F sixteen decimal number of automatic display. On Quartus II software platform, the design of dynamic display circuit of two bit digital tube is completed. The HDL Verilog hardware description language is used to describe the dynamic display circuit of two bit digital tube, and the function simulation of the circuit iscompleted.Keywords: Dynamic display of multi bit digital tube Quartus Ⅱ State machine Circulat第1章绪论1.1 概述数码管是一类显示屏通过对其不同的管脚输入相对的电流,会使其发亮,从而显示出数字能够显示时间、日期、温度等所有可用数字表示的参数。
单片机实验两位数码管显示报告
![单片机实验两位数码管显示报告](https://img.taocdn.com/s3/m/56ef95609b6648d7c1c74641.png)
一、实验目的1、在之前单键实验和中断控制数码管“静态”显示实验的基础上,把单键判断、数码管显示和中断结合起来编写中断程序实现单键控制一位数码管;2、在实现控制一位数码管显示的基础上用单键控制两位数码管显示。
二、实验所需器材与软件硬件:电脑、传输线、AT89S52单片机软件:编程软件Keil uVision3;读写软件MePro V5.02三、实验程序的及其分析:1、单键控制一位数码管显示主要设计思路:在中断主程序后加入单键判断键按下情况判断语句,把数码管显示程序放在中断子程序中。
当有键按下且有中断请求时,重新给数码管显示偏移地址赋值,从而改变显示内容。
程序:ORG 0000HAJMP MAIN ;转向主程序ORG 001BH ;中断矢量地址AJMP T_INT ;转向中断服务程序MAIN: ;主程序标号MOV R3,#0 ;表偏移地址MOV DPTR,#TAB ;把表头地址赋值给寄存器DPTRMOV TMOD,#10H ;设定定时器工作于模式1MOV TH1,#0FEH ;定时器赋初值MOV TL1,#0EHSETB ET1 ;开中断SETB EASETB TR1 ;启动定时器LOOP1:JNB P1.4, LOOP4AJMP LOOP1LOOP4:ACALL DELAYJNB P1.4, LOOP_ADD 单键按下判断程序LOOP_ADD:INC R3CJNE R3,#10,LOOP8MOV R3,#0LOOP8: AJMP LOOP1T_INT: MOV TH1,#0FEHMOV TL1,#0EHMOV A,R3 中断程序内嵌的数码管显示程序MOVC A,@A+DPTRMOV P0,AMOV P2,#11111110BRETITAB:DB 0C0H,0F9H,0A4H,0B0H ,99H,92H,82H,0F8H ;表内容DB 80H,90HDELAY:MOV R5,#64HLOOP5:MOV R7,#0FFHLOOP6:NOPNOP 用于单键按下防抖动的延时程序DJNZ R7,LOOP6DJNZ R5,LOOP5RET2、单键控制两位数码管显示设计思路:用两个寄存器分别存放数码管显示的个位和十位,并且在数码管显示程序中用移位指令对数码管的位码进行移位,使每次执行中断程序时显示一位数,循环两次中断程序后“静态”显示两位数字。
两位数码管显示设计
![两位数码管显示设计](https://img.taocdn.com/s3/m/6cafde2aa55177232f60ddccda38376baf1fe099.png)
两位数码管显示设计摘要:本设计旨在设计一套能够在两位数码管上显示不同数字的电路。
通过使用逻辑门、计数器和驱动器等组合电路,以及基本的数字逻辑知识,通过编写Verilog代码实现数字的显示和计数。
关键词:两位数码管、逻辑门、计数器、驱动器、Verilog代码一、引言数码管(Digital Display)是一种用于显示数字和字母的设备,它将输入的信号转换为相应的数字或字符,并在屏幕上显示出来。
本设计中,我们使用两位数码管,通过设计适当的电路和使用相应的逻辑门、计数器和驱动器等组合电路,以及编写Verilog代码,实现数字的显示和计数。
二、设计思路1.利用计数器设计模块来实现数字的计数功能。
通过适当的控制信号,将从0计数到9,并在10时重新计数。
计数器的输出作为数码管的输入。
2.设计一个驱动器模块,将计数器模块的输出转换为适合于数码管显示的控制信号。
通过逻辑门的组合,将每个数码管的数码按照不同的段(段是数码管上的一个小灯,用于显示数字的每个部分)进行控制。
3. 编写Verilog代码,将计数器模块和驱动器模块进行组合。
通过适当的端口和输入/输出信号,将两个模块连接在一起,实现数字的显示和计数。
三、设计实现1.计数器模块设计module counterinput clk, // 时钟信号output reg[3:0] count // 计数器的输出beginif (count == 4'b1001) // 9时重新计数count <= 4'b0000;elsecount <= count + 1; // 计数器自增endendmodule2.驱动器模块设计module decoderinput reg[3:0] count, // 指示要显示的数字output reg a, b, c, d, e, f, g // 段待显示数字begincase(count)4'b0000 : begin a = 1; b = 1; c = 1; d = 1; e = 1; f = 1; g = 0; end // 数字04'b0001 : begin a = 0; b = 1; c = 1; d = 0; e = 0; f = 0; g = 0; end // 数字14'b0010 : begin a = 1; b = 1; c = 0; d = 1; e = 1; f = 0; g = 1; end // 数字24'b0011 : begin a = 1; b = 1; c = 1; d = 1; e = 0; f = 0; g = 1; end // 数字34'b0100 : begin a = 0; b = 1; c = 1; d = 0; e = 0; f = 1; g = 1; end // 数字44'b0101 : begin a = 1; b = 0; c = 1; d = 1; e = 0; f = 1; g = 1; end // 数字54'b0110 : begin a = 1; b = 0; c = 1; d = 1; e = 1; f = 1; g = 1; end // 数字64'b0111 : begin a = 1; b = 1; c = 1; d = 0; e = 0; f = 0; g = 0; end // 数字74'b1000 : begin a = 1; b = 1; c = 1; d = 1; e = 1; f = 1; g = 1; end // 数字84'b1001 : begin a = 1; b = 1; c = 1; d = 1; e = 0; f = 1; g = 1; end // 数字9default : begin a = 0; b = 0; c = 0; d = 0; e = 0; f = 0; g = 0; end // 默认显示为空白endcaseendendmodule3.组合计数器和驱动器模块module displayinput clk, // 时钟信号output reg[3:0] count, // 计数器模块的输出output reg a, b, c, d, e, f, g // 驱动器模块的输出counter counter_inst(.clk(clk), .count(count)); // 实例化计数器模块decoderdecoder_inst(.count(count), .a(a), .b(b), .c(c), .d(d), .e(e), . f(f), .g(g)); // 实例化驱动器模块endmodule四、实验结果与分析通过连接计数器和驱动器模块,使用相同的时钟信号,即可实现数字计数和显示的功能。
单片机实验报告,数码管显示
![单片机实验报告,数码管显示](https://img.taocdn.com/s3/m/487acf9bd05abe23482fb4daa58da0116d171f6c.png)
单片机实验报告,数码管显示实验目的1、掌握数码管动态扫描显示的原理和编程实现方法;2、掌握软件延时程序的使用。
实验任务利用数码管动态显示,设计一个两位秒表,计时0-59,时间到了显示“FF”,使用软件延时实现。
实验原理数码管动态显示的连接方式是将所有数码管的段码a、b、c、d、e、f、g、dp的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制。
所谓动态扫描显示,即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。
具体过程是:当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是哪个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以只要将需要显示的数码管的位选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。
通过分时轮流控制各个数码管的COM端,就使各个数码管轮流受控显示,这就是动态驱动。
在轮流显示过程中每位数码管的点亮时间为2ms左右,由于人的视觉暂留现象及发光极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感。
实现延时通常有两种方法:一种是硬件延时,这需要用到单片机的定— 1 —时器,这种方法可以提高CPU的工作效率,也能做到精确控制时间,此方法将在实验四中再学习;另一种方法是软件延时,这种方法主要采用循环体进行。
可以采用for循环以及for循环嵌套的方式达到粗略的长时间延时,利用Keil软件可以调试和观察for语句的延时时间。
实验结果:总结:本次实验我很好的复习了有关C语言的相关语句知识点,合理的运用到了单片机的程序编码中去,但实验过程中,也出现了很多问题。
比如在运行过程中,数码管会乱码,检查后发现是扫描信号端口错误,将扫描信号端口顺序调换,重新运行则解决了乱码问题。
共阴数码管电路0到15的显示参数代码表要记清楚。
用单片机AT89C51设计一个2位的LED数码显示作为“秒表”—单片机课程设计
![用单片机AT89C51设计一个2位的LED数码显示作为“秒表”—单片机课程设计](https://img.taocdn.com/s3/m/34b46f1bbed5b9f3f90f1ccc.png)
累加器是CPU使用最频繁的一个寄存器。ACC既是ALU处理数据的来源,又是ALU运算结果的存放单元。单片机与片外RAM或I/O扩展口进行数据交换必须通过ACC来进行。
一、设计题目和要求:
题目三:秒表
应用AT89C51的定时器设计一个2位的LED数码显示作为“秒表”:显示时间为00~99s,每秒自动加1,设计一个“开始”键,按下“开始”键秒表开始计时。设计一个“复位”键,按下“复位” 键后,秒表从0开始计时。
任务安排:李座负责绘制电路原理图;梁宗林负责收集资料及电子版整理;付忠林负责程序和仿真。
·P3 8位、准双向I/O口,具有内部上拉电阻。
P3口可作为普通I/O口。用作输入时,应先将输出锁存器置1。在编程/校验时,P3口接收某些控制信号。它可驱动4个TTL负载。
(2)控制信号线
·RST 复位输入信号,高电平有效。在振荡器稳定工作时,在RST脚施加两个机器周期以上的高电平,将器件复位。
·EA/VPP 外部程序存储器访问允许信号EA.
7.通过此次课程设计能够将单片机软硬件结合起来,对程序进行编辑,校验。
8.该课程设计通过单片机的定时器/计数器定时和计数原理,设计简单的计时器系统,拥有正确的计时、暂停、清零、复位功能,并同时可以用数码管显示。
三、设计内容:
了解8051芯片的的工作原理和工作方式 ,使用该芯片对LED数码管进行显示控制,实现用单片机的端口控制数码管,显示分、秒,并能用按钮实现秒表起动、停止、清零功能,精确到1秒。
(3)存储器
第2讲 单片机控制两个数码管
![第2讲 单片机控制两个数码管](https://img.taocdn.com/s3/m/a1109403b52acfc789ebc9df.png)
汇编
C51
#include <reg52.h> unsigned char code dispcode[] ={0xc0,0xf9,0xa4,0xb0,0x99, 0x92,0x82,0xf8,0x80,0x90}; unsigned char tcount; unsigned int a,b,c; sbit P3_6=P3^6; sbit P3_7=P3^7; void delay40ms(void) { unsigned char i,j,k; for(k=4;k>0;k--) for(i=20;i>0;i--) for(j=248;j>0;j--); } void main(void) { tcount=0; P3_6=0; P3_7=1; P1=0xff; while(1) { a=0; b=0; }
10
实训与作业
完成数码管显示00-99的项目(静态 显示方式、动态显示方式) 写出实验报告
11
讨论:数组与指针( 讨论:数组与指针(C51)vs 内容与地址(ASM) ) 内容与地址( )
另一种查表方法: #include <reg52.h> unsigned char code dispcode[] ={0xc0,0xf9,0xa4,0xb0,0x99, 0x92,0x82,0xf8,0x80,0x90}; 定义基于程序存储器( unsigned char code *finger; //定义基于程序存储器(code区)的指针 定义基于程序存储器 区 unsigned int a,b; void main(void) { while(1) { finger = &dispcode[0]; //指针:finger为数组 指针: 为数组dispcode的第一个单元的地 指针 为数组 的第一个单元的地 显示数码表的第一个值所在的地址) 址(即:显示数码表的第一个值所在的地址) for(b=0;b<32;b++) { delay20ms(); P1= *finger; //从指针指向的地址取数据 内容) P1口 //从指针指向的地址取数据(内容)到P1口 从指针指向的地址取数据( finger++; //指针加一 指针加一 } } } !!说明 C51的指针 说明: 的指针finger=ASM的地址 C51的 finger=ASM的 的地址, !!说明:C51的指针finger=ASM的地址, C51的*finger=ASM的@R0 C51的&x=ASM的取得内容为 C51的&x=ASM的取得内容为(x)的单元地址 的取得内容为( 12
单片机实验报告二-数码管显示实验
![单片机实验报告二-数码管显示实验](https://img.taocdn.com/s3/m/53ca42187275a417866fb84ae45c3b3566ecdd63.png)
单片机实验报告二-数码管显示实验摘要:本实验使用单片机控制数码管的显示,在实验过程中通过学习单片机的GPIO口的编程,调试程序、调节电路来达到正确的显示效果。
最终按照要求实现了单片机控制数码管的计数器。
关键词:单片机、数码管、GPIO口、计数器一、实验介绍数码管是一种介于机械仪表和液晶显示器之间的电子显示器件,广泛应用于计时器、计数器、仪表等电子产品中。
本实验旨在通过单片机控制数码管的显示来加深对GPIO口的使用和调试程序的理解,同时了解数码管的原理。
本实验主要分为两部分:数码管显示基础实验和数码管控制开关实验。
通过这两部分的实验可以了解数码管的工作原理和单片机的基本控制方式。
二、实验原理2.1 数码管的基本原理数码管显示器将数字显示为一组符号,例如“0”到“9”。
表示不同数字的符号被编码成一个数字码。
七段数码管用一个七段数码字母来表示数字,如下表所示:| 数字 | a | b | c | d | e | f | g || ---- | - | - | - | - | - | - | - || 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 || 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 || 2 | 1 | 1 | 0 | 1 | 1 | 0 | 1 || 3 | 1 | 1 | 1 | 1 | 0 | 0 | 1 || 4 | 0 | 1 | 1 | 0 | 0 | 1 | 1 || 5 | 1 | 0 | 1 | 1 | 0 | 1 | 1 || 6 | 0 | 0 | 1 | 1 | 1 | 1 | 1 || 7 | 1 | 1 | 1 | 0 | 0 | 0 | 0 || 8 | 1 | 1 | 1 | 1 | 1 | 1 | 1 || 9 | 1 | 1 | 1 | 1 | 0 | 1 | 1 |通过控制数码管的七个LED灯的亮灭,可以实现不同符号显示。
两位数码管循环显示00
![两位数码管循环显示00](https://img.taocdn.com/s3/m/e6b2407f27284b73f2425098.png)
两位数码管循环显示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等仿真器,实验板都可直接实验。
基于单片机控制的数码管控制计数器毕业设计word格式 - 副本
![基于单片机控制的数码管控制计数器毕业设计word格式 - 副本](https://img.taocdn.com/s3/m/fcff847f7fd5360cba1adb68.png)
重庆信息技术职业学院毕业设计题目基于单片机的数码管显示计时器设计选题性质: 设计□报告□其他院系电子工程学院专业电子信息工程技术班级 12 级(1)班学号 1220090141学生姓名陈军指导教师唐玉萍教务处制2012年 9 月 1 日目录1、课程设计目的*************************************************42、课程设计具体要求*********************************************43、课程设计正文*************************************************5 3.1硬件设计***************************************************53.1.1 方案设计**********************************************53.1.2 AT89S51功能介绍及其设计******************************53.1.3CD4511功能介绍及其设计******************************113.1.4数码管功能介绍及其设计********************************133.1.5 单元电路设计*****************************************16 3.1.6原理图***********************************************17 3.1.7PCB图************************************************183.1.8系统调试**********************************************183.2 软件设计**************************************************193.2.1 系统分析**********************************************193.2.2 系统设计**********************************************193.2.3 系统实施及程序****************************************194、课程设计总结*************************************************211、课程设计目的单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用非常广泛,发展很迅速。
89C52数码管二位计数
![89C52数码管二位计数](https://img.taocdn.com/s3/m/6f9db07f02768e9951e73898.png)
void T1_time() interrupt 1
{
TH1=(65536-45872)/256;//重装初值
TL1=(65536-45872)%256;
num2++;
if(num2==80) //如果到了20次,说明1秒时间到
{
num2=0; //然后把num2清0重新再计20次
wela=1; //原来段选数据通过位选锁存器造成混乱
P0=0xfd; //送位选数据
wela=0;
delayms(5); //延时
}
void delayms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
num++;
if(num==60)
num=0; //到60归0
shi=num/10;
ge=num%10;
}
}
{
display(shi,ge);
}
}
void display(uchar shi,uchar ge) //显示子函数
{
dula=1;
P0=table[shi]; //送段选数据
dula=0;
P0=0xff; //送位选数据前关闭所有显示,防止打开位选锁存时
#include <reg52.h> //52系列单片机头文件
#define uchar unsigned char
#define uint unsigned int
sbit dula=P2^6; //申明U1锁存器的锁存端
c语言两位数码管循环
![c语言两位数码管循环](https://img.taocdn.com/s3/m/4e8cbbb785868762caaedd3383c4bb4cf6ecb764.png)
c语言两位数码管循环C语言是一种广泛应用于嵌入式系统开发和底层编程的高级编程语言。
在C语言中,我们可以使用数字来控制数码管的显示。
本文将介绍如何使用C语言控制两位数码管的循环显示。
数码管是一种常见的输出设备,用于显示数字和一些基本的字符。
在电子钟、计数器、温度计等设备中都可以看到数码管的身影。
数码管通常由七段显示器组成,每个七段显示器可以显示0-9十个数字。
要控制数码管的显示,我们需要了解数码管的原理和使用方法。
在C语言中,我们可以通过设置数码管的引脚状态来控制其显示内容。
对于两位数码管,我们需要控制四个引脚,分别用于控制个位数和十位数的显示。
我们需要定义数码管的引脚和对应的数字。
我们可以使用数组来存储数码管的数字,例如:```cint digits[10][4] = {{1, 1, 1, 1}, // 0{0, 1, 1, 0}, // 1{1, 1, 0, 1}, // 2{1, 1, 1, 0}, // 3{0, 1, 1, 1}, // 4{1, 0, 1, 1}, // 5{1, 0, 1, 1}, // 6{1, 1, 1, 0}, // 7{1, 1, 1, 1}, // 8{1, 1, 1, 1}, // 9};```接下来,我们需要编写控制数码管的代码。
我们可以使用循环来实现两位数码管的循环显示。
首先,我们需要定义一个计数器变量,用于控制显示的数字。
然后,在一个无限循环中,我们可以通过计数器变量来控制数码管的显示。
```cint main() {int counter = 0;while (1) {int digit1 = counter % 10; // 个位数int digit2 = (counter / 10) % 10; // 十位数// 控制数码管的引脚状态for (int i = 0; i < 4; i++) {// 设置个位数的引脚状态// 设置十位数的引脚状态}// 延时一段时间,使数码管显示出来// 这里可以使用延时函数来实现,例如delay(1000),表示延时1000毫秒// 更新计数器变量counter++;// 当计数器变量大于99时,重置为0,实现循环显示if (counter > 99) {counter = 0;}}return 0;}```在上面的代码中,我们使用了一个循环来不断更新数码管的显示。
用单片机AT89C51设计一个2位的LED数码显示作为“秒表”—单片机课程设计
![用单片机AT89C51设计一个2位的LED数码显示作为“秒表”—单片机课程设计](https://img.taocdn.com/s3/m/944ec00659eef8c75fbfb34d.png)
目录一、设计题目和要求: (2)二、设计目的: (2)三、设计内容: (3)四、课程设计心得体会 (25)五、参考文献 (26)六、课程设计指导教师评审标准及成绩评定 (27)附件1:秒表原理图(实际接线图) (28)附件2:仿真图1 (30)附件3:仿真图2 (31)一、设计题目和要求:题目三:秒表应用AT89C51的定时器设计一个2位的LED数码显示作为“秒表”:显示时间为00~99s,每秒自动加1,设计一个“开始”键,按下“开始”键秒表开始计时。
设计一个“复位”键,按下“复位”键后,秒表从0开始计时。
任务安排:李座负责绘制电路原理图;梁宗林负责收集资料及电子版整理;付忠林负责程序和仿真。
二、设计目的:1.进一步掌握AT89C51单片机的结构和工作原理;2.掌握单片机的接口技术及外围芯片的工作原理及控制方法;3.进一步掌握单片机程序编写及程序调试过程,掌握模块化程序设计方法;4.掌握PROTEUS仿真软件的使用方法;5.掌握LED数码管原理及使用方法。
6.掌握定时器、外部中断的设置和编程原理。
7.通过此次课程设计能够将单片机软硬件结合起来,对程序进行编辑,校验。
8.该课程设计通过单片机的定时器/计数器定时和计数原理,设计简单的计时器系统,拥有正确的计时、暂停、清零、复位功能,并同时可以用数码管显示。
三、设计内容:了解8051芯片的的工作原理和工作方式,使用该芯片对LED数码管进行显示控制,实现用单片机的端口控制数码管,显示分、秒,并能用按钮实现秒表起动、停止、清零功能,精确到1秒。
AT89C51单片机的主要工作特性:·内含4KB的FLASH存储器,擦写次数1000次;·内含28字节的RAM;·具有32根可编程I/O线;·具有2个16位可编程定时器;·具有6个中断源、5个中断矢量、2级优先权的中断结构;·具有1个全双工的可编程串行通信接口;·具有一个数据指针DPTR;·两种低功耗工作模式,即空闲模式和掉电模式;·具有可编程的3级程序锁定定位;AT89C51的工作电源电压为5(1±0.2)V且典型值为5V,最高工作频率为24MHz.AT89C51各部分的组成及功能:振荡器和时钟电路数据存储器128字节程序存储器14KBCPU 两个16位定时器计数器中断控制总线扩展控制器并行可编程I/O口可编程串行口内部总线外部中断扩展控制P0 P1 P2 P3 RXD TXD1.单片机的中央处理器(CPU )是单片机的核心,完成运算和操作控制,主要包括运算器和控制器两部分。
基于单片机实现的两位数码管显示设计
![基于单片机实现的两位数码管显示设计](https://img.taocdn.com/s3/m/a5ff2fcf2af90242a995e5d1.png)
两位数码管显示设计摘要:两位数码管的显示设计主要有硬件部分和软件部分组成,硬件部分以单片机为核心,在其周围有电源电路、时钟电路、复位电路、驱动电路和显示电路组成。
软件部分用汇编语言编程,用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、多种输入输出口和中断系统、定时器∕计数器等功能集成到一个硅片上构成一个小而完善的计算机系统。
目前单片机渗透到我们生活的各个领域,几乎很难找到那个领域没有单片机的踪迹。
两位数码管显示
![两位数码管显示](https://img.taocdn.com/s3/m/7222c7faf61fb7360b4c65f0.png)
课程名称: 单片机原理及应用 设计题目: 两位数码管显示 院 系: 电子信息与电气工程系 学生姓名: 学 号: 专业班级: 指导教师:
14 日
课程设计任务书
设计题目
两位数码管显示设计
学生姓名
Hale Waihona Puke 所在院系电子信息与电 气工程系
专业、年级、班
班
设计要求:
1.使用两位数码管显示器,循环显示两位数 00~99;
1
2. 动态显示
P2.0 和 P2.1 端口分别控制数码管的个位和十位的供电,当相应的端口变成低电平 时,驱动相应的三极管会导通,+5V 通过驱动三极管给数码管相应的位供电,这时只要 P3 口送出数字的显示代码,数码管就能正常显示数字。
3. 动态显示与静态显示对比
本设计要求循环显示,而且要显示两位不同的数字,所以必须用动态扫描的方法来 实现,即采用动态显示的方式,就是先个位显示 1 毫秒,再十位显示 1 毫秒,不断循环, 这样只要扫描时间小于 1/50 秒,就会因为人眼的视觉残留效应,看到两位不同的数字 稳定显示。各位数码管的字形控制端对应地并在一起,由一组 I/O 端口进行控制,各位 的公共极相互独立,分别由不同的 I/O 控制信号控制。动态显示的优点:节省 I/O 端口 线,动态显示的缺点 显示亮度不够稳定,影响因素较多;编程较复杂,占用 CPU 时间 较多。
路
AT89C52 有 40 个引脚,32 个外部双向输入/输出(I/O)端口,同时内含 2 个外中 断口,3 个 16 位可编程定时计数器,2 个全双工串行通信口,2 个读写口线,AT89C52 可 以按照常规方法进行编程,但不可以在线编程程)。
P2 是一个带有内部上拉电阻的 8 位双向 I/O 口,P2 的输出缓冲级可驱动(吸收 或输出电流)4 个 TTL 逻辑门电路。
两位数码管显示计时器
![两位数码管显示计时器](https://img.taocdn.com/s3/m/f6cde186b9d528ea81c7798d.png)
一、题目用定时0的方式1实现数码管两位59S循环计时(计时器)二、思路方案本实验利用单片机的定时器/计数器定时和计数的原理,通过proteus 仿真软件来实现模拟实现。
模拟利用AT89C51单片机、LED数码管实现秒表的计时。
其中一个两位数码管用来显示数据,一位用来显示个位秒,另一位用来显示十位秒。
当计数超过范围时所有数码管全部清零重新计数。
三、实验设计原理图四、程序流程图五、程序代码如下:#include<reg51.h>#define uchar unsigned char#define uint unsigned intuchar num,count,ge,shi;void delay(uint);void display(uchar,uchar);uchar SEG[]={0xc0,0xf9,0xa4,0xb0,0x99, //显示数码管0-9数字0x92,0x83,0xf8,0x80,0x98};void main(){TMOD=0x01; //设置定时器工作方式T0的工作方式为1TH0=(65536-45872)/256; //装初值11.0592M晶振定时50ms数为45872TL0=(65536-45872)%256;EA=1; //开总中断ET0=1; //开定时器0中断TR0=1; //启动定时器0while(1) //程序在这里不停的对数码管动态扫描同时等待中断发生{display(shi,ge);}}/*以下是设计中断服务程序的时间和显示*/void T0_time()interrupt 1{TH0=(65536-45872)/256; //重装初值TL0=(65536-45872)%256;if(++num= =20) //如果到了20次,说明1秒时间到{num=0; //然后把num清0重新再记20次if(++count==60) //这个数用来送数码管显示,到60后归0count=0;shi=count/10; //把一个2位数分离后分别送数码管显示,十位和个位ge=count%10;}}/*以下为延迟函数*/void delay(uint xms){uint i,j;for(i=xms;i>0;i--) //延迟时间为xms乘以50msfor(j=110;j>0;j--);}/*以下为显示数码管的子函数*/void display(uchar shi,uchar ge){P3=0xfe; //打开P3.0,及打开数码管1引脚P2=SEG[ge];delay(20);P3=0xfd; //打开P3.1,及打开数码管2引脚P2=SEG[shi];delay(20);}六实验过程遇到的问题总结1.由于重新接触单片机,软硬件较生疏,刚看题目没思路,只能网上查资料看,再理解,相当的费力。
两位数码管显示电路
![两位数码管显示电路](https://img.taocdn.com/s3/m/b86333c23186bceb19e8bbbe.png)
EDA设计论文题目学院专业班级学生姓名指导教师2016年 1 月10 日目录摘要 (3)Abstract (4)第1章绪论 (5)1.1 概述 (5)1.2 设计的目的 (5)1.3 设计的基本内容 (1)第2章 EDA、Verilog HDL简介 (2)2.1 EDA技术 (2)2.1.1 EDA技术的概念 (2)2.1.2 EDA技术的特点 (2)2.1.3 EDA设计流程 (2)2.2 硬件描述语言(Verilog HDL) (7)2.2.1 Verilog HDL简介 (3)2.2.2 Verilog HDL语言的特点 (3)第3章两位数码管的动态显示电路的设计过程 (4)3.1 系统需求分析 (4)3.2 设计原理 (4)3.3 MAXII晶体管说明 (5)3.4 编写代码 (6)3.5 管脚分配 (8)第4章系统仿真 (9)结论 (10)参考文献 (11)附录 (12)致谢 (13)\摘要在信息时代的今天,单片机技术应用越来越广泛,涉及各行各业,也渗透到人们的日常生活之中,如洗衣机、空调、冰箱等的控制系统,就可以用单片机实现。
为了让人们很直观的了解相关设备当前的工作状态,很多时候需要将当前的时间、温度、工作程序等状态通过数码管显示出来,这就涉及到单片机的数码管显示技术。
在实际应用中,单片机的数码管显示,正确、高效应用数码管显示技术设计成功与否的一个关键问题之一。
本文介绍了通过学习版开设计两位数码管的显示十六进制数。
采用汇编进行编程,可以实现从00到FF的十六进制数的循环显示。
在Quartus Ⅱ软件平台上,完成了两位数码管的显示电路的设计。
采用Verilog HDL硬件描述语言描述两位数码管的显示电路,完成对电路的功能仿真。
关键词:两位数码管的显示 Quartus Ⅱ状态机循环AbstractIn the information age today, SCM technology is applied more and more widely, involved in all walks of life, but also penetrate into people's daily life, such as washing machines, air conditioners, refrigerators and other control system, you can with MCU. In order to let people very intuitive understanding of the relevant equipment current state, most of the time to the current time, temperature, and work procedures state through the digital tube display, which involves the MCU digital tube display technology. In practical application, the digital tube display of single chip microcomputer is generally used in dynamic display mode, and it is one of the key problems in the design of dynamic display technology with correct and high efficiency. This paper introduces the dynamic display of the two bit digital tube through the learning version of the sixteen digit number. Assembly for programming, can be achieved from 1 to F sixteen decimal number of automatic display. On Quartus II software platform, the design of dynamic display circuit of two bit digital tube is completed. The HDL Verilog hardware description language is used to describe the dynamic display circuit of two bit digital tube, and the function simulation of the circuit iscompleted.Keywords: Dynamic display of multi bit digital tube Quartus Ⅱ State machine Circulat第1章绪论1.1 概述数码管是一类显示屏通过对其不同的管脚输入相对的电流,会使其发亮,从而显示出数字能够显示时间、日期、温度等所有可用数字表示的参数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录
一、设计目的 (4)
二、设计要求 (4)
三、设计电路图 (4)
四、设计说明 (5)
1、数码管的显示原理 (5)
2、晶振的作用 (5)
五、参考程序框图: (6)
六、参考代码…………………………………………………7-9
七、设计时使用的主要参考书及手册 (9)
八、设计心得: (9)
两位数码管计数
一、设计目的:
1. 学习外部中断技术的基本使用方法。
2. 学习中断处理程序的编程方法。
3. 学习51单片机内部计数器的使用和编程方法。
4. 学习使用数码管的显示原理以及应用。
二、设计要求:
按开关开始,在按开关停止计秒,计秒从0开始,讲到99,再从0开始计秒。
按下复位键开关,数码管就会显示0.
三、设计电路连线:
四、设计说明:
1、数码管的显示原理:
@单片机系统扩展LED数码管时多用共阳LED:
共阳数码管每个段笔画是用低电平(“0”)点亮的,要求驱动功率很小;而共阴数码
管段笔画是用高电平(“0”)点亮的,要求驱动功率较大。
@通常每个段笔画要串一个数百欧姆的降压电阻。
字形0123456789黑共阳0C00F90A40B09992820F880900FF 共阴FC60da F266B6BE E0FE F600
计时计算:
fosc= 12MHz 则:
(振荡周期)1Tc=1/12MHz
(机器周期)1Tm=12Tc=12/12MHz=1 S
故选择方式1 工作可以得到:
则初值为:3CB0H
2、晶振的作用
晶振的作用是为系统提供基本的时钟信号。
晶振两边的电容叫负载电容,单片机的晶振
工作于并联谐振状态,晶振的频率是在负载电容下测得的,能最大限度的保证频率值的误差。
也能保证温漂等误差。
两个电容的取值都是相同的,或者说相差不大,如果相差太大,容易
造成谐振的不平衡,容易造成停振或者干脆不起振.
五、参考程序框图:
主程序流程图
↓
两位数码管显示模块
六、参考代码:
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP SER
ORG 000BH
LJMP IT0P
ORG 0100H
MAIN: MOV R6,#00H
MOV DPTR,#TAB
MOV R3,#20
CLR 20H
MOV TMOD,#01H
MOV TL0,#0B0H
MOV TH0,#3CH
SETB TR0
SETB IT0
SETB ET0
SETB EX0
SETB PX0
CLR PT0
SETB EA
LOOP: MOV A,R6
MOV B,#10
DIV AB
MOVC A,@A+DPTR
MOV P0,#00001110B
MOV P1,A
LCALL DELAY
MOV A,B
MOVC A,@A+DPTR
MOV P0,#00001101B
MOV P1,A
AJMP LOOP
TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H SER: PUSH PSW
PUSH ACC
PUSH DPH
PUSH DPL
CPL 20H
POP DPL
POP DPH
POP ACC
POP PSW
RETI
IT0P: PUSH PSW
PUSH ACC
MOV TL0,#0B0H
MOV TH0,#3CH
DJNZ R3,LOOP1
MOV R3,#20
JNB 20H,LOOP1
INC R6
CLR C
MOV A,R6
SUBB A,#100
JC LOOP1
MOV R6,#0
LOOP1: POP ACC
POP PSW
RETI
DELAY: PUSH PSW
PUSH ACC
MOV R5,#4H
DEL4: MOV R4,#19H
DEL5: DJNZ R4,DEL5
DJNZ R5,DEL4
POP ACC
POP PSW
RET
END
七、设计时使用的主要参考书及手册
1、《单片机原理及应用》(“十五”国家级规划教材) 张毅刚主编高教出版社
2、单片机原理与应用实验指导书(自编)
3、《单片微型计算机原理及应用》张坤毅等编西安电子科技大学出版社1997年
4、《单片机原理及接口技术》胡汉才编清华大学出版社
5、依据图书馆现有资料及网络资源。
八、设计心得:
学习单片机技术有一定的难度,不花费一番努力是很难学会的,但是只要不断努力就一定能成功,学习单片机永远记住一句话:实践是检验真理的唯一方法。
多动手做,哪怕是从点亮一只指示灯开始,也要动手去做,否则就会永远停留在书本上。
在编写程序的过程中也碰到很多问题,大部分问题我都是在网上找到答案的。
尤其是在一些关于单片机的专业网站,他们把我遇到的一些问题解释得非常详细、到位!所以我觉得结合网络来学习单片机,多从别人那学习是一个快速掌握单片机技术的好方法!。