Ⅰ 51單片機數碼管顯示CD4060的頻率並通過按鍵更改其頻率怎麼編程啊(最好匯編)
s1 bit p0.0 ;數碼管位定義
s2 bit p0.1
s3 bit p0.2
s4 bit p0.3
s5 bit p0.4
s6 bit p0.5
s7 bit p0.6
s8 bit p0.7
led_data equ p2 ;數碼管數據定義
org 00h ;程序開始
jmp main ;主程序開始處
org 030h ;主程序從30H開始
main: MOV sp,#30h ;設置堆棧
lcall rest ;調用初始化程序
lcall pro_8led ;調用數碼管顯示程序
jmp main ;返回
;********* 初始化程序 **************
rest:MOV a,#00h ;清寄存器
MOV b,#00h ;清寄存器
MOV p0,#0 ;禁止數碼管顯示
MOV p2,#255 ;
MOV p1,0ffh ;禁止LED顯示
clr beep ;禁止蜂鳴器
ret ;返回
;******** 數碼管顯示程序 ***************
pro_8led:
MOV b,#32 ;一共顯示32個數字
clr psw.3 ;重新設置寄存器組
setb psw.4 ;
MOV r0,#00h ;數據顯示從0開始
MOV r1,#01h ;數碼管從第1個開始
loop:MOV p0,r1 ;點亮當前數碼管
MOV a,r0 ;准備第一個數據
MOV dptr,#tab_nu ;獲得表頭
MOVc a,@a+dptr ;得到第一個數據
MOV led_data,a ;輸出到顯示數據口
lcall delay ; 500 ms 延時
lcall delay ; 1 s 延時
inc r0 ;准備下一個數據
MOV a,r1 ;准備下一位數碼管
rlc a ;設置下一個數碼管
jc c1 ;8位全部顯示,轉移
MOV r1,a ;否則,設置下一位
djnz b,loop ;32個數沒有顯示完,返回顯示
ret ;否則返回主程序
c1: MOV r1,#1 ;8位顯示完,重新開始循環
clr c ;設置顯示位
djnz b,loop ;32位顯示完則返回重新顯示
ret ;否則返回到主程序
;************* 數碼管顯示 *******************************
;************* 軟體延時 500ms *****************************
delay: push psw ; 保存原來的寄存器內容
clr psw.3 ;
clr psw.4 ; 設置新的寄存器組
MOV r0,#2 ; 延時參數1
MOV r1,#250 ; 延時參數2
MOV r2,#2 ; 延時參數3
dl1:djnz r0,dl1 ; 延時循環1
MOV r0,#250 ;
dl2:djnz r1,dl1 ; 延時循環2
MOV r0,#240 ;
MOV r1,#248 ;
dl3:djnz r2,dl1 ; 延時循環3
nop ; 定時精度調整
pop psw ; 恢復原來的寄存器
ret ; 返回
;**********************************************************
;**********************************************************
;這是數字顯示表格,其中 帶小數點的數字比不帶小數點的數字大16
; 比如 0 的顯示代碼為 0;那麼 0.的顯示代碼為 16;如此類推
tab_nu:
db 0c0h, 0f9h, 0a4h, 0b0h, 99h , 92h , 82h, 0f8h ; 數字0-7 不帶小數點代碼
db 80h , 90h, 88h , 83h , 0c6h, 0a1h, 86h, 8eh ; 數字8-f 不帶小數點代碼
db 40h , 79h, 24h , 30h , 19h , 12h , 02h, 78h ; 數字0-7 帶小數點代碼
db 00h , 10h, 08h , 03h , 46h , 21h , 06h, 0eh ; 數字8-f 帶小數點代碼
end
Ⅱ 如何讓51單片機輸出可以調節的頻率
如果是用定時器來做,那麼改變定時器的初值就可以調節頻率。
如果是用延時函數來做,那麼改變延時時間就可以調節頻率。
Ⅲ 單片機的頻率切換是如何實現的
嘿嘿 俺來回答你的問題
單片機的頻率切換的方法:
就是通過按鍵的控制 來修改定時計數器的時間常數 改變波形的輸出周期 從而達到改變頻率的目的。
例如: 當第一次按下按鍵KEY時,送定時計數器的時間常數為3CB0H ,定時50毫秒
產生一個10HZ的方波
當第二次按下按鍵KEY時,修改定時計數器的時間常數 ,定時25毫秒
產生一個20HZ的方波
當第三次按下按鍵KEY時,修改定時計數器的時間常數 ,定時5毫秒
產生一個100HZ的方波
當第四次按下按鍵KEY時,停止定時器工作 不產生方波
呵呵 滿意 就選滿意回答
Ⅳ 如何調節凌陽單片機的cpu頻率
凌陽單片機採用32768Hz的外接晶振。
在凌陽單片機內部,有個P_SystemClock單元,其b7~b5 用來選擇系統時鍾,b2~b0 用來選擇CPU 時鍾。
b7~b5 是用來對外接晶振進行倍頻,產生幾十兆的系統時鍾;
b2~b0 是用來系統時鍾進行分頻,選擇供給CPU使用的時鍾頻率。
若把b2~b0 位置為111 則CPU時鍾停止工作,系統將進入低功耗的睡眠狀態。
Ⅳ 基於單片機的簡易函數信號發生器如何調節頻率用0832跟LM324
方法之一:產生定時中斷,中斷程序負責更新計數器,當計數器到達一定值(門限)的時候,讓輸出電平改變,改變計數器的門限就可以改變輸出頻率。
如果要輸出正弦,參見DDS原理。
Ⅵ STC15w4k32單片機如何更改內部時鍾頻率
STC15w4k32單片機更改內部IRC時鍾頻率,有兩種方法,一種是在燒錄程序時,選擇內部時鍾頻率。如下圖,畫紅框的下拉列表中的頻率,就是可以選擇 的時鍾頻率。
Ⅶ 51單片機一鍵控制一個LED,每按一下按鍵LED閃爍一種頻率,共閃爍三種頻率.有好的答案加
#include<reg51.h>
unsigned char n = 0;
sbit key = P3^4;
sbit led = P1^0;
void delay()
{
unsigned int i, j;
for(i = 0; i < 100; i++) for(j = 0; j < 500; j++);
}
void readkey(void)
{
unsigned char i, j;
if(!key) {
for(i = 0; i < 10; i++)
for(j = 0; j < 120; j++); //延時消抖
if(!key) {
while(!key); //等待按鍵釋放
n++;
n %= 4; //n = 0~3
}
}
}
main()
{
while(1) {
switch(n) {
case 0: led = 1; readkey(); break; //熄滅
case 1: delay(); readkey(); //慢速閃爍
case 2: delay(); readkey(); //中速閃爍
case 3: delay(); readkey(); led = ~led; //快速閃爍
}
}
}
Ⅷ 51單片機怎樣用鍵盤控制輸出頻率和占空比可調的方波
如果占空比可以控制、調整,就不能稱之為方波,就是矩形波形,屬於PWM波形。
用兩個變數控制PWM的參數,一個控制周期長度,一個控制脈沖寬度。
用兩個按鍵控制「周期長度」變數的+、-;
用兩個按鍵控制「脈沖寬度」變數的+、-;
即可。
Ⅸ 如何實現單片機輸出信號中的頻率變化
輸出信號的頻率變化應該是指輸出方波的頻率。
1. 如果你是用定時器來實現的,改變定時器的定時周期可以改變輸出頻率。
2. 如果用延時來實現,改變延時時間可以改變輸出頻率。
3. 如果需要用按鍵來選擇頻率,只需要在按鍵處理程序(查詢或中斷)中改變相應的(上述兩例)中相應的參數即可。
4. 改變晶振頻率可以改變輸出頻率變化。
如果還有其它的方法,請補充。
Ⅹ 單片機時鍾頻率調整
^_^,用外部的頻率信號做系統時鍾,然後自己可以控制一個分頻器或者另一個單片機改變這個頻率信號
只是不明白你為什麼要1hz的時鍾周期