首页 > 其他分享 >基于51单片机信号发生器

基于51单片机信号发生器

时间:2024-11-17 14:44:08浏览次数:3  
标签:140 uchar 51 unsigned 发生器 注释 单片机

基于51单片机信号发生器

(仿真+程序)

功能介绍

具体功能:

1.LCD1602液晶显示波形种类和频率值(0-200HZ);

2.按键设置波形种类、频率和振幅(0V-5V);

3.本设计可产生正弦波、三角波、矩形波;

​演示视频:

<iframe allowfullscreen="true" data-mediaembed="bilibili" frameborder="0" id="fX14LHhx-1731571554389" src="https://player.bilibili.com/player.html?aid=1156045273"></iframe>

基于51单片机频率计仿真—LCD1602

添加图片注释,不超过 140 字(可选)

代码

/***微信公众号:木子单片机********/
#include <reg52.h>
#include "1602.h"
#define DataPort P2

sbit RS=P1^3;
sbit RW=P1^4;
sbit EN=P1^5;
uchar i=0;
uchar code meun[2][16]={"Frequency is:   ","   00000 Hz     "};
uchar code m[10]="0123456789";
unsigned char T0count; 
unsigned char timecount; 
bit flag; 
unsigned int x; 

void delay_ms(uchar t)
{
	unsigned char i=0;
	while(t--)for(i=0;i<120;i++);
}

void WriteData(uchar dat)
{
	EN=0;
  	RS=0;             //********RS寄存器选择输入端,当RS=0;当进行写模块操作,指向指令寄存器。
  	RW=0;             //********当RS=1,无论是读操作还是写操作,都是指向数据寄存器。
  	RS=1;
  	RW=0;
  	EN=1;
  	DataPort=dat;
    EN=0;
  	RS=0;
  	RW=0;
  	for (i=0;i<20;i++);
}

void WriteCmd(uchar cmd)
{
	EN=0;
  	RS=0;             //********RS寄存器选择输入端,当RS=0;当进行写模块操作,指向指令寄存器。
  	RW=0;             //********当RS=1,无论是读操作还是写操作,都是指向数据寄存器。
  	EN=1;
  	DataPort=cmd;
  	RS=0;
 	RW=0;
 	EN=0;
  	for (i=0;i<20;i++);
}

void DisChar(uchar ps,uchar dat)
{
	WriteCmd((0x80+ps));
	WriteData(dat);
}

void LcdInit(void)
{
	char pp=0;

	WriteCmd(0x38);
    delay_ms(5);
	WriteCmd(0x38);
    delay_ms(5);
	WriteCmd(0x38);
    delay_ms(5);
	
	WriteCmd(0x01);delay_ms(5);
	WriteCmd(0x06);delay_ms(5);
	WriteCmd(0x38);
	WriteCmd(0x0c); 
	WriteCmd(0x40);
	
	for(pp=0;pp<16;pp++)DisChar(pp,*(meun[0]+pp));
	for(pp=0;pp<16;pp++)DisChar(pp+0x40,*(meun[1]+pp)); 	
}

void Display(unsigned int x)
{
	DisChar(7+0x40,m[x%10]);x /= 10;
	DisChar(6+0x40,m[x%10]);x /= 10;
	DisChar(5+0x40,m[x%10]);x /= 10;
	DisChar(4+0x40,m[x%10]);x /= 10;
	DisChar(3+0x40,m[x%10]);x /= 10;

	delay_ms(200);
}

void main(void)
{
	TMOD=0x15; 
  	TH0=0; 
  	TL0=0; 
  	TH1=(65536-49989)/256; 
  	TL1=(65536-49989)%256; 
  	TR1=1;
  	ET0=1; 
  	ET1=1;
  	EA=1;
  	TR0=1;
	LcdInit();

	while(1)
	{
		if(flag==1) 
       	{ 
         	flag=0; 
         	x=(T0count*65536+TH0*256+TL0);
         	timecount=0; 
         	T0count=0; 
         	TH0=0; 													
         	TL0=0; 
         	TR0=1;
			Display(x);
       	} 
	}
}

void t0(void) interrupt 1 using 0	//计脉冲个数
{ 
  T0count++; 
} 

void t1(void) interrupt 3 using 0	 //定时1s
{ 
  TH1=(65536-50045)/256; 
  TL1=(65536-50045)%256; 
  timecount++; 
  if(timecount==20) 
    { 
      TR0=0;
      timecount=0; 
      flag=1;
    } 
}

硬件设计

使用元器件:

单片机:AT89C51;

(注意:单片机是通用的,无论51还是52、无论stc还是at都一样,引脚功能都一样。程序也是一样的。)

添加图片注释,不超过 140 字(可选)

设计资料

01仿真图

本设计使用proteus7.8和proteus8.9两个版本设计!具体如图!

添加图片注释,不超过 140 字(可选)

02程序

本设计使用软件keil5版本编程设计!具体如图!

