找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3336|回復(fù): 4
打印 上一主題 下一主題
收起左側(cè)

89c52,不用鎖存器的數(shù)碼管,如何編出動(dòng)態(tài)顯示的程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit wela1=P2^0;
sbit wela2=P2^1;
sbit wela3=P2^2;
sbit wela4=P2^3;
sbit wela5=P2^4;
sbit wela6=P2^5;
uchar code table[]={0xc0,0xf9,0xa4,0xb0,
                    0x99,0x92,0x82,0xf8,
                                        0x80,0x90,0x88,0x83,
                                        0xc6,0xa1,0x86,0x8e};
void delay(uint);
void main()
{
        while(1)
        {
                wela1=0;
             P0=table[0];
             delay(5);
        wela1=1;

                wela2=0;
             P0=table[1];
             delay(5);
             wela2=1;

                wela3=0;
             P0=table[2];
             delay(5);
             wela3=1;

                wela4=0;
             P0=table[3];
             delay(5);
             wela4=1;

                wela5=0;
             P0=table[4];
             delay(5);
             wela5=1;

                wela6=0;
             P0=table[5];
             delay(5);
             wela6=1;
        }
}
void delay(uint xms)
{
        uint i,j;
        for(i=xms;i>0;i--)
                for(j=110;j>0;j--);
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:330198 發(fā)表于 2018-5-22 09:45 | 只看該作者
你現(xiàn)在的程序不是常量嘛,用一個(gè)變量tab[n],n變化就能動(dòng)態(tài)顯示了
回復(fù)

使用道具 舉報(bào)

板凳
ID:296634 發(fā)表于 2018-5-22 10:23 | 只看該作者
#include<reg51.h> #define SEG P0 unsigned char SMGD[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x83,0xf8,0x80,0x98}; //共陽極 段顯0~9 unsigned char SMGW[]={0x01,0x02,0x04,0x08};        //位選1~4    void delay(unsigned int i)         //延時(shí)函數(shù) {         while(i--); }  void main(void)         //主函數(shù) {          unsigned char Temp;                 while(1)         {                 switch (Temp%4)                 {                                                   case 0:P0 = SMGD[Temp%10];break;                         case 1:P0 = SMGD[Temp%10];break;                         case 2:P0 = SMGD[Temp%10];break;                         case 3:P0 = SMGD[Temp%10];break;                                  }                 P2 =SMGW[Temp%4];                 Temp++;                 delay(50000);          } }
回復(fù)

使用道具 舉報(bào)

地板
ID:137653 發(fā)表于 2018-5-22 11:53 | 只看該作者
顯示第一個(gè)字,然后清除,然后顯示第二個(gè),如此循環(huán)就行
回復(fù)

使用道具 舉報(bào)

5#
ID:213173 發(fā)表于 2018-5-22 20:45 | 只看該作者
使用鎖存主要是為了達(dá)到I/O口復(fù)用的目的,節(jié)省I/O口。如果I/O口夠用當(dāng)然可以不用鎖存器。示例如下:

#include <AT89X51.H>
#define uint unsigned int
#define uchar unsigned char
uchar code table[]={
0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,
0xc6,0xa1,0x86,0x8e};
uchar code table1[]={
        0x01,0x02,0x04,0x08,
        0x10,0x20,0x40,0x80};
void delay(uint k)
{
        uint i,j;
        for(i=k;i>0;i--)
                for(j=114;j>0;j--);
}
void main()
{
        uchar i=0;
        while(1)
        {
                for(i=0;i<8;i++)
                {
                        P0=0xff;
                        P2=table1;
                        P0=table;
                        delay(1);
                }
        }
}


回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表