历史上的今天
今天是:2024年11月27日(星期三)
2020年11月27日 | 单片机DAC0832+LM324波形发生器程序设计
2020-11-27 来源:51hei





单片机源程序如下:
#include #include #define uchar unsigned char #define uint unsigned int sbit RS=P3^0; sbit RW=P3^1; sbit EN=P3^3; sbit K1=P2^0; sbit K2=P2^1; sbit K3=P2^2; sbit K4=P2^3; sbit K5=P2^4; uchar WaveChoice=1; uchar ys=30; uchar i,a=0; uchar sqar_num=128; uint freq; uchar code Sin[]={"Sine "}; uchar code Squ[]={"Square "} ; uchar code Tri[]={"Triangle "}; uchar code Saw[]={"Sawtooth "} ; uchar code No[]={"No Signal out "}; uchar code Wave[]={"Wave :"}; uchar code Fre[]={"Freq :"}; uchar code tosin[256]= {0x80,0x83,0x86,0x89,0x8d,0x90,0x93,0x96,0x99,0x9c,0x9f,0xa2,0xa5,0xa8,0xab, 0xae,0xb1,0xb4,0xb7,0xba,0xbc,0xbf,0xc2,0xc5,0xc7,0xca,0xcc,0xcf,0xd1,0xd4,0xd6,0xd8, 0xda,0xdd,0xdf,0xe1,0xe3,0xe5,0xe7,0xe9,0xea,0xec,0xee,0xef,0xf1,0xf2,0xf4, 0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5, 0xf4,0xf2,0xf1,0xef,0xee,0xec,0xea,0xe9,0xe7,0xe5,0xe3,0xe1,0xde,0xdd,0xda,0xd8, 0xd6,0xd4,0xd1,0xcf,0xcc,0xca,0xc7,0xc5,0xc2,0xbf,0xbc,0xba,0xb7,0xb4,0xb1,0xae,0xab, 0xa8,0xa5,0xa2,0x9f,0x9c,0x99,0x96,0x93,0x90,0x8d,0x89,0x86,0x83,0x80, 0x80,0x7c,0x79,0x76,0x72,0x6f,0x6c,0x69,0x66,0x63,0x60,0x5d,0x5a,0x57,0x55, 0x51,0x4e,0x4c,0x48,0x45,0x43,0x40,0x3d,0x3a,0x38,0x35,0x33,0x30,0x2e,0x2b, 0x29,0x27,0x25,0x22,0x20,0x1e,0x1c,0x1a,0x18,0x16,0x15,0x13,0x11,0x10,0x0e, 0x0d,0x0b,0x0a,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x02,0x01,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02 ,0x02,0x03,0x04, 0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0d,0x0e,0x10,0x11,0x13,0x15,0x16,0x18, 0x1a,0x1c,0x1e,0x20,0x22,0x25,0x27,0x29,0x2b,0x2e,0x30,0x33,0x35,0x38,0x3a, 0x3d,0x40,0x43,0x45,0x48,0x4c,0x4e ,0x51,0x55,0x57,0x5a,0x5d,0x60,0x63,0x66 , 0x69,0x6c,0x6f,0x72,0x76,0x79,0x7c,0x80 }; void DelayMS(uchar ms) { uchar i; while(ms--) for(i=0;i<120;i++); } void Delay1(uint y) { uint i; for(i=y;i>0;i--); } uchar Busy_Check() { uchar LCD_Status; RS=0; // 寄存器选择 RW=1; //读状态寄存器 EN=1; // 开始读 DelayMS(1); LCD_Status=P1; EN=0; return LCD_Status; } void Write_LCD_Command(uchar cmd) { while((Busy_Check()&0x80)==0x80); //忙等待 RS=0; //选择命令寄存器 RW=0; //写 EN=0; P1=cmd;EN=1;DelayMS(1);EN=0; } void Write_LCD_Data(uchar dat) { while((Busy_Check()&0x80)==0x80); //忙等待 RS=1; RW=0; EN=0; P1=dat;EN=1;DelayMS(1);EN=0; } void Init_LCD() { Write_LCD_Command(0x38); DelayMS(1); Write_LCD_Command(0x01); //清屏 DelayMS(1); Write_LCD_Command(0x06); //字符进入模式:屏幕不动,字符后移 DelayMS(1); Write_LCD_Command(0x0C); //显示开、关光标 DelayMS(1); } void Write_freq(uint k) { uchar qian,bai,shi,ge; qian=k/1000; bai=k/100%10; shi=k/10%10; ge=k%10; Write_LCD_Command(0x86+0x40); Write_LCD_Data(0x30+qian); Write_LCD_Data(0x30+bai); Write_LCD_Data(0x30+shi); Write_LCD_Data(0x30+ge); Write_LCD_Data(0x48); Write_LCD_Data(0x5a); } void Xianshi_f() { if(WaveChoice==1) { freq=(10000000/(50000+2860*ys)); Write_freq(freq); } if(WaveChoice==2) { freq=(10000000/(50000+2300*ys)); Write_freq(freq); } if(WaveChoice==3) { freq=(10000000/(14000+2300*ys)); Write_freq(freq); } if(WaveChoice==4) { freq=(10000000/(15000+2300*ys)); Write_freq(freq); } } void Write_wave(uchar t ) { switch(t) { case 0: Write_LCD_Command(0x86); DelayMS(5); for (i=0;i Write_LCD_Data(No[i]); DelayMS(5); } break; case 1: ys=25; Write_LCD_Command(0x86); DelayMS(5); for (i=0;i Write_LCD_Data(Sin[i]); DelayMS(5); } break; case 2: ys=30; Write_LCD_Command(0x86); DelayMS(5); for (i=0;i Write_LCD_Data(Squ[i]); DelayMS(5); } break; case 3: ys=30; Write_LCD_Command(0x86); DelayMS(5); for (i=0;i Write_LCD_Data(Tri[i]);
史海拾趣
|
求救:如何将SST 89E564RD (40-c-p1 0438064-AC)变成仿真器 买了块廉价的芯片,想自己做仿真器 里面没有启动程序 想自己DIY一个仿真器 麻烦成功的大虾发一个可以用的 1电路图 2软件 3监控程序 4 其他对SST 89E564RD 用的上 [ 本帖最后由 wanzsxit ...… 查看全部问答> |
|
要求如下: 一、基本功能要求:设计并制作LED电子显示屏和控制器。 1.自制一台简易16行*32列点阵显示的LED电子显示屏; 2.自制显示屏控制器,扩展键盘和相应的接口实现多功能显示控制,显示屏显示数字和字母,亮度可用按键连续调整。 3.显示屏 ...… 查看全部问答> |
|
现在用nrf905设计开发一个射频智能卡测试平台的无线接口,为增强实验的可靠性,我们在设计了PCB环形差分天线的前提下,通过两个跳线,将芯片的ANT1和ANT2通过匹配网络再连接到SMA天线接口处,以备PCB环形天线不能满足实验要求时,可以经过跳线连接 ...… 查看全部问答> |
|
在eMbedded Visual C++中使用VC++编写的.dll的问题 我最近做个项目,在手机上显示监控图像。在eMbedded Visual C++中使用VC下的Dll出错。 提示如下: error LNK2019: unresolved external symbol __imp__MP4_ClientStopCapture referenced in function \"protected: void __thiscall CKlsDlgDlg::On ...… 查看全部问答> |
|
用总线连接方式控制HD44780液晶模块,D15-D8连接到液晶模块的DB7-DB0,A1和A0接到液晶的R/W和RS,RD和WE接到液晶的片选信号E。 哪位能给一个C语言读写IO空间的代码例子?多谢… 查看全部问答> |
|
datasheet上是说应该在下面一点共地,但是如果在附近引出来用0欧电阻接可能产生什么问题,还查到有说,用磁珠相连有选频的好处,这个“选频”怎么讲?是指可以把数字区指定频率的噪声滤掉吗?数字区的噪声频率是不是就是单片机的频率啊?谢谢指教 ...… 查看全部问答> |




