本人新手一枚,正在学51单片机,买了一块开发板,配套的教程解释有点错误,摸索了一天,把程序改了一下,更能方便理解单片机的串转并IC-74HC595的工作时序及用法
(74HC595的规格书及8*8LED点阵模块电路这里省略)
程序功能:通过主程序调用发送数据的子函数,发送了两个数据,分别点亮LED阵列的第一列的底下一个LED和顶上的七个LED,并交替闪烁
#include "reg51.h" //此文件中定义了单片机的一些特殊功能寄存器
#include "intrins.h"
typedef unsigned int u16; //对数据类型进行声明定义
typedef unsigned char u8;
//--定义使用的 IO 口--//
sbit SRCLK=P3^6;
sbit RCLK=P3^5;
sbit SER=P3^4;
sbit LED=P0^7;
//sbit LED1=P0^6;
/********************************************************************
***********
* 函 数 名 : Hc595SendByte(u8 dat1,u8 dat2)
* 函数功能 : 通过 595 发送 2 个字节的数据
* 输 入 : dat1:第 2 个 595 输出数值
* * dat2: 第 1 个 595 输出数值
* 输 出 : 无
*********************************************************************
**********/
void Hc595SendByte(u8 dat1,u8 dat2)
{
u8 a;
u16 b;
SRCLK = 1;
RCLK = 1;
for(a=0;a<8;a++) //发送 8 位数
{
SER = dat1 >> 7; //从最高位开始发送
dat1 <<= 1;
SRCLK = 0; //发送时序
_nop_();
_nop_();
SRCLK = 1;
}
RCLK = 0;
_nop_();
_nop_();
RCLK = 1;
for(b=0;b<65535;b++){} //加入延时,方便在开发板上看清HC595发送第一个数据时,点亮的LED
SRCLK = 1;
RCLK = 1;
for(a=0;a<8;a++) //发送 8 位数
{
SER = dat2 >> 7; //从最高位开始发送
dat2 <<= 1;
SRCLK = 0; //发送时序
_nop_();
_nop_();
SRCLK = 1;
}
RCLK = 0;
_nop_();
_nop_();
RCLK = 1;
for(b=0;b<65535;b++){} // 加入延时,方便在开发板上看清看清HC595发送第一个数据时,点亮的LED
}
/********************************************************************
***********
* 函 数 名 : main
* 函数功能 : 主函数
* 输 入 : 无
* 输 出 : 无
*********************************************************************
**********/
void main()
{ LED=0; //使第一列为低电平。
while(1)
{
Hc595SendByte(0x01,0xfe);
}
}
关键字:单片机 串转并 IC-74HC595 工作时序
引用地址:
深入理解单片机的串转并IC-74HC595的工作时序及用法
推荐阅读最新更新时间:2024-11-11 02:48
单片机解码万能红外遥控器C51程序
使用方法:打开串口调试助手,设置为9600 bps 单片机这边用11.0592MHz的晶振,使用sm0038或者其他型号的红外接收头按下面的电路连接好,其中out直接与单片机的p3.2脚相连.按下遥控器,串口调试助手便会出现解码值. /******************************************************************/ /* 本程序的蓝本从网上搜集,经修改并注释,万能遥控器解码成功 */ /* 晶振:11.0592MHz */ /* 整理与测试:单片机教程网 http://www.51hei.com 胡琴 2012.5.15
[单片机]
单片机看门狗程序
*此程序实现单片机 看门狗 WDT的功能*/ #include p18f458.h unsigned long i; /*系统初始化子程序*/ void initial() { TRISD = 0X00; /*D口设为输出*/ } /*延时子程序*/ void DELAY() { for (i=19999;--i;) continue; } /*主程序*/ main () { initial(); /*初始化,设定看门狗的相关寄存器*/ PORTD = 0X00; /*D口送00H,发光 二极管 亮*/ DELAY(); /*给予一定时间的延时*/ PORTD = 0XFF; /*D口送FFH,发光
[单片机]
基于51单片机的计数器设计
1.实验任务 利用AT89S51单片机的P1.0-P1.3接四个发光二极管L1-L4,用来指示当前计数的数据;用P1.4-P1.7作为预置数据的输入端,接四个拨动开关K1-K4,用P3.6/WR和P3.7/RD端口接两个轻触开关,用来作加计数和减计数开关。具体的电路原理图如下图所示 2.电路原理图 图4.12.1 3.系统板上硬件连线 (1).把“单片机系统”区域中的P1.0-P1.3端口用8芯排线连接到“八路发光 二极管 指示模块”区域中的L1-L4上;要求:P1.0对应着L1,P1.1对应着L2,P1.2对应着L3,P1.3对应着L4; (2).把“单片机系统”区域中的P3.0/RXD,P3.1/TXD,P3.2/INT
[单片机]
单片机程序是如何运行的,你有思考过吗?
大家都知道单片机可以烧写程序,但是大家知道程序烧写进单片机了,单片机是怎么运行程序的吗?今天我们就来说说单片机程序是如何运行的? 从单片机上知道,在上电的那一刻,MCU的程序指针PC会被初始化为上电复位时的地址,从哪个地址处读取将要执行的指令,由此程序在MCU上开始执行(当然在调用程序的 main之前,还有一系列其他的的初始化要做,如堆栈的初始化,不过这些我们很少回去修改)。PC在上电时,和MCU差不多,不过读取的是BIOS,有它完成了很多初始化操作,最后,调用系统的初始化函数,将控制权交给了操作系统,于是我们看到了Windows,Linux系统启动了。 如果将操作系统看作是在处理器上跑的一个很大的裸机程序(就是直接在硬件上跑的程
[单片机]
ST和Arduino联手扩宽创客社区使用STM32微控制器和传感器的途径
2016年6月30日,致力于为创客提供更多创造空间,横跨多重电子应用领域、全球领先的半导体供应商意法半导体 (STMicroelectronics,简称ST)和教育、创客和物联网市场最大的开源生态系统Arduino公司,宣布了一项合作协议,让业界领先的STM32系列微控制器(MCU)以及意法半导体的传感器、功率器件和通信连接技术走近Arduino创客社区。STAR (ST和Arduino的前两个字母组合)开发项目的首款产品基于STM32F469的STAR Otto基板于近日向公众展出。现在,物联网开发人员和创客可以在他们的智能硬件内创建高性能图形功能,使用容易上手的软硬件开发好用的触屏和声控以及媒体流功能,改进他们的应用设计。
[物联网]
51单片机最小系统的制作和程序烧录
首先准备的材料有:一块板子,一块89c51/52的芯片,一个51芯片插座,12MHZ的晶振,一个10的电阻,一个10uf的电解电容 两个20-33pf的瓷片电容,线若干,小开关一个 电路图如下: 那个小开关就是复位开关,制作好了大家可以下载一个小程序看看。。。。。。 最小系统制作非常容易,但是我下载程序时都是先把程序放到开发板上烧好在插入底座中,但是一般的底座由于结构问题,和51单片机芯片针脚太软了,多插几次容易就断掉,所以接下来我就来分享一下怎么不把芯片拔出来就可以任意烧程序(当然有usb转串口就忽视这个方法 ) 首先把开发板的芯片拔下来,把自己焊的最小系统的VCC,GND,P3^0,P3^1对
[单片机]
单片机保存与读取参数处理
单片机系统经常需要存取一些少量的参数,如串口的地址码,波特率,等等,装这些参数通过PC机进行设置,并存储在本地,同时可以利用通讯端口来修改。下面就随单片机小编一起来了解一下相关内容吧。 单片机保存与读取参数处理 单片机系统经常需要存取一些少量的参数,如串口的地址码,波特率,等等,装这些参数通过PC机进行设置,并存储在本地,同时可以利用通讯端口来修改。 参数可以存储在EEPROM中,可以放在外挂的存储器上,或者RTC的后备域中,这样是一种通用的方法。本处将参数存放于EEPROM中,因为现在大多数单片机都提供了片上EEPROM。参数按16位对齐,事实上可以格式化为任意类型。 /*----------------------
[单片机]
MSP430G2553单片机超低功耗的研究与设计
摘要:本设计以TI公司的MSP430G2553单片机为例,通过在空闲状态下选择深度的低功耗模式(LPM),在运行状态下,尽量降低电源电压和时钟频率,利用其他有效的设计原则使单片机系统达到最佳的低功耗状态。 引言 美国德州仪器(TI)公司推出的MSP430系列单片机能实现极低的处理器功耗,特别适合于电池供电的应用。本文以MSP430G2553单片机为例,对其实现超低功耗的设计进行较为细致地探讨。 1 MSP430G2553单片机概述 MSP430系列单片机具有超低功耗特性,同时还拥有强大的数据处理和运算能力,高性能的模拟技术及丰富的片上模块以及方便高效的开发调试环境。MSP430G2553单片机是一种混合信号微控制器,具有1
[单片机]