娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2024年09月17日(星期二)

2020年09月17日 | 基于單片機的波形發生器仿真設計

發布者:祝福的4號 來源: 51hei關鍵字:單片機  波形發生器  寄存器 手機看文章 掃描二維碼
隨時隨地手機看文章

單片機源程序如下:

#include

#define  uchar unsigned char

#define  uint  unsigned int

#define DAdata  P0        //DA數據端口

sbit DA_S1= P2^0;   // 控制DAC0832的8位輸入寄存器,僅當都為0時,可以輸出數據(處于直通狀態),否則,輸出將被鎖存

sbit DA_S2= P2^1;   // 控制DAC0832的8位DAC寄存器,僅當都為0時,可以輸出數據(處于直通狀態),否則,輸出將被鎖存

sbit key=   P3^2;

uchar wavecount;    //'抽點'計數

uchar THtemp,TLtemp;//傳遞頻率的中間變量

uchar judge=1;      //在方波輸出函數中用于簡單判別作用

uchar waveform;            //當其為0、1、2時,分別代表三種波

uchar code freq_unit[3]={10,50,200}; //三種波的頻率單位

uchar idata wavefreq[3]={1,1,1};           //給每種波定義一個數組單元,用于存放單位頻率的個數

uchar code  lcd_hang1[]={"Sine Wave       " "Triangle Wave   " "Square Wave     " "Select Wave:    " "press No.1 key! "};

uchar idata lcd_hang2[16]={"f=    Hz        "};

uchar code waveTH[]={

    0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,

0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,

0xec,0xf6,0xf9,0xfb,0xfc,0xfc,0xfd,0xfd,0xfd,0xfe};

uchar code waveTL[]={

    0x06,0x8a,0x10,0x4e,0x78,0x93,0xa8,0xb3,0xbe,0xc6, //正弦波頻率調整中間值

0xac,0xde,0x48,0x7a,0x99,0xaf,0xbb,0xc8,0xd0,0xde,        //三角波頻率調整中間值

0x88,0x50,0x90,0x32,0x34,0xbe,0x4a,0xa3,0xe5,0x2c};

/*************************************************************************************************/

uchar code triangle_tab[]={         //每隔數字8,采取一次

0x00,0x08,0x10,0x18,0x20,0x28,0x30,0x38,0x40,0x48,0x50,0x58,0x60,0x68,0x70,0x78,

0x80,0x88,0x90,0x98,0xa0,0xa8,0xb0,0xb8,0xc0,0xc8,0xd0,0xd8,0xe0,0xe8,0xf0,0xf8,0xff,

0xf8,0xf0,0xe8,0xe0,0xd8,0xd0,0xc8,0xc0,0xb8,0xb0,0xa8,0xa0,0x98,0x90,0x88,0x80,

0x78,0x70,0x68,0x60,0x58,0x50,0x48,0x40,0x38,0x30,0x28,0x20,0x18,0x10,0x08,0x00};

