硬件单片机模拟器,再也不用买开发板了
#头条创作挑战赛#
记得2006年在凌阳科技(sunplus)工作的时候,凌阳科技开发了自己的编译器/集成开发环境(unsp IDE),那个IDE除了有keil那样的编辑器、编译器、链接器、调试器、下载器等等嵌入式开发必须的功能外,还有一个帅到爆的功能,就是模拟器simulator,他能直接模拟硬件单片机,不需要硬件单片机,就能在电脑上模拟出代码实际在单片机上运行的效果,包括GPIO、SPI、I2C、UART、按键键盘、LCD显示,Audio播放,NVRAM存储器... 等等,简直太有用了,再也不需要等半天把程序烧录到单片机,通过仿真器调试,发现代码有问题,就改一下代码,编译完了再慢慢烧录下载到单片机,效率太低了... 有了这个单片机模拟器,就跟开发PC软件一样,所见即所得....
写这篇文章时,还特意去网上找了一下,嘿,这么多年过去了,网上竟然还有介绍的,一股熟悉的味道迎面而来,这个带我进入嵌入式开发大门,让我起飞的IDE,我把她最精彩的simulator功能分享给大家...
曾经的unSP IDE
当年的unSP IDE非常的炙手可热....
有没有类似unSP IDE的单片机模拟器(simulator)软件呢?
今天就给大家介绍一款硬件电路和单片机仿真软件 --- SimulIDE。
一、SimulIDE简介
电路仿真软件——SimulIDE,这款电路仿真软件不仅可以模拟电路、LCD显示器、步进电机、伺服电机,还可以模拟AVR单片机,PIC单片机,并且预先定义好了几种常见的Arduino开发板,有UNO、Nano、Duemilanove和Leonardo。这个软件集成了Arduino的代码编辑器、编译器,使用起来就像现实世界里玩一块Arduino一样。它还可以监视单片机内存和寄存器。
简单性和易用性是此模拟器的主要功能。您可以在几分钟之内创建仿真电路并与之交互,只需从列表中拖动组件,放入电路,进行连接并按下电源按钮即可查看其工作原理。
特征: 模拟和数字组件。微控制器。代码编辑器。调试器。子电路。DIP /逻辑符号。电路动画。基本形状。示波器。信号绘图仪。串行端口连接。串行监视器。二、下载安装
下载后解压即可。
三、 基本使用
1. 界面分为3个主要部分:
-左面板与组件,RAM表,属性和文件浏览器选项卡。
-中央面板(绘图,串口监听)与电路图和电路仪器-右侧面板与编辑/编译器/调试器。
电路图是中央面板,在这里你创建和模拟电路,这些都是你可以做的操作:-将组件从左面板- >组件选项卡上,拖放到电路,并通过点击引脚连接器创建。
鼠标中键上的电路,并移动到任何空白部分滚动电路。MOUSE_WHEEL来放大 /缩小电路。-点击电线创建节点和初始化新线。-鼠标中键上线到动线。-左键点击组件和移动即可。右键点击,上下文菜单。-电源按钮来启动/停止模拟。2.仿真
有3种类型,可以是非常耗费CPU和减缓模拟组件组成:
非线性:二极管,晶体管,运算放大器。反应:电容器,电感器。发光二极管:二极管他们增加额外的超负荷计算亮度。-动画:彩色线表示数字状态(用于数字电路的)。红色为高状态。蓝色代表低状态。
四、简单电路图示例
1.发光二极管
LED是表示与二极管符号来识别的阳极和阴极:
2. 仿真
-颜色:黄色,红色,绿色,蓝色,橙色或紫色:LED的颜色。
五、探测电压
这是一个电压探头,让你在电路中的任何电线或引脚电压认识。它可以作为一种数字探头以及当发现了一个“高态”(> 2.5V)变为橙色。读取电压:悬停探头通过导线或引脚看到的电压在电路中的任何点。
获取可用选项的探头上下文菜单中右键点击:
六、探测电流与电压
该值在50赫兹时钟时间无论仿真速度更新。
七、频率计数器
八、示波器
-频率检测。-幅度检测。-最小值和最大值。-自动规模。-用于水平和垂直缩放和位置控制。
九、波发生器
它可以产生正弦波,三角,锯齿和方波类型。wave type:波型,正弦波,三角波,锯或方形(默认正弦)。Freq:以赫兹波的频率(默认1000)。Volt Base:基本电压,默认为0伏。Volt:电压,默认为5伏。Quality:波质量(分辨率),在1至5级(默认4)。Duty Square:脉冲信号,方波占空比(默认值50)。
十、数字键盘
键盘处于“开关”组件组。它的大小(行和列)和键标签定制。缺省情况下它是一个标准的12个键; 4行,第3列数:
每个键的标签只有一个字符,以改变键标签编辑相应的属性:“键标签”。按键标签属性包含代表键盘的所有标签,每个按钮都有一个字符的字符串,从左至右,从上到下。每个按钮是连接对应的行和列引脚的开关。
十一、七段数码管
有2种七段的SimulIDE:-正常8 7SEG引脚。
BCD 7SEG用4个管脚。十二、微控制器
AVR和Arduino:
十三、逻辑器件
逻辑设备在组件选择的“逻辑”类别分组。有两种主要类型的组件:单组件和子电路。逻辑子电路被示出具有一个黑色的“芯片”的图标,而单个组分具有白色图标:
初学单片机,让“黑片片”也能说人话谁都能办到
前面我们聊了如何用单片机制作电子琴以及如何用单片机演奏一段音乐,前者是利用单片机的定时器产生不同频率的信号,后者是在前者的基础上再利用定时器控制信号的输出时间。那么针对更复杂的情况,单片机是否依然能够从容应对呢?
今天我们聊一下如何让单片机播放语音。
因为单片机通常被封装为黑色的片状物体,所以本文题目戏称为“黑片片”。好了,我们后面不再使用这种歧视单片机肤色的词语了。
说起语音信号,如何把它翻译成单片机能听懂,能说出的语言呢?
首先想到了“像素”这个非常熟悉的词,一幅画,像素多少决定了清晰度、辨识度,那么联系到语音信号,就叫做“采样率”。其实“像素”也是“采样率”,它是整幅画面的采样,而语音的采样率仅仅是对一条变化的波形进行采样。同样,采样率越高(密),信号就越真实,细节(高音)越丰富;采样率越低,信号就越枯燥(音色差)。
人耳能听到的频率范围在20~20000Hz范围,但是一般语音的频率范围在300~3000Hz,因此要求很低,用单片机处理不需要很高的采样率。
音频文件是如何记录音频信号的?
从wave格式音频文件来看,内容部分分为不同的“位”,例如:8位、16位等。以8位为例,指的是二进制位数,一个8位二进制数换算成10进制数,其最大值是255,最小值是0,共计256个不同的值。这个值记录的不是时间、不是频率,而是电平,声音的大小转换成音频信号电平的高低。
先回到前面的电子琴知识,电子琴用到的中音“1”的频率是220Hz,我们用单片机输出的方波信号是每0.00227秒一个正负变化,我们只需要在1秒钟内采样440次就可以,采样的电平就是一位二进制数,最大值是1,最小值是0。换算成十进制数也是1和0。那么采样率是多少呢?440Hz。
我们把采样率提高到8kHz,把采样电平增加到256个,对于220Hz的方波信号还能管用吗?那当然管用了,得到的数据应该是这样循环的:大约18个256,接着是18个0,接着又是18个256。。。依次循环,直到信号结束。
回到刚才的话题,我们完全可以用刚才的方法还原一段更复杂的音频。用于简易电子琴的方波信号只有两个电平1和0,频率只有固定的十几个,因此不需要采样和存储,但是如果用到采样就意味着需要存储,因此,对于一段高质量的语音往往需要较大容量的存储介质,例如FLASH芯片,SD卡片等等。我们今天要做的只是初步了解,因此不需要做的那么复杂,仅仅对一小段语音进行存储和播放,可以直接做到单片机程序空间。
对于语音的采样可以利用软件进行,也可以直接用音频编辑软件对现有的语音文件进行格式和采样率的转换。网上也有语音生成软件,可以把文字转换成语音,这些就可以用来给单片机播放。原则就是采样率不要太大,文件不要太大,最好是转换成8位的或6位的文件。
生成的语音波形图
下图是展开的语音信号,其实就是一个个阶梯状的电平组成的,每一个电平都需要一个数据来记录,所以Wav文件的占用空间很大,Mp3就是用压缩技术减少了数据个数:
语音波形展开是阶梯电平截图
下面是用虚拟示波器观察的《初学单片机,基于51单片机的电子琴“频率代码”这样做》文中制作的电子琴发出的中音“1”的波形,频率220Hz,标准脉冲宽度2.27毫秒,图中显示近似2540微妙的栅格宽度:
虚拟示波器观察的220Hz波形图
下图是用音频软件打开的音频文件截图(用话筒录制的):
音频软件打开电子琴演奏声音的文件截图
展开的音频信号已经不是标准的信号了,和示波器观察的差异很大,这可能使由于蜂鸣器的还原,以及声卡的转换,多种原因造成的,但是依然可以辨识到不同频率的音符。
拉长放大的音频信号截图
我们把波形继续展开,从下面的图中可以看出,每个脉冲的宽度依然是2.27毫秒。
单个脉冲的宽度截图
从以上截图可以看出,声音的记录其实是有规律可循的,能让单片机还原一段语音的其中一种方法,其实就是:
按照记录数据的速度还原记录的数据(电平值)。
今天我们聊了如何实现单片机“说话”的想法,后面我们再具体聊如何操作,感谢您的阅读,如果感兴趣,欢迎关注头条号/春天说,也欢参与评论交流,下次见。。。
相关问答
关于 单片机 两个N字节无符号数相加:为什么程序不停运行而且不...[最佳回答]程序不停:1,有其它的中断程序改写了r72,STOP:SJMPSTOP死循环程序本身可以到STOP