TM1629驅(qū)動(dòng)程序.doc
《TM1629驅(qū)動(dòng)程序.doc》由會(huì)員分享,可在線閱讀,更多相關(guān)《TM1629驅(qū)動(dòng)程序.doc(7頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
E:Itemdesigntmxx led demoswcurrency.c/*File name:Author:Version:Date:MCU:leddriver demo programmexcwyleddemo 0.12006年7月21日AT89S5212Mkeilc v3.05c/ 文件名/ 作者/ 版本/ 完成日期/ 單片機(jī)型號(hào)/ 單片機(jī)使用的晶體頻率/ 軟件開發(fā)環(huán)境Description: 本程序是深圳市天微電子有限公司LED驅(qū)動(dòng)IC的演示程序,采用C語言編寫/ 用于詳細(xì)說明此程序文件完成的主要功能,與其他模塊/ 或函數(shù)的接口,輸出值、取值范圍、含義及參數(shù)間的控/ 制、順序、獨(dú)立或依賴等關(guān)系Others:本程序僅僅提供演示,任何個(gè)人或企業(yè)直接使用本程序造成的損失本公司不承擔(dān)任何責(zé)任/ 其它內(nèi)容的說明Function List:1.delay()2.indate()3.outdate()4.display()延時(shí)程序通過MCU向LEDdriver中寫入一字節(jié)的數(shù)據(jù)通過MCU從LEDdriver中讀出一字節(jié)的數(shù)據(jù)采用地址自動(dòng)加1方式的顯示程序5.display2() 采用固定地址方式的顯示程序6.in_led()7.out_sw()采用地址自動(dòng)加一方式先LED顯存讀SW輸入口狀態(tài)/ 主要函數(shù)列表,每條記錄應(yīng)包括函數(shù)名及功能簡(jiǎn)要說明History:1. Date:Author:/ 修改歷史記錄列表,每條修改記錄應(yīng)包括修改日期、修改/ 作者及修改內(nèi)容簡(jiǎn)述2006年7月21日9:02xcwyModification:1)進(jìn)一步添加了詳細(xì)的注釋2. Date:Author:xcwy2006年12月17日Modification:1)修改為本公司通用的LED驅(qū)動(dòng)程序* */#include #include#include/*#define#define#define#define#define#define#define#define#define#define#define#define#define#define#define#define#define#define#define#definetm1616tm1618tm1618atm1620tm1620btm1623tm1624tm1626atm1626btm1626ctm1626dtm1628tm1629tm1629atm1629btm1629ctm1629dtm1638tm1668tw16281234567891011121314151617181920#defineicmodeltm1616/這里選擇的TM1616,更改“tm1616”可以得到其他型號(hào)IC的驅(qū)動(dòng)程序#if icmodel=tm1616Page: 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#elif 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#elif 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#defineseggridkey1074#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=tm1629c#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#else#error 你必須確認(rèn)IC的型號(hào)是否存在?#define#define#define#defineseggridkeydismodel10751#define#define#define#define#define#define#define#define#define#definedissetmodewritedatamode_zwriteledmode_zreadkeymodereadswmodewritedatamode_gwriteledmode_gstartaddressdisconmodedatacount0x030x400x410x420x430x440x450xc00x8c2*grid/顯示模式設(shè)置/采用地址自動(dòng)加一方式寫顯存/采用地址自動(dòng)加一方式寫LED顯存命令/讀按鍵命令/讀SW口命令/采用固定地址方式寫顯存/采用固定地址方式寫LED顯存命令/起始地址/顯示控制/采用地址自動(dòng)加一方式傳輸數(shù)據(jù)的個(gè)數(shù)/定義全局變量unsigned char k1,k2,k3,k4,k5;unsigned da_sw;/按鍵值寄存器/SW寄存器unsigned int/端口的定義count;sbitsbitSTBCLK=P20;=P21;sbitsbitDIOSPEAK=P22;=P27;/串行通訊口/外接蜂鳴器,可以不必理會(huì)/*子程序開始*Page: 3E:Itemdesigntmxx led demoswcurrency.c/-延時(shí)程序開始-void delay(int k)unsigned char i,j;for(;k0;k-)for(j=255;j0;j-)for(i=255;i0;i-);/-延時(shí)程序結(jié)束-/-寫入輸入1個(gè)字節(jié)(8bit)到LED_IC程序開始-/輸入8BIT數(shù)據(jù)/在時(shí)鐘的上升沿通過MCU向LED驅(qū)動(dòng)ICTM16xx寫數(shù)據(jù)void indate(unsigned char p)unsigned int i;STB=0;/保證“STB”為低電平,程序不依賴于之前端口的狀態(tài)/保證程序在實(shí)際運(yùn)行中不會(huì)出現(xiàn)“端口迷失”for(i=0;i1;DIO=1;DIO=0;/需要傳送的數(shù)據(jù)的低位為“1”,則把“DIO”清零/需要傳送的數(shù)據(jù)的低位為“0”,則把“DIO”置高/送時(shí)鐘的上升沿/準(zhǔn)備送下一個(gè)BIT/送完一個(gè)字節(jié)后退出循環(huán)/-寫入輸入1個(gè)字節(jié)(8bit)到LED_IC程序結(jié)束-/-從LED_IC讀入1個(gè)字節(jié)(8bit)程序開始-/輸出8BIT數(shù)據(jù)/在時(shí)鐘的上升沿通過MCU從LED驅(qū)動(dòng)ICTM16xx讀數(shù)據(jù)#ifdef keyunsigned char outdate()unsigned char i,k=0;DIO=1;STB=0;/i控制循環(huán)次數(shù),k臨時(shí)保存讀到的數(shù)據(jù)/釋放DIO為輸入/保證“STB”為低電平,程序不依賴于之前端口的狀態(tài)/保證程序在實(shí)際運(yùn)行中不會(huì)出現(xiàn)“端口迷失”for(i=0;i1;if(P2&0x04)=0)k=k&0x7f;/先將“CLK”清零/如果“DIO”為低電平,則把k的最高位清“0”,其他各位保持不變elsek=(k|0x80&0xff); /如果“DIO”為高電平,則把k的最高位置“1”,其他各位保持不變CLK=1;return(k);/送時(shí)鐘的上升沿/送完一個(gè)字節(jié)后退出循環(huán)/返回讀到的1字節(jié)數(shù)據(jù)#endif/-從LED_IC讀入1個(gè)字節(jié)(8bit)程序結(jié)束-/-采用地址自動(dòng)加一方式傳輸?shù)刂泛蛿?shù)據(jù)開始-/采用地址自動(dòng)加1方式Page: 4E:Itemdesigntmxx led demoswcurrency.c/上電后LED-DRIVER顯存中的數(shù)據(jù)是隨機(jī)的,上電后馬上傳顯示控制命令字(打開顯示),會(huì)出現(xiàn)亂碼。/為避免上述現(xiàn)象,用戶可以先傳顯示控制命令將顯示關(guān)掉(見應(yīng)用手冊(cè)中詳細(xì)介紹),然后正常操作/也可以先主動(dòng)刷新LED-DRIVER顯存中的數(shù)據(jù)。然后開顯示/這里采用是第二種方法void display(unsigned char disa)unsigned int i;DIO=1;CLK=1;STB=1;indate(writedatamode_z);STB=1;indate(startaddress);/i控制本次需要傳多少個(gè)字節(jié)顯示數(shù)據(jù)/通訊開始前通訊端口全部初始化為“1”/傳數(shù)據(jù)設(shè)置命令,設(shè)置采用地址自動(dòng)加1方式寫顯示數(shù)據(jù),/數(shù)據(jù)設(shè)置命令傳完后需要將“STB”置“1”/傳起始地址/地址命令傳完后,“STB”保持為“0”繼續(xù)傳需要顯示的數(shù)據(jù)for(i=0;i=1)k1=outdate();if(key=2)k2=outdate();if(key=3)k3=outdate();if(key=4)k4=outdate();if(key=5)k5=outdate();STB=1;return 0;/讀鍵結(jié)束將“STB”置“1”#endif/-按鍵掃描程序結(jié)束-Page: 5E:Itemdesigntmxx led demoswcurrency.c/-PWM數(shù)據(jù)傳輸開始-#ifdef ledunsigned char in_led()STB=1;indate(writeledmode_z);STB=1;/數(shù)據(jù)設(shè)置命令,設(shè)置為寫LED顯存indate(0xc0);indate(0x0f);indate(0x0f);indate(0x0f);indate(0x00);indate(0x0f);indate(0x0f);indate(0x0f);indate(0x00);/起始地址,這里的地址和/LED1寬度設(shè)置/LED2寬度設(shè)置/LED3寬度設(shè)置/關(guān)閉LED123同步調(diào)節(jié)/LED4寬度設(shè)置/LED5寬度設(shè)置/LED6寬度設(shè)置/關(guān)閉LED456同步調(diào)節(jié)STB=1;return 0;#endif/-PWM數(shù)據(jù)傳輸結(jié)束-#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;return 0;#endif/-讀入SW口狀態(tài)開始-#ifdef swunsigned char out_sw()STB=1;indate(readswmode);/數(shù)據(jù)設(shè)置命令,設(shè)置為讀SW輸入口da_sw=outdate();STB=1;return 0;#endif/-讀入SW口狀態(tài)結(jié)束-/*子程序結(jié)束*/*主程序開始*void main(void)SPEAK=0;DIO=1;CLK=1;STB=1;indate(dissetmode);/傳顯示模式設(shè)置命令,設(shè)置為7個(gè)“GRID”方式/這里不在詳細(xì)給出多個(gè)顯示模式的設(shè)置程序請(qǐng)參考產(chǎn)品應(yīng)用手冊(cè),顯示模式在上電設(shè)置好后不允許更改STB=1;display(0xff);delay(10);display2(0xC0,0x00);delay(10);#ifdef keyPage: 6/全亮/采用固定地址方式向C0地址單元寫00E:Itemdesigntmxx led demoswcurrency.ckeyscan();/調(diào)用按鍵掃描程序#endif/本程序僅僅提供按鍵掃描,2次按鍵掃描的時(shí)間不得10MS,在這里不提供按鍵處理程序#ifdef ledin_led();delay(10);in_led_g(0xc0,0x00);#endif#ifdef swout_sw();/6路PWM輸出口輸出1/讓LED1輸出0/調(diào)用讀SW輸入口程序#endif/這里不提供SW口處理程序_nop_();/*主程序結(jié)束*Page: 7- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- TM1629 驅(qū)動(dòng)程序
鏈接地址:http://ioszen.com/p-6657558.html