单片机C语言程序设计:单只数码管循环显示 0~9

合集下载

51单片机数码管0到99循环程序代码

51单片机数码管0到99循环程序代码

51单片机数码管0到99循环程序代码1. 概述在嵌入式系统的开发中,数码管是一种常见的输出设备,可以用于显示数字、字符等信息。

而51单片机是一种广泛应用的微控制器,其结合了强大的功能和灵活的应用,能够很好地驱动数码管。

本文将介绍如何使用51单片机编写一个循环显示0到99的程序,通过数码管输出这些数字。

2. 电路连接我们需要连接51单片机和数码管。

通常我们使用的是共阴数码管,其连接方式如下:- VCC连接到5V电源- GND连接到GND- DIO(数据输入/输出)连接到51单片机的IO口3. 程序设计下面是一个简单的C语言程序设计,用于控制数码管显示0到99的数字。

```c#include <reg51.h>sbit DIO = P2^0; // 数码管数据输入/输出sbit CL = P2^1; // 数码管片选信号unsigned char code numCode[10] = { 0xc0, // 00xf9, // 10xa4, // 20xb0, // 30x99, // 40x92, // 50x82, // 60xf8, // 70x80, // 80x90 // 9};//延时函数void delay(unsigned int i) {unsigned int j,k;for (j=i;j>0;j--)for(k=110;k>0;k--);}void display(unsigned char num) { CL = 1; //关闭片选DIO = numCode[num / 10]; //十位 delay(2);CL = 0;DIO = 0xff; //消隐delay(2);CL = 1; //关闭片选DIO = numCode[num 10]; //个位 delay(2);CL = 0;DIO = 0xff; //消隐delay(2);}void m本人n() {unsigned char i,j;while(1) {for(i=0;i<10;i++) {for(j=0;j<10;j++) {display(i * 10 + j);}}}}```4. 程序说明- 首先定义了数码管的连接引脚,以及0~9的显示编码。

单只数码管循环显示0~9教学文稿

单只数码管循环显示0~9教学文稿

项目一:单只数码管循环显示0~9一、设计要求:用汇编语言编写程序实现51单片机控制1只数码管,循环显示0~9。

并用仿真软件仿真出实验结果。

最后,用51单片机开发板实现一支数码管循环显示0到9。

二、设计原理:数码管显示原理:我们最常用的是七段式和八段式LED数码管,八段比七段多了一个小数点,其他的基本相同。

所谓的八段就是指数码管里有八个小LED发光二极管,通过控制不同的LED的亮灭来显示出不同的字形。

数码管又分为共阴极和共阳极两种类型,其实共阴极就是将八个LED的阴极连在一起,让其接地,这样给任何一个LED的另一端高电平,它便能点亮。

而共阳极就是将八个LED的阳极连在一起。

其原理图如下。

其中引脚图的两个COM端连在一起,是公共端,共阴数码管要将其接地,共阳数码管将其接正5伏电源。

数码管的8段,对应一个字节的8位,a对应最低位,dp对应最高位。

所以如果想让数码管显示数字0,那么共阴数码管的字符编码为00111111,即0x3f;共阳数码管的字符编码为11000000,即0xc0。

可以看出两个编码的各位正好相反。

本实验用到的共阳极0到9编码:0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90HP0口:P0.0—P0.7: 双向I/O (内置场效应管上拉),寻址外部程序存储器时分时作为双向8位数据口和输出低8位地址复用口;不接外部程序存储器时可作为8位准双向I/O口使用。

PO结构图如下:四、设计仿真图:五、源代码:ORG 0000HSJMP MAINORG 030HMAIN: MOV R1,#00HMOV A,R1D1: ANL A,#0FHMOV DPTR,#TABMOVC A,@A+DPTR ;查表MOV P0,A ;P0口输出,显示数字ACALL DELAYINC R1MOV A,R1 ;A加1CJNE A,#10,D1 ;判断A是否到达10LJMP MAIN ;当A达到10跳回主函数,重新赋值为0 DELAY: MOV R2,#05H ;延时D2: MOV R3,#0FFHD3: MOV R4,#0FFHDJNZ R4,$DJNZ R3,D3DJNZ R2,D2RETTAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;数值1到9的共阳极编码END 六、结果:数码管循环显示0、1、2、3、4、5、6、7、8、9。

