找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

關(guān)于單片機(jī)+74LS595同時(shí)驅(qū)動數(shù)碼管和LED的問題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
如下的單片機(jī)程序,p3.4和p1.0分別輸出一串?dāng)?shù)據(jù),定義兩個(gè)函數(shù)void LED24show(long byteData)和void LED16show(int byteData)用于驅(qū)動數(shù)碼管和LED,當(dāng) 執(zhí)行 LED24show(0x7fffff);   LED16show(0x0202);時(shí)數(shù)碼管應(yīng)當(dāng)顯示00,24個(gè)LED小燈應(yīng)當(dāng)只有一個(gè)亮,但是仿真的結(jié)果如下,沒有實(shí)現(xiàn)要求顯示的部分,請大神幫忙看一下。

#include<reg52.h>
#include <intrins.h>
typedef unsigned char uchar;
typedef unsigned char uint;
void delayms(unsigned int xms);
//****************************************74LS595端口定義
sbit SER1 = P3^4;    //p3.4腳控制串行數(shù)據(jù)輸入
sbit SCK1 = P3^6;    //串行輸入時(shí)鐘
sbit RCK1 = P3^5;    //存儲寄存器時(shí)鐘

sbit SER2 = P1^0;    //p1.0腳控制串行數(shù)據(jù)輸入
sbit SCK2 = P1^2;    //串行輸入時(shí)鐘
sbit RCK2 = P1^1;    //存儲寄存器時(shí)鐘

sbit key=P1^7;
sbit run=P0^0;
//*********************************************************************

void LED24show(long byteData)
{
    char i=0;   
    for(i=0;i<24;i++)
    {
        SER1 = byteData<<23;        //送出23位數(shù)據(jù)
        byteData= byteData>>1;      

        SCK1 = 0;          //上升沿,讓串行輸入時(shí)鐘變?yōu)楦唠娖,并延時(shí)2個(gè)時(shí)鐘周期
        _nop_();
        _nop_();
        SCK1 = 1;          //變?yōu)榈碗娖,為下次?zhǔn)備
    }  

   //位移寄存器數(shù)據(jù)準(zhǔn)備完畢,轉(zhuǎn)移到存儲寄存器
   RCK1 = 0;         //上升沿,讓存儲寄存器時(shí)鐘變?yōu)楦唠娖,并延時(shí)2個(gè)時(shí)鐘周期
   _nop_();
   _nop_();
   RCK1 = 1;

}
void LED16show(int byteData)
{
    char i =0;   
    for(i=0;i<16;i++)
    {
        SER2 = byteData>>15;        //送出15位數(shù)據(jù)
        byteData= byteData<<1;      

        SCK2 = 0;          //上升沿,讓串行輸入時(shí)鐘變?yōu)楦唠娖,并延時(shí)2個(gè)時(shí)鐘周期
        _nop_();
        _nop_();
        SCK2 = 1;          //變?yōu)榈碗娖,為下次?zhǔn)備
    }  

   //位移寄存器數(shù)據(jù)準(zhǔn)備完畢,轉(zhuǎn)移到存儲寄存器
   RCK2 = 0;         //上升沿,讓存儲寄存器時(shí)鐘變?yōu)楦唠娖,并延時(shí)2個(gè)時(shí)鐘周期
   _nop_();
   _nop_();
   RCK2 = 1;

}
void main()
{  
while(1)
{
    LED24show(0x7fffff);
    delayms(100);
   LED16show(0x0202);
}                  
}

void delayms(unsigned int xms)                //延時(shí)函數(shù)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:89217 發(fā)表于 2020-5-5 08:06 | 只看該作者
你確定8位單片機(jī)能0x7fffff<<23位???反正我是沒試過。
回復(fù)

使用道具 舉報(bào)

板凳
ID:213173 發(fā)表于 2020-5-6 10:32 | 只看該作者

示例.zip (135.33 KB, 下載次數(shù): 11)

回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

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