⑴ c语言程序,用数码管的前三位显示一个三位数,1--100,开始时,按下key1一次,数值加1,按下key2,减去1,
这个很简单,将数码管的段码写成一个数组,将三位数分离成三个一位的,没有具体电路吗,有具体电路的话,我可以给你写一个
⑵ 用C语言编程两个按键控制三个7段数码管显示0~99
K_ADD BIT P3.0
ORG 0000H
CLR A
MOV P0, A
;----------------------
M_LOOP:
JB K_ADD, $
CALL DL10MS
JB K_ADD, M_LOOP
ADD A, #1
DA A
MOV P0, A
MOV R2, #0
;----------------------
ML1: ;等两秒
CALL DL10MS
JB K_ADD, M_LOOP
INC R2
CJNE R2, #200, ML1
;----------------------
ML2: ;快速加一
ADD A, #1
DA A
MOV P0, A
MOV R2, #10
ML3:
CALL DL10MS
DJNZ R2, ML3
JB K_ADD, M_LOOP
JMP ML2
;----------------------
DL10MS:
MOV R6, #20
MOV R7, #110
DJNZ R7, $
DJNZ R6, $ - 2
RET
END
汇编的程序,应该不符合要求,也就没有多写,仅仅有加一的功能。
⑶ 本人在用C语言编一段三位一体数码管动态显示程序,求高手指点
如果你的硬件已连接完善,那编程需:
1、动态扫描:在已个 t 时间内(可以是几个ms)选中 1 位数码管,以亮点该位数码管对应的码段,其他关断(不亮);而下一个 t 时间需点亮下一位数码管......以此类推,循环起来。这个 t 可以用定时器准确控制。当然,如果你只是为了实现单纯的3个数码管显示,可以不精确时间,循环起来就是了(只要保证耽搁的显示时间少于肉眼识别时间,就是看起来不会一闪一闪的就行);
2、显示内容:多数情况下,待显示的字符/数字先按数码定义编码,存放在表格中。按自己的编程需要,在显示的时候从表格中提取。当然,如果只是简单实验,显示的内容是固定的,也可以程序里用立即数。
多试一试吧。
⑷ 帮个忙 编个数码管显示1234的c语言程序啊
帮个忙
编个数码管显示1234的c语言程序啊
单的写了点,你看看有没有启发
我估计没什么大的用处,因为很多细节都没有
有机会的我们沟通一下,好好讨论讨论,可能会好点
[email protected]
俺的邮箱
void
main(void)
{
for(;;)
{
if(有键盘输入)
{
switch(键盘输入)
{
case:
AV
接收输入的数值
if(16~35)
将其存入最低温度变量中并显示
else
Beep();
//发出蜂鸣声
break;
case:TV
接收输入的数值
if(最低温度~35)
将其存入最高温度变量中并显示
else
Beep();
//发出蜂鸣声
break;
case
POWER:
系统进入STANDBY状态
standby_flag
=
true;
break
default:
Beep();
//发出蜂鸣声
break;
}
}
result
=
readAD();
//读取温度芯片的值
if(result
>
最高温度)
显示“H”
if(result
最低温度)
显示"L"
if((standby_flag
==
true)&&(超过三分钟))
播放音乐
}
}
一年好运随春到
四季彩云滚滚来
万事如意
⑸ 用51单片机设计3位led数码显示管作秒表00.0-99.0求设计电路与c语言程序
#include "STC12C54.H"
#define uchar unsigned char
#define uint unsigned int
#define dataport P1//P1直接驱动数码管的8个阳极
sbit wei1=P3^3;//再有三个管脚接3个三极管驱动数码管的阴极
sbit wei2=P3^4;
sbit wei3=P3^5;
uint a=0;//中断次数计数,一次50ms,20次为1 秒
//共阴数码管七段码
uchar TABLE[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
//延时子程序
void delay1ms(uint t)
{
uint i,j,k;
for(i=t;i>0;i--)
for(j=15;j>0;j--)
for(k=27;k>0;k--);
}
//显示子程序
void display(uint n)
{
uchar a1,a2,a3;
a1=n/100%10;
a2=n/10%10;
a3=n%10;
wei1=1;
dataport=TABLE[a1];
delay1ms(1);
wei1=0;
dataport=0x80|TABLE[a2];//这里多个小数点
delay1ms(1);
wei3=1;
dataport=TABLE[a3];
delay1ms(1);
wei3=0;
}
void init(void)
{
TMOD=0X01;
TH0=(655536-50000)/256;//定时50ms
TL0=(655536-50000)%256;
EA=1;
ET0=1;
TR0=1;
P1M0=0;
P1M1=0xff;//P1口设为推挽输出,驱动能力强
P3M0=0;
P3M1=0x38;//P3.3P3.4 P3.5口设为推挽输出
}
void main(void)//主程序
{
init();//初始状态设定
while(1)
{
display(a/2);//显示计数值,以十分之一秒为单位
}
}
void timer0(void)interrupt 1//中断子程序
{
TH0=(655536-50000)/256;
TL0=(655536-50000)%256;
a++;
if(a==1980)a=0;//1980次是99秒
}
⑹ 关于单片机数码管的C语言代码,高分求详解,先谢过
一、LedNumVal%10000/1000
%是模,取余数的意思,%10000,得到的数最大是四位数。
/是整除的意思不带小数,如8/3=2
一个小于10000的数,整除1000结果一定是0到9之间的一个数
二、Disp_Tab
以及LedOut,
dispbit都是数组,根据相应的数可得到对应的字符数据,达到位选的功能。
⑺ 编写程序把三个数的百位,十位,个位用三个数码管显示出来
;++++++++++++++[[
数码管显示子程序段
LEDBBK
]]+++++++++++++++++++++++
;入口参数存于ACC中
+
;影响资源,ACC,PSW,DPTR,B
+
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
LED:
PUSH
PSW
;保护现场
PUSH
DPH
PUSH
DPL
PUSH
ACC
PUSH
B
MOV
B,#100
DIV
AB
MOV
A,B
MOV
B,#10
DIV
AB
MOV
DPTR,#LEDTAB
MOVC
A,@A+DPTR
;查笔型表
MOV
1DH,A
MOV
A,B
MOVC
A,@A+DPTR
MOV
1CH,A
LCALL
STO
;数据送显示器
POP
B
POP
ACC
POP
DPL
POP
DPH
POP
PSW
RET
;##################
[[
参数显示主程序
]]
######################
LED1:
PUSH
PSW
;保护现场
PUSH
DPH
PUSH
DPL
PUSH
ACC
PUSH
B
MOV
B,#100
DIV
AB
MOV
A,B
MOV
B,#10
DIV
AB
MOV
DPTR,#LEDTAB
MOVC
A,@A+DPTR
;查笔型表
MOV
1BH,A
MOV
A,B
MOVC
A,@A+DPTR
MOV
1AH,A
LCALL
STO
;数据送显示器
POP
B
POP
ACC
POP
DPL
POP
DPH
POP
PSW
RET
;#################
第一个数码管显示
################################
LED2:
PUSH
PSW
;保护现场
PUSH
DPH
PUSH
DPL
PUSH
ACC
MOV
DPTR,#LEDTAB
MOVC
A,@A+DPTR
;查笔型表
MOV
1DH,A
LCALL
STO
POP
ACC
POP
DPL
POP
DPH
POP
PSW
RET
;#################
第二个数码管显示
################################
LED3:
PUSH
PSW
;保护现场
PUSH
DPH
PUSH
DPL
PUSH
ACC
MOV
DPTR,#LEDTAB
MOVC
A,@A+DPTR
;查笔型表
MOV
1CH,A
LCALL
STO
POP
ACC
POP
DPL
POP
DPH
POP
PSW
RET
;################
串行通信发送子程序
############################
STO:
CLR
TR0
;关闭定时器
PUSH
ACC
MOV
R1,#04H
;设置为4个数码管
MOV
R0,#1DH
;第一个数码管地址为14H
STO1:
MOV
A,@R0
MOV
B,#08
STO2:
RRC
A
MOV
MRXD,C
CLR
MTXD
NOP
SETB
MTXD
DJNZ
B,STO2
SETB
MRXD
DEC
R0
;取下一位数据
DJNZ
R1,STO1
SETB
TR0
;开定时器
POP
ACC
RET
⑻ 求一个单片机的外部中断。 要求c语言完成中断实验及中断优先权实验,分别用三个数码管表示仿真和程序
我用单片机做小车,用C语言编程,想用中断但是不知道怎么用,比如小车跑的好好的,来了个信号他就可以中止现在的程序执行另一个程序,但是又不能用查询的方式一直查是否有这个信号来,所以要用到中断,谁知道指点一下我啊,最好是有程序实例,谢谢~~
最佳答案 #include <reg51.h>
void init(void)//声明中断初始化
{ EA=1;//中断总开关
EX0=1;//开中断0开关。中断1为,EX1=1;
IT1=1;//采用边沿触发,下降沿有效。IT1=0为低电平触发中断。
}
main()
{ init();调用中断初始化函数
==
===主程序;
}
void in_0(void)interrupt 0//中断服务函数
{ ==
==要服务的程序
}