数码管0-9循环程序

数码管0-9循环程序

LED数码管汇编程序DISPBUF EQU 50H ;50H,51H,52H,53H是显示缓冲区LED1 EQU P2.0 ;第一位数码管的位控制LED2 EQU P2.1 ;第二位数码管的位控制LED3 EQU P2.2 ;第三位数码管的位控制LED4 EQU P2.3 ;第四位数码管的位控制LED5 EQU P2.4LED6 EQU P2.5LED7 EQU P2.6LED8 EQU P2.7;============================================================== org 0000hLJMP MAINORG 0003HRETIORG 000BHRETIORG 0013HRETIORG 001BHRETIORG 0023HRETIMAIN:MOV R0,#50HMOV 65H, #2MOV 64H, #3MOV 63H, #5MOV 62H, #9MOV 61H, #5MOV 60H, #9MOV 59H, #1MOV 58H, #2ACALL OUTLOOP1:ACALL DISP ;调用显示程序JNB P3.2,K1JNB P3.3,K2ACALL TIMEAJMP LOOP1K1: LJMP CLEARK2: LJMP PAUSETIME:MOV R0,#59H ;指向毫秒计时单元ACALL ADD1 ;调用加1程序(加1毫秒操作)MOV A,R3 ;毫秒数据放入A(R3为2位十进制数组合)CLR C ;清进位标志CJNE A,#60H,ADDSADDS: JC OUT ;小于60毫秒时中断退出ACALL CLR0 ;大于或等于60毫秒时对秒计时单元清0MOV R0,#61H ;指向秒计时单元ACALL ADD1 ;调用加1程序(加1秒操作)MOV A, R3 ;秒数据放入A(R3为2位十进制数组合)CLR C ;清进位标志CJNE A, #60H,ADDMADDM: JC OUT ;小于60秒时中断退出ACALL CLR0 ;大于或等于60秒时对秒计时单元清0MOV R0,#63H ;指向分计时单元ACALL ADD1 ;分计时单元加1分钟MOV A,R3 ;分数据放入ACLR C ;清进位标志CJNE A,#60H,ADDHADDH: JC OUT ;小于60分时中断退出ACALL CLR0 ;大于或等于60分时分计时单元清0MOV R0,#65H ;指向小时计时单元ACALL ADD1 ;小时计时单元加1小时MOV A,R3 ;时数据放入ACLR C ;清进位标志CJNE A,#24H,HOURHOUR: JC OUT ;小于24小时中断退出ACALL CLR0 ;大于或等于24小时计时单元清零OUT:MOV DISPBUF, 65HMOV DISPBUF+1, 64HMOV DISPBUF+2, 63HMOV DISPBUF+3, 62HMOV DISPBUF+4,61HMOV DISPBUF+5, 60HMOV DISPBUF+6,59HMOV DISPBUF+7,58HRETI;===================================================================== =;清零程序;======================================================================CLR0:CLR A ;清累加器MOV @R0,A ;清当前地址单元DEC R0 ;指向前一地址MOV @R0,A ;前一地址单元清零RET;===================================================================== =;加1子程序;===================================================================== =ADD1:MOV A,@R0 ;取当前计时单元数据到ADEC R0 ;指向前一地址SW AP A ;A中数据高四位与低四位交换ORL A,@R0 ;前一地址中数据放入A中低四位ADD A,#01H ;A加1操作DA A ;十进制调整MOV R3,A ;移入R3寄存器ANL A,#0FH ;高四位变0MOV @R0,A ;放回前一地址单元MOV A,R3 ;取回R3中暂存数据INC R0 ;指向当前地址单元SW AP A ;A中数据高四位与低四位交换ANL A,#0FH ;高四位变0MOV @R0,A ;数据放入当前地址单元中RET;===================================================================== =;显示程序;===================================================================== =DISP:;-----------------------------------------------------------MOV A,DISPBUF ;取第一个待显示数MOV DPTR,#DISPTABMOVC A,@A+DPTR ;取字形码CPL A ;MOV P0,A ;将字形码送P0位(段口)CLR LED1 ;开第一位显示器位口LCALL DELAY ;延时5毫秒SETB LED1 ;关闭第一位显示器(开始准备第二位的数据);-----------------------------------------------------------MOV A,DISPBUF+1 ;取显示缓冲区的第二位MOV DPTR,#DISPTABMOVC A,@A+DPTRCPL A ;MOV P0,A ;将第二个字形码送P0口CLR LED2 ;开第二位显示器LCALL DELAY ;延时5毫秒SETB LED2 ;关第二位显示;-----------------------------------------------------------MOV A,DISPBUF+2 ;取显示缓冲区的第三位MOV DPTR,#DISPTABMOVC A,@A+DPTR ;取字形码CPL A ;MOV P0,A ;将第三个字形码送P0位(段口)CLR LED3 ;开第三位显示器位口LCALL DELAY ;延时5毫秒SETB LED3 ;关闭第三位显示器;-----------------------------------------------------------MOV A,DISPBUF+3 ;取显示缓冲区的第四位MOV DPTR,#DISPTABMOVC A,@A+DPTR ;取字形码CPL A ;MOV P0,A ;将第四个字形码送P0位(段口)CLR LED4 ;开第四位显示器位口LCALL DELAY ;延时5毫秒SETB LED4 ;关闭第四位显示器;-----------------------------------------------------------MOV A,DISPBUF+4 ;取显示缓冲区的第五位MOV DPTR ,#DISPTABMOVC A,@A+DPTR ;取字形码CPL AMOV P0,A ;将第五个字形码送P0位(段口)CLR LED5 ;开第五位显示器位口LCALL DELAY ;延时5毫秒SETB LED5 ;关闭第五位显示器;-----------------------------------------------------------MOV A,DISPBUF+5 ;取显示缓冲区的第六位MOV DPTR ,#DISPTABMOVC A,@A+DPTR ;取字形码CPL AMOV P0,A ;将第六个字形码送P0位(段口)CLR LED6 ;开第六位显示器位口LCALL DELAY ;延时5毫秒SETB LED6 ;关闭第六位显示器;-----------------------------------------------------------MOV A,DISPBUF+6 ;取显示缓冲区的第七位MOV DPTR ,#DISPTABMOVC A,@A+DPTR ;取字形码CPL AMOV P0,A ;将第七个字形码送P0位(段口)CLR LED7 ;开第七位显示器位口LCALL DELAY ;延时5毫秒SETB LED7 ;关闭第七位显示器;-----------------------------------------------------------MOV A,DISPBUF+7 ;取显示缓冲区的第八位MOV DPTR ,#DISPTABMOVC A,@A+DPTR ;取字形码CPL AMOV P0,A ;将第八个字形码送P0位(段口)CLR LED8 ;开第八位显示器位口LCALL DELAY ;延时5毫秒SETB LED8 ;关闭第八位显示器;-----------------------------------------------------------RETPAUSE:ACALL DISPJNB P3.2,K3AJMP PAUSEK3: acall CLEARCLEAR:MOV 58H, #0MOV 59H, #0MOV 60H, #0MOV 61H, #0MOV 62H, #0MOV 63H, #0MOV 64H, #0MOV 65H, #0LJMP LOOP1RETI;===================================================================== =;延时程序;===================================================================== =DELAY:MOV R6,#20H ;延时约5mSD1: MOV R7,#10HD2: DJNZ R7,D2DJNZ R6,D1RET;===================================================================== =DISPTAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0ffh参考链接:/news/2011-07/2624.htm。

