資源簡介
單片機與TLC5615組成的波形發生器。能產生周期可調,幅值可調的正弦波,并通過虛擬示波器觀察波形的周期是否正確。使用keil和proteus軟件進行仿真實現。

代碼片段和文件信息
#include?//頭文件
#include
#define?uchar?unsigned?char?//宏定義
#define?uint??unsigned?int
uchar?code?table[]=“0123456789ABCDEF?“?;??//顯示的字母
uchar?code?table1[]=“V:?T:“?;
//LCD1602
sbit?lcdrs=P3^0;?//寄存器選擇引腳
sbit?lcdwr=P3^1;?//讀寫引腳
sbit?lcde=P3^2;??//片選引腳
//TLC5615
sbit?sclk=P1^0;//sclk的上升沿把數據移入輸入寄存器
sbit?cs=P1^1;??//cs的跳變發生在sclk輸入低電平
sbit?din=P1^2;?//cs的上升沿把數據從輸入寄存器存入Dac寄存器開始轉化//最高位在前
uchar?Key_Value;??//讀出的鍵值
uchar?code?sine_tab[]={
//輸出電壓從0到最大值(正弦波1/4部分)
0x800x830x860x890x8d0x900x930x960x990x9c
0x9f0xa20xa50xa80xab0xae0xb10xb40xb70xba
0xbc0xbf0xc20xc50xc70xca0xcc0xcf0xd10xd4
0xd60xd80xda0xdd0xdf0xe10xe30xe50xe70xe9
0xea0xec0xee0xef0xf10xf20xf40xf50xf60xf7
0xf80xf90xfa0xfb0xfc0xfd0xfd0xfe0xff0xff
0xff0xff0xff0xff
//輸出電壓從最大值到0(正弦波1/4部分)
0xff0xff0xff0xff0xff0xff0xfe0xfd0xfd0xfc
0xfb0xfa0xf90xf80xf70xf60xf50xf40xf20xf1
0xef0xee0xec0xea0xe90xe70xe50xe30xe10xde
0xdd0xda0xd80xd60xd40xd10xcf0xcc0xca0xc7
0xc50xc20xbf0xbc0xba0xb70xb40xb10xae0xab
0xa80xa50xa20x9f0x9c0x990x960x930x900x8d
0x890x860x830x80
//輸出電壓從0到最小值(正弦波1/4部分)
0x800x7c0x790x760x720x6f0x6c0x690x660x63
0x600x5d0x5a0x570x550x510x4e0x4c0x480x45
0x430x400x3d0x3a0x380x350x330x300x2e0x2b
0x290x270x250x220x200x1e0x1c0x1a0x180x16
0x150x130x110x100x0e0x0d0x0b0x0a0x090x08
0x070x060x050x040x030x020x020x010x000x00
0x000x000x000x00
//輸出電壓從最小值到0(正弦波1/4部分)
0x000x000x000x000x000x000x010x020x020x03
0x040x050x060x070x080x090x0a0x0b0x0d0x0e
0x100x110x130x150x160x180x1a0x1c0x1e0x20
0x220x250x270x290x2b0x2e0x300x330x350x38
0x3a0x3d0x400x430x450x480x4c0x4e0x510x55
0x570x5a0x5d0x600x630x660x690x6c0x6f0x72
0x760x790x7c0x80};
void?delay(uchar?x)?//延時子函數
{
????uchar?ij;
????for(i=x;i>0;i--)
????for(j=0;j<=65;j++);????
}
void?Delay_1ms(uint?x)//1ms延時
{
uchar?ij;
for(j=0;j for(i=0;i<=148;i++);
}
void?write_com(uchar?com)?//寫指令子函數??
{???????//根據1602液晶顯示器協議編寫
????P0=com;???
????lcdrs=0;
????lcdwr=0;
????Delay_1ms(5);
????lcde=0;
????Delay_1ms(5);
????lcde=1;?
}
void?write_dat(uchar?dat)?//寫數據子函數
{
????P0=dat;
????lcdrs=1;
????lcdwr=0;
????Delay_1ms(5);
????lcde=0;
????Delay_1ms(5);
????lcde=1;
}
void?init()????//初始化子函數
{
????write_com(0x01);?//清屏
????write_com(0x3f);?//功能設置
????write_com(0x0d);?//顯示控制
????write_com(0x06);?//輸入方式設置
}
/********************************************************************
*?名稱?:?Keyscan()
*?功能?:?實現按鍵的讀取。?
***********************************************************************/
uchar?Keyscan(void)
{
uchar?n;
//掃描第一行
P2=0xfe;
n=P2;
n&=0xf0;
if(n!=0xf0)
{
? Delay_1ms(20);
? P2=0xfe;
? n=P2;
? n&=0xf0;
? if(n!=0xf0)
{
??? switch(n)
{
???? case(0xe0):return(7);break;
???? case(0xd0):retur
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????110734??2014-12-31?19:27??graph2.DSN
?????文件?????????840??2014-12-31?19:27??graph2.PWI
?????文件??????110734??2014-12-31?19:19??Last?Loaded?graph2.DBK
?????目錄???????????0??2014-12-27?20:36??prject\
?????文件????????7189??2014-12-31?19:26??prject\main.c
?????文件???????13962??2014-12-31?19:14??prject\main.LST
?????文件???????11224??2014-12-31?19:14??prject\main.OBJ
?????文件???????10411??2014-12-31?19:14??prject\prj
?????文件????????2828??2014-12-31?19:14??prject\prj.hex
?????文件??????????55??2014-12-31?19:14??prject\prj.lnp
?????文件???????17483??2014-12-31?19:14??prject\prj.M51
?????文件?????????433??2014-12-31?19:26??prject\prj.plg
?????文件???????56080??2014-12-31?19:26??prject\prj.uvopt
?????文件???????13397??2014-12-27?20:35??prject\prj.uvproj
?????文件???????56084??2014-12-31?00:11??prject\prj_uvopt.bak
?????文件???????????0??2014-12-27?18:17??prject\prj_uvproj.bak
?????文件????????6376??2009-05-07?14:37??prject\STARTUP.A51
?????文件???????14048??2014-12-27?19:14??prject\STARTUP.LST
?????文件?????????758??2014-12-27?19:14??prject\STARTUP.OBJ
- 上一篇:DES加密解密文檔
- 下一篇:stc 89c52 datasheet
評論
共有 條評論