www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]四、ATMEGA16的定時(shí)/計(jì)數(shù)器四—(03)、PWM測(cè)試實(shí)驗(yàn)手控PWM測(cè)試實(shí)驗(yàn)定時(shí)器T2通過(guò)比較寄存器OCR2后從OC2腳(PD7)輸出PWM信號(hào),從000~255共分256級(jí),對(duì)應(yīng)的輸出電壓為0.00~5.00V下面是圖片~原理以前早就說(shuō)過(guò)了~~不再贅

 

四、ATMEGA16的定時(shí)/計(jì)數(shù)器

四—(03)、PWM測(cè)試實(shí)驗(yàn)

手控PWM測(cè)試實(shí)驗(yàn)
定時(shí)器T2通過(guò)比較寄存器OCR2后從OC2腳(PD7)輸出PWM信號(hào),從000~255共分256級(jí),對(duì)應(yīng)的輸出電壓為0.00~5.00V

下面是圖片~原理以前早就說(shuō)過(guò)了~~不再贅述~~





然后就是程序:

不過(guò)從現(xiàn)在開(kāi)始使用模塊化變成了~~你懂得,為的就是用起來(lái)方便~~

這里是主函數(shù):

//------------------------------------------------------------------------------
//手控PWM測(cè)試實(shí)驗(yàn)
//定時(shí)器T2通過(guò)比較寄存器OCR2后從OC2腳(PD7)輸出PWM信號(hào),從000~255共分256級(jí),對(duì)應(yīng)的輸出電壓為0.00~5.00V
#include"ioavr.h"
#include"intrinsics.h"
#include"lcdinit.h"
#include"delayics.h"
#include"bitics.h"
//------------------------------------------------------------------------------
uchar __flash title[]={"PWM Test"};
uchar __flash test[]={" OCR2:0000.00V"};
uchar wide;
//------------------------------------------------------------------------------
//端口初始化函數(shù)
void port_init()
{
DDRA=0XFF;
PORTA=0X00;
DDRB=0XFF;
PORTB=0X00;

DDRD=0X80;
__no_operation();
PORTD=0X70;
}
//------------------------------------------------------------------------------
//定時(shí)器2初始化函數(shù)
voidtimer2_init()
{
TCNT2=0X01;//TCNT2的初值為0X01
OCR2=0XFF;//輸出比較寄存器初值為0XFF
TCCR2=0X61;//T2工作在相位修正PWM模式,沒(méi)有預(yù)分頻
}
//------------------------------------------------------------------------------
//芯片初始化函數(shù)
void device_init()
{
port_init();
timer2_init();
TIMSK=0X00;
}
//------------------------------------------------------------------------------
//按鍵S1檢測(cè)函數(shù)
voids1_scan()
{
if(GET_BIT(PIND,4)==0)
{
delay_ms(2);
{
if(GET_BIT(PIND,4)==0)
{
if(wide<255)
wide++;
//delay_ms(50);
while(!GET_BIT(PIND,4));//等待松手?。?!
}
}
}
}
//------------------------------------------------------------------------------
//按鍵S2檢測(cè)函數(shù)
voids2_scan()
{
if(GET_BIT(PIND,5)==0)
{
delay_ms(2);
if(GET_BIT(PIND,5)==0)
{
if(wide>0)
wide--;
//delay_ms(50);
while(!GET_BIT(PIND,5));//等待松手~~~~
}
}
}
//------------------------------------------------------------------------------
//main
voidmain()
{
uint voltage;
device_init();
//delay_ms(40);
lcd_init();
lcd_display_chars(0x80,title,8);
lcd_display_chars(0x80+0x40,test,16);
while(1)
{
s1_scan();
s2_scan();
lcd_display_onechar(0x80+0x40+6,(wide/100)+0x30);
lcd_display_onechar(0x80+0x40+7,(wide0/10)+0x30);
lcd_display_onechar(0x80+0x40+8,(wide)+0x30);
OCR2=wide;

voltage=(uint)wide;
voltage=(voltage*196)/100;
lcd_display_onechar(0x80+0x40+11,(voltage/100)+0x30);
lcd_display_onechar(0x80+0x40+13,(voltage0/10)+0x30);
lcd_display_onechar(0x80+0x40+14,(voltage)+0x30);
}
}

