历史上的今天
今天是:2024年11月07日(星期四)
2019年11月07日 | 单片机波形发生器源码
2019-11-07 来源:51hei
程序源码
#include #include #include #define uchar unsigned char #define uint unsigned int unsigned long Result,i; sbit SDA=P1^1; //PCF8591 接口 sbit SCL=P1^0; unsigned int a=0; //波形采样点值 unsigned int b=0; unsigned int c=0; unsigned int bx_chang=0; unsigned int n=40; //频率计算值 unsigned char TH; unsigned char TL; unsigned int mode=0; //0为调节幅度 1为调节频率 unsigned int fd=6; //幅度初值 3.0V unsigned int x; //采样点的间隔 unsigned int u; //lcd刷屏变量 //************* sbit CS =P3^5; //LCD接口 sbit SID=P3^6; sbit SCLK=P3^7; sbit PSB=P1^5; //************* sbit p20=P2^0; //波形调节 sbit p21=P2^1; //增加 频率、幅度 sbit p22=P2^2; //减少 频率、幅度 sbit p32=P3^2; //频率幅度选择 //sin波形数组 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,0xDF,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 delay(unsigned int z) //延迟函数 { unsigned int x,y; for(x=z;x>0;x--) for(y=125;y>0;y--) ; } //***************************************************LCD显示函数组 void SendByte(unsigned char Dbyte) //LCD字节传送 { unsigned char i; CS=1; for(i=0;i<8;i++) { SCLK = 0; if((Dbyte< SID=1; else SID=0; SCLK = 1; SCLK = 0; } CS=0; } void Lcd_WriteCmd(unsigned char Cbyte ) //LCD的数据与指令传送 { delay(10); SendByte(0xf8); SendByte(0xf0&Cbyte); SendByte(0xf0&(Cbyte<<4)); } void Lcd_WriteData(unsigned char Dbyte ) { delay(10); SendByte(0xfa); SendByte(0xf0&Dbyte); SendByte(0xf0&(Dbyte<<4)); } void InitLCD() //LCD初始化 { Lcd_WriteCmd(0x30); Lcd_WriteCmd(0x06); Lcd_WriteCmd(0x0c); Lcd_WriteCmd(0x04); Lcd_WriteCmd(0x01); Lcd_WriteCmd(0x02); Lcd_WriteCmd(0x80); } void xianshi(unsigned char x,unsigned char y,unsigned char *stri) //LCD数据传送地址 { if(x==1) Lcd_WriteCmd(0x80+y-1); else if(x==2) Lcd_WriteCmd(0x90+y-1); else if(x==3) Lcd_WriteCmd(0x88+y-1); else if(x==4) Lcd_WriteCmd(0x98+y-1); while(*stri>0) { Lcd_WriteData(*stri); stri++; } } //**************************************************** void delayp() //延迟函数 {;;} void delay_1ms(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--) ; } //****************************************I2C协议 void start()//开始信号 { SDA=1; delayp(); SCL=1; delayp(); SDA=0; delayp(); } void stop() //停止信号 { SDA=0; delayp(); SCL=1; delayp(); SDA=1; delayp(); } void respons()//应答 相当于一个智能的延时函数 { uchar i; SCL=1; delayp(); while((SDA==1)&&(i<250)) i++;
史海拾趣
|
我在学习Altium Designer 6.9时在原件库这里有的原件有封装图样而又的却没有(如图1;2)。我也尝试在网上找出答案,但没有结果;我又尝试阅读软件自带的help也没能找出答案。谁有好主意能告诉我,我应查些什么资料或是这个问题应怎样解决。谢谢大 ...… 查看全部问答> |
|
windows ce 5.0 购买问题 急求 偶想买windows ce 卖方说里面有bsp pb5.0 evc 我想知道我只够买windows ce bsp pb5.0 evc 这些在网上可以免费下载么 请求各位大侠帮帮在下了… 查看全部问答> |
|
“symbol referencing errors”的解决方法(转) 原文出处 http://www.hellodsp.com/bbs/viewthread.php?tid=16417&highlight=ERROR 经常看到朋友有问到这一个错误,\"error: symbol referencing errors\",下面我们以一个会员朋友遇到的问题为例讲述解决方法,其实非常简单。首先我们 ...… 查看全部问答> |
|
我用的自己画的原理图和pcb库,对应的元件已经关联,但是在导入到pcb时总说有东西不匹配,还提示unknown pin,始终找不到原因… 查看全部问答> |
|
static const unsigned char g_pucFont[96][5] ={ { 0x00, 0x00, 0x00, 0x00, 0x00 }, // \" \" { 0x00, 0x00, 0x4f, 0x00, 0x00 }, // ! { 0x00, 0x07, 0x00, 0x07, 0x00 }, // \" &n ...… 查看全部问答> |
|
作者:李强,华清远见嵌入式学院讲师。转载自http://www.embedu.org/Column/Column338.htm问题来源:在讲授Linux初级驱动的时候,我发现困惑很多同学的是不真正理解从应用层到我们自己所写的驱动层的调用过程,所以写此文章来大概描述。首先我们知道 ...… 查看全部问答> |
|
电源设计一直是工程师面对的一个难题,随着全球节能环保意识的提升, 设计简捷、高效、轻巧的绿色电源成为工程师的首要任务,为了帮助工程师解决这方面的难题,TI推出了一本电子书叫做《电源开关设计秘笈30例》,对电源开关设计技巧做出了详细的说 ...… 查看全部问答> |
|
const UART_DCM_TBL tbl[72] = { {1.000, 0, 1}, {1.067, 1, 15}, {1.071, 1, 14}, {1.077, 1, 13}, {1.083, 1, 12}, {1.091, 1, 1 ...… 查看全部问答> |
|
flash擦除例程如下,其中 /* Wait for erase to complete */为什么if (*pdata & 0x80)就能判断擦除完成? while (1) & ...… 查看全部问答> |




