两个数码管显示的数值可以作为单片机定时器 数码管的定时时间吗

【图文】单片机数码管静态显示及定时器和中断应用_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
单片机数码管静态显示及定时器和中断应用
&&单片机数码管静态显示及定时器和中断应用
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢【图文】项目二 数码管显示及定时器_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
项目二 数码管显示及定时器
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢用单片机c语言,c51的,使用数码管设计一个60秒倒计时系统,使用两个数码管,要求用定时器中断定时1秒。 仿_百度知道
用单片机c语言,c51的,使用数码管设计一个60秒倒计时系统,使用两个数码管,要求用定时器中断定时1秒。 仿
我有更好的答案
}void main(){init()&#47,P2^7,P0口接段码端和位码端,而且位码端接的是锁存器输入,输出端的高两位。假设晶振频率为12MHZ,定义的段码和位选的锁存器的选通端分别为P2^6;
///位右移动一位}}void init(){TMOD = 0x01;
/注意:由于你没有给出数码管的接法等!= 1){
table1 [0] = table[gewei];}void display()
/if(t0 == 20)
///下降沿锁存住位码delay();w = _cror_(w;TL0 = (65536 - 5;取出个位数flat = 1;/设置定时器0工作方式1EA = 1;
table1[1] = table[shiwei];
display();}else{
table1[0] = table[0];
table1[1] = table[1];
diplay();}}}void timer0() interrupt 1
&#47,0x07,0x7f;取出十位数gewei = miao % 10; /&#47,0x4f,0x66;reg52,0x06,0x5b;给两个寄存器装初值50ms。#include&sbit wela = P2^7;uchar code table[] = {
/ /}}// /x--)for(y = 100;/显示函数{uchar w = 0xc0;for(i = 0;i & 2; 10;/用AT89c52单片机作控制,y &void delay()
//取出个位数if(miao == 0){TR0 = 0;shiwei = miao /256;#define uchar unsigned charuchar
miao,t0.假如数码管是共阴极的话;i++)
//给段码送数据dula = 0;
&#47.h&#include&intrins.h&/开定时器0TH0 = (65536 - 50000)// 定时器0{TH0 = (65536 - 5;
//P0 =wela = 0;miao--;shiwei = miao &#47,所以只扫描两次{dula = 1;
/ 10;/0-9的编码0x3f; 0;y--);当定时器到一秒的时候{t0 = 0;while(1){if(/选通位锁存器;/重新给两个寄存器装初值;TL0 = (65536 - 5;t0++,0x6d,0x7d,1);
&#47,0x6f};
/&#47,flat,/锁存住段码delay();延时用于扫描{uchar x,y;for(x = 1;x & 0;取出十位数gewei = miao % 10; ///开定时器0中断TR0 = 1;由于数码管只有两位;/先选通段锁存器;P0 = table1[i],;sbit dula = P2^6;稍微延时一下wela = 1;
&#47,所以我自己假设的设计一个简单的电路来实现此功能;/开总中断ET0 = 1;
&#47。不一定能在你的实验板上显示出来;
仿真元件数码管为7SEG-COM-CATHODE。要有个接线图哦。谢了
是共阳极吗?我英文不好。。也很少使用proteus,如果是共阳极就把编码表该一下就行了
是共阳极的。但是我不会改啊。
比如零,共阴极时是0x3f,记住相应位相加是15,所以共阳极是0xc0.你看看是不是。
两个数码管显示时间吗?仿真使用?
是的..仿真元件数码管为7SEG-COM-CATHODE。要有个接线图哦。谢了
为您推荐:
其他类似问题
您可能关注的内容
gmat的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。用单片机控制一个8段数码管,其循环显示数字0到9,每位数字显示时间为一秒,定时功能用单片机中断显示-土地公问答
用单片机控制一个8段数码管,其循环显示数字0到9,每位数字显示时间为一秒,定时功能用单片机中断显示
用单片机控制一个8段数码管,其循环显示数字0到9,每位数字显示时间为一秒,定时功能用单片机中断显示
用单片机控制一个8段数码管,其循环显示数字0到9,每位数字显示时间为一秒,定时功能用单片机中断显示,按键K用于启停控制,C语音程序怎么写,和程序流程图,和系统功能图
有一个一模一样的提问,好吧,俺再发布一次给你一份我自己写的,利用四位数码管显示模拟时钟的程序吧,供你研究另外,再给你一个一位数码管的,是你要求的那种这两个都是利用单片机的定时器中断来产生秒信号的下面这个是 四位数码管的,最下边的是一位数码管的,端口不一样的话,自己改下/***************************************************************************/#include&reg51.h&sbit p20=P3^7; sbit p21=P3^6; sbit led=P2^7;//按键及LED端口定义sbit Axs=P1^3; sbit Bxs=P1^2; sbit Cxs=P1^1; sbit Dxs=P1^0;//数码管位选端口char table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//数码管显示编码unsigned int h,m,s,t,n;/***************************************************************************/void YS(char hs)//延时函数{for(;hs&0;hs--){for(hk=200;hk&0;hk--);}}/***************************************************************************/void XS(int xh,int xm) //显示子函数{char d1,d2,d3,d4;d1=(xh/1)%10; d2=(xh/10)%10;//分离小时d3=(xm/1)%10; d4=(xm/10)%10;//分离分钟P0=table[d1];Cxs=0;YS(10);Cxs=1;//小时个位P0=table[d2];Dxs=0;YS(10);Dxs=1;//小时十位P0=table[d3];Axs=0;YS(10);Axs=1;//分钟个位P0=table[d4];Bxs=0;YS(10);Bxs=1;//分钟十位P0=0x7f; P1=0 YS(10); P1=0//小数点}/***************************************************************************/void main(void){TH0=()/256; TL0=()%256;TMOD=0x01; EA=1; ET0=1; TR0=1;//定时器初始化while(1)//主循环{if(p20==0){YS(10);if(p20==0){h++;if(h&23){h=0;}}while(!p20){XS(h,m);}}if(p21==0){YS(10);if(p21==0){m++;if(m&59){m=0;}}while(!p21){XS(h,m);}}XS(h,m);//调用数码管显示函数}}/***************************************************************************/void int1() interrupt 1 //定时器中断{TH0=()/256; TL0=()%256; n++;t++;if(t&500){t=0;led=~}//LED闪烁if(n&1000){n=0;s++;}//如果达到一秒,秒加一if(s&59){s=0;m++;}//如果达到一分,分加一if(m&59){m=0;h++;}//如果达到一小时,小时加一if(h&23){h=0;}//如果达到24小时,小时清零}/***************************************************************************//***************************************************************************/#include&reg51.h&sbit Axs=P1^3;//数码管位选端口char table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//数码管显示编码unsigned int h,m,s,t,n;/***************************************************************************/void YS(char hs)//延时函数{for(;hs&0;hs--){for(hk=200;hk&0;hk--);}}/***************************************************************************/void main(void){TH0=()/256; TL0=()%256;TMOD=0x01; EA=1; ET0=1; TR0=1;//定时器初始化while(1)//主循环{P0=table[m];Axs=0;YS(10);Axs=1;//小时个位}}/***************************************************************************/void int1() interrupt 1 //定时器中断{TH0=()/256; TL0=()%256; n++;if(n&1000){n=0;m++;}//如果达到一秒,秒加一if(m&9){m=0;}//如果达到一小时,小时加一}/***************************************************************************/追问你可以再帮我写一下吗还有硬件电路原理图,程序流程图追答记得要采纳哦,上一个也是你提问的吧,还没采纳呢void main(void){TH0=()/256; TL0=()%256;TMOD=0x01; EA=1; ET0=1;//定时器初始化while(1)//主循环{if(t==1)//如果已经打开{P0=table[m];Axs=0;YS(10);Axs=1;}//数码管显示数据else{Axs=1;}//否则关闭数码管if(K==0&&t==0)//如果按键被按下且处于关闭状态{YS(10);//延时去抖动if(K==0&&t==0)//如果按键仍被按下{TR0=1;//打开定时器n=0; m=0;//清空数据t=1;//设置标识符 为开while(!K);//等待按键松开}}if(K==0&&t==1)//如果按键被按下且处于打开状态{YS(10);//延时去抖动if(K==0&&t==1)//如果按键仍被按下{TR0=0;//关闭定时器n=0; m=0;//清空数据t=0;//设置标识符为关while(!K);//等待按键松开}}}}追问上次的和这这次的怎么不一样还有硬件电路图,程序流程图追答一样的,字数限制,头文件和定义部分没贴出来/***************************************************************************/#include&reg51.h&sbit Axs=P1^3; sbit K=P3^7;//数码管位选端口char table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//数码管显示编码unsigned int m,n,t=0;/***************************************************************************/void YS(char hs)//延时函数{for(;hs&0;hs--){for(hk=100;hk&0;hk--);}}/***************************************************************************/追问哦哦,那硬件电路图你会吗追答别客气追问你不会吗追答恩,硬件电路,我从不用绘图软件的,不过可以给你讲讲怎么连线你之前的那个提问,能采纳一下吗,谢谢追问恩可以,那程序流程图那追答程序都有了,流程图就可以参照程序的运行顺序画了啊追问我不会,你可以帮我画下吗追答我这没有绘图软件追问程序流程图不用绘图软件吧追答不用绘图软件你怎么画图?????用手指在显示器上画画,你能保存在电脑中吗?追问程序流程图不是这样的吗追答对啊,就是这样的,但这是使用绘图软件绘制的,绘图软件的种类还很多呢追问哦哦,那这样的你会吗,给我画下吧用笔画下就好了怎么不说话了追答用笔画倒是可以,但没办法输入到电脑上,也就没办法传给你呀我的手机没有照相功能追问能不能用文字叙述追答先是初始化,然后是状态啊判断,这是后在侧面画个箭头,就是分支状态0,打开数码管显示,并打开定时器开始计数,另一个分支是检测计数值是否大于9如果大于9 ,则清零,重新开始状态1,关闭数码管显示,并关闭定时器,以及清零数据在判断状态的下面再写上 按键判断,按键判断的同时,也判断状态然后根据不同的状态设置结果追问谢谢你,那你会系统功能结构图吗追答不会追问哦谢谢你追答别客气更多追问追问:你可以再帮我写一下吗追问:还有硬件电路原理图,程序流程图追问:上次的和这这次的怎么不一样追问:还有硬件电路图,程序流程图追答:一样的,字数限制,头文件和定义部分没贴出来/***************************************************************************/#include&reg51.h&sbit Axs=P1^3; sbit K=P3^7;//数码管位选端口char table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//数码管显示编码unsigned int m,n,t=0;/***************************************************************************/void YS(char hs)//延时函数{for(;hs&0;hs--){for(hk=100;hk&0;hk--);}}/***************************************************************************/追问:哦哦,那硬件电路图你会吗追答:别客气追问:你不会吗追答:恩,硬件电路,我从不用绘图软件的,不过可以给你讲讲怎么连线你之前的那个提问,能采纳一下吗,谢谢追问:恩可以,那程序流程图那追答:程序都有了,流程图就可以参照程序的运行顺序画了啊追问:我不会,你可以帮我画下吗追答:我这没有绘图软件追问:程序流程图不用绘图软件吧追答:不用绘图软件你怎么画图?????用手指在显示器上画画,你能保存在电脑中吗?追问:程序流程图不是这样的吗追答:对啊,就是这样的,但这是使用绘图软件绘制的,绘图软件的种类还很多呢追问:哦哦,那这样的你会吗,给我画下吧追问:用笔画下就好了追问:怎么不说话了追问:能不能用文字叙述追答:先是初始化,然后是状态啊判断,这是后在侧面画个箭头,就是分支状态0,打开数码管显示,并打开定时器开始计数,另一个分支是检测计数值是否大于9如果大于9 ,则清零,重新开始状态1,关闭数码管显示,并关闭定时器,以及清零数据在判断状态的下面再写上 按键判断,按键判断的同时,也判断状态然后根据不同的状态设置结果追问:谢谢你,追问:那你会系统功能结构图吗追答:不会追问:哦谢谢你追答:别客气
其它类似问题
其它人正在问的问题用51单片机实现每隔一秒数码管显示刷新一次,用定时器0实现定时功能。但数码管始终没有显示。代码如下:_百度知道
用51单片机实现每隔一秒数码管显示刷新一次,用定时器0实现定时功能。但数码管始终没有显示。代码如下:
#include &reg51.h&
#include &intrins.h&
unsigned char code LED7Code[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
0x80,0x90,0X82,0XF8,0X80,0X90,0X88,0X83,
0XA7,0XA1,0X86,0X8E};
//共阳极7段数码管字模
我有更好的答案
0xa1,0x86. //原来的写法有问题 if(num&15) num=0; EA=1,不能是num++ }&&& num=0;
//开中断总开关& temp++;}<img class="ikqb_img" src="http://b.hiphotos.com/zhidao/wh%3D600%2C800/sign=e6d7bafe232dd42a5f5c09ad330b778d/dbb44aed2e738bd482e15da6a78b87d.jpg" esrc="http://b.hiphotos,修改后的程序发在下面,并有仿真图。#include &reg51.h&gt.unsigned char num,temp://b;#include && temp=0;& P0=LED7Code[num];
//显示字符; ET0=1;//加一行,开定时器T0中断&nbsp,0xf8,0x80; //参数初始化& while(1)& {&//共阳极7段数码管A-F字模;void system_init(){& &
//中断函数{&nbsp,0x83,0xc6,0x90,//0-9字模0x88.hiphotos.baidu.com/zhidao/pic/item/dbb44aed2e738bd482e15da6a78b87d;
//定时50ms&nbsp,0xf9,0xa4; TMOD=0x01; //定时器0方式1& TR0=1;
//开定时器0& P0=LED7Code[num]; //不能是num++}void main(){& system_init(); & TH0=()/256,0xb0,0x99; }}void Time() interrupt 1 using 1 & & TL0=()%256,0x92,0x82你这是实物电路板,还是仿真哪?你用了定时器T0,而且写中断子程序. &if(temp==20)
//定时1s,刷新数码管数字显示 { temp=0,原来的是错误的; TH0=()/256; //定时50ms& TL0=()%256,可是,T0却没有开中断哪。加一行ET0=1
请问“P0=LED7Code[num]; &#47;&#47;显示字符,不能是num++“为什么不能是num++?
你自己试验一下就知道了。你自己写的程序也运行了,结果是什么你自己也知道,再运行一下这个程序,结果自己分析呀。为什么要用num++呢,不用能怎么的?
P0=LED7Code[num++]这样写没什么问题啊
是没有问题,只是按你原来的程序那么写,在显示F时的时间是二秒。
采纳率:91%
后来出来创业,从事教育电子的开发,后来从事电子电子设备的研发生产,现在旗下有好几家大公司。老家安徽安庆。建议你看看《吴鉴鹰单片机实战精讲》。可以学习不少单片机实际开发经验的,加油,曾经任职华为,西门子等大型国企,因为著有网络技术贴连载—吴鉴鹰单片机项目实战精讲而被电子领域的人人熟知,视频录制讲解比较详细,教程注重调试方法和设计方法的讲解,但是有几个综合性的例程比较难,如果不把前面的学会,后面的综合项目很难学。吴鉴鹰的的单片机开发板的特点是:例程比较多吴鉴鹰是电子科技大学的单片机牛人
电路,有错误。
为您推荐:
其他类似问题
51单片机的相关知识
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 数码管定时器扫描 的文章

 

随机推荐