5902|10

63

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

基于80c51单片机倒计时定时器的毕业论文 [复制链接]

有的请转给我   有这方面资料的也可以转给我  谢谢了!!

最新回复

刚刚做的一个计时器的练习,供你参考。 /* 题目:采用定时器中断进行每隔一秒计数 时间:2009-11-28 作者:wbx 简述:                 (1)设置定时器工作模式为0x01为16位定时器模式 TMOD = 0x01;               (2)开总中断EA使其为1                 (3)设置TH0、TL0的内容,填充数值到其中                 (3)开总中断EA = 1;                 (4)设置ET0 = 1;打开定时器中断                 (5)TR0 = 1; 启动定时器0                 (6)进行计数,且将第一个LED进行显示 */ #include code unsigned char tab[]=                         {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};   unsigned int n = 0; unsigned int count = 0; unsigned char showLed = 0xff; void delay(unsigned int iTime) {   while(--iTime); } //定时器中断函数 void TimerFunction() interrupt 1 {         TH0 = (65535 - 50000) / 256;         TL0 = (65535 - 50000) % 256;         n++; } void InitTimer() {         //定时器中断的一些初始化参数         TMOD = 0x01;         TH0  = (65535 - 50000) / 256;         TL0  = (65535 - 50000) % 256;         EA   = 1;         ET0  = 1;         TR0  = 1; } //数码管显示计数函数 void ShowCount() {           //百位           P0 = tab[count/100];           P2 = 0;           delay(800);           //十位           P0 = tab[(count - (count/100)*100 )/10];           P2 = 1;           delay(800);                      //个位           P0 = tab[(count - (count/100)*100 )%10];           P2 = 2;           delay(800);         } void main() {         InitTimer();//初始化定时器         while(1)         {           ShowCount();//采用数码管进行显示           if (n>=20)  //如果达到 20*50000(计数器设置的初始值)=1000000微妙=1秒则进行处理如下代码           {                 if (showLed == 0xfe )                  showLed = 0xff;                 else                  showLed = 0xfe;                                   P1 = showLed;                                  n = 0;                 count++;           }           if (count>=999) count = 0;         } } 复制代码  详情 回复 发表于 2009-11-28 22:22
点赞 关注

回复
举报

72

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
可以去网上下到这样的代码
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
这好好像是某时的课程设计
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

4
 
我晕 这还不简单!!!
稍微看看也会了啊
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

5
 
..一天就能搞定了。
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(中级)

6
 
这也算是毕业设计呀
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

7
 
好好学 吧 路还长呢
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

8
 
做个定时器也能做毕业论文啊?
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

9
 
我做过,也有不少这方面的资料,但是不会随便给人。
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

10
 
这个好像不难,
LCD/LED
单片机
烧写器
电脑
烙铁,锡线
万用板
电阻,电容
电源
有这些东西就差不多了
 
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

11
 
刚刚做的一个计时器的练习,供你参考。

  1. /*
  2. 题目:采用定时器中断进行每隔一秒计数
  3. 时间:2009-11-28
  4. 作者:wbx
  5. 简述:
  6.                 (1)设置定时器工作模式为0x01为16位定时器模式 TMOD = 0x01;
  7.               (2)开总中断EA使其为1
  8.                 (3)设置TH0、TL0的内容,填充数值到其中
  9.                 (3)开总中断EA = 1;
  10.                 (4)设置ET0 = 1;打开定时器中断
  11.                 (5)TR0 = 1; 启动定时器0
  12.                 (6)进行计数,且将第一个LED进行显示

  13. */


  14. #include
  15. code unsigned char tab[]=
  16.                         {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};  

  17. unsigned int n = 0;
  18. unsigned int count = 0;
  19. unsigned char showLed = 0xff;
  20. void delay(unsigned int iTime)
  21. {
  22.   while(--iTime);
  23. }

  24. //定时器中断函数
  25. void TimerFunction() interrupt 1
  26. {
  27.         TH0 = (65535 - 50000) / 256;
  28.         TL0 = (65535 - 50000) % 256;
  29.         n++;
  30. }

  31. void InitTimer()
  32. {
  33.         //定时器中断的一些初始化参数
  34.         TMOD = 0x01;
  35.         TH0  = (65535 - 50000) / 256;
  36.         TL0  = (65535 - 50000) % 256;
  37.         EA   = 1;
  38.         ET0  = 1;
  39.         TR0  = 1;

  40. }

  41. //数码管显示计数函数
  42. void ShowCount()
  43. {
  44.           //百位
  45.           P0 = tab[count/100];
  46.           P2 = 0;
  47.           delay(800);

  48.           //十位
  49.           P0 = tab[(count - (count/100)*100 )/10];
  50.           P2 = 1;
  51.           delay(800);
  52.           
  53.           //个位
  54.           P0 = tab[(count - (count/100)*100 )%10];
  55.           P2 = 2;
  56.           delay(800);        
  57. }

  58. void main()
  59. {
  60.         InitTimer();//初始化定时器

  61.         while(1)
  62.         {

  63.           ShowCount();//采用数码管进行显示

  64.           if (n>=20)  //如果达到 20*50000(计数器设置的初始值)=1000000微妙=1秒则进行处理如下代码
  65.           {
  66.                 if (showLed == 0xfe )
  67.                  showLed = 0xff;
  68.                 else
  69.                  showLed = 0xfe;
  70.                  
  71.                 P1 = showLed;               
  72.                   n = 0;
  73.                 count++;
  74.           }
  75.           if (count>=999) count = 0;
  76.         }

  77. }
复制代码
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表