【免费下载】单只数码管循环显示0 9

【免费下载】单只数码管循环显示0 9
单只数码管循环显示 0-9 报告
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,系电,力根通保据过护生管高产线中工敷资艺设料高技试中术卷资,配料不置试仅技卷可术要以是求解指,决机对吊组电顶在气层进设配行备置继进不电行规保空范护载高与中带资负料荷试下卷高问总中题体资,配料而置试且时卷可,调保需控障要试各在验类最;管大对路限设习度备题内进到来行位确调。保整在机使管组其路高在敷中正设资常过料工程试况中卷下,安与要全过加,度强并工看且作护尽下关可都于能可管地以路缩正高小常中故工资障作料高;试中对卷资于连料继接试电管卷保口破护处坏进理范行高围整中,核资或对料者定试对值卷某,弯些审扁异核度常与固高校定中对盒资图位料纸置试,.卷保编工护写况层复进防杂行腐设自跨备动接与处地装理线置,弯高尤曲中其半资要径料避标试免高卷错等调误,试高要方中求案资技,料术编试交写5、卷底重电保。要气护管设设装线备备置敷4高、调动设中电试作技资气高,术料课中并3中试、件资且包卷管中料拒含试路调试绝线验敷试卷动槽方设技作、案技术,管以术来架及避等系免多统不项启必方动要式方高,案中为;资解对料决整试高套卷中启突语动然文过停电程机气中。课高因件中此中资,管料电壁试力薄卷高、电中接气资口设料不备试严进卷等行保问调护题试装,工置合作调理并试利且技用进术管行,线过要敷关求设运电技行力术高保。中护线资装缆料置敷试做设卷到原技准则术确:指灵在导活分。。线对对盒于于处调差,试动当过保不程护同中装电高置压中高回资中路料资交试料叉卷试时技卷,术调应问试采题技用,术金作是属为指隔调发板试电进人机行员一隔,变开需压处要器理在组;事在同前发一掌生线握内槽图部内 纸故,资障强料时电、,回设需路备要须制进同造行时厂外切家部断出电习具源题高高电中中源资资,料料线试试缆卷卷敷试切设验除完报从毕告而,与采要相用进关高行技中检术资查资料和料试检,卷测并主处且要理了保。解护现装场置设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。

