TM1629驅動程序_第1頁
TM1629驅動程序_第2頁
TM1629驅動程序_第3頁
TM1629驅動程序_第4頁
TM1629驅動程序_第5頁
已閱讀5頁,還剩2頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、E:Itemdesigntmxx led demoswcurrency.c/*File name:Author:Version:Date:MCU:leddriver demo programmexcwyleddemo 0.12006年7月21日AT89S5212Mkeilc v3.05c/ 文件名/ 作者/ 版本/ 完成日期/ 單片機型號/ 單片機使用的晶體頻率/ 軟件開發(fā)環(huán)境Description: 本程序是深圳市天微電子有限公司LED驅動IC的演示程序,采用C語言編寫/ 用于詳細說明此程序文件完成的主要功能,與其他模塊/ 或函數(shù)的接口,輸出值、取值范圍、含義及參數(shù)間的控/ 制、順序、獨立或

2、依賴等關系Others:本程序僅僅提供演示,任何個人或企業(yè)直接使用本程序造成的損失本公司不承擔任何責任/ 其它內容的說明Function List:1.delay()2.indate()3.outdate()4.display()延時程序通過MCU向LEDdriver中寫入一字節(jié)的數(shù)據(jù)通過MCU從LEDdriver中讀出一字節(jié)的數(shù)據(jù)采用地址自動加1方式的顯示程序5.display2() 采用固定地址方式的顯示程序6.in_led()7.out_sw()采用地址自動加一方式先LED顯存讀SW輸入口狀態(tài)/ 主要函數(shù)列表,每條記錄應包括函數(shù)名及功能簡要說明History:1. Date:Author

3、:/ 修改歷史記錄列表,每條修改記錄應包括修改日期、修改/ 作者及修改內容簡述2006年7月21日9:02xcwyModification:1)進一步添加了詳細的注釋2. Date:Author:xcwy2006年12月17日Modification:1)修改為本公司通用的LED驅動程序* */#include <REG52.h>#include<stdio.h>#include<intrins.h>/*#define#define#define#define#define#define#define#define#define#define#define#

4、define#define#define#define#define#define#define#define#definetm1616tm1618tm1618atm1620tm1620btm1623tm1624tm1626atm1626btm1626ctm1626dtm1628tm1629tm1629atm1629btm1629ctm1629dtm1638tm1668tw16281234567891011121314151617181920#defineicmodeltm1616/這里選擇的TM1616,更改“tm1616”可以得到其他型號IC的驅動程序#if icmodel=tm1616P

5、age: 1E:Itemdesigntmxx led demoswcurrency.c#define seg#define grid74#define dismodel 1#elif icmodel=tm1618#define seg#define grid#define key573#define dismodel 4#elif icmodel=tm1618a#define seg#define grid#define key754#define dismodel 2#elif icmodel=tm1620#define#defineseggrid86#definedismodel 3#el

6、if icmodel=tm1620b#define#define#defineseggridkey673#definedismodel 4#elif icmodel=tm1623#define#define#defineseggridkey1174#definedismodel 4#elif icmodel=tm1624#define#defineseggrid117#definedismodel 4#elif icmodel=tm1626a#define#define#define#define#defineseggridkeyswled107526#definedismodel 4#eli

7、f icmodel=tm1626b#define#define#define#define#defineseggridkeyswled117546#definedismodel 4#elif icmodel=tm1626c#define#define#define#defineseggridkeyled11751#definedismodel 4#elif icmodel=tm1626d#define#define#define#defineseggridkeyled10751#definedismodel 4#elif icmodel=tm1628#define#define#defines

8、eggridkey1074#definedismodel 4#elif icmodel=tm1629Page: 2E:Itemdesigntmxx led demoswcurrency.c#define#define#defineseggridkey1684#definedismodel 1#elif icmodel=tm1629a#define#defineseggrid168#definedismodel 1#elif icmodel=tm1629b#define#define#defineseggridkey1484#definedismodel 1#elif icmodel=tm162

