AT89C51单片机设计独立按键,静态数码管电路,并编程实现按下Ki键,数码管显示对应的数字i(i=1~8)

作者&投稿:仲孙慧 (若有异议请与网页底部的电邮联系)
急急急!!用AT89C51单片机设计4位数码管动态扫描的电路,并编程实现6位数码管同时显示"135~

要实物吗
我做单片机设计的

没时间写,给你一个参考吧。
自己加一个按键检测,显示的数值改成自己设定
#include
#define uint unsigned int
#define uchar unsigned char
uchar temp,aa,bai,shi,ge;
sbit dula=P2^6;
sbit wela=P2^7;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void display(uchar bai,uchar shi,uchar ge);
void delay(uint z);
void init();
void main()
{
init();//初始化子程序
while(1)
{
if(aa==20)
{
aa=0;
temp++;
if(temp==100)
{
temp=0;
}
bai=temp/100;
shi=temp%100/10;
ge=temp%10;
}
display(bai,shi,ge);
}
}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void display(uchar bai,uchar shi,uchar ge)
{
dula=1;
P0=table[bai];
dula=0;
P0=0xff;
wela=1;
P0=0xfe;
wela=0;
delay(1);
dula=1;
P0=table[shi];
dula=0;
P0=0xff;
wela=1;
P0=0xfd;
wela=0;
delay(1);
dula=1;
P0=table[ge];
dula=0;
P0=0xff;
wela=1;
P0=0xfb;
wela=0;
delay(1);
}
void init()
{
wela=0;
dula=0;
temp=0;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
aa++;
}

一位共阳数码管接在P0口,为静态显示。P3口接有8个独立式按键,按键为K1~K8,按键8个按键中的任意一个,数码管则显示出按键编号。仿真图如下,这是按下K6时显示6。




自发自收 程序 单片机89c51 汇编语言
参考如下电路和程序:

