資源簡介
pic16f877a跑馬燈源程序和電路圖,簡單實在

代碼片段和文件信息
/*******************************************************************************
*?標????題:?PIC_ST_V3.0學習板演示程序--跑馬燈
*?文?件?名:?跑馬燈
*?建立日期:?2009.8.4
*?修改日期:?2011.11.20
*?版????本:?V1.0
*?作????者:?simomli
********************************************************************************
*?跳線接法:用短接帽短接P14
*?功能描述:?8位LED接PORTD,L1~L8分別對應RD0~RD7
對PIC16F877A單片機的IO口簡單的操作(輸出模式)
不同的方式點亮LED燈加深理解對IO的輸出操作
對PORTD的操作,詳細見PIC16F877A數據手冊4.4章節內容
********************************************************************************
*【版權】Copyright(C)?2009-2019?All?Rights?Reserved
*【聲明】此程序僅用于學習與參考,引用請注明版權和作者信息!
*******************************************************************************/
//#include?
#include?
#define?uint8?unsigned?char
#define?uint16?unsigned?int
__CONFIG(WDTDIS?&?LVPDIS?&?HS?&?PWRTDIS?&?BORDIS);//設置配置位
//WDTDIS:disable?watchdog?timer 看門狗禁止
//LVPDIS:low?voltage?programming?disabled 低電壓編程禁止
//HS:high?speed?crystal/resonator 4M以上晶振選擇HS高速
//PWRTDIS:disable?power?up?timer
//BORDIS:disable?brown?out?reset
#define? SCK_595? RA5
#define? RCK_595? RE0
#define? SER_595? RC0
void?DelayMS(uint16?delay);
void?HC595_Init(void);
void?HC595_Write_Byte(uint8?data);
/*******************************************************************************
*?函?數?名:?DelayMS(uint16?delay)
*?函數功能:?毫秒延時 for20MHZ
*?入口參數:?delay
*?返????回:?無
*******************************************************************************/
void?DelayMS(uint16?delay)
{
????uint16?i;
????for(;delay>0;delay--)
????????for(i=0;i<453;i++);
}
/******************************************************************************
*?函?數?名:?HC595_Init(void)
*?函數功能:?74HC595初始化
*?入口參數:?無
*?返????回:?無
*******************************************************************************/
void?HC595_Init(void)
{
ADCON1?=?0x8E;
TRISA5?=?0;
TRISE0?=?0;
TRISC0?=?0;
}
/******************************************************************************
*?函?數?名:?HC595_Write_Byte(uint8?data)
*?函數功能:?74HC595寫8位數據
*?入口參數:?無
*?返????回:?無
*******************************************************************************/
void?HC595_Write_Byte(uint8?data)
{
uint8?i;
for(i=0;i<8;i++)
{
if(data&0x80)
{
SER_595?=?1;
}
else
{
SER_595?=?0;
}
SCK_595?=?0;
data?<<=?1;;;
SCK_595?=?1;
}
RCK_595?=?0;
????;;
RCK_595?=?1;
}
/*******************************************************************************
*?函?數?名:?main(void)
*?函數功能:?跑馬燈
*******************************************************************************/
void?main(void)
{
uint8?i;
//下面的代碼的作用是關閉點陣顯示和數碼管顯示,本例程不用關心其中具體的操作
HC595_Init(); //74HC595初始化
HC595_Write_Byte(0x00); //寫0x00數據,關掉LED點陣顯示
TRISA?&=?0xE3; //RA2、RA3、RA4設置成輸出模式
PORTA?|=?0x1C;?? //RA2?=?1、RA3?=?1、RA4?=?1,不選通任何數碼管,則關掉數碼管顯示
//下面的代碼是對PORTD的操作,仔細查看數據手冊,結合本例,掌握對IO口的操作
TRISE?&=?0xEF; //配置PORTD為普通IO口,對PORTD的操作務必加上這句
TRISD?=?0x00; //設置PORTD為輸出
while(1
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2013-05-02?19:42??NO2_Run_Light\
?????文件??????137215??2012-02-18?15:21??NO2_Run_Light\NO2_Run_Light接法圖解.jpg
?????目錄???????????0??2013-05-02?19:42??NO2_Run_Light\Run_Light\
?????文件????????4082??2012-02-10?21:06??NO2_Run_Light\Run_Light\run_light.c
?????文件????????1532??2012-02-18?15:28??NO2_Run_Light\Run_Light\Run_Light.hex
?????文件?????????989??2011-08-20?21:08??NO2_Run_Light\Run_Light\Run_Light.mcp
?????文件???????26112??2012-02-18?15:29??NO2_Run_Light\Run_Light\Run_Light.mcw
- 上一篇:人工智能四子棋對抗AI
- 下一篇:51單片機彩燈控制器的設計(仿真圖、程序)
評論
共有 條評論