单片机课设数码管同时循环显示0-9

单片机课设数码管同时循环显示0-9

电子信息工程学院电子设计应用软件训练任务【训练任务】:1、熟练掌握PROTEUS软件的使用;2、按照设计要求绘制电路原理图;3、能够按要求对所设计的电路进行仿真;【基本要求及说明】:1、按照设计要求自行定义电路图纸尺寸;2、设计任务如下:利用51单片机、BCD译码芯片和两位LED构成一个数码管扫描显示系统,两个数码管同时循环显示0~9。

3、按照设计任务在Proteus 6 Professional中绘制电路原理图;4、根据设计任务的要求编写程序,在Proteus下进行仿真,实现相应功能。

【按照要求撰写总结报告】指导教师年月日负责教师年月日学生签字年月日成绩评定表摘要该专业是前沿学科,现代社会的各个领域及人们日常生活等都与电子信息技术有着紧密的联系。

全国各地从事电子技术产品的生产、开发、销售和应用的企事业单位很多,随着改革步伐的加快,这样的企事业单位会越来越多。

为促进市场经济的发展,培养一大批具有大专层次学历,能综合运用所学知识和技能,适应现代电子技术发展的要求,从事企事业单位与本专业相关的产品及设备的生产、安装调试、运行维护、销售及售后服务、新产品技术开发等应用型技术人才和管理人才是社会发展和经济建设的客观需要,市场对该类人才的需求越来越大。

为此电子信息工程专业的人才有着广泛的就业前景,毕业生可从事电子设备、信息系统和通信系统的研究、设计、制造、应用和开发工作。

目录一、任务说明 (1)1.1 专业介绍 (1)1.2 专业背景与市场预测 (1)1.3 本课题分析 (1)二、绘制原理图 (2)2.1 Proteus软件介绍 (2)2.2 原理图绘制说明 (2)2.3 原理图绘制步骤 (3)三、程序编译说明及程序流程图 (6)3.1 Main程序说明 (6)3.2 初始化子程序说明 (6)3.3 display(uchar tmp)子程序说明 (7)3.4 延时子程序说明 (8)3.5 中断子程序说明 (9)四、Proteus仿真说明 (11)4.1 导入仿真文件 (11)4.2 进行仿真 (12)五、课程设计体会及合理化建议 (14)致谢 (16)一、任务说明1.1专业介绍电子信息工程是一门应用计算机等现代化技术进行电子信息控制和信息处理的学科,主要研究信息的获取与处理,电子设备与信息系统的设计、开发、应用和集成。

单只数码管循环显示0~9

单只数码管循环显示0~9

单只数码管循环显示0-9报告设计题目:单只数码管循环显示0~9设计要求:单片机控制1只数码管,循环显示0~9需求分析:本设计要求单只数码管循环显示0~9,这里采用的是共阴极数码管。

