找回密码
 立即注册

QQ登录

只需一步,快速开始

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

简易频率发生器仿真和单片机代码

[复制链接]
跳转到指定楼层
楼主
简易频率计 ,大家可以使用

仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


单片机源程序如下:
  1. #include<reg51.h>
  2. #include <stdio.h>
  3. #define uchar unsigned char
  4. uchar display_code[]={
  5. 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff};
  6. //定义数组存放显示数据的编码
  7. uchar display_data[8]={0,0,0,0,0,0,0,0};   //定义数组存放显示数据的各位
  8. uchar c1,b1;
  9. sbit P1_1=P1^1;
  10. sbit P0_1=P0^1;
  11. void delay(void)   //延时
  12. {
  13. uchar i;
  14. for(i=500;i>0;i--);
  15. }
  16. void display()   //显示程序
  17. {
  18.     uchar i,k;
  19.     k=0x01;
  20.     for(i=0;i<8;i++)
  21.         {
  22.         P2=0;
  23.                 P0=display_code[display_data[i]];
  24.                   P2=k;
  25.                   k=k<<1;
  26.                 delay();
  27.         }
  28.     P2=0;
  29. }
  30. void convert()  //转换程序
  31. {
  32.         uchar i,f2;
  33.         long f,f1,k;
  34.         f=c1*65536+TH1*256+TL1 ;
  35.         f1=f-f%10;                //此变量是为了让八位LED的高位为0时不显示而设置
  36.         for(i=7;i>0;i--)        //此循环将计数值转换为显示数组,从高位到低位依次存放在
  37.         //display_data[0]至display_data[7]
  38.         {
  39.                 display_data[i]=f%10;
  40.                 f=f/10;
  41.         }
  42.         display_data[0]=f;
  43.         k=1e7;                //从这开始到本子程序结束的语句完成让八位LED的高位为0时不显示
  44.         for(i=0;i<7;i++)
  45.         {
  46.                 f2=f1/k;
  47.                 if(f2==0)
  48.                 {
  49.                         display_data[i]=10;
  50.                         k=k/10;
  51.                 }
  52.         }
  53. }
  54. void timer1(void) interrupt 3  //定时器1中断服务程序
  55.    {
  56.                 c1++;                       
  57.    }
  58. void timer0(void) interrupt 1  //定时器0中断服务程序
  59.    {
  60.     TH0=(65536-50000)/256;
  61.         TL0=(65536-50000)%256;                         //装入时间常数                       
  62.         P1_1=!P1_1;                //P1.1取反,从P1.1引脚输出25Hz的方波信号,通过导线连接
  63.                 //到P3.5引脚输入,以方便调试程序。若使用其它信号源,则去掉即可。
  64.         if (b1==49)
  65.         {
  66.                 convert();
  67.                 c1=0;                        //将计数值清零
  68.                 b1=0;
  69.                 TH1=0;
  70.                 TL1=0;
  71.         }
  72.         else
  73.          b1++;
  74. }
  75. void main(void)  //主函数
  76. {
  77.         P0_1=0;
  78.         c1=0;
  79.         b1=0;
  80.         TH1=0;
  81. ……………………

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

所有资料51hei提供下载:
简易频率发生器.rar (56.06 KB, 下载次数: 34)


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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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