找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机驱动74hc164秒表显示的仿真和源程序

[复制链接]
跳转到指定楼层
楼主
单片机74hc164秒表仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


单片机源程序如下:
  1. #include<iom16v.h>
  2. #include<macros.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int

  5. #define CP_L PORTC&=~BIT(0)
  6. #define CP_H PORTC|=BIT(0)

  7. #define DATA_L PORTC&=~BIT(1)
  8. #define DATA_H PORTC|=BIT(1)

  9. uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,
  10.                            0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
  11. uint num=0;

  12. void delay_ms()
  13. {
  14. uint i;
  15. for(i=0;i<1141;i++);
  16. }

  17. void delay(uchar time)
  18. {
  19. uint i;
  20. for(i=0;i<time;i++)
  21. delay_ms();
  22. }

  23. void send_data(uchar data)
  24. {
  25. uint i;

  26. for(i=0;i<8;i++)
  27. {
  28.    CP_L;
  29.    if(data&0x80)
  30.    DATA_H;
  31.    else
  32.    DATA_L;
  33.    CP_H;
  34.    data<<=1;
  35. }

  36. }
  37. //定时1秒
  38. void Timer1_init()
  39. {
  40. TCCR1A=0X00;
  41. TCCR1B=0X04;//256分频
  42. TCNT1H=0x85;
  43. TCNT1L=0xED;
  44. }

  45. #pragma interrupt_handler miao:9
  46. void miao()
  47. {
  48. TCNT1H=0x85;
  49. TCNT1L=0xED;
  50. if(num==60)
  51.   num=0;
  52.   num++;
  53. }

  54. void Display(uchar i,uchar j)
  55. {
  56. send_data(j);

  57. PORTC&=~BIT(i);
  58. delay(10);
  59. PORTC|=BIT(i);
  60. }


  61. void main()
  62. {
  63. DDRC=0XFF;
  64. Timer1_init();
  65. TCNT1H=0x85;
  66. TCNT1L=0xED;
  67. TIMSK|=BIT(2);
  68. SREG|=BIT(7);
  69. while(1)
  70. {
  71.   Display(2,table[num%10]);
  72.   Display(3,table[num/10]);
  73. }
  74. }
复制代码

所有资料51hei提供下载:
74hc164_miao.rar (28.65 KB, 下载次数: 21)


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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