uchar code sine_tab[256]={

//輸出電壓從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,0x89,0x86,0x83,0x80,

//輸出電壓從0到最小值(正弦波1/4部分)

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,

//輸出電壓從最小值到0(正弦波1/4部分)

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(uchar z)          

{

    uint x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

void triangle_out()        //三角波輸出

{

    DAdata=triangle_tab[wavecount++];

if(wavecount>64) wavecount=0;

DA_S1=0;  //打開8位輸入寄存器

DA_S1=1;  //關閉8位輸入寄存器

}

void sine_out()         //正弦波輸出

{

    DAdata=sine_tab[wavecount++];

DA_S1=0;  //打開8位輸入寄存器

DA_S1=1;  //關閉8位輸入寄存器

}

void square_out()  //方波輸出

{

    judge=~judge;

    if(judge==1) DAdata=0xff;

else  DAdata=0x00;

DA_S1=0;  //打開8位輸入寄存器

DA_S1=1;  //關閉8位輸入寄存器

}

/************1602液晶的相關函數*************/

#define lcd_ports P1

sbit rs=P2^2;

sbit rw=P2^3;

sbit lcden=P2^4;

void write_com(uchar com)

{

rs=0;        //置零,表示寫指令

lcden=0;

lcd_ports=com;

delay(5);

lcden=1;

delay(5);

lcden=0;

}

void write_date(uchar date)

{

rs=1;        //置1,表示寫數據(在指令所指的地方寫數據)

lcden=0;

lcd_ports=date;

delay(5);

lcden=1;

delay(5);

lcden=0;

}

void disp_lcd(uchar addr,uchar *temp1)

{

uchar num;

write_com(addr);

delay(1);   //延時一會兒???

for(num=0;num<16;num++)

{

write_date(temp1[num]);//或者這樣寫write_date(*(temp1+num));

delay(1);

}

}

void init_lcd()

{

//uchar num;

lcden=0;  //可有可無???

rw=0;  //初始化一定要設置為零,表示寫數據

write_com(0x38);  //使液晶顯示點陣,為下面做準備

write_com(0x0c);  //初始設置

write_com(0x06);  //初始設置

write_com(0x01);  //清零

write_com(0x80);  //使指針指向第一行第一格

    disp_lcd(0x80,&lcd_hang1[3*16]);  //在第一行顯示

    disp_lcd(0xc0,&lcd_hang1[4*16]);  //在第二行顯示

}

/********************1602液晶函數聲明結束*********************/

void main()

{

    uchar i=0;

DA_S2=0;    //使DAC寄存器處于直通狀態

DAdata=0;

DA_S1=1;    //關閉8位輸入寄存器

init_lcd();

    waveform=0;

TMOD=0x01;  //設置定時器0為16位工作方式

IT0=1;      //設置外部中斷0為下降沿觸發

ET0=1;      //開定時器中斷

EX0=1;

EA=1;

while(1)

{

//DAout(0xff);           //可輸出TTL波形

//DAout(0x80);

//T_temp=32;

}

}         


void timer0() interrupt 1

{

TH0=THtemp;

TL0=TLtemp;

if(waveform==0)      sine_out();

else if(waveform==1) triangle_out();

else if(waveform==2) square_out();

}

void key_int0() interrupt 0

{

    uchar keytemp;

uint total_freq; //總頻率

EA=0; TR0=0;     //關總中斷與定時器

delay(5);       //延時夠嗎???

if(key==0)       //確實有按鍵按下而引發中斷

{

keytemp=P3&0xf0; //獲取P3口高四位的值

switch(keytemp)

{

    case 0xe0:        //選擇波形

     waveform++;

if(waveform>2) waveform=0;

break;

    case 0xd0:  //頻率按規定單位依次增加

     wavefreq[waveform]++;

if(wavefreq[waveform]>10) wavefreq[waveform]=1; // /*這邊要用“>10”,因為它比“=11”可靠

break;         //   性更高,使加數有個上限,不會一直加下去*/

……………………


關鍵字:單片機  波形發生器  寄存器 引用地址:基于單片機的波形發生器仿真設計

上一篇:51單片機水溫控制LCD顯示加VB上位機溫度曲線繪制
下一篇:自制單片機STC12C5A60S2+1602電壓表

推薦閱讀

PwC發布了新報告“AI和機器人將定義新醫療衛生”。我們正在進入醫療衛生的新時代。健康問題對我們每個人來說,無論是作為個人和整個社會都很重要。它是經濟、政治、社會和環境繁榮的核心。另一方面,醫療保健也是世界上最大的行業之一?,F代衛生系統可以治療比以往更多的疾病,新技術正在為舊療法帶來創新。但是,重要的質量、訪問和成本問題仍然存在,我...
寫中斷需要用到定時器:1.設置它的寄存器TMOD2.THx和TLx的值(這個是設置定時器的初值)3.打開定時器(TRx=1)-----------------------------注:串行口兩個寄存器SCON(串行端口控制器)和PCON4.SCON的格式:SM0 SM1 SM2 REN TB8 RB8 TI RI(1)SM0和SM1用來設置串行口的工作方式:0,1,2,3一共4中工作方式。(2)SM2僅用于方式2和方式3的...
示波器是一種用途十分廣泛的電子測量儀器。它能把肉眼看不見的電信號變換成看得見的圖象,便于人們研究各種電現象的變化過程。示波器利用狹窄的、由高速電子組成的電子束,打在涂有熒光物質的屏面上,就可產生細小的光點。在被測信號的作用下,電子束就好像一支筆的筆尖,可以在屏面上描繪出被測信號的瞬時值的變化曲線。利用示波器能觀察各種不同信號幅度...
一、ARM體系的CPU有以下7種工作模式:1、用戶模式(usr):正常的程序執行狀態2、快速中斷模式(fiq):3、中斷模式(irq):4、管理模式(svc):操作系統使用的保護模式5、系統模式(sys):運行具有特權的操作系統任務6、數據訪問終止模式(abt):數據或指令預取終止時進入該模式7、未定義指令終止模式(und):未定義的指令執行時進入該模式注解:可...

史海拾趣

問答坊 | AI 解惑

EEWorld 社區威望積分規則

  EEWorld積分種類如下:   “芯積分”積分規則:越活躍,分越高,可兌換實物禮品!        >>芯積分兌換商城 “E金幣”積分規則:一個可以當錢花的積分! & ...…

查看全部問答∨

幫朋友問題 關于LCD顯示的

不知道哪位好心的人可以幫幫我 我真的做不出來 以下是用AVR做的 包含LCD module (LCD 可顯示兩行) 這個部分已經做出來了 一定正確 題目 按A開始計算時間從00:00.0開始 到99:59.9 再按一次A時間會停止 如時間跑到35:11.9時 按A會停在35:11.9再 ...…

查看全部問答∨

問個adc很基礎的問題

這幾個概念采樣序列,多通道輸入我理解不到位。 看了下幾種adc的轉換原理,都是一個模擬信號,這個多通道意思是芯片可以同時采樣多個模擬信號嗎?還有采樣序列發生器起什么作用?…

查看全部問答∨

【求助】關于延時的問題!

我用C寫延時子程序,請問怎么樣才可以算出延時了多久呀!好像430講時序方面也講的很少,哪位高手有這方面的資料或程序,可否借光參考一下?!?

查看全部問答∨

項目外包:使用CPLD設計三相交流電流電壓源。

使用CPLD設計的三相交流電流電壓信號源,有原理圖。已經實現了全部功能。本項目是使用在三相電測標準源上的。 但是信號頻率不穩定。目前達到的是:49.99XX,要求達到49.9999±1個字。希望高手來幫忙解決。 注意本工程只響應有電測行業設計經驗的工 ...…

查看全部問答∨

LPC2131的ADC與SPI

ZLG的深入淺出ARM7中采用LPC2131。本人看了 SPI 后又去看了下ADC。 單獨的 SPI 沒有問題。然后我想用ADC后把顯示的數據通過SPI,然后在LED顯示。發現只要在 AD的有關引腳有電壓輸入就會使現實亂碼。想請教一下是不是 ADC會影響 SPI 。  其中 ...…

查看全部問答∨

LM4F232系列模塊的使用

[local]1[/local]之前用過MDK4.22版的 反正覺得有點問題,編譯的時候 似乎沒有錯會報錯  于是就換成了4.21版本的 附件是一個被壓縮的工程包,此工程包過對PWM、定時器、串口、OLED(基于GR_LIB)、按鍵、LED等模 塊的使用。建工程就不說了 ...…

查看全部問答∨

磁致伸縮位移傳感器的工作原理

  磁致伸縮位移傳感器的工作原理   磁致伸縮位移傳感器又叫磁尺,是利用磁致伸縮效應研制的傳感器。磁致伸縮位移傳感器能夠適應各種惡劣的工業環境,并對位移、速度做出精確的測量,因此磁致伸縮位移傳感器在冶金、化工等領域得到廣泛的應用 ...…

查看全部問答∨

ucgui3.90a 在VC6.0上的仿真 入口函數 問題

ucgui3.90 vc6.0上仿真的入口函數是MainTask() 但是ucgui3.90a的入口函數不一樣 我把MainTask()函數注釋掉了 編譯運行還是一樣 都是那個車速指示盤 右下角還有個導航地圖 請各位幫幫忙???        還有我單步運行時 ...…

查看全部問答∨

0-10mv交流經過運放輸出0-5v的直流

本帖最后由 dontium 于 2015-1-23 13:11 編輯 設計電路,在模電書上看到信號放大的電路,是三個運放,有沒有兩個運放的還有就是單電源運放放大的 …

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 通州市| 图们市| 承德市| 清流县| 天等县| 宁津县| 五原县| 洛扎县| 荆州市| 河北区| 武平县| 大足县| 唐山市| 寿宁县| 亳州市| 电白县| 宝鸡市| 左云县| 鲁甸县| 深水埗区| 武汉市| 牟定县| 延边| 宜兰县| 新晃| 吐鲁番市| 金堂县| 牟定县| 驻马店市| 宣城市| 甘孜| 沙田区| 渝中区| 建宁县| 专栏| 嘉义县| 庆城县| 大渡口区| 会昌县| 亳州市| 华阴市|