找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 8861|回复: 0
打印 上一主题 下一主题
收起左侧

单片机秒表显示设计流程图与心得体会

[复制链接]
跳转到指定楼层
楼主
ID:314681 发表于 2018-4-23 18:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
新手關於單片機的一個小程序


流程图
Protues仿真图


心得体会
在这次实验过程中,有个于我来说比较难的地方,对于按键如何让其对数码管的控制可以做到随时控制,一开始设计的程序对让数码管显示,然后把按键服务放在定时中断函数里。这样数码管就能做到随时的改变时间了,我发现小组合作十分有用,和别人交流可以很大程度上拓展你的思维,对完善程序有着很大的帮助!

单片机源程序如下:
  1. #include<reg51.h>

  2. #define uchar unsigned char

  3. sbit key1=P3^7;

  4. sbit key2=P3^2;

  5. bit   m=0;

  6. uchar t=0,i=0,k=0;

  7. uchar  n=0;

  8. void main()

  9. {

  10.   uchar code led_mod[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//建立数模

  11.   TMOD=0x01;//定时器模式选择

  12.               P0=~0xff;

  13.               P2=~0xff;

  14.   TH0=0x3c;

  15.   TL0=0xb0; //定时器赋初值

  16.               TH1=0x3c;

  17.               TL1=0xb0;

  18.   EA=1;

  19.   ET0=1;

  20.   TR0=1;

  21.               ET1=1;//定时中断初始化

  22.               TR1=1;

  23.               IE0=1;

  24.               EX0=1;//中断初始化

  25.               while(1)

  26.               {if(k>0)

  27.               {            

  28.               if(m)

  29.               {

  30.               m=0;

  31.               P0=led_mod[i/10];

  32.               P2=led_mod[i%10];//数码管显示

  33.               i++;

  34.               if(i==100) i=0;

  35.               }}}}

  36. void T0_srv (void) interrupt 1 using 1 //定时中断函数        

  37. {  t++;

  38. if(t==20){t=0;m=1;}

  39. TH0=0x3c;TL0=0xb0;

  40. }

  41. void T1_srv (void) interrupt 3{

  42. if(~key1){

  43. k++;

  44. TR0=~TR0;

  45. }

  46. }

  47. void INT0_srv (void) interrupt 0    //中断函数(INTO)

  48. {

  49. if(~key2){

  50. if(~key2)

  51. {

  52. i=0;

  53. while(~key2);

  54. }

  55. }

  56. }
复制代码

完整的Word格式文档51黑下载地址:
实验三 余江虎 B16040321.docx (110.87 KB, 下载次数: 21)

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表