打印
[通用8051核FLASH系列]

【HC89S001P芯片试用】1、595串行转并行输出

[复制链接]
935|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tlled|  楼主 | 2019-3-23 16:39 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 芯圣电子官方QQ 于 2023-7-24 14:58 编辑

    使用HC89S001P芯片来驱动74HC595串口转并口输出。

    一、电路图

      P02 --- 595-RCLK
      P03 --- 595-DAT
      P04 --- 595-SRCLK
   

    二、程序

    2.1、程序代码

//main.c
#define ALLOCATE_EXTERN

#include "config.h"

//系统初始化
void SystemInit(void)
{
        /************************************系统初始化****************************************/
        WDTCCR = 0x00;                                                //关闭看门狗
        while((CLKCON&0x20)!=0x20);                        //等待内部高频RC起振
        CLKSWR = 0x51;                                                //选择内部高频时钟为主时钟,内部高频RC2分频,Fosc=16MHz
        while((CLKSWR&0xC0)!=0x40);                        //等待内部高频切换完成
        CLKDIV = 0x01;                                                //Fosc1分频得到Fcpu,Fcpu=16MHz
}

void main(void)
{
        uint i;
        uchar j=0x01;
        uchar k=0;
        SystemInit();                //系统初始化
        Init_Port();                //端口初始化
        //EintInit();                        //外部中断初始化
        //INT2_7_Init();        //外部中断2-7初始化
        //CCO_Init();                //CCO输出
        
        Init_Timer0();        //初始化定时器0
        Init_595();
        
        while(1)
        {
                test_595();
        }
}
//74hc595.c
#include "config.h"

//595初始化
void Init_595(void)
{
        //PORT初始化
        P0M1 = P0M1&0xF0|0x08;                                        //P02设置为推挽输出
        P0M1 = P0M1&0x0F|0x80;                                        //P03设置为推挽输出
        P0M2 = P0M2&0xF0|0x08;                                        //P04设置为推挽输出                                       
}

//595发送数据
void SendDat_595(uchar dat)
{
        uchar i=0;
        RCLK_595=0;
        SRCLK_595=0;
        
        for(i=0;i<8;i++)
        {
                SRCLK_595=0;
                if((dat&0x01)==0x01)
                {
                        DAT_595=1;
                }
                else
                {
                        DAT_595=0;
                }
                SRCLK_595=1;
                _nop_();
                _nop_();
                dat=dat>>1;
               
        }
        
        RCLK_595=1;        
}

void test_595(void)
{
        uchar j;
        uchar k;
        uint i;
        
        j=0x01;
        for(k=0;k<8;k++)
        {
                SendDat_595(~j);
                for(i=0;i<30000;i++);
                j=j<<1;
        }
        j=0x80;
        for(k=0;k<8;k++)
        {
                SendDat_595(~j);
                for(i=0;i<30000;i++);
                j=j>>1;
        }
}

    2.2、源代码    HC89S001P_TEST _595.rar (102.74 KB)

    三、执行结果

   





使用特权

评论回复
沙发
零三翟邢止胃| | 2019-3-25 11:23 | 只看该作者
多谢分享啊! 感谢啊!

使用特权

评论回复
板凳
dqqqqqq| | 2019-3-27 15:43 | 只看该作者
支持一下

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

125

主题

689

帖子

6

粉丝