单片机定时器占空比按键调整Proteus仿真程序

2019-12-04来源: elecfans关键字:单片机  定时器  占空比  按键调整

仿真原理图如下

 

单片机源程序如下:

#include "reg52.h" 

#define uchar unsigned char 

#define uint unsigned int 

uchar COUNT100,PWMCOUNT; 

/*LCD 端口定义*/ 

sbit RS=P3^7; 

sbit RW=P3^6; 

sbit E=P3^5; 

sbit PWM=P1^0; 


sbit K1=P3^0;//加1

sbit K2=P3^1;//减1


sfr LCDData=0x80;//0x80--P0,0X90--P1,0xa0--P2,0xb0--P3 

/************液晶驱动程序********************/ 

/*延时函数 delay*/  

void delay(uint i)

{

        while(i--);                        

}


/*******液晶驱动函数*******/  

void write_instruction(uchar x) //字节写入

{

   delay(1000);

   E=0;

   RW=0;

   RS=0;

   LCDData=x;

   E=1;

   delay(20);

   E=0;

}

void write_data(uchar x)         //数据写入

{

   delay(1000);

   E=0;

   RW=0;

   RS=1;

   E=1;

   LCDData=x;

   E=0;

}

void cla(void)                           //清屏

{

        write_instruction(0x01);

void initlcd(void)                        //初始化

{

        write_instruction(0x38);  //显示模式

        delay(200);

        write_instruction(0x0c);  //设置开显示,不显示光标

        delay(200);

        write_instruction(0x06);  //写一个字符后地址指针加一

        delay(200);

        cla();

//        delay(200);

}

void write_string(uchar x,uchar *p)         //字符串写入

{

        write_instruction(x);

        while(*p!=0x00)

        {

                write_data(*p);

                p++;

                if(x++==0x8f)

                {

                        write_instruction(0xc0);

                }

        }

}

/************液晶驱动程序结束***********************/ 

void DISPPWM(uchar add,uchar p) 

        write_instruction(add); 

        write_data(p/100+0x30); 

        write_data(p%100/10+0x30); 

        write_data(p%100%10+0x30); 

        write_data('%'); 

/*******键盘驱动程序******************/ 


void pwmScanKey()

{                

                if(K1==0)

                {

                        while(K1==0);//等待按键释放 

                        if(PWMCOUNT<100)

                                PWMCOUNT=PWMCOUNT+10;

                }

                

                if(K2==0)

                {

                        while(K2==0);//等待按键释放 

                        if(PWMCOUNT>0)

                                PWMCOUNT=PWMCOUNT-10;

                }

                                

                DISPPWM(0x84, PWMCOUNT); 

                

}


void main(void) 

        initlcd();//初始化液晶 

        delay(0xffff); 

        COUNT100=0; 

        PWMCOUNT=50;

        

        write_string(0x80,"PWM="); 

        DISPPWM(0x84, PWMCOUNT); 

        

        TMOD=0x01;//设置定时器0 方式 1,16 位定时方式 

        EA=1;//打开中断允许总控制位 

        ET0=1;//打开定时器0 溢出中断允许位 

        TL0=0x66;//定时器0 的计数器赋初值, t=(2^16-a)*12/fosc,fosc=11.059sMHz 

        TH0=0xfc; 

        TR0=1;//启动定时器0 

        while(1)

        {

                pwmScanKey();


        }

                //等待中断 

        

void TIME0ISR(void)         interrupt 1 

         //PWM=0;

        TL0=0x66; 

        TH0=0xfc; 

        COUNT100++; 

        if(COUNT100==100) 

        { 

                COUNT100=0; 

        } 

        if(COUNT100

        { 

                PWM=1; 

        } 

        else 

        { 

                PWM=0; 

        } 

}

关键字:单片机  定时器  占空比  按键调整 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic481939.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:单片机低频信号发生器Proteus仿真程序
下一篇:单片机课程设计报告—温度报警器

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

avr单片机功能特性介绍
RISC 优先选取使用频率最高的简单指令,避免复杂指令:并固定指令宽度,减少指令格式和寻址方式的种类,从而缩短指令周期,提高运行速度。由于 AVR 采用了 RISC 的这种结构,使AVR系列单片机都具备了1MIPS/MHz(百万条指令每秒/兆赫兹)的高速处理能力。早期单片机主要由于工艺及设计水平不高、功耗高和抗干扰性能差等原因,所以采取稳妥方案:即采用较高的分频系数对时钟分频,使得指令周期长,执行速度慢。以后的CMOS单片机虽然采用提高时钟频率和缩小分频系数等措施,但这种状态并未被彻底改观(51以及51兼容)。此间虽有某些精简指令集单片机(RISC)问世,但依然沿袭对时钟分频的作法。AVR单片机的推出,彻底打破这种旧设计格局,废除
发表于 2019-12-14
avr单片机功能特性介绍
avr单片机按键程序
  什么是avr单片机  AVR单片机是1997年由ATMEL公司研发出的增强型内置Flash的RISC(Reduced InstrucTIon Set CPU) 精简指令集高速8位单片机。可以广泛应用于计算机外部设备、工业实时控制、仪器仪表、通讯设备、家用电器等各个领域。AVR单片机是 Atmel 公司 1997 年推出的 RISC 单片机。RISC(精简指令系统计算机)是相对于CISC(复杂指令系统计算机)而言的。RISC 并非只是简单地去减少指令,而是通过使计算机的结构更加简单合理而提高运算速度的。  RISC 优先选取使用频率最高的简单指令,避免复杂指令:并固定指令宽度,减少指令格式和寻址方式的种类,从而缩短指令周期,提高
发表于 2019-12-14
avr单片机按键程序
三分钟告诉你:AVR单片机的熔丝与解锁
AVR单片机的熔丝位配置是AVR单片机初学者很容易出错的地方,其实只要注意一些事项,还是能够尽量避免单片机被锁死,即使单片机被锁死,也可以使用一些方法解锁,本文讲述我在刚开始接触AVR单片机时熔丝位配置出现的一些问题。1、AVR单片机的熔丝位是比较独到的特征,可以控制系统的时钟,JTAG调试、看门狗、芯片加密等等。图1是progisp软件,对于初学者来说,对熔丝位不熟悉,可以先将2处的编程熔丝对勾去掉,这样在编程的时候,就不会对熔丝位进行编程,单片机出厂的默认设置就可以使用。点击1处进入熔丝位配置界面。图1图2为位配置方式,这里的每一位都不能随意点击,尤其是熔丝低位控制时钟的地方,一般来说,直接对位进行配置并不安全,一定要确定是
发表于 2019-12-14
三分钟告诉你:AVR单片机的熔丝与解锁
avr单片机和stm32区别与优缺点分析
  摘要:avr单片机和stm32单片机是目前使用较广泛的单片机,那么avr单片机和stm32单片机有什么区别呢?有什么优劣势呢?  一、AVR单片机介绍  AVR单片机是1997年由ATMEL公司研发出的增强型内置Flash的RISC(Reduced InstrucTIon Set CPU) 精简指令集高速8位单片机。可以广泛应用于计算机外部设备、工业实时控制、仪器仪表、通讯设备、家用电器等各个领域。  avr单片机特点:  1. avr系列没有类似累加器A的结构,它主要是通过R16~R31寄存器来实现A的功能。在avr中,没有像51系列的数据指针DPTR,而是由X(由 R26、R27组成)、Y(由R28、R29组成)、Z
发表于 2019-12-14
AVR系列单片机的主要特性及选型
AVR单片机是ATMEL公司研制开发的一种新型单片机,它与51单片机、PIC单片机相比具有一系列的优点:在相同的系统时钟下AVR运行速度最快;芯片内部的Flsah、EEPROM、SRAM容量较大;所有型号的Flash、EEPROM都可以反复烧写、全部支持在线编程烧写(ISP);多种频率的内部RC振荡器、上电自动复位、看门狗、启动延时等功能,零外围电路也可以工作;每个IO口都可以以推换驱动的方式输出高、低电平,驱动能力强;内部资源丰富,一般都集成AD、DA模数器;PWM;SPI、USART、TWI、I2C通信口;丰富的中断源等。目前支持AVR单片机编译器的语言主要有汇编语言、C语言、BASIC语言等。其中C编译器主要有
发表于 2019-12-14
AVR系列单片机的主要特性及选型
如何设计一个以AVR单片机为控制芯片的电子镇流器?
引言电子镇流器是新型节能产品,不仅能带动一些照明灯具,还可以和一些紫外灯结合在一起,对于空气净化和水源净化都有着非常大的作用。当前,全世界都在大力提倡环境保护,电子镇流器间接地为环保提供了原动力。AVR单片机是一款性价比较高的单片机,用这种单片机来对电子镇流器进行调光和时间采样非常合适,首先是AVR单片机本身较稳定,抗干扰能力比较强,其次是其本身的Harvard结构使得运行速度比较快,数据回读时间较快,可以实现实时在线控制。1 AVR单片机介绍1.1 AVR单片机的特点与以往的8位单片机相比,AVR单片机采用Harvard结构,也就是程序总线和数据总线分开,并采用两级流水线,具备1MIPS/MHz的高速运行处理能力。片内集成多种
发表于 2019-12-14
如何设计一个以AVR单片机为控制芯片的电子镇流器?
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 EEWORLD.com.cn, Inc. All rights reserved