找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機(jī)一個(gè)8*8點(diǎn)陣數(shù)據(jù)如何滾動起來 一片595+一組IO

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
xianfajushi:51單片機(jī)一個(gè)8*8點(diǎn)陣數(shù)據(jù)如何滾動起來 一片595+一組IO

[51單片機(jī)點(diǎn)陣逐行點(diǎn)亮595+IO組]2022-2-1

#include "REG52.h"
sbit ds=P1^0; // 數(shù)據(jù)線  595的14腳
sbit shcp=P1^1; // 數(shù)據(jù)輸入時(shí)鐘線  595的11腳
sbit shcp=P1^2; // 輸出存儲器鎖存時(shí)鐘線  595的12腳
sbit mr=P1^3;// 數(shù)據(jù)清零

void QuDong595(unsigned char sj)
{
        unsigned char aa=8;
        mr=0;mr=1;
        while(aa--)
        {
                ds=sj>>7;
                sj<<=1;// 十六進(jìn)制數(shù)據(jù)發(fā)送
                shcp=1;// 上升沿發(fā)生移位  上升沿時(shí)數(shù)據(jù)寄存器的數(shù)據(jù)鎖存。
                shcp=0;
        }
        stcp=0;
        stcp=1;// 上升沿將數(shù)據(jù)送到輸出鎖存器
        stcp=0;
}
void main()
{
        unsigned char Xd=0,ss=1,cs=0,d=0,y=0;
        unsigned int ys=0;
        while(1)
        {
                QuDong595(0x00+d);
                P0=ss;
                while(++Xd);
                if(++y==0)
                {
                        if((ss*=2)>128)ss=1;
                        ++d;
                }
        }
}
======================================

逐行點(diǎn)亮595 IO組.png (10.17 KB, 下載次數(shù): 93)

逐行點(diǎn)亮595 IO組.png
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:997051 發(fā)表于 2022-2-5 19:57 | 只看該作者
xianfajushi:

精準(zhǔn)到0.1秒的單片機(jī)秒表

sbit Qitin = P3^0; //啟停按鍵
sbit duan = P2^6; //數(shù)碼段
sbit wei = P2^7; //數(shù)碼位
unsigned char code ShuMaGuan[]={0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
unsigned char code WeiXuanBiao[]={0x00,0xfe,0xfd,0xf7,0xef,0xdf,0xbf,0x7f};
unsigned char Js=0; //中斷計(jì)時(shí)
unsigned char Hm=0; //毫秒
unsigned char Mo=0; //秒
void ShuMaXianShi(unsigned char d,unsigned char w)
{
        unsigned char YanShi=255;
        P0=WeiXuanBiao[w];
        wei=1;
        wei=0;
        P0=ShuMaGuan[d];
        duan=1;
        While(YanShi--);
        duan=0;
}
void ZhongDuanSheZhi()
{
        TH0+=0X4c; /*定時(shí)器賦初值, 定時(shí)50ms觸發(fā)中斷, 自動補(bǔ)償方式*/
        TL0+=0X00;
        TMOD=0X01;
        TR0=1;
        ET0=1; //開啟定時(shí)器
        EA=1; //全局中斷開關(guān)
}
void XianShi()
{
        ShuMaXianShi(Hm,3);
        ShuMaXianShi(Mo%10,2);
        ShuMaXianShi(Mo/10,1);
}
void main()
{
        ZhongDuanSheZhi();
        while(1)
        {
                XianShi()
                if(!QiTin)
                {
                        if(Js>=2)        TR0=!TR0;
                        while(!QiTin)    XianShi();
                }
        }
}
void ZhongDuan() interrupt 1
{
        ++Js;
        if(!(Js%2))
        if(++Hm>=10)
        Hm=0;
        if(Js>=20)
        {
                if(++Mo>=60)Mo=0;
                Js=0;
        }
        TH0+=0X4c;
        TL0+=0X00;
}
==========================================
void main()
{
        ZhongDuanSheZhi();
        {
                XianShi();
                if(!QiTin)
                {
                        //XianShi(/*巧借 8個(gè)數(shù)碼顯示消抖*/);
                        YanShi=Js;
                        if(TR0==0){TR0=!TR0;K=1;} //重啟中斷
                        while(Js==YanShi)XianShi(); //中斷消抖
                        if(!k)TR0=!TR0;else k=0; //關(guān)閉中斷, 消抖后清除標(biāo)記
                        while(!QiTin)XianShi(/*按下期間顯示*/);
                }
        }
}
======================================
另說明代碼工程中的中斷內(nèi)的這句YanShi=Js;要?jiǎng)h除掉,并修改  if(!k&&++Hm>=10) Hm=0;這句,包內(nèi)忘記改了。
回復(fù)

使用道具 舉報(bào)

板凳
ID:301191 發(fā)表于 2024-1-9 00:46 | 只看該作者
頂一下
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

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