用89c51单片机输出pwm波形来改变电机转速的程序
采用pwm啊,就是在固定周期里高电平与低电平占的比例,例如周期为1s,高电平占0.7s低电平占0.3,如果高电平占的时间越长速度就越快啊 include “reg51.h”define T 10 \/\/T为周期 define t 7 \/\/0<=t<=10 t越大越快 sbit p0_0 = P0^0;Delay(int t){ int i;while(t--...

(51单片机89c51)实现
KEYVALEQU 30H KEYTMEQU 31H KEYSCANEQU 32H ADD1EQU 33H ADD2EQU 34H SUMEQU 35H FLAGBIT 00H ORG 0000H LJMP MAIN ORG 000BH LJMP T0ISR ORG 0030H TABLE: ; 共阴极数码管显示代码表 DB 3FH,06H,5BH,4FH,66H ;01234 DB 6DH,7DH,07H,7FH,6fh ;56789 DB 77H,7CH...

求89C51单片机C语言用四个74hc595控制四个LED实现交通灯程序_百度知 ...
timer0(void) interrupt 1 { TH0=0x3c;TL0=0xb0;t1oc--;if(t1oc==0){ t1oc=20; \/\/20*50000us=1s t1--;if(t1==0){ t1=d1;led_ex(0xFF,0);} tp[0]=t1%10;tp[1]=t1\/10;t2--;if(t2==0){ t2=d2;led_ex(0x00,1);} tp[2]=t2%10;tp[3]=t2\/10;t3--;...

基于89c51单片机数字温度计设计图和c语言程序,用DS18B20温度传感器和...
sbit DQ=P1^6;\/\/采集温度数据线 unsigned char tflag;unsigned int tive;float temper;\/ 函数功能:短暂延时 入口参数:num 出口参数:\/ void delay(unsigned int num){ while(num--);} \/ 函数功能:DS18B20初始化 入口参数:出口参数:\/ void init_DS18B20(void){ \/\/主机发送复位脉冲 DQ=1;D...

用89c51单片机 数码管显示HELLO的程序 六段数码管上
include<reg52.h> define uchar unsigned char define uint unsigned int sbit dula=P2^6;sbit wela=P2^7;uchar code table[]={0x76,0x79,0x38,0x38,0x3f};uchar code table_2[]={0xfe,0xfd,0xfb,0xf7,0xef};void delay(uint t){ uint x,y;for(x=0;x<t;x++)for(y=0;y<110...

stc89c52单片机和51单片机的区别
1、种类不同:51系列单片机是指51内核,stc89c5X基本都是51内核的种类。2、大小不同:最后一个数字表示E2prom的大小,E2prom=X*4K,c51就是4K,c52就是8k。3、配件不同:52还多了一个定时器,所以可以说52是51(这个51是指stc89c51,不是51内核)的增强型。如下图,可以很清晰的看出两者之间...

STC89C51和AT89S51单片机有什么区别吗
差别是:1、工作电压:STC 3.3V~5.5V AT 4.0~5.5V 2、工作频率:STC 0~40MHz AT 0~33MHz 3、用户程序空间:STC 4K\/8K\/13K\/16K\/32K\/64K AT 4K 4、片上集成RAM:STC 512\/1280Byte AT 128Byte 5、程序下载:STC ISP\/IAP AT ISP 6、速度:STC 6T模式 ...

6位数码管显示的89c51单片机电子秒表设计
include<reg52.h> define uchar unsigned char \/\/p32接p34 , p33接p35 外部中断 define ulong unsigned long sbit lock1=P2^6;sbit lock2=P2^7;uchar x=0,a=1,key,m11,m12,m21,m22,m31,m32;\/\/uchar t11=0,t12=0,t21=0,t22=0,t31=0,t32=0;void delay(uchar t){ uchar i...

用89C51单片机设计4*4矩阵式键盘计算器程序 要汇编的 求解!
KEYVAL EQU 30H KEYTM EQU 31H KEYSCAN EQU 32H DAT EQU 33H SCANLED EQU 37H S_DAT EQU 38H D_DAT EQU 39H R_DATL EQU 3AH R_DATH EQU 3BH CALFLAG EQU 3CH FLAG BIT 00H ORG 0000H LJMP MAIN ORG 000BH LJMP T0ISR ORG 0030H MAIN:MOV SP,#5FH MOV TMOD,#01H MOV ...

大观区15685103372: 跪求单片机8个按键的独立式键盘实验C程序源码!!!AT89C51的芯片、共阴极的数码管 -
钟离金奥维: #include#define nop() _nop_()#define keyport P1#define ledport P2unsigned char code seg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //共阴数码管段码 void delayms(unsigned int ms) //12M { ...

大观区15685103372: 画出一个独立式按键和AT89c51单片机p0口连接电路写出按键扫描程序 -
钟离金奥维: sbit key=P0^0; void keyscan() { if(key==0) { delayms(20); if(key==0) { while(!key); //添加所要实现的功能 } } }

大观区15685103372: 电子钟的设计(带按键调整) 任务要求:利用AT89C51单片机设计简易电子钟(六位),通过6位共阴 -
钟离金奥维: #include#define uchar unsigned char...要是PROTEUS的话差不多是这样,要是不想麻烦搞个74595的话P1就直接连(有没有都一样有的话比较整洁,没有的话程序上省点脑筋)主按键就用INT0,我没用P0口是因为懒得加上拉电阻,高低电平暂时先设成低的,思路就是P2口片选,当INT0触发时,你可以用while循环兜住不让出去,第一次是片选前两位“时”,第二次分第三次秒,如果第四次按下P32,也就是进入中断后第三次按下按键,结束中断,调到main.思路应该是这样当然肯定漏洞很多,先吃个饭再看看.

大观区15685103372: 用AT89C51单片机做一个仿真,P0输入P1输出 要求有三个按键 分别控制三个灯的亮和灭. -
钟离金奥维: #include sbit Key1=P0^0; sbit Key2=P0^1; sbit Key3=P0^2;//按键一脚接地,另一脚接IO且接10K电阻到电源.sbit Led1=P1^0; sbit Led2=P1^1; sbit Led3=P1^2;//LED阳极接电源,阴极接300欧姆到IO.//输入输出端口变化,需更改上面定义的端口号.main() { while(1) { Led1=Key1; Led2=Key2; Led3=Key3; } } 这样就好了.

大观区15685103372: 单片机AT89C51用C语言编,两个按钮分别控制一个数码管加减数,最好用中 -
钟离金奥维: #include<reg51.h>#define uchar unsigned char uchar distab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; //0到f uchar dat; void ext0() interrupt 0 { dat++; dat%=10; P1=distab[dat]; } ext1() interrupt 2 ...

大观区15685103372: 用AT89C51设计秒表:1.两个LED显示秒的个位和十位 2.设计一个开始键 3.设计一个暂停键 4.设计一个复位键 -
钟离金奥维: STRT EQU P2.5 STP EQU P2.6 CLRR EQU P2.7 ORG 00H AJMP MAIN ORG 0BH AJMP T0INTORG 30H MAIN: MOV SP,#60H MOV DPTR,#TAB MOV TMOD,#01H ;T00定时方式1 SETB EA SETB ET0 MOV TH0,#3CH ;50ms定时常数 MOV ...

大观区15685103372: 关于AT89C51单片机LED控制程序,汇编语言的设计6个按钮,
钟离金奥维: 原理图上没有按钮,这里假设按钮为P0.0~P0.5ORG 0000HLJMP MAINORG 0030HMAIN: JNB P0. 0,M01 SETB P1.0 SJMPM MAINM01: JNB P0.1,M02 SETB P1...

大观区15685103372: 能在AT89C51单片机芯片上实现8位数码管动态显示时间,独立按键控制时间,整点时蜂鸣器打开一秒的C语言程序? -
钟离金奥维: 这个不难,单片机开计时器就可以了.还有就是要注意数码管的动态扫描.我有类似的程序.

大观区15685103372: AT89C51单片机独立按键问题 -
钟离金奥维: pad打字不方便P0应为P2,有个小括号打成了大括号uchar table[10]={…七段码};While(1){if(key1==0){delayms(10);if(key1==0){while(key1==0);num++;if(num==10) num=0;}}if(key2==0){delayms(10);if(key2==0){while(key2==0};num--;if(num==0)num=9;}}P0=table[num];}

大观区15685103372: 用AT89C51设计一个2位LED数码显示“秒表”,显示时间为00~99秒,每秒自动加一.另设计一个“开始”按键和一 -
钟离金奥维: 因为分数低,只好给你说我的思路 因为是秒表,当然用定时器,我常用的是定时器0,工作方式1 TMOD=0X01;给一个溢满值3CB020次为一秒 if(counter> 19) {second++;conunter= 0;} 而后,动态显示,懂吧,用调用延迟 然后快加,每10ms快速加1,关了定时器0,换定时器1?至于暂停,也是一个中断吧,保持现状,就是变量值不改变,而后当然调用显示函数.再按下按键跳出循环.不知道行不行,参考而已

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网