org 0000h

LJMP MAIN

ORG 0003H

LJMP L0

MAIN:MOV R2,#0aH                    ;调幅倍数

MOV R4,#01H                    ;增减选择

MOV R5,#01H

pp: SETB EA

SETB EX0                   ;延时计数个数

MOV A,#0FFH                   ;读取波形状态

MOV P1,A

MOV A,P1

JNB ACC.0,ZXB        ;P1.0=0 则选择正弦波

JNB ACC.1,SJB       ;P1.1=0 则选择三角波

JNB ACC.2,FB        ;P1.2=0 则选择方 波

AJMP PP

ZXB:MOV R1,#00H

LOOP1:MOV A,R1

MOV DPTR,#TABLE1               ;读取正弦波数据首地址

MOVC A,@A+DPTR                 ;去表格数据

MOV B,R2

MUL AB               ;幅度大小

INC R1

XCH A,R1

CLR C

SUBB A,#0AH                    ;是否已采样半个周期

JNC LK1                        ;C=0跳转,即R1大于0A,以采样半个周期以上

ADD A,#0AH

XCH A,R1                       ;还原R1

ADD A,#80H                     ;8OH为零点,取得正的幅度值

AJMP LK0

LK1:ADD A,#0AH

XCH A,R1

MOV R3,A

MOV A,#80H

CLR C

SUBB A,R3                      ;80H为零点,取得负的幅度值

LK0:MOV DPTR,#8000H                ;送DA转换入口地址

MOVX @DPTR,A

MOV A,R5

KD:DEC R5                         ;调用延时

CALL DELAY

CJNE R5,#00H,KD

MOV R5,A

CJNE R1,#12H,LOOP1

LJMP PP

FB:MOV R1,#00H

LOOP2:MOV A,R1

MOV DPTR,#TABLE2               ;读取方波数据首地址

MOVC A,@A+DPTR                 ;去表格数据

MOV B,R2

MUL AB               ;幅度大小

INC R1

XCH A,R1

CLR C

SUBB A,#0AH                    ;是否已采样半个周期

JNC LK3                        ;C=0跳转,即R1大于0A,以采样半个周期以上

ADD A,#0AH

XCH A,R1                       ;还原R1

ADD A,#80H                     ;8OH为零点,取得正的幅度值

AJMP LK2

LK3:ADD A,#0AH

XCH A,R1

MOV R3,A

MOV A,#80H

CLR C

SUBB A,R3                      ;80H为零点,取得负的幅度值

LK2:MOV DPTR,#8000H                ;送DA转换入口地址

MOVX @DPTR,A

MOV A,R5

KD0:DEC R5                         ;调用延时

CALL DELAY

CJNE R5,#00H,KD0

MOV R5,A

CJNE R1,#12H,LOOP2

LJMP PP

SJB:MOV R1,#00H

LOOP3:MOV A,R1

MOV DPTR,#TABLE3               ;读取三角波波数据首地址

MOVC A,@A+DPTR                 ;去表格数据

MOV B,R2

MUL AB               ;幅度大小

INC R1

XCH A,R1

CLR C

SUBB A,#0DH                    ;是否已采样半个周期

JNC LK5                        ;C=0跳转,即R1大于D,以采样半个周期以上

ADD A,#0DH

XCH A,R1                       ;还原R1

ADD A,#80H                     ;8OH为零点,取得正的幅度值

AJMP LK4

LK5:ADD A,#0DH

XCH A,R1

MOV R3,A

MOV A,#80H

CLR C

SUBB A,R3                      ;80H为零点,取得负的幅度值

LK4:MOV DPTR,#8000H                ;送DA转换入口地址

MOVX @DPTR,A

KD1:MOV A,R5

DEC R5                         ;调用延时

CALL DELAY

CJNE R5,#00H,KD1

MOV R5,A

CJNE R1,#18H,LOOP3

LJMP PP

DELAY:NOP

RET

L0:CLR EA

PUSH A

PUSH PSW

JB P1.3,L1                     ;中断子程序

CJNE R4,#00H,KL0

INC R4

SJMP LD0

KL0:MOV R4,#00H

LD0:JNB P1.3,LD0                   ;判断键是否松开

LJMP LEND

L1:JB P1.4,L2

MOV A,R4

JNZ KL1                        ;判断幅度是增还是减

CJNE R2,#0AH,KK0               ;判断幅度是否达到最大

SJMP LD1

KK0:INC R2        ;幅度增加0.5V

SJMP LD1

KL1:CJNE R2,#00H,KK1

SJMP LD1

KK1:DEC R2                         ;幅度减小0.5V

LD1:JNB P1.4,LD1

LJMP LEND

L2:JB P1.5 ,LEND

MOV A,R4

