基于51单片机的波形发生器汇编语言proteus仿真
功能:
- 系统采用STC89C52作为单片机
- 采用汇编语言撰写
- 可产生三角波、方波、正弦波三种波形
- DAC芯片采用的是DAC0832,外加一个运放做波形处理
仿真电路图:
参考代码:
ORG 0000H;定义存储标志位的地址SEL EQU 30H ;存波形的地址 00:方波 01:三角波 02:正弦波RANGE EQU 31H ;存幅值的地址FREQ EQU 32H ;存频率的地址INC_F1 EQU 35H ;三角波自加或自减标识,=幅值/255INC_F2 EQU 36H ;三角波自加或自减标识,=幅值/255RAN_SIN EQU 37H ;正弦波幅值;定义按键的地址AN_COM EQU P2.1 ;发出低电平,用于检测按键AN_FREQ EQU P2.2 ;调节频率按键AN_RANGE EQU P2.3 ;调节幅度按键AN_SEL EQU P2.4 ;变换波形按键AN_RST EQU P3.1;定义12864的控制端E EQU P2.0 ;数据或命令读写驱动信号,操作时应拉高,操作完拉低即可RW EQU P2.6 ;读写控制端RS EQU P2.5 ;选择写控制命令或数据命令CS1 EQU P2.7 ;选屏幕CS2 EQU P3.0;12864存取命令的地址L_COM EQU 33H ;Y EQU 34H ;存列地址X EQU 38H ;存页地址PG EQU 39H ;存操作页数LINE EQU 40H ;存操作列数NUM EQU 41H ;循环次数SNUM EQU 42H ;待显示的数字TEMP EQU 43H ;临时数据LJMP MAINORG 0003H ;外部中断0中断入口地址LJMP COUNT_SER ;外部中断中断服务程序ORG 0100H
MAIN: ;数据初始化MOV SP,#60HCLR ACLR CCLR AN_COMMOV SEL,#00H ;默认方波MOV RANGE,#7FH ;默认中间幅值MOV FREQ,#00 ;默认最大频率LCALL CLEANMOV P1,#00HMOV Y,#00HMOV INC_F1,#00HMOV INC_F2,#00HMOV RAN_SIN,#01H LCALL LCD_INITLCALL SHOW_MSGLCALL SHOW_VHLCALL SHOW_SQRMOV X,#0BAHMOV Y,#5FHMOV SNUM,#05HLCALL SHOW_NUM;外部中断0初始化SETB IT0SETB EX0 ;允许外部中断0SETB EA ;开总中断;停机等待中断,到后期可以改为一些一直执行的程序,如显示,输出等
MAIN_L: MOV A,SELMOV DPTR,#WAVEJMP @A+DPTRSJMP MAIN_L;方波,不可调频
SQUARE: MOV R5,SELCJNE R5,#00H,WAVE_BACK MOV P1,RANGE ;幅值LCALL DELAY_XusLCALL DELAY_100usMOV P1,#00HLCALL DELAY_XusLCALL DELAY_100usSJMP SQUARE;三角波,调幅,频率也会变,改 默认最大幅值,最小频率
R_SEL: MOV R5,SELCJNE R5,#01H,WAVE_BACKLCALL JINC_F
RECT: DJNZ INC_F1,RECTINC P1MOV A,P1; LCALL DELAY_10usCJNE A,RANGE,RECTMOV INC_F1,INC_F2
DOWN: DJNZ INC_F2,DOWNDEC P1MOV R0,P1CJNE R0,#00H,DOWNMOV INC_F2,INC_F1; LCALL DELAY_10usLJMP R_SELRET;判断三角波中是一个循环加多少
JINC_F: MOV A,#0FFHMOV B,RANGEDIV ABMOV INC_F1,AMOV INC_F2,ARET ;正弦波,用查表法,不可调频,不可调幅
SIN: MOV DPTR,#TABLE_SIN
S_SEL: MOV R5,SELCJNE R5,#02H,WAVE_BACK
SL: CLR AMOVC A,@A+DPTRMOV B,RAN_SINDIV ABMOV P1,ALCALL DELAY_10usINC DPTRMOV A,#01HMOVC A,@A+DPTRCJNE A,#21H,S_SEL LJMP SIN;调用波形返回函数
WAVE_BACK: RET;中断服务程序
;外部中断0中断服务程序 ,判断是哪个按键被按下
COUNT_SER: CPL P3.5JNB AN_FREQ,FREQ_FUNCJNB AN_RANGE,RANGE_FUNCJNB AN_SEL,SEL_FUNCJNB AN_RST,SEL_RSTRETI;调节频率按钮
FREQ_FUNC: INC FREQRETI
;调节幅值按钮
RANGE_FUNC: INC RANGEINC RAN_SINMOV R6,RAN_SINCJNE R6,#00H,FUNC_RETMOV RAN_SIN,#01HRETI
;选择波形标志位加一
SEL_FUNC: INC SEL MOV R6,SELCJNE R6,#03H,FUNC_RETMOV SEL,#00HRETI
FUNC_RET: RETI
;复位部分
SEL_RST: CLR ACLR CCLR AN_COMMOV SEL,#00H ;默认方波MOV RANGE,#7FH ;默认中间幅值MOV FREQ,#00 ;默认最大频率MOV P1,#00HMOV Y,#00HMOV INC_F1,#00HMOV INC_F2,#00HMOV RAN_SIN,#01HRETI;LCD显示部分:
;1、查看LCD是否处于空闲
CHK_BUSY: MOV P0,#0FH ;必须让p0.7为低,不然一直卡在死循环CLR RSSETB RW SETB E JB P0.7,$ CLR E RET ;2、写命令
;写左命令
WR_L_COM: CLR CS1SETB CS2LCALL CHK_BUSY ;判断LCD是否处于空闲NOPCLR RSCLR RWNOPSETB EMOV P0,L_COMNOPCLR ENOPRET
;写右命令
WR_R_COM: SETB CS1CLR CS2LCALL CHK_BUSY ;判断LCD是否处于空闲NOPCLR RSCLR RWNOPSETB EMOV P0,L_COMNOPCLR ENOPRET
;全屏写命令
.
链接:https://pan.baidu.com/s/1jUHhVUiVOdTTCy2MHmFcCg
提取码:1234
基于51单片机的波形发生器汇编语言proteus仿真相关推荐
- 基于51单片机的波形发生器(四种波形)(毕业设计资料)
四种波形的产生,包括锯齿波.三角波.方波.正弦波.通过LCD液晶显示当前波形以及波形的频率.可以通过按键切换波形,并可以通过按键进行设置当前波形的频率大小,也可以设置频率设置不步进值.资料从主页链接中 ...
- 【011】基于51单片机的低频信号发生proteus仿真与实物设计
一.资料内容 (1).基于51单片机的低频信号发生proteus仿真设计一份: (2).基于51单片机的低频信号发生proteus仿真设计keli源代码一份: (3).基于51单片机的低频信号发生A ...
- 基于51单片机的LCD1602电子钟闹钟proteus仿真设计
本设计是基于51单片机的LCD1602电子钟闹钟proteus仿真设计 源码+仿真+原理图+器件清单 仿真软件版本:proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 编 ...
- 【004】基于51单片机的音乐播放器proteus仿真设计
一.压缩包资料内容(私信获取) (1).基于51单片机的音乐播放器proteus仿真设计一份: (2).基于51单片机的音乐播放器proteus仿真设计keli源代码一份: (3).基于51单片机的音 ...
- 【006】基于51单片机的简易电子计算器Proteus仿真设计
一.压缩包资料内容(私信获取) (1).基于51单片机的简易电子计算器proteus仿真设计一份: (2).基于51单片机的简易电子计算器proteus仿真设计keli源代码一份: (3).基于51单 ...
- 基于51单片机的简易数字计算器Proteus仿真(源码+仿真+全套资料)
资料编号:115 全套资料齐全,功能说明: 该计算器系统51 系列的单片机进行的数字计算器系统设计,可以完成计算器的键盘输入, 进行加. 减.乘.除的简单四则运算,并在 LCD屏幕上相应的显示结果. ...
- 基于51单片机的八路电压表采集Proteus仿真(源码+仿真+原理图+全套资料)
资料编号:110 程序语言:C语言 仿真软件:Proteus8.9版本 功能讲解如下: 利用单片机及其外围器件(A/D转换器等)实现一款简易电压表,实现以下功能: 1 电压表能够进行8路模拟电压测 ...
- 基于51单片机火灾监测自动灭火装置Proteus仿真
资料编号:167 下面是相关功能视频演示: 167-基于51单片机火灾监测自动灭火装置Proteus仿真(源码+仿真+全套资料) 功能讲解: 采用51单片机作为控制CPU,采用ADC0832采集火 ...
- 基于51单片机的音乐盒播放器proteus仿真
资料编号:092 下面是相关功能视频演示: 92-基于51单片机的音乐盒播放器proteus仿真(源码+仿真+全套资料) 功能介绍:使用51单片机,采用蜂鸣器进行音乐播放,提供了音乐代码生成器软件, ...
最新文章
- chinese_L-12_H-768_A-12的一个坑
- 【Python基础】Python 10 个习惯用法,看看你都知道不?
- Struts2 缺少包
- 云服务器 ECS CentOS 7配置默认防火墙 Firewall
- scrapy 搜索关键字_Scrapy 新浪微博搜索爬虫
- fc-ae-1553_什么是AE-L,AF-L和*按钮,它们的作用是什么?
- SQL字符串中单引号与换行符的转义
- C++:MAC安装Boost库文件并且使用CLion开发
- 顺序表Sqlist.cpp
- python 去掉双引号_python知识学习,python标识符和关键字
- 对HTML5标签的认识(三)
- AIX系统内存占用率的计算
- xmlspy xsd生成java_利用XMLSPY根据XSD自动生成XML..doc
- 华为云文字识别服务关键技术、能力和产品落地需要注意的事宜(OCR系列二)
- 校友会2020计算机专业排名,校友会2020中国一流专业排名1200强公布,北大位列第一...
- NFS问题:server not responing 和 RPC call returner error 128
- html5 06携程网案例、 全屏插件的使用
- 那些油管上高质量的学习编程的频道 之二
- 腾讯AI八篇论文入选顶级医学影像会议MICCAI ,涉及病理癌症图像分类等
- [SPI+DMA] 驱动WS2812B显示时钟