LCD初始化函數(shù):以后就一直用這個(gè)了:記住:(我也是花了時(shí)間正好的~~當(dāng)時(shí)電腦還特別不給力,真他媽的想換了~~擦,不過(guò)又讓我給修復(fù)好了~~爽歪歪啊)

//------------------------------------------------------------------------------
//LCD1602的初始化程序—可調(diào)用函數(shù)
#include"ioavr.h"
#include"intrinsics.h"
#include"delayics.h"
#include"bitics.h"
//------------------------------------------------------------------------------
typedef unsigned char uchar;
typedef unsigned intuint;
//------------------------------------------------------------------------------
//RS、RW、EN引腳輸出高低電平的宏定義
#define lcd_rs_1SET_BIT(PORTB,0)
#define lcd_rs_0CLR_BIT(PORTB,0)
#define lcd_rw_1SET_BIT(PORTB,1)
#define lcd_rw_0CLR_BIT(PORTB,1)
#define lcd_en_1SET_BIT(PORTB,2)
#define lcd_en_0CLR_BIT(PORTB,2)
//------------------------------------------------------------------------------
#define data_port PORTA
#define busy0x80
//------------------------------------------------------------------------------
//LCD寫(xiě)數(shù)據(jù)函數(shù)
void lcd_write_data(uchar dat)
{
lcd_rs_1;
lcd_rw_0;
data_port=dat;
delay_ms(1);
lcd_en_1;
delay_ms(1);
lcd_en_0;
}
//------------------------------------------------------------------------------
//LCD寫(xiě)指令函數(shù)
voidlcd_write_command(uchar com)
{
lcd_rs_0;
lcd_rw_0;
data_port=com;
delay_ms(1);
lcd_en_1;
delay_ms(1);
lcd_en_0;
}
//------------------------------------------------------------------------------
//LCD初始化函數(shù)
void lcd_init()
{
lcd_write_command(0x01);
delay_ms(1);
lcd_write_command(0x38);
delay_ms(1);
lcd_write_command(0x0c);
delay_ms(1);
lcd_write_command(0x06);
delay_ms(1);
}
//------------------------------------------------------------------------------
//LCD顯示一個(gè)字節(jié)函數(shù)
voidlcd_display_onechar(uchar add,uchar dat)
{
lcd_write_command(add);
delay_ms(1);
lcd_write_data(dat);
delay_ms(1);
}
//------------------------------------------------------------------------------
//LCD顯示多個(gè)字節(jié)函數(shù)
voidlcd_display_chars(uchar add,uchar __flash *s,uchar num)
{
uchar i;
lcd_write_command(add);
for(i=0;i

#ifndef __lcdinit_h
#define __lcdinit_h
typedef unsigned char uchar;
typedef unsigned intuint;
//------------------------------------------------------------------------------
externvoidlcd_write_data(uchar dat);//LCD寫(xiě)數(shù)據(jù)函數(shù)
externvoidlcd_write_command(uchar com);//LCD寫(xiě)指令函數(shù)
externvoidlcd_init();//LCD初始化函數(shù)
externvoidlcd_display_onechar(uchar add,uchar dat);//LCD顯示一個(gè)字節(jié)函數(shù)
voidlcd_display_chars(uchar add,uchar __flash *s,uchar num);//LCD顯示多個(gè)字節(jié)函數(shù)
#endif

然后貼張圖片~~看看我都用到了哪些程序模塊~~

 

 

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

Holtek推出新一代無(wú)刷直流電機(jī) (BLDC) 控制專用單片機(jī) HT32F65233。采用 Arm? Cortex?-M0+ 低功耗內(nèi)核, 具備 2.5 V~5.5 V 寬電壓操作。系統(tǒng)電壓為 5 V 時(shí),可獲得更高的...

關(guān)鍵字: BLDC單片機(jī) 電機(jī)驅(qū)動(dòng) 計(jì)數(shù)器

你可能會(huì)想象他們使用先進(jìn)的人工智能相機(jī)來(lái)計(jì)算訪客人數(shù),但實(shí)際上,一個(gè)簡(jiǎn)單的基于傳感器的系統(tǒng)就能有效地完成這項(xiàng)工作!通過(guò)在入口和出口點(diǎn)放置紅外傳感器,這些系統(tǒng)檢測(cè)移動(dòng)方向并保持準(zhǔn)確計(jì)數(shù)。不需要花哨的技術(shù)。

關(guān)鍵字: Arduino IR傳感器 計(jì)數(shù)器

該項(xiàng)目利用OLED顯示器和兩個(gè)輸入開(kāi)關(guān),允許用戶增加屏幕上顯示的兩個(gè)數(shù)字(10和單位)。代碼由設(shè)置和循環(huán)函數(shù)組成,用于管理顯示和開(kāi)關(guān)輸入。

關(guān)鍵字: OLED 顯示器 計(jì)數(shù)器

在數(shù)字電路設(shè)計(jì)中,計(jì)數(shù)器是一種基礎(chǔ)的數(shù)字電路組件,用于記錄并顯示脈沖信號(hào)的數(shù)量或頻率。4進(jìn)制計(jì)數(shù)器,即模4計(jì)數(shù)器,是一種特殊的計(jì)數(shù)器,其計(jì)數(shù)范圍從0到3,共4個(gè)狀態(tài)。本文將深入探討如何結(jié)合D觸發(fā)器與寄存器來(lái)實(shí)現(xiàn)一個(gè)4進(jìn)制...

關(guān)鍵字: D觸發(fā)器 寄存器 計(jì)數(shù)器

在現(xiàn)代電子工程中,計(jì)數(shù)器作為數(shù)字系統(tǒng)中的基本構(gòu)件,扮演著舉足輕重的角色。它們能夠精確地記錄并顯示脈沖的數(shù)量,廣泛應(yīng)用于時(shí)鐘信號(hào)生成、頻率測(cè)量、狀態(tài)機(jī)實(shí)現(xiàn)以及定時(shí)控制等場(chǎng)景。本文旨在探討如何利用Verilog這一硬件描述語(yǔ)...

關(guān)鍵字: Verilog 計(jì)數(shù)器

74LS192是一款廣泛應(yīng)用在數(shù)字電子系統(tǒng)中的同步十進(jìn)制可逆計(jì)數(shù)器集成電路,屬于美國(guó)德州儀器(TI)早期推出的7400系列TTL邏輯家族的一員。該芯片設(shè)計(jì)為四位二進(jìn)制計(jì)數(shù)器,并因其特殊的十進(jìn)制計(jì)數(shù)特性以及雙向計(jì)數(shù)能力而廣...

關(guān)鍵字: 74ls192 計(jì)數(shù)器

2023年11月28日 – 提供超豐富半導(dǎo)體和電子元器件?的業(yè)界知名新品引入 (NPI) 代理商貿(mào)澤電子 (Mouser Electronics) 宣布與全球工業(yè)自動(dòng)化領(lǐng)域知名供應(yīng)商Siemens簽訂代理協(xié)議。Sieme...

關(guān)鍵字: 工業(yè)自動(dòng)化 人機(jī)接口 計(jì)數(shù)器

外部輸入、輸出繼電器、內(nèi)部繼電器、定時(shí)器、計(jì)數(shù)器等器件的接點(diǎn)可多次重復(fù)使用,無(wú)需用復(fù)雜的程序結(jié)構(gòu)來(lái)減少接點(diǎn)的使用次數(shù)。

關(guān)鍵字: plc編程 定時(shí)器 計(jì)數(shù)器

單片機(jī)可以通過(guò)“定時(shí)/計(jì)數(shù)模式選擇位C/T”令定時(shí)/計(jì)數(shù)器工作于定時(shí)或計(jì)數(shù)模式下,也可通過(guò)“工作方式選擇位M1M0”設(shè)定其工作方式。C/T和M1M0等與定時(shí)/計(jì)數(shù)器有關(guān)的位在寄存器TCON或TMOD中,見(jiàn)表4-8和表4-...

關(guān)鍵字: 寄存器 計(jì)數(shù)器 定時(shí)器

在家電產(chǎn)品和工業(yè)應(yīng)用系統(tǒng)中,定時(shí)和計(jì)數(shù)是兩種常用的功能,如:微波爐加熱計(jì)時(shí)和流水線上產(chǎn)品數(shù)目統(tǒng)計(jì)等。MCS-51單片機(jī)內(nèi)部集成的兩個(gè)可編程定時(shí)/計(jì)數(shù)器T0和T1使用靈活、方便,在儀器儀表等工業(yè)產(chǎn)品中應(yīng)用廣泛。

關(guān)鍵字: 計(jì)數(shù)器 定時(shí)器 單片機(jī)
關(guān)閉
關(guān)閉