让数码管显示数字的步骤为:1)使数码管的公共端接地(共阴极)上。

2)将显示码送到单片机的P0口,向数码管的各个段输出不同的电平,使单个数码管循环显示0-9这10个数字。

复位电路:在上电或复位过程中,控制CPU的复位状态:这段时间让CPU保持复位状态,而不是一上电或刚复位完毕就工作,防止CPU发出错误的指令、执行错误操作,也可以提高电磁兼容性能。

无论用户使用哪种类型的单片机,总要涉及到单片机复位电路的设计。

而单片机复位电路设计的好坏,直接影响到整个系统工作的可靠性。

许多用户在设计完单片机系统,并在实验室调试成功后,在现场却出现了“死机”、“程序走飞”等现象,这主要是单片机的复位电路设计不可靠引起的。

基本的复位方式单片机在启动时都需要复位,以使CPU及系统各部件处于确定的初始状态,并从初态开始工作。

89系列单片机的复位信号是从RST引脚输入到芯片的施密特触发器中的。

当系统处于正常工作状态时,且振荡器稳定后,如果RST引脚上有一个高电平并维持2个机器周期(24个振荡周期)以上,则CPU就可以响应并将系统复位。

设计原理:一、数码管显示原理我们最常用的是七段式和八段式LED数码管,八段比七段多了一个小数点,其他的基本相同。

所谓的八段就是指数码管里有八个小LED发光二极管,通过控制不同的LED的亮灭来显示出不同的字形。

数码管又分为共阴极和共阳极两种类型,其实共阴极就是将八个LED的阴极连在一起,让其接地,这样给任何一个LED的另一端高电平,它便能点亮。

而共阳极就是将八个LED的阳极连在一起。

其原理图如下。

其中引脚图的两个COM端连在一起,是公共端,共阴数码管要将其接地,共阳数码管将其接正5伏电源。

一个八段数码管称为一位,多个数码管并列在一起可构成多位数码管,它们的段选线(即a,b,c,d,e,f,g,dp)连在一起,而各自的公共端称为位选线。

单片机课设数码管同时循环显示0-9

单片机课设数码管同时循环显示0-9

电子信息工程学院电子设计应用软件训练任务【训练任务】:1、熟练掌握PROTEUS软件的使用;2、按照设计要求绘制电路原理图;3、能够按要求对所设计的电路进行仿真;【基本要求及说明】:1、按照设计要求自行定义电路图纸尺寸;2、设计任务如下:利用51单片机、BCD译码芯片和两位LED构成一个数码管扫描显示系统,两个数码管同时循环显示0~9。

3、按照设计任务在Proteus 6 Professional中绘制电路原理图;4、根据设计任务的要求编写程序,在Proteus下进行仿真,实现相应功能。

【按照要求撰写总结报告】指导教师年月日负责教师年月日学生签字年月日成绩评定表摘要该专业是前沿学科,现代社会的各个领域及人们日常生活等都与电子信息技术有着紧密的联系。

全国各地从事电子技术产品的生产、开发、销售和应用的企事业单位很多,随着改革步伐的加快,这样的企事业单位会越来越多。

为促进市场经济的发展,培养一大批具有大专层次学历,能综合运用所学知识和技能,适应现代电子技术发展的要求,从事企事业单位与本专业相关的产品及设备的生产、安装调试、运行维护、销售及售后服务、新产品技术开发等应用型技术人才和管理人才是社会发展和经济建设的客观需要,市场对该类人才的需求越来越大。

为此电子信息工程专业的人才有着广泛的就业前景,毕业生可从事电子设备、信息系统和通信系统的研究、设计、制造、应用和开发工作。

目录一、任务说明 (1)1.1 专业介绍 (1)1.2 专业背景与市场预测 (1)1.3 本课题分析 (1)二、绘制原理图 (2)2.1 Proteus软件介绍 (2)2.2 原理图绘制说明 (2)2.3 原理图绘制步骤 (3)三、程序编译说明及程序流程图 (6)3.1 Main程序说明 (6)3.2 初始化子程序说明 (6)3.3 display(uchar tmp)子程序说明 (7)3.4 延时子程序说明 (8)3.5 中断子程序说明 (9)四、Proteus仿真说明 (11)4.1 导入仿真文件 (11)4.2 进行仿真 (12)五、课程设计体会及合理化建议 (14)致谢 (16)一、任务说明1.1专业介绍电子信息工程是一门应用计算机等现代化技术进行电子信息控制和信息处理的学科,主要研究信息的获取与处理,电子设备与信息系统的设计、开发、应用和集成。

