日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀] PT16312驅(qū)動C程序#defineucharunsignedchar#defineuintunsignedint#defineulongunsignedlong#definecm1co1.co1#definecm2co2.co2#definecm3co3.co3#definecm4co4.co4#include#include#definecmdd0#defi

PT16312驅(qū)動C程序

#defineucharunsignedchar
#defineuintunsignedint
#defineulongunsignedlong
#definecm1co1.co1
#definecm2co2.co2

#definecm3co3.co3
#definecm4co4.co4
#include
#include
#definecmdd0
#definedatt1
sbitdat=P1^3;
sbitclk=P1^2;
sbitstb=P1^1;
union
{
uchardat;
struct
{
uchardms:3;//選擇顯示屏硬件的柵和段的位數(shù)
uchardnc:3;//數(shù)據(jù)空位
ucharad1:2;//此命令的地址值固定為0X00
}co1;
}co1;
union
{
uchardat;
struct
{
ucharfru:2;//功能選擇:00:WRITEDATATODISRAM01:WRITEDATATOLED02:READDATAFROMKEY03:READDATAFROMSW
ucharmad:1;//0遞增1指定地址
ucharmst:1;//0正常1測試模式
uchardnc:2;//數(shù)據(jù)空位
ucharad2:2;//此命令的地址值固定為0X01
}co2;
}co2;
union
{
uchardat;
struct
{
ucharadd:5;//16312內(nèi)部DISRAM地址選擇
uchardnc:1;//數(shù)據(jù)空位
ucharad3:2;//此命令的地址值固定為0X03
}co3;
}co3;
union
{
uchardat;
struct
{
ucharPWM:3;//輸出點亮?xí)r間選擇(可以調(diào)節(jié)亮度)
uchardis:1;//0顯示關(guān)閉
uchardnc:2;//數(shù)據(jù)空位
ucharad4:2;//此命令的地址值固定為0X02
}co4;
}co4;

voidwrd(uchardisno,bitlei)//寫一個字節(jié)的命令或者數(shù)據(jù)(由LEI控制是寫數(shù)據(jù)還是寫命令)
{
uchara;
if(lei)
gotos;
stb=1;
stb=1;
stb=0;
s:for(a=0;a<8;a++)
{
clk=1;
clk=1;
clk=0;
clk=0;
if(disno&0x01)
dat=1;
else
dat=0;
disno=disno>>1;
clk=1;
clk=1;
clk=1;
clk=1;
}
}
voidiniVFD(void)
{
cm1.dms=0x01;//設(shè)置為5區(qū)16段
cm1.ad1=0x00;
cm2.mad=0x01;//地址模式為指定地址
cm2.mst=0x00;//取消測試
cm2.ad2=0x01;
cm3.ad3=0x03;
cm4.pwm=0x07;//亮度為最亮
cm4.dis=0x01;//打開顯示
cm4.ad4=0x02;
}
/////////////////////////////************以下為主程序*************************//////////////////////
voidwrvfd(ucharaddr,uchardat)//向VFD指定地址寫數(shù)據(jù)
{
inivfd();
wrd(co1.dat,cmdd);
stb=1;
cm2.fru=0x00;
wrd(co2.dat,cmdd);
stb=1;
cm3.add=addr;
wrd(co3.dat,cmdd);
wrd(dat,datt);
stb=1;
wrd(co4.dat,cmdd);
stb=1;
}
voidwrled(ucharleddata)//控制16312的四個輸出口數(shù)據(jù)存放在LEDDATA的低四位
{
inivfd();
cm2.fru=0x01;
wrd(co2.dat,cmdd);
wrd(leddata,datt);
stb=1;
}
ulongrdkey()//讀鍵盤
{ulongkey=0;
uchari;
inivfd();
cm2.fru=0x02;
wrd(co2.dat,cmdd);
for(i=0;i<24;i++)
{
clk=1;
clk=1;
clk=0;
clk=0;
clk=0;
clk=1;
dat=1;
if(dat==1)
key=(key<<1)+1;
else
key=(key<<1);
}
return(key);
}

main()//測試程序
{
uchari;
ulongk;
for(i=0;i<16;i++)
wrvfd(i,0xff);//點亮VFD熒光屏上所有的數(shù)據(jù)段
wrled(0x0f);//使16312上的輸出口置高電平
while(1)
k=rdkey();//讀鍵盤實驗,實際應(yīng)用中應(yīng)參照數(shù)據(jù)手冊取值(如按下某一個按鍵應(yīng)讀讀幾次,其中只有一次是正確的其他幾次做為消抖處理)
}


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