標(biāo)題:
數(shù)字電位器X9C103 100級(jí)調(diào)節(jié)電路和單片機(jī)源程序
[打印本頁]
作者:
GUOXUAN
時(shí)間:
2017-12-17 10:56
標(biāo)題:
數(shù)字電位器X9C103 100級(jí)調(diào)節(jié)電路和單片機(jī)源程序
數(shù)字電位器在90年代就有了,當(dāng)時(shí)大學(xué)DIY HI-END頂級(jí)音響流行想用它來做音量電位器,但是價(jià)格非常昂貴.現(xiàn)已出來很多年價(jià)格尚可接受,但也和STM32差不多價(jià)!它在某些場(chǎng)合可以高可靠性地代替普通模擬電位器,如美國(guó)美信公司生產(chǎn)的10K歐姆的X9C103,它有100級(jí)調(diào)節(jié),每檔100歐姆.可做為音量調(diào)節(jié)電路,儀器模擬量調(diào)節(jié)及數(shù)控電源DIY什么的,其實(shí)前不久我買幾塊回來就是想DIY數(shù)控電源(在大蝦眼中就是"假數(shù)控吧"),下面貢獻(xiàn)買來的所有資料和原程序. 由于水平有限,專業(yè)軟件的我不懂,我也沒有時(shí)間測(cè)試X9C103行不行,我現(xiàn)在就是善良地為老師大神大蝦們無條件地分享資料(美信公司20年前的東西,應(yīng)該沒有版權(quán)問題)謝謝!
原理圖:
0.jpg
(12.15 KB, 下載次數(shù): 192)
下載附件
2017-12-17 13:09 上傳
使用說明
一、基礎(chǔ)部分
數(shù)字電位器 X9c103 模塊是一款寬電壓(3V-5V)供電,10K滿量程電位器。
電位器中間抽頭在 0-10k 間滑動(dòng)共 100 級(jí)(電位器滑動(dòng)端典型阻抗 40 歐) 數(shù)字電位器 VL 和 VH 端口分別對(duì)應(yīng)滑動(dòng)變阻器的低端和高端,允許輸入電壓范圍-5V 到+5V。 數(shù)字電位器模塊附帶測(cè)試程序,程序代碼為 C 語言代碼,分模塊編寫。代碼包括:主函數(shù)、顯示子函數(shù)、按鍵子函數(shù)以及各模塊的頭文件,可以采用 KEIL4 打開源代碼經(jīng)行測(cè)試和學(xué)習(xí)。
二、測(cè)試部分
如只需測(cè)試模塊使用可不研究源代碼,將測(cè)試程序中.HEX 文件下載到目標(biāo)板。
1、按鍵子函數(shù)共涉及兩個(gè)按鍵檢測(cè)和控制,分別對(duì)應(yīng) P3^2 和P3^3.兩個(gè)按鍵每次按下分別實(shí)現(xiàn) 10K 數(shù)字電位器中間滑動(dòng)端往上端和往下端滑動(dòng)1k數(shù)值。數(shù)字電位器接口說明:INC 接 P2^0,U_D 接P2^1,CS 接P2^2。
2、顯示器接口:電源端口 VCC(2 腳) GND(1 腳)接 5V 電源。數(shù)據(jù)端口 D0-D7(7 腳到14 腳)接P0 口(P0^0 - P0^7)。對(duì)比度調(diào)節(jié)端口 VL(3 腳)為液晶顯示器對(duì)比度調(diào)整端用電位器分壓得到 0V-5V 中間某一電壓使液晶清晰顯示?刂贫丝 RS(4 腳)為寄存器選擇,高電平1 時(shí)選擇數(shù)據(jù)寄存器、低電平0 時(shí)選擇指令寄存器。控制端口 RW(5 腳)為讀寫信號(hào)線,高電平(1)時(shí)進(jìn)行讀操作控制端口 EN(6 腳)端為使能(enable)端,高電平(1)時(shí)讀取信息,負(fù)跳變時(shí)執(zhí)行指令。
單片機(jī)源程序如下(key部分):
/*
* 按鍵子函數(shù)子函數(shù)
* 按鍵子函數(shù)共涉及兩個(gè)按鍵檢測(cè)和控制,分別對(duì)應(yīng)P3^2和P3^3.兩個(gè)按鍵每次按下分別實(shí)現(xiàn)10K數(shù)字
* 電位器中間滑動(dòng)端往上端和往下端滑動(dòng)1k數(shù)值。
* 數(shù)字電位器接口說明:INC接P2^0,U_D接P2^1,CS接P2^2。
*/
#include"HEADER.h"
#include"LCD1602.h"
#include"BUTTON.h"
volatile unsigned char FLAG_BUTTON = 0;//按鍵檢測(cè)標(biāo)志位
volatile unsigned char BUTTON_DAT = 0;//按鍵鍵值變量
volatile unsigned int TIME_10MS = 0;//時(shí)間變量
volatile unsigned char VOLUME = 0;//電位器值
void T0_Timer() interrupt 1//定時(shí)器0中斷服務(wù)程序
{
TR0 = 0;
// WDT_CONTR = 0X31; //喂狗
TH0 =55536/256; //重裝初值
TL0 =55536%256; //重裝初值
TR0 = 1;
TIME_10MS ++; //time_10ms變量累加
if(TIME_10MS == 1000)TIME_10MS = 0;//time_10ms變量清零
ButtonTest();//按鍵檢測(cè);
}
void ButtonTest(void)
{
static uchar Count_ButtonDown;//靜態(tài)按鍵按下計(jì)數(shù)
static uchar Count_ButtonUp;//靜態(tài)按鍵松開計(jì)數(shù)
if((SW_1 == 0)||(SW_2 == 0))
{
Count_ButtonDown++;
Count_ButtonUp = 0;
if(Count_ButtonDown==2)
{
if(SW_1 == 0)BUTTON_DAT = 1;
else if(SW_2 == 0)BUTTON_DAT = 2;
if(BUTTON_DAT != 0)FLAG_BUTTON = 1;
}
if(Count_ButtonDown>=50)
{
Count_ButtonDown = 0;
if(SW_1 == 0)BUTTON_DAT = 1;
else if(SW_2 == 0)BUTTON_DAT = 2;
if(BUTTON_DAT != 0)FLAG_BUTTON = 1;
}
}
else
{
if(Count_ButtonDown>2) //如果按鍵已經(jīng)確認(rèn)按下,則開始判斷松開
{
Count_ButtonUp++;
if(Count_ButtonUp>=2)
{
Count_ButtonUp = 0;
Count_ButtonDown = 0;
}
}
}
}
void ButtonService(unsigned char dat)
{
switch(dat)
{
case 1: //電位器值增加
{
unsigned char n = 0;
CS = 0;
U_D = 1;
_nop_();
for(n=10;n>0;n--)
{
INC = 0;
_nop_();
_nop_();
INC = 1;
}
CS = 1;
VOLUME++;
if(VOLUME > 10)VOLUME = 10;
DISPLAY[0] = VOLUME%100/10+0x30;
DISPLAY[1] = VOLUME%10+0x30;
Lcd_Set_xy(2,7);
Lcd_Wdat(DISPLAY[0]);
Lcd_Wdat(DISPLAY[1]);
}
break;
case 2: //電位器值減小
{
unsigned char n = 0;
CS = 0;
U_D = 0;
_nop_();
for(n=10;n>0;n--)
{
INC = 0;
_nop_();
_nop_();
INC = 1;
}
CS = 1;
if(VOLUME == 0)VOLUME = 1;
VOLUME--;
DISPLAY[0] = VOLUME%100/10+0x30;
DISPLAY[1] = VOLUME%10+0x30;
Lcd_Set_xy(2,7);
Lcd_Wdat(DISPLAY[0]);
Lcd_Wdat(DISPLAY[1]);
……………………
…………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
/*
* LCD1602顯示器并行驅(qū)動(dòng)子函數(shù)
* 顯示器接口:電源端口VCC(2腳) GND(1腳)接5V電源。
數(shù)據(jù)端口D0-D7(7腳到14腳)接P0口(P0^0 - P0^7)。
對(duì)比度調(diào)節(jié)端口VL(3腳)為液晶顯示器對(duì)比度調(diào)整端用電位器分壓得到0V-5V中間某一電壓使液晶清晰顯示。
控制端口RS(4腳)為寄存器選擇,高電平1時(shí)選擇數(shù)據(jù)寄存器、低電平0時(shí)選擇指令寄存器。
控制端口RW(5腳)為讀寫信號(hào)線,高電平(1)時(shí)進(jìn)行讀操作
控制端口EN(6腳)端為使能(enable)端,高電平(1)時(shí)讀取信息,負(fù)跳變時(shí)執(zhí)行指令。
*/
單片機(jī)源程序如下(主程序):
#include"HEADER.h"
#include"LCD1602.h"
#include"BUTTON.h"
volatile unsigned char DISPLAY[4];//全局顯示數(shù)組
/*****************************初始化函數(shù)*****************************/
void Init()//初始化函數(shù)
{
TMOD = 0X01;//定時(shí)器0設(shè)置工作方式1
TH0 =55536/256;//定時(shí)器初值
TL0 =55536%256;//定時(shí)器初值
EA = 1;//打開總中斷
ET0 = 1;//定時(shí)器0打開
TR0 = 1;//定時(shí)器0運(yùn)行
// WDT_CONTR = 0X31;//看門狗定時(shí)器在12M晶振時(shí)131ms復(fù)位
}
/****************************主函數(shù)******************************/
void main(void)
{
unsigned char m = 0;
Init();
Lcd_Init ();
Lcd_Clear();
Delayms(20);
Lcd_Set_xy(1,3);
Lcd_String("Aether Test");
Lcd_Set_xy(2,1);
Lcd_String("Value:00 K");
//數(shù)字電位器初始化
INC = 1;
CS = 0;
U_D = 0;
_nop_();
for(m=100;m>0;m--)//電位器強(qiáng)制向下滑動(dòng)100級(jí)到最底端
{
INC = 0;
_nop_();
_nop_();
INC = 1;
}
CS = 1;
while(1)
{
if(FLAG_BUTTON == 1)//按鍵檢測(cè)
{
FLAG_BUTTON = 0;
……………………
…………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
數(shù)字電位器測(cè)試程序.rar
(41.8 KB, 下載次數(shù): 521)
2017-12-17 10:49 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
高精度的數(shù)字電位器X9C103.pdf
(176.6 KB, 下載次數(shù): 260)
2017-12-17 10:49 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
數(shù)字電位器使用說明.pdf
(52.92 KB, 下載次數(shù): 279)
2017-12-17 10:49 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
數(shù)字電位器原理圖.pdf
(100.01 KB, 下載次數(shù): 309)
2017-12-17 10:49 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
作者:
fangrongchuang
時(shí)間:
2017-12-25 21:04
學(xué)習(xí)一下……。
作者:
tang131
時(shí)間:
2018-2-21 22:14
很喜歡這個(gè),但是又不太懂單片機(jī)!
作者:
tang131
時(shí)間:
2018-2-21 22:17
89C52可以控制6個(gè)數(shù)字電位器嗎?程序又要怎么改呢
作者:
yulin3192
時(shí)間:
2018-3-24 11:25
樓主大才
作者:
oniy
時(shí)間:
2018-4-20 16:43
很好用
作者:
romnel2
時(shí)間:
2018-4-21 16:39
學(xué)習(xí)了。≈x謝樓主
作者:
romnel2
時(shí)間:
2018-4-21 16:40
學(xué)習(xí)了。≈x謝樓主
作者:
謝大媽哈哈哈
時(shí)間:
2018-4-23 10:16
天才樓主
作者:
418397058
時(shí)間:
2018-4-23 21:55
學(xué)習(xí)一下!
作者:
ren_919
時(shí)間:
2018-7-7 09:45
lz辛苦!
作者:
單片小白123
時(shí)間:
2018-7-11 16:48
學(xué)習(xí)一下
作者:
gogogoin
時(shí)間:
2018-7-26 09:27
學(xué)習(xí)學(xué)習(xí)
作者:
cqtrw
時(shí)間:
2018-9-27 14:52
很好!
作者:
qq444244
時(shí)間:
2019-3-29 11:45
好東西!。。!
作者:
hanzhuang
時(shí)間:
2019-4-11 16:40
很厲害
作者:
dh981226
時(shí)間:
2019-7-17 09:24
VH和VL用接嗎
作者:
em78447
時(shí)間:
2019-9-12 13:49
好的,謝謝。
作者:
lyl_420819
時(shí)間:
2019-11-1 15:26
好資料,學(xué)習(xí)了,謝謝分享。
作者:
fangzumin
時(shí)間:
2019-11-14 16:34
好資料,學(xué)習(xí)一下,感謝樓主分享
作者:
jms208
時(shí)間:
2019-12-16 12:49
學(xué)習(xí)一下。
作者:
Hcy0906
時(shí)間:
2020-4-8 14:23
好資料,學(xué)習(xí)一下,感謝樓主分享
作者:
1725489730
時(shí)間:
2020-5-14 16:51
分享的資料很有用!
作者:
zxopenljx
時(shí)間:
2020-5-27 14:35
感謝樓主分享
作者:
byhejun
時(shí)間:
2020-6-23 09:27
很好的學(xué)習(xí)資料,謝謝分享。!
作者:
b9589
時(shí)間:
2021-2-8 11:42
挺實(shí)用的數(shù)字電位器資料
作者:
langshan
時(shí)間:
2021-2-9 20:46
這個(gè)芯片不貴 我在身高體檢機(jī)語音播報(bào)部分用過
作者:
QDMLIT
時(shí)間:
2021-3-29 11:41
有個(gè)問題,程序和電路圖不相符
作者:
lxa0
時(shí)間:
2021-7-8 14:35
我做的是51遙控pga2311的電子音量,lcd顯示。
作者:
paul8899
時(shí)間:
2024-6-8 21:27
很好的程序及原理圖
作者:
huaishang
時(shí)間:
2024-6-14 10:40
學(xué)習(xí)了!!謝謝樓主
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1