導航:首頁 > 編程語言 > 4位撥碼開關C語言編程

4位撥碼開關C語言編程

發布時間:2022-08-10 03:51:27

1. 84214位撥碼開關怎麼連接到PLC

每一隻4位撥碼開關的線路板一共有5個輸出點,需要佔用PLC的4個位。
線路板上標著8421字樣,可以這樣接:1接PLC的00位、2接PLC的01位、4接PLC的03位、8接PLC的03位、以此類推。開關線路板上還有一個公共輸出點,將其並聯後一並接入PLC的COM點。

2. 請幫我用8951做個定時器,用C語言寫,做好注釋

定時器程序如下
可設定時間的倒計時定時器,可選擇5/15/20/30/35/45/50分鍾倒計時
倒計時時間由四位撥碼開關的1/2/3位來控制,
第2位表示5分鍾,第3位表示15分鍾,第4位表示30分鍾,
通過不同的組合可以產生5/15/20/30/35/45/50分鍾倒計時
P1.0口的外接的發光二極體為狀態LED,定時未開始時LED常亮,定時過程中LED閃爍
K1為開始按鈕,K2為停止按鈕

a_bit equ 20h ;數碼管個位數存放內存位置
b_bit equ 21h ;數碼管十位數存放內存位置
temp equ 22h ;計數器數值存放內存位置

;開機初始化
MOV P3,#0FFH ;對P3口初始化,設置為高電平,用於按鍵輸入
MOV P0,#0FFH ;使顯示時間數碼管熄滅
CLR P1.0 ;點亮LED指示燈
;等待鍵盤輸入
START:JB P3.6,$ ;循環判斷開始按鈕K1是否按下?
ACALL DELAY10 ;延時10毫秒觸點消抖
JB P3.6,START ;如果是干擾就返回
JNB P3.6,$ ;等待按鍵松開
;讀撥碼開關的狀態,獲得倒計時時間
SET1:
MOV A,#0 ;首先對A清零
JB P2.0,A1 ;判斷撥碼開關的第2位是否接通,接通就對A加5
ADD A,#5
A1: JB P2.1,A2 ;判斷撥碼開關的第3位是否接通,接通就對A加15
ADD A,#15
A2: JB P2.2,A3 ;判斷撥碼開關的第4位是否接通,接通就對A加30
ADD A,#30
A3: MOV TEMP,A ;這時TEMP中的值就是倒計時時間
;數碼管顯示定時時間的程序
display:

CLR P2.4 ;使繼電器1釋放,開始定時(開機時繼電器處於吸合狀態)
CLR P2.3 ;使繼電器2釋放,開始定時(開機時繼電器處於吸合狀態)
MOV R2,#120
AB1:MOV R3,#250
TIME1: mov a,temp ;將temp中的十六進制數轉換成10進制
mov b,#10 ;10進制/10=10進制
div ab
mov b_bit,a ;十位在a
mov a_bit,b ;個位在b

mov dptr,#numtab ;指定查表啟始地址
mov r0,#4
dpl1: mov r1,#250 ;
dplop: mov a,a_bit ;取個位數
MOVC A,@A+DPTR ;查個位數的7段代碼
mov p0,a ;送出個位的7段代碼
clr p2.7 ;開個位顯示
ACALL DELY1 ;顯示1毫秒
setb p2.7 ;關閉個位顯示,防止鬼影
mov a,b_bit ;取十位數
MOVC A,@A+DPTR ;查十位數的7段代碼
mov p0,a ;送出十位的7段代碼
clr p2.6 ;開十位顯示
ACALL DELY1 ;顯示1毫秒
setb p2.6 ;關閉十位顯示,防止鬼影
;插入一段判斷定時過程中是否有按鍵輸入的程序段
C1: JB P3.6,B1
ACALL DELAY10 ;延時10毫秒消抖
JB P3.6,C1
JNB P3.6,$ ;等待按鍵松開
AJMP SET1
B1: JB P3.7,M33
ACALL DELAY10 ;延時10毫秒消抖
JB P3.7,B1
JNB P3.7,$ ;等待按鍵松開
AJMP OVER

