資源簡介
用D/A轉換器輸出一個正弦波,頻率從20Hz~5KHz,采用矩陣式按鍵,由按鍵直接四位數指定頻率,8052的定時器2定時輸出。文件包含電路圖和設計程序,及全部仿真文件可直接運行。

代碼片段和文件信息
#include?
#include?
#include?
#define?uint?unsigned?int
#define?uchar?unsigned?char
#define?DAC0832?XBYTE[0x7fff]
#define?KEY_PORT???P1
uchar?code?DSY_CODE[]=
{
0x800xb10xda0xf50xff0xf50xda0xb10x800x4f0x260x0b0x010x0b0x260x4f
};
float?tdelay?;//每個點延時的時間
unsigned?char?keyNum=0xff;
unsigned?char?SetFreq_flag=0;//設置頻率的標志
uint?exchangeusuuj;
uint?mntcaaa;
uint?pinlv=1000;
uint?g_Period;
//void?DelayMS(uint?u)//延時程序單位為10微秒
//{
//? uchar?i;
//??while(u--)
//? {
// ? for(i=0;i<120;i++);
// }
//}
?void?DelayMs(?unsigned?int?ms)
{
unsigned?int?ij;
for?(i?=?0;?i? for(j=0;j<124;j++);
}
//??#define?cv?1024??//?10000次計數,60MHz時鐘時定時2mS
void?init_T2() ??//?定時器2初始化
{ T2CON?=0; ??//?設定T2自動重裝模式
T2MOD?=0;
RCAP2H?=(65536-us)/256;
RCAP2L?=(65536-us)%256;
TH2?=(65536-us)/256;
TL2?=(65536-us)%256;
ET2?=?1;??//?開T2中斷
PT2?=?1;??//T2?中斷高優先級
TR2?=?1;??//啟動T2?
}
unsigned?char?keyScan(void)?
{
??unsigned?char?key=0xff;
??unsigned?char?temptemp1temp2;
??
??KEY_PORT=0XF0;
??
??if(?(KEY_PORT&?0XF0)?!=0XF0)?
{??
EA=0;
????DelayMs(10);
?????if(?(KEY_PORT?&?0XF0)?!=0XF0)
?{
???????temp1=?KEY_PORT?&?0XF0;
??????????KEY_PORT=0X0f;
??????????DelayMs(10);
??????temp2=?KEY_PORT?&?0X0f;?
????????
??????while((KEY_PORT?&?0X0f)?!=0X0f);//等待按鍵釋放
??????
??????
??????temp=temp1|temp2;
??????
??????switch(temp)
{
?????????case?0xee:key=1;break;
?????????case?0xde:key=2;break;
?????????case?0xbe:key=3;break;
?????????case?0x7e:key=4;break;
?????????
?????????case?0xed:key=5;break;
?????????case?0xdd:key=6;break;
?????????case?0xbd:key=7;break;
?????????case?0x7d:key=8;break;??
????????????????
?????????case?0xeb:key=9;break;
?????????case?0xdb:key=0;break;
?????????case?0xbb:key=10;break;
?????????case?0x7b:key=11;break;????????
?????????case?0xe7:key=12;break;
?????????case?0xd7:key=13;break;
?????????case?0xb7:key=14;break;
?????????case?0x77:key=15;break;?
?????????
?????????default:break;????????
??????}????
?????}?
?EA=1;
??}
??return?key;?
}
void?main()
{
EA=1;
EC=1;
CR=1;
??? us=500;
g_Period=floor(1000000/pinlv?);
tdelay=g_Period/16;?//獲得每個點需要延時的時間 ????
us=5*floor(tdelay);??????//每個點需要延時多少個微秒
init_T2();??
while(1) //循環輸出正弦
??{
??keyNum=keyScan(); //按鍵選擇控制函數
if(keyNum!=0xff)
{??EA=0;
if(keyNum==10?&&?SetFreq_flag==0)??//A鍵??進入設置頻率狀態
{?
? ?? SetFreq_flag=1;
pinlv=0;
}
else?if(keyNum<10?&&?SetFreq_flag==1)//數字鍵??輸入頻率
{
pinlv=pinlv*10+keyNum;
???? ????????????
}
else?if(keyNum==10?&&?SetFreq_flag==1)//A鍵???HZ確定輸出
{???
SetFreq_flag=0;
EA=1;
}
EA=1;
us=500;
g_Period=floor(1000000/pinlv?);
tdelay=g_Period/16;?//獲得每個點需要延時的時間 ????
us=5*floor(tdelay);??????//每個點需要延時多少個微秒
init_T2();??
}
????
??
??
??for(j=0;j<16;j++)
??{
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2018-12-05?20:02??單片機作業C51\
?????文件????????1397??2018-10-27?20:20??單片機作業C51\absacc.h
?????文件???????19649??2018-10-27?20:36??單片機作業C51\Last?Loaded?zyk.pdsbak
?????文件????????1197??2018-10-27?20:21??單片機作業C51\math.h
?????文件????????3088??2018-10-27?20:24??單片機作業C51\reg51f.h
?????文件????????6376??2009-05-07?14:37??單片機作業C51\STARTUP.A51
?????文件???????14054??2018-10-27?20:24??單片機作業C51\STARTUP.LST
?????文件?????????749??2018-10-27?20:24??單片機作業C51\STARTUP.OBJ
?????文件???????19684??2018-10-27?20:38??單片機作業C51\zyk.pdsprj
?????文件????????2400??2018-12-23?14:31??單片機作業C51\zyk.pdsprj.LAPTOP-P90I1490.HP.workspace
?????文件????????3522??2018-10-27?20:17??單片機作業C51\zz.c
?????文件????????8389??2018-10-27?20:24??單片機作業C51\zz.LST
?????文件???????10347??2018-10-27?20:24??單片機作業C51\zz.OBJ
?????文件???????11334??2018-10-27?20:24??單片機作業C51\zzz
?????文件????????6475??2018-10-27?20:24??單片機作業C51\zzz.hex
?????文件??????????53??2018-10-27?20:24??單片機作業C51\zzz.lnp
?????文件???????13536??2018-10-27?20:24??單片機作業C51\zzz.M51
?????文件?????????165??2018-11-14?15:21??單片機作業C51\zzz.plg
?????文件???????71791??2018-12-05?20:02??單片機作業C51\zzz.uvgui.HP
?????文件????????5435??2018-11-14?15:24??單片機作業C51\zzz.uvopt
?????文件???????12200??2018-11-14?15:24??單片機作業C51\zzz.uvproj
?????文件???????58125??2018-10-27?20:39??單片機作業C51\zzz_uvopt.bak
?????文件???????????0??2018-10-27?20:14??單片機作業C51\zzz_uvproj.bak
- 上一篇:51單片機計算器
- 下一篇:WiFi介紹及技術原理
評論
共有 條評論