单片机C语言程序(数码管动态静态显示)

单片机C语言程序(数码管动态静态显示)

0123动‎态显示:‎#incl‎u de<r‎e g52.‎h>#d‎e fine‎ucha‎r uns‎i gned‎char‎#def‎i ne u‎i nt u‎n sign‎e d in‎tuin‎t num‎,numd‎u,num‎w e;u‎c har ‎c ode ‎t able‎d u[]=‎{0x3‎f,0x0‎6,0x5‎b,0x4‎f,0x‎66,0x‎6d,0x‎7d,0x‎07,0‎x7f,0‎x6f,0‎x77,0‎x7c,‎0x39,‎0x5e,‎0x79,‎0x71}‎;uch‎a r co‎d e ta‎b lewe‎[]={‎0xfe,‎0xfd,‎0xfb,‎0xf7}‎;sbi‎t dul‎a=P2^‎6;sb‎i t we‎l a=P2‎^7;v‎o id d‎i spla‎y();‎v oid ‎m ain(‎){‎E A=1;‎ET1‎=1;‎T MOD=‎0x10;‎TH1‎=(655‎36-50‎0)/25‎6;T‎H0=(6‎5536-‎500)%‎256;‎TR1=‎1;n‎u m=0;‎whi‎l e(1)‎{‎if(n‎u m==2‎0)‎{‎n um=0‎;‎i f(nu‎m du==‎4)‎numd‎u=0;‎if‎(numw‎e==4)‎n‎u mwe=‎0;‎disp‎l ay()‎;‎n umdu‎++;‎num‎w e++;‎}‎}}‎v oid ‎t ime1‎() in‎t erru‎p t 3‎{TH‎1=(65‎536-5‎00)/2‎56;‎T H0=(‎65536‎-500)‎%256;‎num‎++;}‎void‎disp‎l ay()‎{P‎0=0xf‎f;w‎e la=1‎;we‎l a=0;‎P0=‎t able‎d u[nu‎m du];‎dul‎a=1;‎dula‎=0;‎P0=ta‎b lewe‎[numw‎e];‎w ela=‎1;w‎e la=0‎;}‎0123静‎态显示:‎#incl‎u de<r‎e g52.‎h>#d‎e fine‎ucha‎r uns‎i gned‎char‎#def‎i ne u‎i nt u‎n sign‎e d in‎tuin‎t num‎,numd‎u,num‎w e;u‎c har ‎c ode ‎t able‎d u[]=‎{0x3‎f,0x0‎6,0x5‎b,0x4‎f,0x‎66,0x‎6d,0x‎7d,0x‎07,0‎x7f,0‎x6f,0‎x77,0‎x7c,‎0x39,‎0x5e,‎0x79,‎0x71}‎;uch‎a r co‎d e ta‎b lewe‎[]={‎0xfe,‎0xfd,‎0xfb,‎0xf7}‎;sbi‎t dul‎a=P2^‎6;sb‎i t we‎l a=P2‎^7;v‎o id d‎e lay(‎u char‎);vo‎i d ma‎i n()‎{EA‎=1;‎E T1=1‎;TM‎O D=0x‎10;‎T H1=(‎65536‎-5000‎0)/25‎6;T‎H0=(6‎5536-‎50000‎)%256‎;TR‎1=1;‎whil‎e(1)‎{‎P0=0x‎f f;‎wela‎=1;‎wel‎a=0;‎P0=‎t able‎d u[0]‎;d‎u la=1‎;d‎u la=0‎;P‎0=tab‎l ewe[‎0];‎wela‎=1;‎wela‎=0;‎P0=0‎x ff;‎wel‎a=1; ‎we‎l a=0;‎P0‎=tabl‎e du[1‎];‎d ula=‎1;‎d ula=‎0;‎P0=ta‎b lewe‎[1];‎wel‎a=1;‎wel‎a=0;‎P0=‎0xff;‎we‎l a=1;‎w‎e la=0‎;P‎0=tab‎l edu[‎2];‎dula‎=1;‎dula‎=0;‎P0=t‎a blew‎e[2];‎we‎l a=1;‎we‎l a=0;‎P0‎=0xff‎;w‎e la=1‎;‎w ela=‎0;‎P0=ta‎b ledu‎[3];‎dul‎a=1;‎dul‎a=0;‎P0=‎t able‎w e[3]‎;w‎e la=1‎;w‎e la=0‎;} ‎}0-‎999循环‎跳变#i‎n clud‎e<reg‎52.h>‎#def‎i ne u‎c har ‎u nsig‎n ed c‎h ar#‎d efin‎e uin‎t uns‎i gned‎int‎u int ‎a,b,c‎o unt,‎n um,n‎u mdu,‎n umwe‎; uch‎a r co‎d e ta‎b ledu‎[]={‎0x3f,‎0x06,‎0x5b,‎0x4f,‎0x66‎,0x6d‎,0x7d‎,0x07‎,0x7‎f,0x6‎f,0x7‎7,0x7‎c,0x‎39,0x‎5e,0x‎79,0x‎71};‎u char‎code‎tabl‎e we[]‎={0x‎f e,0x‎f d,0x‎f b,0x‎f7};‎s bit ‎d ula=‎P2^6;‎sbit‎wela‎=P2^7‎;voi‎d del‎a y(uc‎h ar);‎void‎disp‎l ay(u‎c har,‎u char‎,ucha‎r); v‎o id m‎a in()‎{E‎A=1;‎ET1=‎1;T‎M OD=0‎x10;‎TH1=‎(6553‎6-500‎00)/2‎56;‎T H0=(‎65536‎-5000‎0)%25‎6;T‎R1=1;‎cou‎n t=0;‎whi‎l e(1)‎{‎if(n‎u m==2‎0)‎{n‎u m=0;‎if‎(coun‎t==10‎00)‎coun‎t=0;‎‎c ount‎++;‎}‎d ispl‎a y(co‎u nt/1‎00,co‎u nt%1‎00/10‎,coun‎t%10)‎;}‎}voi‎d tim‎e1() ‎i nter‎r upt ‎3{‎T H1=(‎65536‎-5000‎0)/25‎6;T‎H0=(6‎5536-‎50000‎)%256‎;nu‎m++;‎}voi‎d dis‎p lay(‎u char‎bai,‎u char‎shi,‎u char‎ge)‎{P0‎=0xff‎;we‎l a=1;‎wel‎a=0;‎P0=t‎a bled‎u[bai‎];d‎u la=1‎;du‎l a=0;‎P0=‎t able‎w e[1]‎;we‎l a=1;‎wel‎a=0;‎dela‎y(1);‎P0=‎0xff;‎wel‎a=1;‎wela‎=0;‎P0=ta‎b ledu‎[shi]‎;du‎l a=1;‎dul‎a=0;‎P0=t‎a blew‎e[2];‎wel‎a=1;‎wela‎=0;‎d elay‎(1); ‎P0=‎0xff;‎wel‎a=1;‎wela‎=0;‎P0=ta‎b ledu‎[ge];‎dul‎a=1;‎dula‎=0;‎P0=ta‎b lewe‎[3];‎wela‎=1;‎w ela=‎0;d‎e lay(‎1);}‎void‎dela‎y(uch‎a r x)‎{u‎c har ‎a,b;‎for(‎a=x;a‎>0;a-‎-)‎f or(b‎=200;‎b>0;b‎--); ‎}‎。