M33: djnz r3,TIME1 ;2毫秒循環執行250次,時間約0.5秒
CPL P1.0 ;使LED每1秒閃爍一次
djnz r2,AB1 ;循環執行120次,時間為1分鍾
DEC TEMP ;滿一分鍾對定時時間減1
MOV A,TEMP
JNZ DISPLAY ;判斷TEMP的數值是否為0?不為0循環
;結束定時
OVER:CLR P1.0 ;LED指示燈常亮
SETB P2.4 ;繼電器1吸合,定時結束,退回到開機時的狀態
SETB P2.3 ;繼電器2吸合,定時結束,退回到開機時的狀態
AJMP START ;退到開機初始化狀態
;1毫秒延時子程序
DELY1: MOV R4,#2
D1: MOV R5,#248
DJNZ R5,$
DJNZ R4,D1
RET
;10毫秒延時子程序
DELAY10:MOV R4,#20
D2: MOV R5,#248
DJNZ R5,$
DJNZ R4,D2
RET
;實驗板上的7段數碼管0~9數字的共陰顯示代碼
NUMTAB:DB 0CFH,03H,5DH,5BH,93H,0DAH,0DEH,43H,0DFH,0DBH
end

3. 麻煩大神用C語言寫一段程序,4位撥碼開關控制3個LED的程序。

#include"reg51.h"
sbitled_1=P0^0;
sbitled_2=P0^1;
sbitled_3=P0^3;
intmain(void)
{
while(1)
{
switch(P2&0x0F)
{
case12:
case8:
case7:
case9:
case10:
case11:
case13:
case14:
case15:led_1=0;led_2=1;led_3=1;break;
case4:
case5:
case6:led_1=1;led_2=0;led_3=1;break;
case0:
case1:
case2:led_1=1;led_2=1;led_3=0;break;
}
}
}

4. 四位撥碼開關工作原理

四位撥碼開關的工作原理是一個多位BCD編碼撥動開關。裡面每個開關都有一塊電路板,通過印刷電路圖案產生BCD編碼,每一位開關下面的4個管腳輸出相應的BCD碼。

撥碼開關的輸出代碼及意義
2進制代碼(binary CODe)
用2個值(「0」和「1」、「OFF」和「ON」等)的組合構成的符號。
10進制代碼(decimal code)
採用10進制的代碼。使用0、1、2、3、4、5、6、7、8、9。
2位10進制代碼
(binary-coded decimal code)
將10進制分開的數字用2進製表示。也叫BCD代碼。
2位16進制代碼
(binary-coded hexadecimal code)
將16進制分開的數字用2進製表示。使用0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。
奇偶校驗(parity check)
是一個檢測2進制代碼有無錯誤的方法。加上奇偶校驗用的信號,作為奇數(或偶數)統一起來,將其用於判定。
實碼(real code)
作為電子電路的2值信號,將相對於接地電壓較高的H定為1,較低的L用0表示。
補碼(complement code)
與實碼相反,「H」用0表示,「L」用1表示。

5. 請問,用四個獨立按鍵來製作簡易密碼鎖C語言程序該怎麼編寫

這個可以模擬那種撥碼形式的密碼鎖方式來設計,比如OFO共享單車的撥碼方式。
#include<reg51.h>
#define uchar unsigned char
uchar mima[4]={1,2,3,4};
uchar keymm[4]={0,0,0,0};
sbit key1=P1^0;
sbit key2=P1^1;
sbit key3=P1^2;
sbit key4=P1^3;
sbit led=P1^4;
bit flag=0;
void delay(uchar a)
{
uchar i;
while(a--)for(i=0;i<120;i++);
}
main()
{
uchar i;
led=1;
while(1)
{
if(key1==0)
{
while(key1==0);
keymm[0]++;
keymm[0]%=10;
}
if(key2==0)
{
while(key2==0);
keymm[1]++;
keymm[1]%=10;
}
if(key3==0)
{
while(key3==0);
keymm[2]++;
keymm[2]%=10;
}
if(key4==0)
{
while(key4==0);
keymm[3]++;
keymm[3]%=10;
}
for(i=0;i<4;i++)
{
if(keymm[i]!=mima[i])break;
if(i==3)flag=1;
}
if(flag)
{
i=10;
while(i--)
{
led=~led;
delay(100);
}
flag=0;
}
}
}

