微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 第36节:带数码管显示的加法简易计算器

第36节:带数码管显示的加法简易计算器

时间:11-22 来源:互联网 点击:

  1. 止鸣叫
  2. beep_dr=0;//蜂鸣器是PNP三极管控制,低电平就开始鸣叫。
  3. }
  4. else
  5. {
  6. ; //此处多加一个空指令,想维持跟if括号语句的数量对称,都是两条指令。不加也可以。
  7. beep_dr=1;//蜂鸣器是PNP三极管控制,高电平就停止鸣叫。
  8. }
  9. display_drive();//放在定时中断里的数码管驱动函数
  10. /* 注释五:
  11. *注意,此处的重装初始值不能太大,否则动态扫描数码管的速度就不够。我把原来常用的2000改成了500。
  12. */
  13. TH0=0xfe; //重装初始值(65535-500)=65035=0xfe0b
  14. TL0=0x0b;
  15. TR0=1;//开中断
  16. }
  17. void delay_short(unsigned int uiDelayShort)
  18. {
  19. unsigned int i;
  20. for(i=0;i
  21. {
  22. ; //一个分号相当于执行一条空语句
  23. }
  24. }
  25. void delay_long(unsigned int uiDelayLong)
  26. {
  27. unsigned int i;
  28. unsigned int j;
  29. for(i=0;i
  30. {
  31. for(j=0;j<500;j++)//内嵌循环的空指令数量
  32. {
  33. ; //一个分号相当于执行一条空语句
  34. }
  35. }
  36. }
  37. void initial_myself()//第一区 初始化单片机
  38. {
  39. led_dr=0;
  40. beep_dr=1; //用PNP三极管控制蜂鸣器,输出高电平时不叫。
  41. hc595_drive(0x00,0x00);
  42. TMOD=0x01;//设置定时器0为工作方式1
  43. TH0=0xfe; //重装初始值(65535-500)=65035=0xfe0b
  44. TL0=0x0b;
  45. }
  46. void initial_peripheral() //第二区 初始化外围
  47. {
  48. EA=1; //开总中断
  49. ET0=1; //允许定时中断
  50. TR0=1; //启动定时中断
  51. }


总结陈词:

这节讲了加法简易计算器的程序项目。为了让读者理解运动,按键,显示是如何有规律关联起来的,下节会继续讲一个相关的小项目程序。欲知详情,请听下回分解-----数码管作为仪表盘显示跑马灯的方向,速度和运行状态。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top