欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標(biāo)題:
16X32雙色點(diǎn)陣全亮的單片機(jī)程序
[打印本頁]
作者:
liuliujia
時(shí)間:
2017-12-9 16:38
標(biāo)題:
16X32雙色點(diǎn)陣全亮的單片機(jī)程序
16X32雙色點(diǎn)陣屏的原理圖與相關(guān)資料到這里:
http://m.raoushi.com/bbs/dpj-101081-1.html
單片機(jī)源程序如下:
/***********************************************************
實(shí)現(xiàn)功能:紅綠全亮
可以根據(jù)下面的接口用杜邦線與點(diǎn)陣連接即可測(cè)試
單片機(jī):STC89C52 或者其他型號(hào)都可以
晶振無要求
*************************************************************/
/*
標(biāo)準(zhǔn)08接口點(diǎn)陣屏管腳定義
GND A ABCD是行掃描信號(hào)
GND B
GND C
OE D OE是屏的使能端 低有效
R1 G1 上半屏綠色
R2 G2 下半屏綠色 本板由于沒有使用R2 G2,故把這兩腳改接為VCC,方便大家接線。
GND STR 鎖存信號(hào)
GND SCK 時(shí)鐘信號(hào)
*/
/*接口說明*/
//A B C D 是138行掃描信號(hào)
// SCK 是595的移位信號(hào)
// STR 是595的鎖存信號(hào)
// OE 是屏的使能端 可以控制亮度
// R 是紅色信號(hào)線
// G 是綠色信號(hào)線
// 本板由于沒有使用R2 G2,故把這兩腳改接為VCC,方便大家接線。
#include<stc89c51rc.h>
#define uchar unsigned char
#define uint unsigned int
#define light 3 //定義亮度
/*****************************接口定義********************************/
sbit SHCP=P2^7;//595的移位信號(hào)
sbit STCP=P4^1;//是595的鎖存信號(hào) /*如果用的是普通單片機(jī) 沒有P4.1口 請(qǐng)改為其他口*/
sbit SDA_R=P2^3;//紅數(shù)據(jù)
sbit SDA_G=P2^5;//綠數(shù)據(jù)
sbit OE=P0^4;//輸出使能
sbit IA=P4^0;//行控制線A /*如果用的是普通單片機(jī) 沒有P4.0口 請(qǐng)改為其他口*/
sbit IB=P2^0;//行控制線B
sbit IC=P2^1;//行控制線C
sbit ID=P2^2;//行控制線D
sbit Speek=P3^5;//蜂鳴器
/********************************************************************/
#define scan0 {IA=0;IB=0;IC=0;ID=0;}
#define scan1 {IA=1;IB=0;IC=0;ID=0;}
#define scan2 {IA=0;IB=1;IC=0;ID=0;}
#define scan3 {IA=1;IB=1;IC=0;ID=0;}
#define scan4 {IA=0;IB=0;IC=1;ID=0;}
#define scan5 {IA=1;IB=0;IC=1;ID=0;}
#define scan6 {IA=0;IB=1;IC=1;ID=0;}
#define scan7 {IA=1;IB=1;IC=1;ID=0;}
#define scan8 {IA=0;IB=0;IC=0;ID=1;}
#define scan9 {IA=1;IB=0;IC=0;ID=1;}
#define scan10 {IA=0;IB=1;IC=0;ID=1;}
#define scan11 {IA=1;IB=1;IC=0;ID=1;}
#define scan12 {IA=0;IB=0;IC=1;ID=1;}
#define scan13 {IA=1;IB=0;IC=1;ID=1;}
#define scan14 {IA=0;IB=1;IC=1;ID=1;}
#define scan15 {IA=1;IB=1;IC=1;ID=1;}
uchar Move,Speed,line; //(移位 速度 行 ) 定義
uint zimuo; //字模計(jì)數(shù)器
uint uiAllData;
void DelayMs(void); // 延時(shí)
void in_data(); // 調(diào)整移動(dòng)數(shù)據(jù)
void rxd_data(); // 發(fā)送移動(dòng)數(shù)據(jù)
/******************************************************/
/*****不影響其他端口的掃描*************************/
void scan(unsigned char Value)
{switch(Value)
{case 0: scan0;break;
case 1: scan1;break;
case 2: scan2;break;
case 3: scan3;break;
case 4: scan4;break;
case 5: scan5;break;
case 6: scan6;break;
case 7: scan7;break;
case 8: scan8;break;
case 9: scan9;break;
case 10:scan10;break;
case 11:scan11;break;
case 12:scan12;break;
case 13:scan13;break;
case 14:scan14;break;
case 15:scan15;break;
default:break;
}
}
/***********************************************************************************
函數(shù)名:毫秒級(jí)CPU延時(shí)函數(shù)
調(diào) 用:DELAY_MS (?);
參 數(shù):1~65535(參數(shù)不可為0)
返回值:無
結(jié) 果:占用CPU方式延時(shí)與參數(shù)數(shù)值相同的毫秒時(shí)間
備 注:應(yīng)用于1T單片機(jī)時(shí)i<600,應(yīng)用于12T單片機(jī)時(shí)i<125
/************************************************************************************/
void DELAY_US(int num) //延時(shí)函數(shù)
{while(--num);
}
/*************************************/
void Beep_key(void) //揚(yáng)聲器--按鍵音
{
unsigned char a ; //定義變量用于發(fā)聲的長度設(shè)置
for(a=150; a>0; a--) //聲音的長度
{
Speek=0; //取反 揚(yáng)聲器
DELAY_US(350); //音調(diào)設(shè)置延時(shí)
}
Speek=1; //音樂結(jié)束后揚(yáng)聲器拉高關(guān)閉
}
/**************************延時(shí)***********************/
void DelayMs(void)
{
uchar TempCyc;
for(TempCyc=250;TempCyc>1;TempCyc--)
{;}
}
/********************************************/
/*主函數(shù)*/
void main()
{
P3M0=0X20;
P3M1=0X00;
Beep_key();
Speek=1;
while(1)
{
while(Move<16) //數(shù)據(jù)移位。
{
for(Speed=0;Speed<3;Speed++) //移動(dòng)速度控制
{
for(line=0;line<16;line++)
{
rxd_data(); //裝載移動(dòng)數(shù)據(jù)
scan(line); //輸出行掃描
STCP=1;//鎖存
STCP=0;
OE=0;
DelayMs(); //延時(shí),等待一段時(shí)間,讓這列顯示的內(nèi)容在人眼內(nèi)產(chǎn)生“視覺暫留”現(xiàn)象。
OE=1;
DelayMs(); //亮度控制在70% 以免過大電流
}
}
Move++; //移動(dòng)一步
}
Move=0;
//zimuo=zimuo+32; //換下一個(gè)字
}
}
/***********************發(fā)送移動(dòng)的數(shù)據(jù)****************************/
void rxd_data(void) //串行發(fā)送數(shù)據(jù)
{
uchar s;
uchar temp,k;
for(s=0;s<4;s++) //發(fā)送4字節(jié)數(shù)據(jù)
{
for(k=0;k<8;k++)//一個(gè)字節(jié)8位 發(fā)送給595
{
SHCP=0; //上升沿移位595
SDA_R=SDA_G=0;//通過IO口送一個(gè)位給 595
temp=temp>>1; //字節(jié)移位 準(zhǔn)備送下一位
SHCP=1;
}
}
}
復(fù)制代碼
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1