完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
5个回答
|
|
仿真图?仿真后的波形图吗?这个要和程序对的上才行吧,或者你要的是原题图?
|
|
|
|
我需要的是软件上原题图
|
|
|
|
有类似的资料 楼主修改一下延时参数即可
|
|
|
|
是这样的吗
|
|
|
|
#include
#include "stdio.h" #include "string.h" //--定义使用的IO口--// #define GPIO_DIG P0 //段选 #define GPIO_PLACE P2 //位选 //--定义全局变量--// unsigned char code DIG_PLACE[8] = { 0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//位选控制 查表的方法控制 unsigned char code DIG_CODE[17] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F的显示码 unsigned char DisplayData[8]; //用来存放要显示的8位数的值 //--声明全局函数--// void DigDisplay(); //动态显示函数 int time=30; int tmp=0; /******************************************************************************* * 函 数 名 : main * 函数功能 : 主函数 * 输 入 : 无 * 输 出 : 无 *******************************************************************************/ void main(void) { EA = 1; //所有中断 EX0=1; EX1=1; ET0 = 1; //开启定时器T0中断 IT0=1; IT1=1; TMOD = 0X01; //选用模式1 16位定时器定时模式 TH0 = 0x0FC; TL0 = 0x18; P1=0xff; while(1) { if(tmp) { while(P1==0xff); TR0=0; switch(P1) { case 0xfe:time=1;break; case 0xfd:time=2;break; case 0xfb:time=3;break; case 0xf7:time=4;break; case 0xef:time=5;break; case 0xdf:time=6;break; case 0xbf:time=7;break; case 0x7f:time=8;break; } tmp=0; } DisplayData[0]=time%10; DisplayData[1]=(time/10)%10; DigDisplay(); } } /******************************************************************************* * 函 数 名 : DigDisplay * 函数功能 : 使用数码管显示 * 输 入 : 无 * 输 出 : 无 *******************************************************************************/ void DigDisplay( ) { unsigned char i; unsigned int j; for(i=0; i<2; i++) { GPIO_PLACE = DIG_PLACE[1-i]; //发送位选 GPIO_DIG = DIG_CODE[DisplayData[i]]; //发送段码 j = 2; //扫描间隔时间设定 while(j--); GPIO_DIG = 0x00;//消隐 } } void start() interrupt 0 //启动/复位按钮 { unsigned char i; i++; if(i==1) { TR0 = 1; //启动T0定时器 tmp=1; } else { TR0=0; tmp=0; time=30; i=0; } } void timer0() interrupt 1 { unsigned int i; TH0 = 0x0FC; TL0 = 0x18; i++; if(i==1000) { i=0; time--; if(time==0) TR0=0; } DisplayData[0]=time%10; DisplayData[1]=(time/10)%10; DigDisplay(); } void settime() interrupt 2 //设置时间 { time+=10; if(time>60) time=30; } |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
97 浏览 0 评论
734 浏览 1 评论
715 浏览 1 评论
电路小知识 | 交流电路复数的基础知识以及相位差和电抗的计算
571 浏览 0 评论
1766 浏览 3 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 01:54 , Processed in 0.700835 second(s), Total 82, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号