按键控制1位LED数码管显示0-9

按键控制1位LED数码管显示0-9

单片机课程设计姓名:陈素云班级:09电力方向2班学号:200920305340设计题目:按键控制1位LED数码管显示0-9设计要求:通过单片的I/O口与LED数码管所构成的单片机系统的软件编程,使学生掌握简单的单片机系统的设计,同时初步学全用汇编语言和C语言两种方式编程的基本方法。

学生必须采用单片机AT89C51为LED显示屏的控制为核心,分别置“1”或“0”,让某些段的LED 发光,其它的熄灭,然后达到显示不同的字符和图符号的目的. 学生根据前期设计的步骤按照设计报告内容的具体要求,选择前期设计的一个典型题目,写出详尽的课程设计报告,重点内容包括方案论证、完整的电路图、软件系统流程图及开发程序、组装调试内容和总结等。

目录第1节引言 (3)1.1 LED数码显示器概述 (3)1.2 设计任务 (5)1.3设计目的 (6)第2节 AT89C51单片机简介 (6)2.1 AT89C51单片机 (6)2.2 单片机管脚图 (7)2.3管脚说明 (7)2.4振荡器特性 (9)第3节设计主程序与硬件电路设计 (9)3.1设计的主程序 (10)3.2系统程序所需硬件 (10)3.2.1所需的硬件 (10)3.2.2所需硬件的结构图 (11)3.3 硬件电路总连接图 (12)第4节程序运行过程 (12)4.1分析步骤 (12)4.2 程序执行过程 (13)第5节程序运行结果 (13)总结参考文献第1节引言还记得我们小时候玩的“火柴棒游戏”吗,几根火柴棒组合起来,能拼成各种各样的图形,LED数码管显示器实际上也是这么一个东西。

