找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7586|回复: 4
打印 上一主题 下一主题
收起左侧

显示程序

[复制链接]
跳转到指定楼层
楼主
ID:3082 发表于 2008-7-4 16:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

请教单片机数码管显示程序怎么写?

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:3058 发表于 2008-7-5 09:50 | 只看该作者
那要看你的电路是怎么 个搭法````
我提供一汇编程序给你做个参考```

BCD2      EQU 30H;初始发

BCD1      EQU 31H
BCD0      EQU 32H


          ORG 0000H
          LJMP MAIN

          ORG 0100H
MAIN:     MOV SP,#60H           
            MOV A,#250     ;送显示数
          CALL A_BCD       ;将显示数转换成BCD码
LOOP:     MOV A,BCD0  ;送个位 显示
          MOV B,#5FH
          CALL DSPL  ;调用显示程序
          CALL DL2MS ; 延时2ms
          MOV A,BCD1;十位
          MOV B,#3FH
          CALL DSPL
          CALL DL2MS
          MOV A,BCD2;百位
          MOV B,#1FH
          CALL DSPL
          CALL DL2MS
          JMP LOOP

DL2MS:    MOV R7,#249
LOP:      NOP
          NOP
          DJNZ R7,LOP
          RET

A_BCD:   MOV B,#10   ; BCD码转换子程序
          DIV AB
          MOV BCD0,B
          MOV B,#10
          DIV AB
          MOV BCD1,B
          MOV BCD2,A
          RET


DSPL:    MOV DPTR,#TABHEX   ;显示子程序
         MOVC A,@A+DPTR   
         MOV P0,A
         MOV P2,B
         RET

TABHEX:  DB 3Fh,06H,5BH,4FH,66H,6DH,7DH,07H
         DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H

          END

回复

使用道具 举报

板凳
ID:3237 发表于 2008-7-11 01:15 | 只看该作者

上楼的是用汇编写的,其实用C更加简单,那我就给你发一个C写的简单单个数码管显示(自己好好加油~~)
#include<reg51.h>
#define uchar unsigned char
uchar temp,a;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void main()
{ temp=0;
 TMOD=0X10;
 TH1=(65536-50000)/256;
 TL1=(65536-50000)%256;
 EA=1;
 ET1=1;
 TR1=1;
 P2=0x00;
 while(1)
 {
  if(a==20)
   { a=0;
    P2=0x01;
    if(temp==10)
    temp=0;
    P0=table[temp++];
   }
 }
}
void timer1() interrupt 3
{
 TH1=(65536-50000)/256;
 TL1=(65536-50000)%256;
 a++; 
}

回复

使用道具 举报

地板
ID:3271 发表于 2008-7-15 13:55 | 只看该作者
#include <reg51.h>
sbit y1=P3^5;
sbit y2=P2^4;
unsigned char code tab[]={0xc0,0x........};

void delay1(void)
{
unsigned char i;
for(i=200;i>0;i--);
}

void main(void)
{
unsigned char led;
unsigned int j;
while(1)
{
y1=0;
P1=tab[led/10];
delay1();
y1=1;
y2=0;
P1=tab[led%10];
delay1();
y2=1;
if(++j==2500)
{
led++;
if(led==100)
led=0;
}
}
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表