



版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、-精選文檔 -E:Itemdesigntmxx led demoswcurrency.c/*File name:leddriver demo programme/文件名Author:xcwy/作者Version:leddemo 0.1/版本Date:2006 年7月21 日/完成日期MCU :AT89S52/單片機型號12M/單片機使用的晶體頻率keilc v3.05c/軟件開發(fā)環(huán)境Description:本程序是深圳市天微電子有限公司LED 驅(qū)動 IC的演示程序,采用C語言編寫/ 用于詳細說明此程序文件完成的主要功能,與其他模塊/ 或函數(shù)的接口,輸出值、取值范圍、含義及參數(shù)間的控/ 制、順序
2、、獨立或依賴等關(guān)系Others:本程序僅僅提供演示,任何個人或企業(yè)直接使用本程序造成的損失本公司不承擔任何責任/ 其它內(nèi)容的說明Function List:1.delay ()延時程序2.indate()通過 MCU 向 LEDdriver中寫入一字節(jié)的數(shù)據(jù)3.outdate()通過 MCU 從 LEDdriver中讀出一字節(jié)的數(shù)據(jù)4.display()采用地址自動加1方式的顯示程序5.display2()采用固定地址方式的顯示程序6.in_led()采用地址自動加一方式先LED 顯存7.out_sw()讀 SW 輸入口狀態(tài)/ 主要函數(shù)列表,每條記錄應(yīng)包括函數(shù)名及功能簡要說明History:/
3、修改歷史記錄列表,每條修改記錄應(yīng)包括修改日期、修改/ 作者及修改內(nèi)容簡述1. Date:2006 年 7 月 21 日 9: 02Author:xcwyModification:1 )進一步添加了詳細的注釋2. Date:2006 年12 月17 日Author:xcwyModification:1) 修改為本公司通用的LED 驅(qū)動程序*/#include <REG52 .h>#include<stdio . h>#include<intrins .h >/*#definetm16161#definetm16182#definetm1618a3#define
4、tm16204#definetm1620b5#definetm16236#definetm16247#definetm1626a8#definetm1626b9#definetm1626c10#definetm1626d11#definetm162812#definetm162913#definetm1629a14#definetm1629b15#definetm1629c16#definetm1629d17#definetm163818#definetm166819#definetw162820#defineicmodeltm1616/ 這里選擇的 TM1616 ,更改“tm1616 ”可以
5、得到其他型號IC的驅(qū)動程序可編輯-精選文檔 -#if icmodel= tm1616Page: 1可編輯-精選文檔 -E:Itemdesigntmxx led demoswcurrency.c#defineseg7#definegrid4#definedismodel 1#elif icmodel= tm1618#defineseg5#definegrid7#definekey3#definedismodel4#elif icmodel= tm1618a#defineseg7#definegrid5#definekey4#definedismodel2#elif icmodel= tm1620
6、#defineseg8#definegrid6#definedismodel3#elif icmodel = tm1620b#defineseg6#definegrid7#definekey3#definedismodel4#elif icmodel= tm1623#defineseg11#definegrid7#definekey4#definedismodel4#elif icmodel = tm1624#defineseg11#definegrid7#definedismodel4#elif icmodel= tm1626a#defineseg10#definegrid7#definek
7、ey5#definesw2#defineled6#definedismodel4#elif icmodel= tm1626b#defineseg11#definegrid7#definekey5#definesw4#defineled6#definedismodel4#elif icmodel= tm1626c#defineseg11#definegrid7#definekey5#defineled1#definedismodel 4#elif icmodel= tm1626d#defineseg10#definegrid7#definekey5#defineled1#definedismod
8、el4#elif icmodel= tm1628#defineseg10#definegrid7#definekey4可編輯-精選文檔 -#definedismodel4#elificmodel= tm1629Page: 2可編輯-精選文檔 -E:Itemdesigntmxx led demoswcurrency.c#defineseg16#definegrid8#definekey4#definedismodel1#elif icmodel= tm1629a#defineseg16#definegrid8#definedismodel1#elif icmodel= tm1629b#defin
9、eseg14#definegrid8#definekey4#definedismodel1#elif icmodel= tm1629c#defineseg15#definegrid8#definekey4#definedismodel 1#elif icmodel= tm1629d#defineseg12#definegrid8#definekey4#definedismodel1#elif icmodel= tm1638#defineseg10#definegrid8#definekey4#definedismodel1#elif icmodel= tm1668#defineseg10#de
10、finegrid7#definekey5#definedismodel1#elif icmodel= tw1628#defineseg10#definegrid7#definekey5#definedismodel1#else#error " 你必須確認 IC的型號是否存在 ?"#endif#definedissetmode0x03/ 顯示模式設(shè)置#definewritedatamode_z0x40/ 采用地址自動加一方式寫顯存#definewriteledmode_z0x41/ 采用地址自動加一方式寫LED 顯存命令#definereadkeymode0x42/ 讀按鍵命
11、令#definereadswmode0x43/ 讀 SW 口命令#definewritedatamode_g0x44/ 采用固定地址方式寫顯存#definewriteledmode_g0x45/ 采用固定地址方式寫 LED 顯存命令#definestartaddress0xc0/ 起始地址#definedisconmode0x8c/ 顯示控制#definedatacount2* grid/ 采用地址自動加一方式傳輸數(shù)據(jù)的個數(shù)/ 定義全局變量unsigned char k1,k2 ,k3 ,k4 ,k5 ;/ 按鍵值寄存器unsigned da_sw;/SW 寄存器unsigned intcou
12、nt ;/ 端口的定義sbitSTB= P2 0;sbitCLK= P2 1;sbitsbit可編輯-精選文檔 -DIO= P2 2;/ 串行通訊口SPEAK= P2 7;/ 外接蜂鳴器 ,可以不必理會/*子程序開始 *Page: 3可編輯-精選文檔 -E: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-);/-延時程序結(jié)束-/-寫入輸入 1 個字
13、節(jié) (8bit) 到 LED_IC 程序開始 -/ 輸入 8BIT 數(shù)據(jù)/ 在時鐘的上升沿通過 MCU 向 LED 驅(qū)動 IC TM16xx 寫數(shù)據(jù)void indate(unsigned char p)unsigned int i;STB= 0 ;/ 保證“STB ”為低電平,程序不依賴于之前端口的狀態(tài)/ 保證程序在實際運行中不會出現(xiàn)“端口迷失”for (i = 0 ;i< 8 ;i+)CLK= 0; / 先將“CLK ”清零if (p & 0x01 )!= 0 )DIO = 1;/ 需要傳送的數(shù)據(jù)的低位為“1 ”,則把“DIO ”清零elseDIO = 0;/ 需要傳送的數(shù)據(jù)
14、的低位為“0 ”,則把“DIO ”置高CLK= 1 ;/ 送時鐘的上升沿p= p>> 1;/ 準備送下一個 BIT/ 送完一個字節(jié)后退出循環(huán)/-寫入輸入 1 個字節(jié) (8bit)到 LED_IC 程序結(jié)束 -/-從 LED_IC 讀入 1個字節(jié) (8bit) 程序開始-/ 輸出 8BIT 數(shù)據(jù)/ 在時鐘的上升沿通過 MCU 從 LED 驅(qū)動 IC TM16xx 讀數(shù)據(jù)#ifdef keyunsigned char outdate()unsigned char i ,k= 0 ;/i 控制循環(huán)次數(shù), k 臨時保存讀到的數(shù)據(jù)DIO = 1;/ 釋放 DIO 為輸入STB= 0 ;/ 保
15、證“STB ”為低電平,程序不依賴于之前端口的狀態(tài)/ 保證程序在實際運行中不會出現(xiàn)“端口迷失”for (i = 0 ;i< 8 ;i+)CLK= 0;/ 先將“CLK ”清零k= k>> 1 ;if (P2& 0x04 )= 0 )k= k& 0x7f ;/ 如果“DIO ”為低電平,則把 k的最高位清“0 ”,其他各位保持不變elsek=( k|0x80 & 0xff ); / 如果“ DIO ”為高電平,則把 k 的最高位置“1 ”,其他各位保持不變CLK= 1;/ 送時鐘的上升沿/ 送完一個字節(jié)后退出循環(huán)return ( k);/ 返回讀到的 1
16、字節(jié)數(shù)據(jù)#endif/-從 LED_IC 讀入 1個字節(jié) (8bit) 程序結(jié)束 -可編輯-精選文檔 -/-采用地址自動加一方式傳輸?shù)刂泛蛿?shù)據(jù)開始-/ 采用地址自動加 1 方式Page: 4可編輯-精選文檔 -E:Itemdesigntmxx led demoswcurrency.c/ 上電后 LED-DRIVER 顯存中的數(shù)據(jù)是隨機的,上電后馬上傳顯示控制命令字(打開顯示),會出現(xiàn)亂碼。/ 為避免上述現(xiàn)象,用戶可以先傳顯示控制命令將顯示關(guān)掉(見應(yīng)用手冊中詳細介紹),然后正常操作/ 也可以先主動刷新 LED-DRIVER 顯存中的數(shù)據(jù)。然后開顯示/ 這里采用是第二種方法void display
17、(unsigned char disa)unsigned int i;DIO = 1;CLK= 1 ;STB= 1 ;indate (writedatamode_z ); STB= 1 ;indate (startaddress);for (i = 0 ;i< datacount;i+)indate (disa );STB= 1 ;indate (disconmode ); STB= 1 ;/i 控制本次需要傳多少個字節(jié)顯示數(shù)據(jù)/ 通訊開始前通訊端口全部初始化為“1 ”/ 傳數(shù)據(jù)設(shè)置命令,設(shè)置采用地址自動加1方式寫顯示數(shù)據(jù),/ 數(shù)據(jù)設(shè)置命令傳完后需要將“STB ”置“1 ”/ 傳起始地址
18、/ 地址命令傳完后,“STB ”保持為“0 ”繼續(xù)傳需要顯示的數(shù)據(jù)/ 在連續(xù)傳顯示的數(shù)據(jù)過程中,“STB ”一直保持為”0 “/ 傳完所有的顯示數(shù)據(jù)后(最多14BYTE )后,將“STB 置“1 ”/ 傳顯示控制命令/ 顯示控制命令傳完后將“STB ”置“1 ”/-采用地址自動加一方式傳輸?shù)刂泛蛿?shù)據(jù)結(jié)束-/-采用固定地址方式傳輸?shù)刂泛蛿?shù)據(jù)開始-/ 采用固定地址方式void display2(unsigned char adress,disa )DIO = 1;CLK= 1 ;/ 通訊開始前通訊端口全部初始化為“1 ”STB= 1 ;indate(writedatamode_g );/ 數(shù)據(jù)設(shè)置
19、命令STB= 1 ;indate(adress );/ 傳顯示數(shù)據(jù)對應(yīng)的地址indate(disa );/ 保持“ STB ” = “ 0 ”,1BYTE傳顯示數(shù)據(jù)STB= 1 ;/ 傳完顯示數(shù)據(jù)后將“STB ”置“ 1 ”/-采用固定地址方式傳輸?shù)刂泛蛿?shù)據(jù)結(jié)束-/-按鍵掃描程序開始-/ 按鍵掃描/ 只要定義了 key 都將執(zhí)行按鍵掃描程序,且必須從低字節(jié)開始讀#ifdef keyunsigned char keyscan()STB= 1 ;indate (readkeymode );/ 傳數(shù)據(jù)設(shè)置命令,設(shè)置為讀按鍵/“ STB ”保持為“0 ”,讀鍵值/ 將讀到的鍵值保存在MCU 的寄存器中
20、/根據(jù) IC 型號讀指定字節(jié),不允許多讀,否則會造成讀按鍵不穩(wěn)定if (key >= 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: 5可編輯-精選文檔 -E:Itemdesigntmxx led demoswcurre
21、ncy.c/-PWM數(shù)據(jù)傳輸開始 -#ifdefledunsigned char in_led()STB= 1 ;indate(writeledmode_z);/ 數(shù)據(jù)設(shè)置命令 ,設(shè)置為寫 LED 顯存STB= 1 ;indate(0xc0 );/起始地址 ,這里的地址和indate(0x0f );/LED1寬度設(shè)置indate(0x0f );/LED2寬度設(shè)置indate(0x0f );/LED3寬度設(shè)置indate(0x00 );/ 關(guān)閉 LED123同步調(diào)節(jié)indate(0x0f );/LED4寬度設(shè)置indate(0x0f );/LED5寬度設(shè)置indate(0x0f );/LED6寬度設(shè)置indate(0x00 );/ 關(guān)閉 LED456同步調(diào)節(jié)STB= 1 ;return0 ;#endif/-PWM數(shù)據(jù)傳輸結(jié)束 -#ifdefledunsigned 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 ;return0 ;#endif/-讀入 SW 口狀態(tài)開始-#ifdef swunsigned char
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 45286-2025信息技術(shù)手持式移動設(shè)備增強現(xiàn)實系統(tǒng)技術(shù)規(guī)范
- 2025年萊蕪下載貨運從業(yè)資格證模擬考試系統(tǒng)試題
- 單位空調(diào)安裝合同范本
- 刑法中勞務(wù)合同范本
- 刊物設(shè)計制作合同范本
- 寫好運輸合同范本
- 農(nóng)戶貸款合伙經(jīng)營合同范本
- 企業(yè)重組收購合同范本
- 供熱設(shè)備買賣合同范本
- 代理銀行開戶合同范本
- 九型人格與親子教育課件
- 2025屆高校畢業(yè)生公開招聘工作人員報名登記表
- DB34∕T 2290-2022 水利工程質(zhì)量檢測規(guī)程
- GB/T 44399-2024移動式金屬氫化物可逆儲放氫系統(tǒng)
- 薛崗小學反邪教工作計劃
- 某住宅小區(qū)物業(yè)服務(wù)投標書范本
- 2024-2030年中國高空外墻清洗行業(yè)市場發(fā)展趨勢與前景展望戰(zhàn)略分析報告
- 2024年遼寧省中考生物試卷(含答案與解析)
- 醫(yī)院殯葬服務(wù)管理制度
- 煤礦自救互救知識考試復習題庫(含答案)
- 外科學緒論 課件
評論
0/150
提交評論