JNZ KL2                        ;判断频率的增减

MOV A,#05H                     ;每次周期变化20微秒

CLR C

ADD A,R5

JC LD2

MOV R5,A

LJMP LD2

KL2:MOV A,R5

CLR C

SUBB A,#05H

JC LD2

MOV R5,A

LD2:JNB P1.5,LD2

LEND:POP PSW

POP A

SETB EA

RETI

TABLE1:DB 00H,04H,08H,0bH,0cH,0cH,0bH,08H,04H,00H,04H,08H,0bH,0cH,0cH,0bH,08H ,04H

TABLE2:DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,0CH,0CH,0CH,0CH,0CH,0CH,0CH,0CH ,0CH

TABLE3:DB 00H,02H,04H,06H,08H,0AH,0CH,0AH,08H,06H,04H,02H,00H,02H,04H,06H,08H,0AH,0CH,0AH

关注eeworld公众号

快捷获取更多信息

关注eeworld服务号

享受更多官方福利

推荐阅读

STC15单片机实验名称:使用NTC电阻测量温度实验内容:        使用NTC电阻测量温度并显示在数码管上        读取DS18B20模块测量温度作为参考实验器材:        STC15W408AS_DIP16 x1        DS18B20  x1        TM1637数码管 x1

发表于 2020-12-17

/*一款电子钟程序,此电子钟是四位电子钟数码管组成的,功能分别有走时、响闹、走时间调整、闹钟时间调整等功能!调整部分分别由三个按键实现,一个功能键,一个+(加)键,另一个为-(减)键,其它功能键是复用功能!*/硬键介绍:数码管个位.十位.百位.千位.小数点分别接P0.0 P0.1 P0.2 P0.3 P0.4。蜂鸣器接P3.5脚,功能按键接P3.2 加按键接P3.3 减按键接P3.4以下是两张图片!!!#include //头文件#define uchar unsigned char//宏定义#define uint unsigned int//宏定义uchar shi,fen,nshi,nfen,ma

发表于 2020-12-17