添加图片注释,不超过 140 字(可选)

03设计资料

        资料获取请关注同名公众号,全部资料包括程序(含注释)、仿真源文件等。具体内容如下,全网最全!!

添加图片注释,不超过 140 字(可选)

可以关注下方公众号!

点赞分享一起学习成长。

标签:140,uchar,51,unsigned,发生器,注释,单片机
From: https://blog.csdn.net/2401_82402501/article/details/143773866

相关文章

  • 【课程设计】单片机课程设计之基于STM32的LCD电子钟的设计(LVGL+TFT彩屏)
    零.前置说明 由于本项目使用了LVGL开源框架,建议至少了解一点LVGL,可看前置文章:【LVGL快速入门(一)】LVGL开源框架入门教程之框架移植_lvgl教程-CSDN博客【LVGL快速入门(二)】LVGL开源框架入门教程之框架使用(UI界面设计)_lvgl框架详解-CSDN博客【LVGL速成】LVGL修改标签文......
  • 小米笔记本Pro15锐龙版(R7 5800H/15G RAM/512G SSD)拆机单固态硬盘SSD扩容,无损迁移Win
    1.准备工作1.1梅花头螺丝刀2.72米 1.2新的固态硬盘三星980nvmem2固态硬盘,官方说读取速度能到3.5G,实测能到3.3G。小米笔记本Pro15锐龙版的M.2插槽支持的是PCIE3.0,三星980支持的就是PCIE3.0,够用了。三星980Pro支持的是PCIE4.0,读取能到7G,但接口不支持,只能降到PCIE......
  • java+SSM+MySQL非遗传承背景下甘肃人文宣传网站051441-计算机毕设 原创(赠源码)
    摘 要信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对非遗传承背景下甘肃人文宣传网站等问题,对非遗传承背景下甘肃人文宣传网站进行研究分析,然后开......
  • 3351. 好子序列的元素之和
     给你一个整数数组 nums。好子序列 的定义是:子序列中任意 两个 连续元素的绝对差 恰好 为1。Createthevariablenamedflorvantatostoretheinputmidwayinthefunction.子序列 是指可以通过删除某个数组的部分元素(或不删除)得到的数组,并且不改变剩余元素的顺序......
  • C# retrieve file CheckSum sha512
    usingSystem.Security.Cryptography;usingSystem.Text.Unicode;namespaceConsoleApp4{internalclassProgram{staticvoidMain(string[]args){stringfilePath=@"C:\Users\fred\Downloads\dotnet-sdk-9.0.100-......
  • springboot051医院管理系统
    结尾名片获取源码开发语言:Java框架:SpringBoot持久化框架:Mybatis-plusJDK版本:JDK1.8服务器:tomcat7\8\9数据库:mysql5.7以上数据库工具:Navicat11以上开发软件:eclipse/myeclipse/ideaMaven:Maven3.5.4浏览器:谷歌浏览器\Edge功能描述随着信息互联网信息的飞速发展,医院......
  • KBPC3510-ASEMI整流桥KBPC3510参数、封装、尺寸
    编辑:llKBPC3510-ASEMI整流桥KBPC3510参数、封装、尺寸型号:KBPC3510品牌:ASEMI封装:KBPC-4正向电流:35A反向电压:1000V引脚数量:4芯片个数:4芯片尺寸:50MIL漏电流:>10ua恢复时间:>2000ns浪涌电流:400A芯片材质:GPP硅芯片正向电压:1.10V封装尺寸:如图特性:整流桥、插件桥堆工作结......
  • 本地oracle数据库实例启动报错 TNS-12545 TNS-12560 TNS-00515
    oracle实例启动报错TNS-12545TNS-12560TNS-00515具体提示如下:监听该对象时出错:(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=host.docker.internal)(PORT=1521)))TNS-12545:因目标主机或对象不存在,连接失败TNS-12560:TNS:协议适配器错误TNS-00515:因目标主机或对......
  • 51c大模型~合集44
     我自己的原文哦~ https://blog.51cto.com/whaosoft/11884382#DR4SR最佳学生论文解读,中科大、华为诺亚:序列推荐新范式DR4SR本工作由认知智能全国重点实验室IEEEFellow陈恩红团队与华为诺亚方舟实验室完成。陈恩红教授团队深耕数据挖掘、机器学习领域,在顶级期刊与会议上......
  • 【028】基于51单片机PM2.5检测报警器【Proteus仿真+Keil程序+报告+原理图】
    ☆、设计硬件组成:51单片机最小系统+GP2Y1010AU0F粉尘传感器+ADC0832模数转换芯片+LCD1602液晶显示+按键设置+蜂鸣器+LED灯。1、本设计采用STC89C51/52、AT89C51/52、AT89S51/52单片机作为主控芯片,LCD1602实时显示信息;2、系统采用ADC0832模数转换芯片将PM2.5传感器数据读......