功能:

  1. 系统采用STC89C52作为单片机
  2. 采用汇编语言撰写
  3. 可产生三角波、方波、正弦波三种波形
  4. 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仿真相关推荐

  1. 基于51单片机的波形发生器(四种波形)(毕业设计资料)

    四种波形的产生,包括锯齿波.三角波.方波.正弦波.通过LCD液晶显示当前波形以及波形的频率.可以通过按键切换波形,并可以通过按键进行设置当前波形的频率大小,也可以设置频率设置不步进值.资料从主页链接中 ...

  2. 【011】基于51单片机的低频信号发生proteus仿真与实物设计

    ​一.资料内容 (1).基于51单片机的低频信号发生proteus仿真设计一份: (2).基于51单片机的低频信号发生proteus仿真设计keli源代码一份: (3).基于51单片机的低频信号发生A ...

  3. 基于51单片机的LCD1602电子钟闹钟proteus仿真设计

    本设计是基于51单片机的LCD1602电子钟闹钟proteus仿真设计 源码+仿真+原理图+器件清单 仿真软件版本:proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 编 ...

  4. 【004】基于51单片机的音乐播放器proteus仿真设计

    一.压缩包资料内容(私信获取) (1).基于51单片机的音乐播放器proteus仿真设计一份: (2).基于51单片机的音乐播放器proteus仿真设计keli源代码一份: (3).基于51单片机的音 ...

  5. 【006】基于51单片机的简易电子计算器Proteus仿真设计

    一.压缩包资料内容(私信获取) (1).基于51单片机的简易电子计算器proteus仿真设计一份: (2).基于51单片机的简易电子计算器proteus仿真设计keli源代码一份: (3).基于51单 ...

  6. 基于51单片机的简易数字计算器Proteus仿真(源码+仿真+全套资料)

     资料编号:115 全套资料齐全,功能说明: 该计算器系统51 系列的单片机进行的数字计算器系统设计,可以完成计算器的键盘输入, 进行加. 减.乘.除的简单四则运算,并在 LCD屏幕上相应的显示结果. ...

  7. 基于51单片机的八路电压表采集Proteus仿真(源码+仿真+原理图+全套资料)

    资料编号:110 程序语言:C语言 仿真软件:Proteus8.9版本 功能讲解如下: 利用单片机及其外围器件(A/D转换器等)实现一款简易电压表,实现以下功能: 1   电压表能够进行8路模拟电压测 ...

  8. 基于51单片机火灾监测自动灭火装置Proteus仿真

    资料编号:167   下面是相关功能视频演示: 167-基于51单片机火灾监测自动灭火装置Proteus仿真(源码+仿真+全套资料) 功能讲解: 采用51单片机作为控制CPU,采用ADC0832采集火 ...

  9. 基于51单片机的音乐盒播放器proteus仿真

    资料编号:092  下面是相关功能视频演示: 92-基于51单片机的音乐盒播放器proteus仿真(源码+仿真+全套资料) 功能介绍:使用51单片机,采用蜂鸣器进行音乐播放,提供了音乐代码生成器软件, ...

最新文章

  1. chinese_L-12_H-768_A-12的一个坑
  2. 【Python基础】Python 10 个习惯用法,看看你都知道不?
  3. Struts2 缺少包
  4. 云服务器 ECS CentOS 7配置默认防火墙 Firewall
  5. scrapy 搜索关键字_Scrapy 新浪微博搜索爬虫
  6. fc-ae-1553_什么是AE-L,AF-L和*按钮,它们的作用是什么?
  7. SQL字符串中单引号与换行符的转义
  8. C++:MAC安装Boost库文件并且使用CLion开发
  9. 顺序表Sqlist.cpp
  10. python 去掉双引号_python知识学习,python标识符和关键字
  11. 对HTML5标签的认识(三)
  12. AIX系统内存占用率的计算
  13. xmlspy xsd生成java_利用XMLSPY根据XSD自动生成XML..doc
  14. 华为云文字识别服务关键技术、能力和产品落地需要注意的事宜(OCR系列二)
  15. 校友会2020计算机专业排名,校友会2020中国一流专业排名1200强公布,北大位列第一...
  16. NFS问题:server not responing 和 RPC call returner error 128
  17. html5 06携程网案例、 全屏插件的使用
  18. 那些油管上高质量的学习编程的频道 之二
  19. 腾讯AI八篇论文入选顶级医学影像会议MICCAI ,涉及病理癌症图像分类等
  20. [SPI+DMA] 驱动WS2812B显示时钟

热门文章

  1. 京东茅台抢购Python详细教程(小白入门,亲测可用)
  2. SDK设计心得之接口设计
  3. TP 通过STMP发送Email邮件
  4. 【Verilog】32位单精度浮点数比较大小
  5. 拉力测试软件界面,材料电子万能拉力试验机
  6. 显卡马甲对照表,另附加性能参数计算公式
  7. 第二届网刃杯网络安全大赛 Writeup
  8. 猴子分桃的题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了 一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分 成五份,又多了一个,
  9. ov cmos sensor 标准光源
  10. 浏览器如何设置默认打印机的纸张类型