//将SINX 数组写入程序存储器中,不占用RAM 空间,写入后不可更改 //----------------------------------------------------------------------------------- //程序功能简介:本程序产生频率可一改变的正弦波,频率改变步长为 1HZ,初始化频率为50HZ; //程序思路: 本程序用到一个定时器------定时器0,定时器0 工作在定时方式下, // 定时向 DAC0832 送数据打点; //------------------------------------------------------ #include //51芯片管脚定义头文件 #define uchar unsigned char #define uint unsigned int #define Fosc 12000000 //晶振频率; #define ALL 65536 //定时器0 处于工作方式 1,最大基数长度 65536; uint LED4_BUF,LED2_BUF,LED3_BUF;//数码管显示缓冲变量; uint TIMER0_H,TIMER0_L; //定时器0 的初值设置; uint NUM=0; //计数变量; uint FREQ=10; //初始频率; unsigned char t,m; int temp; bit FLAG=0; //频率调节标志; //------------------------------------------------------------------------------------ // 各端口定义; //------------------------------------------------------------------------------------ sbit F_UP=P3^4; sbit F_DOWN=P3^5; //频率下调按钮; uchar code table[]={//段码表 0xc0,0xf9,0xa4,0xb0, 0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83, 0xc6,0xa1,0x86,0x8e}; uchar code SINX[]={ //输出电压从 0 到最大值(正弦波 1/4 部分) 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, //输出电压从最大值到 0(正弦波 1/4 部分) 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,...