Ⅰ 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的时钟周期