欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
TLC2543的單片機驅動程序 lcd1602顯示
[打印本頁]
作者:
51黑電子迷
時間:
2017-8-5 03:47
標題:
TLC2543的單片機驅動程序 lcd1602顯示
TLC2543是德州儀器公司生產的12位開關電容型逐次逼近模數轉換器
TLC2543的中文資料下載:
http://www.raoushi.com/chip/4009.html
221444og6g3jk2z4jkptr6.png
(61.62 KB, 下載次數: 19)
下載附件
2017-8-5 03:47 上傳
51單片機驅動程序如下:
#include"TLC2543.h"
void delay0(uint i)
{
while(i--);
}
uint Read_AD_Data(uchar cmd) //tlc2543 AD轉換 ,cmd為命令指令(高四位選通11路通道,D3D2選擇一次需要時鐘數,D1低電平為高位優先,D0低電平為無極性輸出)
{
uchar i;
uint dat=0;
clk=0;
cs=0;
for(i=0;i++;i<12)
{
if(sdo) dat|=0x01; //dat存放輸出碼,高位開始
sdi=(bit)(cmd&0x80); //從高位開始一個時鐘輸入一位命令
clk=1; //創建時鐘下降沿
clk=0;
cmd<<=1;
dat<<=1;
}
cs=1;
delay0(300);
cs=0;
for(i=0;i<12;i++)
{
if(sdo) dat|=0x01;
sdi=(bit)(cmd&0x80);
clk=1;
clk=0;
cmd<<=1;
dat<<=1;
}
cs=1;
dat>>=1;
return dat;
}
復制代碼
lcd1602顯示液晶屏顯示驅動:
#include"lcd.h"
uchar code tab[]=" 2017-5-7 SUN"; //存放在程序存儲區(如flash)中的,只有在燒寫程序時,才能改變tab中的各元素的值
uchar code tab1[]=" 23-59-55";
void LcdDelay(uint c)
{
uchar i;
while(c--)
{
for(i=0;i++;i<110);
}
}
void LcdWriteCom(uchar com)
{
e=0;
rs=0;
rw=0;
PS=com;
LcdDelay(5);
e=1;
LcdDelay(5);
e=0;
}
void LcdWriteData(uchar date)
{
e=0;
rs=1;
rw=0;
PS=date;
LcdDelay(5);
e=1;
LcdDelay(5);
e=0;
}
void LcdInit()
{
uchar num;
LcdWriteCom(0x38); //4位總線雙行顯示低5*7點陣字符,指令6:00111000(001+DL+N+F+**)DL:高4位總線,低8位;N:高雙行顯示,低單行;F:低5*7點陣字符,高5*10
LcdWriteCom(0x0c); //整體顯示開、光標關、光標不閃爍,指令4:0000+1DCB顯示開關控制。 D:控制整體顯示的開與關,高電平表示開顯示,低電平表示關顯示 C:控制光標的開與關,高電平表示有光標,低電平表示無光標 B:控制光標是否閃爍,高電平閃爍,低電平不閃爍。
LcdWriteCom(0x06); //光標右移、屏幕上所有文字不左移或者右移,指令3:00000+1+I/D+B光標和顯示模式設置 I/D:光標移動方向,高電平右移,低電平左移 S:屏幕上所有文字是否左移或者右移。高電平表示有效,低電平則無效。
LcdWriteCom(0x01); //指令1:清顯示
LcdWriteCom(0x80); //指令8:DDRAM地址設置1+00000000(數據存儲地址)
for(num=0;num<13;num++)
{
LcdWriteData(tab[num]); //顯示數據tab:年月日
LcdDelay(5);
}
LcdWriteCom(0x80+0x40); //1+1000000液晶屏的數據指針移到第二行第一個字處
for(num=0;num<10;num++)
{
LcdWriteData(tab1[num]); //顯示tab1:23:59:55
LcdDelay(5);
}
TMOD=TMOD|0x01;//定時器0 每50000*1us=0.05s溢出一次
TH0=0x3c;
TL0=0xb0;
EA=1; //開總中斷
ET0=1; //開定時器0中斷
TR0=1; //開定時器
}
void LcdWriteSg(uchar d,uchar add,uchar date)//分離時間的個位十位
{ uchar shi,ge;
shi=date/10; //十位
ge=date%10; //個位
LcdWriteCom(d+add); //在第二行顯示add
LcdWriteData(0x30+shi); //寫入數據(數字偏移位0x30+shi)
LcdWriteData(0x30+ge);
}
void LcdWriteSg1(uchar d,uchar add,uchar date)//分離時間的個位十位
{ uchar shi,ge;
shi=date/10; //十位
ge=date%10; //個位
LcdWriteCom(d+add);
LcdWriteData(0x30+shi); //寫入數據(數字偏移位0x30+shi)
LcdWriteCom(d+add+2);
LcdWriteData(0x30+ge);
}
復制代碼
仿真和完整源碼下載地址:
http://www.raoushi.com/bbs/dpj-91718-1.html
作者:
563457212
時間:
2018-4-8 20:44
你這LCD1206驅動有點問題啊,如for(i=0;i<12;i++)
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1