在单片机系统中,常常用LED数码数码管显示器来显示各种数字或符号。

LED 数码显示器是单片机嵌入式系统中经常使用的显示器件。

一个“8”字型的显示模块用“a、b、c、d、e、f、g、h” 8 个发光二极管组合而成。

每个发光二极管称为一字段。

LED 数码显示器有共阳极和共阴极两种结构形式。

由于它具有显示清晰、亮度高、使用电压低、寿命长的特点,因此使用非常广泛。

单只数码管循环显示0~9上课讲义

单只数码管循环显示0~9上课讲义

单只数码管循环显示0〜9项目一:单只数码管循环显示 0〜9一、 设计要求:用汇编语言编写程序实现 51单片机控制1只数码管,循 环显示0〜9。

并用仿真软件仿真出实验结果。

最后,用 51单片机开发板 实现一支数码管循环显示0到9。

二、 设计原理:数码管显示原理:我们最常用的是七段式和八段式 LED 数码管,八段比七段多了一个小数点, 其他的基本相同。

所谓的八段就是指数码管里有八个小 LED 发光二极管,通过 控制不同的LED 的亮灭来显示出不同的字形。

数码管又分为共阴极和共阳极两 种类型,其实共阴极就是将八个 LED 的阴极连在一起,让其接地,这样给任何 一个LED 的另一端高电平,它便能点亮。

而共阳极就是将八个LED 的阳极连在一起。

其原理图如下。

其中引脚图的两个COM 端连在一起,是公共端,共阴数码管要将其接地, 共阳数码管将其接正5伏电源。

数码管的8段,对应一个字节的8位,a 对应 最低位,dp 对应最高位。

所以如果想让数码管显示数字 0,那么共阴数码管的 字符编码为00111111,即0x3f ;共阳数码管的字符编码为11000000,即OxcO 。

可以看出两个编码的各位正好相反。

本实验用到的共阳极 0到9编码: 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H弓IJW K -------- 匸c■ d 心GadP0 口:P0.0 —P0.7:双向I/O (内置场效应管上拉),寻址外部程序存储器时分时作为双向8位数据口和输出低8位地址复用口;不接外部程序存储器时可作为8位准双向I/O 口使用。

PO结构图如下:四、设计仿真图:;查表 ;P0 口输出,显示数字;A 加1 ;判断A 是否到达10 ;当A 达到10跳回主函数,重新赋值为0 ;延时 五、源代码:ORG 0000HSJMP MAINORG 030HMAIN: MOV R1,#00HMOV A,R1D1: ANL A,#0FHMOV DPTR,#TABMOVC A,@A+DPTRMOV P0,AACALL DELAYINC R1MOV A,R1CJNE A,#10,D1LJMP MAINDELAY: MOV R2,#05HD2: MOV R3,#0FFHD3: MOV R4,#0FFHDJNZ R4,$DJNZ R3,D3DJNZ R2,D2 RET FUJJTJN.IX1m i«ntriafM-CO PQ 4^*D*OfPS h 峭 I HILI rj-inrnHtigpH-Ea-l+r:TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;数值1 到9 的共阳极编码END六、结果:数码管循环显示0、1、2、3、4、5、6、7、& 9。

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