找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4212|回复: 1
收起左侧

74hc573-74ls273时钟仿真与C语言程序

[复制链接]
ID:198942 发表于 2017-5-10 08:55 | 显示全部楼层 |阅读模式
区别每个数码管子函数(*7)和整体数码管并一类子函数(*1)之间的区别;我们可以看其中数码管显示的停滞与正常之间的差距(proteus的原理图相同,只是稍微了改了下C语言程序)
74hc573-74ls273和单片机数码管的仿真图:
0.png 0.png

单片机源程序:
  1. #include<reg52.h>
  2. #include<intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  6. uchar code select[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
  7. sbit dula=P3^6;
  8. sbit clk=P3^7;
  9. uchar miao,fen,shi,adval,a,shih,shil,fenh,fenl,miaoh,miaol;
  10. void delayms(uint xms)
  11. {
  12.   uint i,j;
  13.   for(i=xms;i>0;i--)
  14.    for(j=110;j>0;j--);
  15. }

  16. void display_shih(uchar shih)
  17. {

  18.     P0=select[0];
  19.     clk=1;
  20.     clk=0;   
  21.         dula=1;
  22.         P0=table[shih];
  23.         dula=0;
  24.         delayms(3);
  25. }
  26. void display_shil(uchar shil)
  27. {
  28.         P0=select[1];       
  29.     clk=1;  
  30.         clk=0;
  31.         dula=1;
  32.         P0=table[shil];
  33.         dula=0;
  34.         delayms(3);
  35. }
  36. void display_fenh(uchar fenh)
  37. {
  38.     P0=select[3];
  39.     clk=1;
  40.     clk=0;   
  41.         dula=1;
  42.         P0=table[fenh];
  43.         dula=0;
  44.         delayms(3);
  45. }

  46. void display_fenl(uchar fenl)
  47. {
  48.     P0=select[4];
  49.     clk=1;
  50.     clk=0;   
  51.         dula=1;
  52.         P0=table[fenl];
  53.         dula=0;
  54.         delayms(3);
  55. }
  56. void display_miaoh(uchar miaoh)
  57. {

  58.     P0=select[6];
  59.     clk=1;
  60.     clk=0;   
  61.         dula=1;
  62.         P0=table[miaoh];
  63.         dula=0;
  64.         delayms(3);
  65. }
  66. void display_miaol(uchar miaol)
  67. {
  68.     P0=select[7];
  69.     clk=1;
  70.     clk=0;   
  71.         dula=1;
  72.         P0=table[miaol];
  73.         dula=0;
  74.         delayms(3);
  75. }
  76. void t0() interrupt 1
  77. {
  78.         TH0=(65536-50000)/256;
  79.         TL0=(65536-50000)%256;
  80.         adval++;

  81. }
  82. void main()
  83. {
  84.         TMOD=0x01;
  85.         TH0=(65536-50000)/256;
  86.         TL0=(65536-50000)%256;
  87.         EA=1;
  88.         ET0=1;
  89.         TR0=1;
  90.         while(1)
  91.         {
  92.                 if(adval==20)
  93.                 {
  94.                         adval=0;
  95.                         miao++;
  96.                         if(miao==60)
  97.                         {
  98.                                 miao=0;
  99.                                 fen++;
  100.                                 if(fen==60)
  101.                                 {
  102.                                         fen=0;
  103.                                         shi++;
  104.                                         if(shi==24)
  105.                                         {
  106.                                                 shi=0;                                                     
  107.                                         }
  108.                                 }
  109.                         }
  110.                         miaoh=miao/10;
  111.                         miaol=miao%10;
  112.                         fenh=fen/10;
  113.                         fenl=fen%10;
  114.                         shih=shi/10;
  115.                         shil=shi%10;

  116.                 }
  117.         display_shih(shih);

  118. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

下载:
573-273时钟-停滞未优化.zip (46.77 KB, 下载次数: 13)
回复

使用道具 举报

ID:428113 发表于 2018-11-23 00:32 | 显示全部楼层
接线怎么接?
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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