|
每一次想顯示單片機(jī)當(dāng)前的參數(shù),麻煩就作一個(gè)RS485+數(shù)碼管的顯示板
新唐003+TM1650驅(qū)動(dòng)方案;空板:
02.jpg (807.5 KB, 下載次數(shù): 78)
下載附件
2020-9-11 21:00 上傳
焊好的板;
03.jpg (715.82 KB, 下載次數(shù): 75)
下載附件
2020-9-11 21:00 上傳
剛上電的:
04.jpg (567.2 KB, 下載次數(shù): 75)
下載附件
2020-9-11 21:00 上傳
現(xiàn)在解碼紅外的鍵值,賊好用,當(dāng)然可以顯示你要顯示的數(shù)據(jù);
01.jpg (771.3 KB, 下載次數(shù): 67)
下載附件
2020-9-11 21:00 上傳
附一個(gè)原廠的1650的驅(qū)動(dòng)代碼:
/*****************************************************************************
*版權(quán)信息:深圳天微電子有限公司
*文 件 名:TM1650-V1.0
*當(dāng)前版本:V1.0
*MCU 型號(hào):STC12C5608AD
*開發(fā)環(huán)境:Keil uVision4
*晶震頻率:11.0592MHZ
*完成日期:2013-07-29
*程序功能:1.上電8段4位共陰數(shù)碼管顯示1、2、3、4.
2.按下K11與DIG1,K12與DIG2 ,K13與DIG3之間的按鍵,數(shù)碼管第一位分別顯示5、6、7。
*免責(zé)聲明:1.此程序?yàn)門M1650驅(qū)動(dòng)LED數(shù)碼管演示程序,僅作參考之用。
2.如有直接使用本例程程序造成經(jīng)濟(jì)損失的,本公司不承擔(dān)任何責(zé)任
********************************************************************************/
#include<reg52.h> //MCU頭文件
#include<intrins.h> //包含nop指令頭文件
#define uint unsigned int //數(shù)據(jù)類型宏定義
#define uchar unsigned char //數(shù)據(jù)類型宏定義
#define nop _nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); //宏定義
/********************定義控制端口**********************/
sbit SCL=P2^1; //時(shí)鐘線
sbit SDA=P2^0; //數(shù)據(jù)線
uchar keya; //定義讀出按鍵返回值
/*************1ms延時(shí)*晶振11.0592M********************/
void delay(uint n)
{
uint i;
while(n--)
for(i=0;i<550;i++);
}
/**************共陰數(shù)碼管顯示0-F**********************/
uchar display[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71}; //共陰極字段碼
/************ START信號(hào)*******************************/
void TM1650_START()
{
SCL=1;
SDA=1;
nop;
SDA=0;
nop;
SCL=0;
}
/******************** STOP信號(hào)************************/
void TM1650_STOP()
{
SDA=0;
nop;
SCL=1;
nop;
SDA=1;
nop;
SCL=0;
SDA=0;
}
/****************寫1個(gè)字節(jié)給TM1650********************/
void write_8bit( uchar dat)
{
uchar i;
SCL=0;
for(i=0;i<8;i++)
{
if(dat&0x80)
{
SDA=1;
nop;
nop;
SCL=1;
nop;
nop;
nop;
nop;
nop;
SCL=0;
}
else
{
SDA=0;
nop;
nop;
SCL=1;
nop;
nop;
nop;
nop;
nop;
SCL=0;
}
dat<<=1;
}
SDA=1; //ACK信號(hào)
nop;
nop;
nop;
nop;
SCL=1;
nop;
nop;
nop;
nop;
nop;
SCL=0;
nop;
nop;
}
/**********************讀8bit**************************/
uchar read_8bit()
{
uchar dat,i;
SDA=1;
dat=0;
for(i=0;i<8;i++)
{
SCL=1; //時(shí)鐘上沿
nop;
nop;
nop;
dat<<=1;
if(SDA)
dat++;
SCL=0;
nop;
nop;
nop;
nop;
}
SDA=0; //ACK信號(hào)
nop;
nop;
nop;
SCL=1;
nop;
nop;
nop;
nop;
SCL=0;
nop;
return dat ;
}
/*******************讀按鍵命令************************/
uchar TM1650_read()
{
uchar key;
TM1650_START();
write_8bit(0x49);//讀按鍵指令
key=read_8bit();
TM1650_STOP();
return key;
}
/*****************發(fā)送命令信號(hào)***********************/
void TM1650_send(uchar date1,uchar date2)
{
TM1650_START();
write_8bit(date1);
write_8bit(date2);
TM1650_STOP();
}
/*****************顯示函數(shù)***********************/
void disp()
{
TM1650_send(0x48,0x01); // 開啟顯示模式:8段顯示,1級(jí)亮度
TM1650_send(0X68,display[1]); //GID1
TM1650_send(0X6A,display[2]); //GID2
TM1650_send(0X6C,display[3]); //GID3
TM1650_send(0X6E,display[4]); //GID4
}
/**************主函數(shù)**************************/
void main(void)
{
disp(); //上電顯示1、2、3、4
delay(1);
while(1)
{
keya=TM1650_read();
delay(50);
if (keya!=0)
{
switch(keya) //控制數(shù)碼管顯示數(shù)字
{
case 0x44:TM1650_send(0X68,display[5]); break; //K11與DIG1
case 0x4D:TM1650_send(0X68,display[6]); break; //K12與DIG2
case 0x56:TM1650_send(0X68,display[7]); break; //K13與DIG3
default: break;
}
}
}
}
tm1650(原例).rar
(1.5 KB, 下載次數(shù): 17)
2020-9-11 21:27 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評(píng)分
-
查看全部評(píng)分
|