|
手頭有壞電子秤的段碼液晶,從網(wǎng)上買的段碼液晶屏帶有TM1621D。TM1621D與HT1621結(jié)構(gòu)相同,只是引腳少,段碼少但容易業(yè)余制作。正好利用這兩種材料,自制段碼液晶模塊,并用普中開發(fā)板調(diào)試通過。
程序來自網(wǎng)上修改,權(quán)力歸原創(chuàng)作者所有。
0.JPG (2.33 MB, 下載次數(shù): 106)
下載附件
清屏狀態(tài)
2020-2-18 10:41 上傳
1.JPG (1.57 MB, 下載次數(shù): 106)
下載附件
點亮段碼
2020-2-18 10:41 上傳
2.JPG (1.73 MB, 下載次數(shù): 109)
下載附件
全部點亮
2020-2-18 10:42 上傳
連接TM1621D模塊,
程序編譯后HEX文件下載到單片機(jī)
關(guān)掉下載程序,打開串口調(diào)試助手,設(shè)置4800波特率,
數(shù)據(jù)位8停止位1,無校驗無流控制,
勾選HEX發(fā)送,輸入80-8F之間的數(shù)據(jù),顯示地址0-F。
輸入數(shù)據(jù)0d-16,1602顯示SEG數(shù)字,TM1621
對應(yīng)段點亮。
注意5v電壓下程序BASE選1/2.選1/3全亮。
3v選1/3BASE
COM誤接成SEG,開機(jī)初始化即顯示88。
背光限流電阻1K,白天亮度略低。
VLCD電阻選10k.
段碼每位由兩個地址構(gòu)成,每個地址4位數(shù)據(jù)(4段)
用串口調(diào)試助手發(fā)送必須輸成兩位
80(數(shù)據(jù))0b-16(可串發(fā))選定時發(fā)送10ms/次
清零:800b0c0d0e0f10111213141516
先81,再輸入0b-16中的任意數(shù)字,顯示對應(yīng)段。
82
84
88
測試段
全顯示:8f0b0c0d0e0f10111213141516
單片機(jī)源程序如下:
- /*-****************************************
- 名稱:TM1621
- ******************************************/
- #include "TM1621.h"
- #include<reg52.h>
- #include "intrins.h" //包含nop指令頭文件
- #define uchar unsigned char //數(shù)據(jù)類型宏定義
- #define uint unsigned int //數(shù)據(jù)類型宏定義
- #define nop _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); //宏定義
- /******************以下TM1621模塊命令定義*********************/
- #define SYSDIS 0x00 //關(guān)系統(tǒng)振蕩器和LCD偏壓發(fā)生器
- #define SYSEN 0x02 //打開系統(tǒng)振蕩器
- #define LCDOFF 0x04 //關(guān)LCD偏壓
- #define LCDON 0x06 //開LCD偏壓
- #define TONEON 0x12 //打開聲音輸出
- #define TONEOFF 0x10 //關(guān)閉聲音輸出
- #define XTAL 0x28 //外部接晶振
- #define RC 0x30 //內(nèi)部RC振蕩
- #define BIAS 0x52 //1/3偏壓 4公共口,0X52=1/2偏壓
- #define WDTDIS 0x0a //禁止看門狗
- #define WDTEN 0x0e //開啟看門狗
- /********************定義控制端口**********************/
- sbit CS=P2^2;
- sbit READ=P2^0;//無用
- sbit WRITE=P2^1;
- sbit DATA=P2^0;
- /********************延時函數(shù)*************************/
- void delay_nms(uint n)
- {
- uint i;
- while (n--)
- for (i=0;i<500;i++);
- }
- /********************從高位寫入數(shù)據(jù)*************************/
- void Write_Data_H(uchar Data, uchar Cnt) //Data的高cnt位寫入TM1621,高位在前
- {
- uchar i;
- for (i=0;i<Cnt;i++)
- {
- WRITE=0;
- if (Data&0x80) //從最高位發(fā)送
- DATA=1;
- else
- DATA=0;
- nop;
- nop;
- WRITE=1;
- Data<<=1;
- }
- WRITE=0;
- DATA=0;
- }
- /********************從低位寫入數(shù)據(jù)*************************/
- void Write_Data_L(uchar Data,uchar Cnt) //Data 的低cnt位寫入TM1621,低位在前
- {
- unsigned char i;
- for (i=0;i<Cnt;i++)
- {
- WRITE=0;
- if (Data&0x01) //從低位發(fā)送
- DATA=1;
- else
- DATA=0;
- nop;
- nop;
- WRITE=1;
- Data>>=1;
- }
- WRITE=0;
- DATA=0;
- }
- /********************寫入控制命令*************************/
- void WriteCmd(uchar Cmd)
- {
- CS=0;
- nop;
- Write_Data_H(0x80,4); //寫入命令標(biāo)志100
- Write_Data_H(Cmd,8); //寫入命令數(shù)據(jù)
- CS=1;
- nop;
- }
- /*********指定地址寫入數(shù)據(jù),實際寫入后4位************/
- void WriteOneData(uchar Addr, uchar Data)
- {
- CS=0;
- Write_Data_H(0xa0,3); //寫入數(shù)據(jù)標(biāo)志101
- Write_Data_H(Addr<<2,6); //寫入地址數(shù)據(jù)(A5-A4-A3-A2-A1-A0)從高位開始寫數(shù)據(jù)
- Write_Data_L(Data,4); //寫入數(shù)據(jù)
- CS=1;
- nop;
- }
- /*********連續(xù)寫入方式,每次數(shù)據(jù)為8位,寫入數(shù)據(jù)************
- void WriteAllData(uchar Addr,uchar *p,uchar cnt)
- {
- uchar i;
- CS=0;
- Write_Data_H(0xa0,3); //寫入數(shù)據(jù)標(biāo)志101
- Write_Data_H(Addr<<2,6); //寫入地址數(shù)據(jù)
- for(i=0;i<cnt;i++) //寫入數(shù)據(jù)
- {
- Write_Data_L(*p,8);
- p++;
- }
- CS=1;
- nop;
- }
- ***************這個子程序暫時沒用,注釋掉******************/
- /*******************TM1621初始化**********************/
- void TM1621_init()
- {
- CS=1;
- WRITE=1;
- DATA=1;
- nop;
- delay_nms(1);
- WriteCmd(BIAS); //1/3偏壓 4公共口
- WriteCmd(RC); //內(nèi)部RC振蕩
- WriteCmd(SYSDIS); //關(guān)系統(tǒng)振蕩器和LCD偏壓發(fā)生器
- WriteCmd(WDTDIS); //禁止看門狗
- WriteCmd(SYSEN); //打開系統(tǒng)振蕩器
- WriteCmd(LCDON); //開LCD偏壓
-
- }
- /*************TM1621清屏函數(shù)*****************/
- void Clear1621()
- {
- uchar i;
- for(i=9;i<22;i++)
- {
- WriteOneData(i, 0x00);
- }
- }
- /*******************************************************************************
- * 函數(shù)名稱 :1621顯示函數(shù)顯示
- * 函數(shù)功能 :
- * 輸 入 : 無
- * 輸 出 : 無
- *******************************************************************************/
- void Disp1621(uchar Addr, uchar Data)
- {
- WriteOneData(Addr, Data);
- }
復(fù)制代碼 全部資料51hei下載地址:
完全調(diào)試通過的1602和TM1621程序.rar
(1.91 MB, 下載次數(shù): 483)
2020-2-18 10:42 上傳
點擊文件名下載附件
含COM-SEG表 下載積分: 黑幣 -5
|
評分
-
查看全部評分
|