標(biāo)題:
HT66F3185單片機(jī)TM1621顯示控制程序
[打印本頁(yè)]
作者:
haha13
時(shí)間:
2023-7-29 17:24
標(biāo)題:
HT66F3185單片機(jī)TM1621顯示控制程序
1,1621顯示控制數(shù)字
2,通過HT66F3185,直接驅(qū)動(dòng)顯示屏。
#include "Smg.h"
//--------聲音------光標(biāo)-----
uchar Sound_Flag,Cursor_Flag,Manual_falg;
/********************從高位寫入數(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) DATA=1;
else DATA=0;
WRITE=1;
Data<<=1;
}
WRITE=1;
DATA=1;
}
/********************從低位寫入數(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) DATA=1;
else DATA=0;
WRITE=1;
Data>>=1;
}
WRITE=1;
DATA=1;
}
/********************寫入控制命令*************************/
void WriteCmd(uchar Cmd)
{
CS=0;
Write_Data_H(0x80,4); //寫入命令標(biāo)志100
Write_Data_H(Cmd,8); //寫入命令數(shù)據(jù)
CS=1;
}
void WriteOneData(uchar Addr, uchar Data)
{
CS=0;
Write_Data_H(0xa0,3);
Write_Data_H(Addr<<2,6);
Write_Data_L(Data,4);
CS=1;
}
/*******************TM1621初始化**********************/
void Init_Tm1621()
{
//uchar i;
CS_T = 0;
WRITE_T = 0;
DATA_T = 0;
CS=1;
WRITE=1;
DATA=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偏壓
Sound_Flag=1;
Manual_falg=0;
}
const uchar Smg_Buf[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0,0x40,0x38};
//----------------------------0----1----2----3----4----5----6----7----8----9---滅-
const uchar Smg_Buf_Front[]={0x0f,0x06,0x0b,0x0f,0x06,0x0d,0x0d,0x07,0x0f,0x0f,0,0x40,0x38};
const uchar Smg_Buf_After[]={0x0a,0x00,0x0c,0x04,0x06,0x06,0x0e,0x00,0x0e,0x06,0,0x40,0x38};
//-----------------------------0----1----2----3----4----5----6----7----8----9---滅-
const uchar Smg_Buf_Front1[]={0x0a,0x00,0x06,0x04,0x0c,0x0c,0x0f,0x00,0x0f,0x0c,0,0x04,0x38};
const uchar Smg_Buf_After1[]={0x0f,0x06,0x0d,0x0f,0x06,0x0b,0x0b,0x0e,0x0f,0x0f,0,0x00,0x38};
void Disp_Data(uint TEMP,uint TEMP_S,uint TEMP_T,uchar L_M_S_B,uchar MODE)
{
uchar i;
if(MODE==0)
{
for(i=0;i<32;i++)
{
WriteOneData(i,0);
}
}
else if(MODE==1)
{
for(i=0;i<32;i++)
{
WriteOneData(i,0xff);
}
}
else if(MODE == 2)
{
Show_Top(L_M_S_B);
Show_num(TEMP);
Show_num2(TEMP_S);
Show_num3(TEMP_T);
Cursor_Flag=1;
}else if(MODE == 3)
{
Show_Top(L_M_S_B);
//Sound_Flag=1;
Cursor_Flag=1;
Show_num(TEMP);
Show_num2(TEMP_S);
Show_num3(TEMP_T);
}else
{
Show_Top(L_M_S_B);
//Sound_Flag=1;
Cursor_Flag=1;
Show_num(TEMP);
Show_num2(TEMP_S);
Show_num3(TEMP_T);
}
}
void Show_num(uint TEMP)
{
uchar ge,sh,ba,tem;
if(TEMP == 10001)
{
WriteOneData(7,Smg_Buf_Front[0]);
if(Sound_Flag == 1)
{
tem=Smg_Buf_After[0];
tem |= 0x01;
WriteOneData(8,tem);
}else
{
WriteOneData(8,Smg_Buf_After[0]);
}
//WriteOneData(8,Smg_Buf_After[0]);
WriteOneData(9,Smg_Buf_Front[0]);
WriteOneData(10,Smg_Buf_After[0]);
WriteOneData(11,Smg_Buf_Front[0]);
WriteOneData(12,Smg_Buf_After[0]+0x01);
WriteOneData(13,Smg_Buf_Front[0]);
WriteOneData(14,Smg_Buf_After[0]+0x01);
}else
{
ge = TEMP%10;
sh = TEMP%100/10;
ba = TEMP%1000/100;
//ge
WriteOneData(7,Smg_Buf_Front[ge]);
if(Sound_Flag == 1)
{
tem=Smg_Buf_After[ge];
tem |= 0x01;
WriteOneData(8,tem);
}else
{
WriteOneData(8,Smg_Buf_After[ge]);
}
//sh
if(ba == 0)
{
if(sh == 0)
{
WriteOneData(9,0x00);
WriteOneData(10,0x00);
}else
{
WriteOneData(9,Smg_Buf_Front[sh]);
WriteOneData(10,Smg_Buf_After[sh]);
}
}else
{
WriteOneData(9,Smg_Buf_Front[sh]);
WriteOneData(10,Smg_Buf_After[sh]);
}
//ba
if(ba == 0)
{
WriteOneData(11,0x00);
WriteOneData(12,0x00);
}else
{
WriteOneData(11,Smg_Buf_Front[ba]);
WriteOneData(12,Smg_Buf_After[ba]);
}
//去掉千位
WriteOneData(13,0x00);
WriteOneData(14,0x01);
}
}
void Show_num2(uint TEMP)
{
uchar ge,sh,ba;
if(TEMP == 10000)
{
WriteOneData(21,Smg_Buf_Front1[11]);
WriteOneData(22,Smg_Buf_After1[11]);
WriteOneData(19,Smg_Buf_Front1[11]);
WriteOneData(20,Smg_Buf_After1[11]);
WriteOneData(17,Smg_Buf_Front1[11]);
WriteOneData(18,Smg_Buf_After1[11]);
WriteOneData(15,Smg_Buf_Front1[11]+0x01);
WriteOneData(16,Smg_Buf_After1[11]);
}else if(TEMP == 10001)
{
WriteOneData(21,Smg_Buf_Front1[0]);
WriteOneData(22,Smg_Buf_After1[0]);
WriteOneData(19,Smg_Buf_Front1[0]);
WriteOneData(20,Smg_Buf_After1[0]);
WriteOneData(17,Smg_Buf_Front1[0]+0x01);
WriteOneData(18,Smg_Buf_After1[0]);
WriteOneData(15,Smg_Buf_Front1[0]+0x01);
WriteOneData(16,Smg_Buf_After1[0]);
}else
{
ge = TEMP%10;
sh = TEMP%100/10;
ba = TEMP%1000/100;
//ge
WriteOneData(21,Smg_Buf_Front1[ge]);
WriteOneData(22,Smg_Buf_After1[ge]);
//sh
WriteOneData(19,Smg_Buf_Front1[sh]);
WriteOneData(20,Smg_Buf_After1[sh]);
//ba
WriteOneData(17,Smg_Buf_Front1[ba]);
WriteOneData(18,Smg_Buf_After1[ba]);
//去掉千位
WriteOneData(15,0x01);
WriteOneData(16,0x00);
}
}
void Show_num3(uint TEMP)
{
uchar ge,sh,ba;
if(TEMP == 10000)
{
WriteOneData(23,Smg_Buf_Front[0]);
WriteOneData(24,Smg_Buf_After[0]+0x01);
WriteOneData(25,Smg_Buf_Front[10]);
WriteOneData(26,Smg_Buf_After[10]+0x01);
WriteOneData(27,Smg_Buf_Front[10]);
WriteOneData(28,Smg_Buf_After[10]);
WriteOneData(29,Smg_Buf_Front[10]);
WriteOneData(30,Smg_Buf_After[10]+0x01);
}else if(TEMP == 10001)
{
WriteOneData(23,Smg_Buf_Front[0]);
WriteOneData(24,Smg_Buf_After[0]+0x01);
WriteOneData(25,Smg_Buf_Front[0]);
WriteOneData(26,Smg_Buf_After[0]+0x01);
WriteOneData(27,Smg_Buf_Front[0]);
WriteOneData(28,Smg_Buf_After[0]+0x01);
WriteOneData(29,Smg_Buf_Front[0]);
WriteOneData(30,Smg_Buf_After[0]+0x01);
}else
{
ge = TEMP%10;
sh = TEMP%100/10;
ba = TEMP%1000/100;
WriteOneData(23,Smg_Buf_Front1[ge]);
WriteOneData(24,Smg_Buf_After1[ge]);
WriteOneData(25,Smg_Buf_Front1[sh]);
WriteOneData(26,Smg_Buf_After1[sh]);
WriteOneData(27,Smg_Buf_Front1[ba]);
WriteOneData(28,Smg_Buf_After1[ba]);
}
}
void Show_Top(uchar L_M_S_B)
{
if(Manual_falg ==1)
{
WriteOneData(6,0x01);
}else
{
WriteOneData(6,L_M_S_B);
}
if(Cursor_Flag == 1)
{
WriteOneData(31,0x01);
}else if(Cursor_Flag == 2)
{
WriteOneData(31,0x02);
}else if(Cursor_Flag == 3)
{
WriteOneData(31,0x04);
}else
{
WriteOneData(31,0x08);
}
}
復(fù)制代碼
原理圖:無
仿真:無
Smg.c和Smg.h 2個(gè)文件下載:
smg.zip
(4.05 KB, 下載次數(shù): 14)
2023-7-29 17:24 上傳
點(diǎn)擊文件名下載附件
1621顯示代碼
下載積分: 黑幣 -5
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1