6. 撥碼開關與PLC程序

這個就是十六進制轉二進制的原理, 一位十六進制可以用四位二進製表示。比如:撥碼開關是二位數的 現顯示09 那麼對應程序就是210.00 210.03 通 因為十六進制的9 轉成二進制就是1001 與之對應的210通道 就是210.00 210.03 的狀態為1 210.01 210.02 的狀態為0

7. 再問一次,一個關於51單片機的程序,用C語言。關於聲光控製程序的

#include<reg51.h>
#define SMG P3 //數碼管
sbit key1=P0^0;
sbit key2=P0^1;
sbit key3=P0^2;
sbit key4=P0^3;
unsigned char code table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};
//0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
void main()
{
P0=0xff;//IO口做輸入先寫1
P3=0;//防止出現亂碼
while(1)
{
if(!key1)SMG=table[1];
if(!key2)SMG=table[2];
if(!key3)SMG=table[3];
if(!key4)SMG=table[14];
}
}
還要加按鍵去抖程序,你自己寫吧!

8. 實現對四個兩段8421撥碼開關的讀取,能否將下面的匯編改成C語言代碼

兩個及兩個以上的BCD撥碼盤可以使用公共引腳A動態掃描的方法
所有BCD撥碼盤的公共引腳A分別作為不同的掃描線連接單片機。
如果8、4、2、1數據線上拉,則A端採用低掃描;如果8、4、2、1數據線下拉,則A端採用高掃描。
這里的低掃描具有兩層含義:
第一,任意時刻掃描線中只有一條為低電平,其餘掃描線為高電平;
第二, 在掃描過程中,掃描線需要周期性地依次變為低電平。高掃描則與低掃描完全相反。
還要注意的就是高掃描時從8、4、2、1引腳上讀到的數值即為撥碼盤輸入對應的BCD碼,而低掃描是需要取反才得到正確的BCD碼

DialChangeA=1;DialChangeB=0;//掃描個位
__no_operation();__no_operation();__no_operation();__no_operation();
__no_operation();__no_operation();__no_operation();__no_operation();
__no_operation();__no_operation();__no_operation();__no_operation();
__no_operation();__no_operation();__no_operation();__no_operation();
__no_operation();__no_operation();__no_operation();__no_operation();
__no_operation();__no_operation();__no_operation();__no_operation();
val=PINC;
val >>= 2;
i = val & 0x0f; //按位與,i得到個位值。

DialChangeA=0;DialChangeB=1;//掃描十位
__no_operation();__no_operation();__no_operation();__no_operation();
__no_operation();__no_operation();__no_operation();__no_operation();
__no_operation();__no_operation();__no_operation();__no_operation();
__no_operation();__no_operation();__no_operation();__no_operation();
__no_operation();__no_operation();__no_operation();__no_operation();
__no_operation();__no_operation();__no_operation();__no_operation();
val=PINC;
val >>= 2;
l = val & 0x0f; //按位與,i得到十位值。

l *= 10; //十位值乘以10
i += l; //然後與個位值相加。
Dalay=1;
return i; //將得到的十進制數返回

閱讀全文

與4位撥碼開關C語言編程相關的資料

熱點內容
溯源碼有分國家認證的嗎 瀏覽:210
如何通過app查詢產檢報告 瀏覽:938
拉結爾安卓手機怎麼用 瀏覽:695
驅動級進程代理源碼 瀏覽:782
androidshape畫線 瀏覽:510
程序員想辭職被拒絕 瀏覽:101
java面試邏輯 瀏覽:749
如何下載全英文app 瀏覽:724
js函數式編程指南 瀏覽:380
為什麼安卓手機相機啟動會卡 瀏覽:341
python中t是什麼意思 瀏覽:765
移動硬碟內存加密 瀏覽:407
單片機測角度 瀏覽:864
URL伺服器地址怎麼填 瀏覽:438
壓縮餅干會導致血糖高嗎 瀏覽:569
cad中xc命令怎麼用 瀏覽:424
戴爾伺服器怎麼看網卡介面 瀏覽:823
鹽鐵論pdf 瀏覽:424
最短路徑的生成演算法可用 瀏覽:457
蘋果備忘錄怎麼不能加密了 瀏覽:626