51单片机做的温度显示,温度显示在LCD1602液晶屏上。然后按键可以调整温度阈值,温度高于或低于所设温度,蜂鸣器就会响……单片机源程序如下:/***************************************************************************************                              基于单片机的实时温度报警系统设计        &nbsp

发表于 2020-12-17

当电机较大时,启动是个必须注意的问题。比较简单且用的很多的是星三角启动,这里写出了星三角启动的核心部分。每一个IO口接上继电器,再控制交流接触器,就OK了。但,要注意,星、角交流接触器一定要互锁,否则一旦某个交流接触器粘连,就造成短路了。#include sbit K1=P3^1;  //按键1,控制第1个继电器启动sbit K2=P3^2;  //按键2,控制第2个继电器启动sbit J1=P1^5;  //星接继电器sbit J2=P1^6;  //星点继电器sbit J3=P1^7;  //角继电器void Delay_1ms(unsigned i

发表于 2020-12-16

、技术性能稳定等特点而受到广大用户和专业人士的欢迎。而本设计的电路包括硬件和软件两个部分。硬件部分包括红外感应部分与单片机控制部分。整个系统电路可划分为:电源部分、传感器模块部分、单片机控制电路,而单片机控制由最小系统和指示灯电路、报警电路等子模块组成。主要工作由热释电红外感应器完成信息采集、处理、数据传送经过单片机功能设定到达报警模块这一过程。就此设计的核心模块来说,单片机就是设计的中心单元。单片机应用系统也是由硬件和软件组成。硬件包括单片机、输入/输出设备、以及外围应用电路等组成的系统,软件是主要是工作的程序通过编写程序来控制输入的信号。二、设计任务分析1.该设计包括硬件和软件设计两个部分。模块划分为数据采集、按键设定、报警

发表于 2020-12-16

用一个按键控制四个继电器循环导通,程序由51单片机的程序改到STC15F104W上,第一次按键,第一个继电器吸合,第二次按键,第二个继电器吸合,第一个继电器释放,以此类推。最初的想法就是实现电风扇,三档开关,程序里面可以修改端口。#includesbit key = P3^4; //定义按键void delayms(void);                         //延时void led_refresh(unsigned char

发表于 2020-12-16

dac0832三角波c语言程序,单片机控制DAC0832输出正弦波三角波汇编程序相关推荐

  1. dac0832三角波c语言程序,单片机驱动dac0832输出方波三角波正玄波程序

    电路图 仿真文件及完整的源代码下载地址:http://www.51hei.com/bbs/dpj-20395-1.html 下面是汇编程序源码,可以用按键来控制 org 0000h ajmp main ...

  2. 电子屏幕的51c语言程序,单片机控制LCD液晶显示器(含程序)

    <单片机控制LCD液晶显示器(含程序)>由会员分享,可在线阅读,更多相关<单片机控制LCD液晶显示器(含程序)(16页珍藏版)>请在人人文库网上搜索. 1.液晶显示器一 实验目 ...

  3. 从两边往中间流水灯c语言程序,单片机控制LED流水灯从中间向两边.doc

    WORD格式.分享 精品.资料 单片机控制LED流水灯从中间向两边,从两边向中间 这个就是把 先奇数亮再偶数亮,循环三次:一个灯上下循环三次:两个分别从两边往中间流动三次:再从中间往两边流动三次:不过 ...

  4. 从两边往中间流水灯c语言程序,单片机控制LED流水灯从中间向两边

    单片机控制LED流水灯从中间向两边,从两边向中间 这个就是把先奇数亮再偶数亮,循环三次:一个灯上下循环三次:两个分别从两边往中间流动三次:再从中间往两边流动三次:不过这个程序实现的应该是这样的先奇数亮 ...

  5. 51单片机蜂鸣器演奏《小苹果》C语言程序,单片机控制蜂鸣器演奏音阶实例

    单片机可以控制蜂鸣器发声音 蜂鸣器是非常常见的发音元器,音乐卡.报警装置.电子琴.各种小家电等都会用到.单片机的PWM功能可以设置输出不同频率的信号,所以我们可以利用单片机的PWM控制三极管的通断来推 ...

  6. 单片机三角波c语言程序,单片机产生方波、锯齿波、三角波程序

    单片机产生方波.锯齿波.三角波程序 #include #define uchar unsigned char #define uint unsigned int unsigned char x=0,m ...

  7. 按钮查询方式控制交通灯c语言程序,单片机控制交通灯(内含程序和实物图)

    模拟交通灯控制系统 摘要:随着经济发展,汽车数量急剧增加,城市道路日渐拥挤,交通拥塞已成为一个国际性的问题.因此,设计可靠.安全.便捷的多功能交通灯控制系统有极大的现实必要性.根据交通灯在实际控制中的 ...

  8. 从两边往中间流水灯c语言程序,单片机控制LED流水灯从中间向两边,从两边向中间...

    这个就是把 先奇数亮再偶数亮,循环三次:一个灯上下循环三次:两个分别从两边往中间流动三次:再从中间往两边流动三次:不过这个程序实现的 应该是这样的  先奇数亮再偶数亮,循环三次:一个灯上下循环三次:两 ...

  9. led交通灯c语言程序设计,单片机控制的交通灯C语言编程.doc

    单片机控制的交通灯C语言编程 单片机控制的交通灯 红灯停,绿灯行,黄灯闪烁提示行人红绿灯即将切换.四个方向各有一个红.黄.绿显示和两个数码管. 东西道为人行道(20秒),南北道为车行道(60秒),黄灯 ...

最新文章

  1. Elasticsearch 2.2.0 索引配置详解
  2. 初探云原生应用管理(二): 为什么你必须尽快转向 Helm v3
  3. href 一个正则表达式的解析 ? 号解析
  4. Top10 Web2.0在线生成器
  5. PHP(四)——性能优化
  6. luogu P3380 【模板】二逼平衡树(树套树)
  7. python函数拟合编程_Python应用实现双指数函数及拟合代码实例
  8. 【文章】浅相遇,薄相知,淡相守,终难忘
  9. 华为v5服务器安装操作系统,v5服务器
  10. js中定义变量加var与不加var的区别?
  11. 微信之微信支付(封装)--jsapi
  12. linux备份没有vmlinuz,解决file /isolinux/vmlinuz0 not found
  13. 2016年读书总结(一)
  14. 建筑专业规范大全 2020版_房屋建筑工程现行规范标准目录汇编(2020版)—防水工程...
  15. 2021年 最全面 软件测试工程师面试题及答案
  16. 数字时钟——FPGA
  17. iradon函数和radon函数
  18. 软件企业软件产品税收优惠政策
  19. fastjson 首字母大写问题
  20. 语音端点检测 php,几种语音端点检测方法简介

热门文章

  1. 小米4A刷入breed教程
  2. 塔望食业洞察|预制菜行业市场现状、发展趋势及未来思考
  3. 算法实验总结2019
  4. 运营商客户流失率分析
  5. AKM项目轶事之Flyback遭遇航班取消
  6. 18款奔驰C200L升级柏林之声音响,音质享受,驾驶乐趣
  7. anaconda的令牌是啥_Anaconda是什么?香吗?
  8. LintCode Find the Duplicate Number
  9. 楞严咒全文注音__楞严咒大意翻译__三合一逐句对照教念稿
  10. (转载)图像语义分割