9、9c#define#define#defineseggridkey1584#definedismodel 1#elif icmodel=tm1629d#define#define#defineseggridkey1284#definedismodel 1#elif icmodel=tm1638#define#define#defineseggridkey1084#definedismodel 1#elif icmodel=tm1668#define#define#defineseggridkey1075#definedismodel 1#elif icmodel=tw1628#endif#el

10、se#error "你必須確認IC的型號是否存在?"#define#define#define#defineseggridkeydismodel10751#define#define#define#define#define#define#define#define#define#definedissetmodewritedatamode_zwriteledmode_zreadkeymodereadswmodewritedatamode_gwriteledmode_gstartaddressdisconmodedatacount0x030x400x410x420x430x4

11、40x450xc00x8c2*grid/顯示模式設置/采用地址自動加一方式寫顯存/采用地址自動加一方式寫LED顯存命令/讀按鍵命令/讀SW口命令/采用固定地址方式寫顯存/采用固定地址方式寫LED顯存命令/起始地址/顯示控制/采用地址自動加一方式傳輸數(shù)據(jù)的個數(shù)/定義全局變量unsigned char k1,k2,k3,k4,k5;unsigned da_sw;/按鍵值寄存器/SW寄存器unsigned int/端口的定義count;sbitsbitSTBCLK=P20;=P21;sbitsbitDIOSPEAK=P22;=P27;/串行通訊口/外接蜂鳴器,可以不必理會/*子程序開始*Page:

12、3E:Itemdesigntmxx led demoswcurrency.c/-延時程序開始-void delay(int k)unsigned char i,j;for(;k>0;k-)for(j=255;j>0;j-)for(i=255;i>0;i-);/-延時程序結束-/-寫入輸入1個字節(jié)(8bit)到LED_IC程序開始-/輸入8BIT數(shù)據(jù)/在時鐘的上升沿通過MCU向LED驅動ICTM16xx寫數(shù)據(jù)void indate(unsigned char p)unsigned int i;STB=0;/保證“STB”為低電平,程序不依賴于之前端口的狀態(tài)/保證程序在實際運行中

13、不會出現(xiàn)“端口迷失”for(i=0;i<8;i+)CLK=0;/先將“CLK”清零if(p&0x01)!=0)elseCLK=1;p=p>>1;DIO=1;DIO=0;/需要傳送的數(shù)據(jù)的低位為“1”,則把“DIO”清零/需要傳送的數(shù)據(jù)的低位為“0”,則把“DIO”置高/送時鐘的上升沿/準備送下一個BIT/送完一個字節(jié)后退出循環(huán)/-寫入輸入1個字節(jié)(8bit)到LED_IC程序結束-/-從LED_IC讀入1個字節(jié)(8bit)程序開始-/輸出8BIT數(shù)據(jù)/在時鐘的上升沿通過MCU從LED驅動ICTM16xx讀數(shù)據(jù)#ifdef keyunsigned char outdat

14、e()unsigned char i,k=0;DIO=1;STB=0;/i控制循環(huán)次數(shù),k臨時保存讀到的數(shù)據(jù)/釋放DIO為輸入/保證“STB”為低電平,程序不依賴于之前端口的狀態(tài)/保證程序在實際運行中不會出現(xiàn)“端口迷失”for(i=0;i<8;i+)CLK=0;k=k>>1;if(P2&0x04)=0)k=k&0x7f;/先將“CLK”清零/如果“DIO”為低電平,則把k的最高位清“0”,其他各位保持不變elsek=(k|0x80&0xff); /如果“DIO”為高電平,則把k的最高位置“1”,其他各位保持不變CLK=1;return(k);/送時鐘的

15、上升沿/送完一個字節(jié)后退出循環(huán)/返回讀到的1字節(jié)數(shù)據(jù)#endif/-從LED_IC讀入1個字節(jié)(8bit)程序結束-/-采用地址自動加一方式傳輸?shù)刂泛蛿?shù)據(jù)開始-/采用地址自動加1方式Page: 4E:Itemdesigntmxx led demoswcurrency.c/上電后LED-DRIVER顯存中的數(shù)據(jù)是隨機的,上電后馬上傳顯示控制命令字(打開顯示),會出現(xiàn)亂碼。/為避免上述現(xiàn)象,用戶可以先傳顯示控制命令將顯示關掉(見應用手冊中詳細介紹),然后正常操作/也可以先主動刷新LED-DRIVER顯存中的數(shù)據(jù)。然后開顯示/這里采用是第二種方法void display(unsigned char

16、disa)unsigned int i;DIO=1;CLK=1;STB=1;indate(writedatamode_z);STB=1;indate(startaddress);/i控制本次需要傳多少個字節(jié)顯示數(shù)據(jù)/通訊開始前通訊端口全部初始化為“1”/傳數(shù)據(jù)設置命令,設置采用地址自動加1方式寫顯示數(shù)據(jù),/數(shù)據(jù)設置命令傳完后需要將“STB”置“1”/傳起始地址/地址命令傳完后,“STB”保持為“0”繼續(xù)傳需要顯示的數(shù)據(jù)for(i=0;i<datacount;i+)indate(disa);STB=1;indate(disconmode);STB=1;/在連續(xù)傳顯示的數(shù)據(jù)過程中,“STB”

17、一直保持為”0“/傳完所有的顯示數(shù)據(jù)后(最多14BYTE)后,將“STB置“1”/傳顯示控制命令/顯示控制命令傳完后將“STB”置“1”/-采用地址自動加一方式傳輸?shù)刂泛蛿?shù)據(jù)結束-/-采用固定地址方式傳輸?shù)刂泛蛿?shù)據(jù)開始-/采用固定地址方式void display2(unsigned char adress,disa)DIO=1;CLK=1;STB=1;indate(writedatamode_g);STB=1;indate(adress);indate(disa);STB=1;/通訊開始前通訊端口全部初始化為“1”/數(shù)據(jù)設置命令/傳顯示數(shù)據(jù)對應的地址/保持“STB”=“0”,傳1BYTE顯示數(shù)

18、據(jù)/傳完顯示數(shù)據(jù)后將“STB”置“1”/-采用固定地址方式傳輸?shù)刂泛蛿?shù)據(jù)結束-/-按鍵掃描程序開始-/按鍵掃描/只要定義了key都將執(zhí)行按鍵掃描程序,且必須從低字節(jié)開始讀#ifdef keyunsigned char keyscan()STB=1;indate(readkeymode);/傳數(shù)據(jù)設置命令,設置為讀按鍵/“STB”保持為“0”,讀鍵值/將讀到的鍵值保存在MCU的寄存器中/根據(jù)IC型號讀指定字節(jié),不允許多讀,否則會造成讀按鍵不穩(wěn)定if(key>=1)k1=outdate();if(key>=2)k2=outdate();if(key>=3)k3=outdate()

19、;if(key>=4)k4=outdate();if(key>=5)k5=outdate();STB=1;return 0;/讀鍵結束將“STB”置“1”#endif/-按鍵掃描程序結束-Page: 5E:Itemdesigntmxx led demoswcurrency.c/-PWM數(shù)據(jù)傳輸開始-#ifdef ledunsigned char in_led()STB=1;indate(writeledmode_z);STB=1;/數(shù)據(jù)設置命令,設置為寫LED顯存indate(0xc0);indate(0x0f);indate(0x0f);indate(0x0f);indate(0

20、x00);indate(0x0f);indate(0x0f);indate(0x0f);indate(0x00);/起始地址,這里的地址和/LED1寬度設置/LED2寬度設置/LED3寬度設置/關閉LED123同步調節(jié)/LED4寬度設置/LED5寬度設置/LED6寬度設置/關閉LED456同步調節(jié)STB=1;return 0;#endif/-PWM數(shù)據(jù)傳輸結束-#ifdef ledunsigned char in_led_g(unsigned char adress_led,da_led)STB=1;indate(writeledmode_g);STB=1;indate(adress_led);indate(da_led);STB=1;ret

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論