用AT89C51电动机的单片机控制制8段LED数码管采用动态显示的方式显示出00000000

用AT89S51单片机控制数码管_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
用AT89S51单片机控制数码管
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
还剩7页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢求一个用AT89C51连接的2段LED数码管的显示的倒数30秒的代码 要汇编语言的 用P0管脚和P3.4 P3.5管脚弄的_百度知道
求一个用AT89C51连接的2段LED数码管的显示的倒数30秒的代码 要汇编语言的 用P0管脚和P3.4 P3.5管脚弄的
这是我的仿真图!!
我有更好的答案
贴个邮箱地址,可以发个交通灯的仿真实例,有汇编 有 C 的。
我要汇编的 包括整个电路图的汇编程序
交通灯 红绿灯30秒
黄灯两秒LED数码管事30秒倒计时的!!!
发了三个 仿真实例 可以直接仿真。一个 汇编两个 C 语言时间 设置 自己修改 成需要的。
采纳率:60%
为您推荐:
其他类似问题
led数码管的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。家电百科 产品:
> 利用AT89C51单片机设计简易电子钟(六位),通过8位LED数码管实现时间显示;系统可以通过三个按键实现时间
利用AT89C51单片机设计简易电子钟(六位),通过8位LED数码管实现时间显示;系统可以通过三个按键实现时间 常见问题
汇编可以么LED_1 EQU 30HLED_2 EQU 31HLED_3 EQU 32HLED_4 EQU 33HLED_5 EQU 34HLED_6 EQU 35HLED_7 EQU 36HLED_8 EQU 37HTIMER EQU 38HMODE EQU 39H ;模式判断FLASH EQU 40H ;闪烁判断 1亮 0不亮BUTTON1 EQU 41H ;按钮开关BUTTON2 EQU 42H ;按钮开关BUTTON3 EQU 43H ;按钮开关BUTTON4 EQU 44H ;按钮灵敏CS1 EQU P2.0CS2 EQU P2.1WR_ON EQU P2.2;-------------------------------; 按钮;-------------------------------IN_SET EQU P2.3IN_GAL EQU P2.4IN_SUB EQU P2.5;-------------------------------; 主程序;接口:D0-D7 接 P1.0-P1.7; CS1 P2.0 CS2 P2.1 WR P2.2;-------------------------------ORG 0000HJMP MAINORG 000BHJMP T0INTORG 0030HMAIN:CALL SYSINIT;-------------------------------START:JMP START;-------------------------------; 计时器子程序;-------------------------------T0INT:MOV TH0,#03CHMOV TL0,#0AFHCALL SHOWDJNZ BUTTON4,T0INT1MOV BUTTON4,#10CALL AJ1CALL AJ3CALL AJ5T0INT1:DJNZ TIMER,T0INTENDCALL MODE_PD1T0INTEND:RETI;-------------------------------; 模式判断;-------------------------------MODE_PD1:MOV A,MODECJNE A,#0,MODE_PD2MOV TIMER,#200CALL CADDJMP MODE_PDENDMODE_PD2:MOV A,MODECJNE A,#1,MODE_PD3MOV TIMER,#50CALL FLASH1JMP MODE_PDENDMODE_PD3:MOV A,MODECJNE A,#2,MODE_PD4MOV TIMER,#50CALL FLASH3JMP MODE_PDENDMODE_PD4:MOV A,MODECJNE A,#3,MODE_PDENDMOV TIMER,#50CALL FLASH5MODE_PDEND:RET;-------------------------------; 按钮;-------------------------------AJ1:MOV A,BUTTON1CJNE A,#1,AJ2JB IN_SET,AJENDMOV BUTTON1,#0CALL SAVE2MOV TIMER,#1INC MODEMOV A,MODECJNE A,#4,AJENDMOV MODE,#0MOV TIMER,#100JMP AJENDAJ2:MOV A,BUTTON1CJNE A,#0,AJ1JNB IN_SET,AJENDMOV BUTTON1,#1JMP AJENDAJ3:MOV A,BUTTON2CJNE A,#1,AJ4JB IN_GAL,AJENDMOV BUTTON2,#0CALL GAL1JMP AJENDAJ4:MOV A,BUTTON2CJNE A,#0,AJ3JNB IN_GAL,AJENDMOV BUTTON2,#1JMP AJENDAJ5:MOV A,BUTTON3CJNE A,#1,AJ6JB IN_SUB,AJENDMOV BUTTON3,#0CALL SUB1JMP AJENDAJ6:MOV A,BUTTON3CJNE A,#0,AJ5JNB IN_SUB,AJENDMOV BUTTON3,#1JMP AJENDAJEND:RET;-------------------------------; 加法;-------------------------------GAL1:MOV A,MODECJNE A,#3,GAL2INC 58HMOV A,58HCJNE A,#10,GALENDMOV 58H,#0INC 57HMOV A,57HCJNE A,#6,GALENDMOV 57H,#0GAL2:MOV A,MODECJNE A,#2,GAL3INC 55HMOV A,55HCJNE A,#10,GALENDMOV 55H,#0INC 54HMOV A,54HCJNE A,#6,GALENDMOV 54H,#0GAL3:MOV A,MODECJNE A,#1,GALENDINC 52HMOV A,52HCJNE A,#10,GAL32MOV 52H,#0INC 51HGAL32:CJNE A,#4,GALENDMOV A,51HCJNE A,#2,GALENDMOV 52H,#0MOV 51H,#0GALEND:CALL SAVE2RET;-------------------------------; 减法;-------------------------------SUB1:MOV A,MODECJNE A,#3,SUB2DEC 58HMOV A,58HCJNE A,#-1,SUBENDMOV 58H,#9DEC 57HMOV A,57HCJNE A,#-1,SUBENDMOV 57H,#5SUB2:MOV A,MODECJNE A,#2,SUB3DEC 55HMOV A,55HCJNE A,#-1,SUBENDMOV 55H,#9DEC 54HMOV A,54HCJNE A,#-1,SUBENDMOV 54H,#5SUB3:MOV A,MODECJNE A,#1,SUBENDDEC 52HMOV A,52HCJNE A,#-1,SUBENDMOV 52H,#9DEC 51HMOV A,51HCJNE A,#-1,GALENDMOV 52H,#3MOV 51H,#2SUBEND:CALL SAVE2RET;-------------------------------; 闪烁;-------------------------------FLASH1:MOV A,FLASHCJNE A,#0,FLASH2MOV 51H,LED_1MOV 52H,LED_2MOV LED_1,#11MOV LED_2,#11MOV FLASH,#1JMP FLASHENDFLASH2:MOV A,FLASHCJNE A,#1,FLASHENDMOV LED_1,51HMOV LED_2,52HMOV FLASH,#0JMP FLASHEND ;小时闪烁FLASH3:MOV A,FLASHCJNE A,#0,FLASH4MOV 54H,LED_4MOV 55H,LED_5MOV LED_4,#11MOV LED_5,#11MOV FLASH,#1JMP FLASHENDFLASH4:MOV A,FLASHCJNE A,#1,FLASHENDMOV LED_4,54HMOV LED_5,55HMOV FLASH,#0 JMP FLASHEND ;分钟闪烁FLASH5:MOV A,FLASHCJNE A,#0,FLASH6MOV 57H,LED_7MOV 58H,LED_8MOV LED_7,#11MOV LED_8,#11MOV FLASH,#1JMP FLASHENDFLASH6:MOV A,FLASHCJNE A,#1,FLASHENDMOV LED_7,57HMOV LED_8,58HMOV FLASH,#0 ;秒钟闪烁FLASHEND:RET;-------------------------------; 数据加减;-------------------------------CADD:INC LED_8MOV A,LED_8CJNE A,#10,CADDENDMOV LED_8,#0INC LED_7MOV A,LED_7CJNE A,#6,CADDENDMOV LED_7,#0INC LED_5MOV A,LED_5CJNE A,#10,CADDENDMOV LED_5,#0INC LED_4MOV A,LED_4CJNE A,#6,CADDENDMOV LED_4,#0INC LED_2MOV A,LED_2CJNE A,#10,CADD2MOV LED_2,#0INC LED_1CADD2:CJNE A,#4,CADDENDMOV A,LED_1CJNE A,#2,CADDENDCALL SYSINITCADDEND:CALL SAVE1RET;-------------------------------; 数据显示;-------------------------------SHOW:MOV R0,#30HMOV R1,#8MOV R2,#BSHOW1:MOV A,R2MOV P0,ACALL CS2_ONRR AMOV R2,AMOV A,@R0MOVC A,@A+DPTRMOV P0,ACALL CS1_ONCALL DELAYMOV P0,#0FFHCALL CS1_ONCALL CS2_ONINC R0DJNZ R1,SHOW1RETCS1_ON:CLR WR_ONCLR CS1SETB WR_ONSETB CS1RETCS2_ON:CLR WR_ONCLR CS2SETB WR_ONSETB CS2RET;-------------------------------; 数据储存;-------------------------------SAVE1:MOV 51H,LED_1MOV 52H,LED_2MOV 54H,LED_4MOV 55H,LED_5MOV 57H,LED_7MOV 58H,LED_8RETSAVE2:MOV LED_1,51HMOV LED_2,52HMOV LED_4,54HMOV LED_5,55HMOV LED_7,57HMOV LED_8,58HRET;-------------------------------; 数据初始化;-------------------------------SYSINIT:MOV LED_1,#0MOV LED_2,#0MOV LED_3,#10MOV LED_4,#0MOV LED_5,#0MOV LED_6,#10MOV LED_7,#0MOV LED_8,#0CALL SAVE1MOV TIMER,#200MOV MODE,#0MOV FLASH,#0MOV BUTTON1,#1MOV BUTTON2,#1MOV BUTTON3,#1MOV BUTTON4,#3MOV TH0,#03CHMOV TL0,#0AFHSETB TR0SETB ET0SETB EAMOV DPTR,#TABRET;-------------------------------; 延迟;-------------------------------DELAY:MOV R6,#255DJNZ R6,$RET;-------------------------------; 段码;-------------------------------TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0BFH,0FFH;0- &0&;1- &1&;2- &2&;...;9- &9&;10-&-&;11-& &END
标签:&&&&&&&&&&&&&&&
" tab="tab_0" >常见问题热点事件家电人物家电名词
热门新品1 123 4 5 6 7 8 9 10STC单片机使用IO或SPI方式通过74HC595驱动8位数码管(转自STC官网:www.STCMCU.com)
STC单片机使用IO或SPI方式通过74HC595驱动8位数码管C51例程(转自官网WWW.STCMCU.COM)
以下包含:
/*------------------------------------------------------------------*/
/* --- STC MCU International Limited -------------------------------*/
/* --- STC 1T Series MCU Programme Demo ----------------------------*/
/* --- Fax: 86-755- ----------------------------------------*/
/* --- Tel: 86-755- ----------------------------------------*/
/* --- Web: www.STCMCU.com -----------------------------------------*/
/* If you want to use the program or the program referenced in the
/* article, please specify in which data and procedures from STC
/*------------------------------------------------------------------*/
本程序经过测试完全正常, 不提供电话技术支持, 如不能理解, 请自行补充相关基础.
/************* 本程序功能说明 **************
用STC的MCU的IO方式控制74HC595驱动8位数码管。
用户可以修改宏来选择时钟频率.
用户可以在显示函数里修改成共阴或共阳.推荐尽量使用共阴数码管.
显示效果为: 8个数码管循环显示0,1,2...,A,B..F,消隐.
******************************************/
#include "reg52.h"
/****************************** 用户定义宏 ***********************************/
#define MAIN_Fosc
UL //定义主时钟
MAIN_Fosc UL //定义时钟
/*****************************************************************************/
/******************** 下面的宏自动生成, 用户不可修改 **************************/
#define Timer0_Reload (MAIN_Fosc / 12000)
/*****************************************************************************/
/************* 本地常量声明 **************/
unsigned char code t_display[]={
0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,0x00}; //段码
unsigned char code T_COM[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
/************* 本地变量声明 **************/
//sbit P_HC595_SER
= P3^2; //pin 14 SER
data input
//sbit P_HC595_RCLK
= P3^4; //pin 12 RCLk store (latch) clock
//sbit P_HC595_SRCLK = P3^3; //pin 11 SRCLK Shift data clock
sbit P_HC595_SER
= P1^5; //pin 14 SER
data input
sbit P_HC595_RCLK
= P1^4; //pin 12 RCLk store (latch) clock
sbit P_HC595_SRCLK = P1^7; //pin 11 SRCLK Shift data clock
unsigned char
//显示缓冲
unsigned char display_ //显示位索引
/**********************************************/
void main(void)
unsigned char i,k;
unsigned int j;
TMOD = 0x01; //Timer 0 config as 16bit timer, 12T
= (65536 - Timer0_Reload) / 256;
= (65536 - Timer0_Reload) % 256;
for(i=0; i<8; i++) LED8[i] = 0x10; //上电消隐
// for(i=0; i<8; i++) LED8[i] =
while(!B_1ms) ; //等待1ms到
B_1ms = 0;
if(++j >= 500)
for(i=0; i<8; i++) LED8[i] = //刷新显示
if(++k > 0x10) k = 0;
//8个数码管循环显示0,1,2...,A,B..F,消隐.
/**********************************************/
/**********************************************/
void Send_595(unsigned char dat) //发送一个字节
unsigned char i;
for(i=0; i<8; i++)
if(dat & 0x80) P_HC595_SER = 1;
P_HC595_SER = 0;
P_HC595_SRCLK = 1;
P_HC595_SRCLK = 0;
dat = dat << 1;
/**********************************************/
void DisplayScan(void) //显示扫描函数
// Send_595(~T_COM[display_index]);
//共阴 输出位码
// Send_595(t_display[LED8[display_index]]); //共阴 输出段码
Send_595(T_COM[display_index]);
//共阳 输出位码
Send_595(~t_display[LED8[display_index]]); //共阳 输出段码
P_HC595_RCLK = 1;
P_HC595_RCLK = 0;
//锁存输出数据
if(++display_index >= 8) display_index = 0; //8位结束回0
/**********************************************/
void timer0 (void) interrupt 1 //Timer0 1ms中断函数
= (65536 - Timer0_Reload) / 256; //重装定时值
= (65536 - Timer0_Reload) % 256;
DisplayScan(); //1ms扫描显示一位
B_1ms = 1;
/*------------------------------------------------------------------*/
/* --- STC MCU International Limited -------------------------------*/
/* --- STC 1T Series MCU Programme Demo ----------------------------*/
/* --- Fax: 86-755- ----------------------------------------*/
/* --- Tel: 86-755- ----------------------------------------*/
/* --- Web: www.STCMCU.com -----------------------------------------*/
/* If you want to use the program or the program referenced in the
/* article, please specify in which data and procedures from STC
/*------------------------------------------------------------------*/
本程序经过测试完全正常, 不提供电话技术支持, 如不能理解, 请自行补充相关基础.
/************* 本程序功能说明 **************
用STC的MCU的SPI方式控制74HC595驱动8位数码管。
用户可以修改宏来选择时钟频率, 可以修改寄存器定义是STC12C5A60S2系列 还是 STC12C5628AD
STC12C5410AD
STC12C4052AD系列.
用户可以在显示函数里修改成共阴或共阳.推荐尽量使用共阴数码管.
显示效果为: 8个数码管循环显示0,1,2...,A,B..F,消隐.
******************************************/
#include "reg52.h"
/****************************** 用户定义宏 ***********************************/
#define MAIN_Fosc
UL //定义主时钟
MAIN_Fosc UL //定义时钟
/*****************************************************************************/
sfr SPSTAT = 0xCD; //STC12C5A60S2系列
= 0xCE; //STC12C5A60S2系列
= 0xCF; //STC12C5A60S2系列
sfr SPSTAT
= 0x84; //STC12C5628AD
STC12C5410AD
STC12C4052AD系列
= 0x85; //STC12C5628AD
STC12C5410AD
STC12C4052AD系列
= 0x86; //STC12C5628AD
STC12C5410AD
STC12C4052AD系列
/******************** 下面的宏自动生成, 用户不可修改 **************************/
#define Timer0_Reload (MAIN_Fosc / 12000)
/*****************************************************************************/
SPI控制寄存器
Reset Value
// SSIG SPEN DORD MSTR CPOL CPHA SPR1 SPR0
#define SSIG
1 //1: 忽略SS脚,由MSTR位决定主机还是从机
0: SS脚用于决定主从机。
#define SPEN
1 //1: 允许SPI,
0:禁止SPI,所有SPI管脚均为普通IO
#define DORD
0 //1:LSB先发,
0:MSB先发
#define MSTR
1 //1:设为主机
0:设为从机
#define CPOL
1 //1: 空闲时SCLK为高电平,
0:空闲时SCLK为低电平
#define CPHA
#define SPR1
0 //SPR1,SPR0
00: fosc/4,
01: fosc/16
#define SPR0
10: fosc/64,
11: fosc/128
#define SPEED_4
0 // fosc/4
#define SPEED_16 1 // fosc/16
#define SPEED_64 2 // fosc/64
#define SPEED_128 3 // fosc/128
//SPSTAT SPI状态寄存器
Reset Value
// SPIF WCOL - - - - - -
#define SPIF 0x80
//SPI传输完成标志。写入1清0。
#define WCOL 0x40
//SPI写冲突标志。写入1清0。
/************* 本地常量声明 **************/
unsigned char code t_display[]={
0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,0x00}; //段码
unsigned char code T_COM[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
/************* 本地变量声明 **************/
sbit SPI_SCL
= P1^7; //SPI同步时钟
P_HC595_SRCLK pin 11 SRCLK Shift data clock
//sbit SPI_MISO
= P1^6; //SPI同步数据输入 本例不用
sbit SPI_MOSI
= P1^5; //SPI同步数据输出 P_HC595_SER
pin 14 SER
data input
sbit P_HC595_RCLK = P1^4; //SPI片选(任意IO) pin 12 RCLk store (latch) clock
unsigned char
//显示缓冲
unsigned char display_ //显示位索引
/**********************************************/
void main(void)
unsigned char i,k;
unsigned int j;
SPCTL = (SSIG << 7) + (SPEN << 6) + (DORD << 5) + (MSTR << 4) + (CPOL << 3) + (CPHA << 2) + SPEED_4; //配置SPI
TMOD = 0x01; //Timer 0 config as 16bit timer, 12T
= (65536 - Timer0_Reload) / 256;
= (65536 - Timer0_Reload) % 256;
for(i=0; i<8; i++) LED8[i] = 0x10; //上电消隐
while(!B_1ms) ; //等待1ms到
B_1ms = 0;
if(++j >= 500)
for(i=0; i<8; i++) LED8[i] = //刷新显示
if(++k > 0x10) k = 0;
//8个数码管循环显示0,1,2...,A,B..F,消隐.
/**********************************************/
/**********************************************/
void SPI_SendByte(unsigned char dat) //SPI发送一个字节
SPSTAT = SPIF + WCOL;
//清0 SPIF和WCOL标志
//发送一个字节
while((SPSTAT & SPIF) == 0) ; //等待发送完成
SPSTAT = SPIF + WCOL;
//清0 SPIF和WCOL标志
/**********************************************/
void DisplayScan(void) //显示扫描函数
// SPI_SendByte(~T_COM[display_index]);
//共阴 输出位码
// SPI_SendByte(t_display[LED8[display_index]]); //共阴 输出段码
SPI_SendByte(T_COM[display_index]);
//共阳 输出位码
SPI_SendByte(~t_display[LED8[display_index]]); //共阳 输出段码
P_HC595_RCLK = 1;
P_HC595_RCLK = 0;
//锁存输出数据
if(++display_index >= 8) display_index = 0; //8位结束回0
/**********************************************/
void timer0 (void) interrupt 1 //Timer0 1ms中断函数
= (65536 - Timer0_Reload) / 256; //重装定时值
= (65536 - Timer0_Reload) % 256;
DisplayScan(); //1ms扫描显示一位
B_1ms = 1;豆丁微信公众号
君,已阅读到文档的结尾了呢~~
广告剩余8秒
文档加载中
基于AT89C51单片机的一个2位的LED数码显示作为“秒表”设计【基于单片机系统的00&#x2d;99s的定时器】,单片机秒表,单片机秒表设计,单片机数字秒表,单片机做秒表,led数码管秒表,单片机课程设计秒表,电子秒表 单片机,单片机 led显示,单片机led,单片机与led
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
基于AT89C51单片机的一个2位的LED数码显示作为“秒表”设计【基于单片机系统的00-99s的定时器】
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='http://www.docin.com/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口

我要回帖

更多关于 单片机控制继电器 的文章

 

随机推荐