linux 普通io实现pwm,用普通IO口做PWM输出 - 51单片机 - 电子工程世界-论坛 - 手机版...

本人现在想用IO口做PWM输出,频率1KHz,然后用两按键(+、-)来调节占空比0-100%,对应数码管显示000-100。

现波形是OK了,也可以调占空比,但是出现一个问题数码管显示乱七八糟,调了两天都没有调好,还请大哥们帮忙指

点。

#include

#define uint   unsigned int

#define uchar unsigned char

sbit up=P2^0;       //加1按键

sbit down=P2^1;     //减1按键

sbit pwm_out=P1^0;  //PWM输出端口

char disp=0;       //显示计数器

char pwm_disp=50;   //占空比显示单元,初始化为中间值

timer0_count=100;//定时中断计数器

uchar code disp_bit[]={0xbf,0xdf,0xef}; //数码管位码 P2.4,P2.5,P2.6

uchar code TABLE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

//数码管段码        0,1,2,3,4,5,6,7,8,9

void display();

//延时子函数

void delay(int x)

{

int i,j;

for(i=0;i

for(j=1;j<120;j++);

}

//T0定时器初使化

void init()

{

TMOD=0x01;          //T0方式1计时

TH0=(65536-8)/256;  //定时10uS

TL0=(65536-8)%256;

EA=1;               //总中断开

ET0=1;              //定时器0开

TR0=1;     //启动定时器

}

//T0定时中断子函数

void timer0() interrupt 1 using 0

{

TH0=(65536-8)/256;  //重置定时初值 10uS

TL0=(65536-8)%256;

if(pwm_disp==timer0_count )//占空比计数器等于定时中断计数器否

{

pwm_out=1;        //开通输出

}

if(timer0_count==0)   //定时中断计数器为0否

{

pwm_out=0;         //关断输出

timer0_count=100;  //重置初始值

}

timer0_count--;

}

//显示子函数

void display()

{   delay(10);

switch(disp)

{  case 0:

{

P2=0xbf;                 //P2为位码

P0=TABLE[pwm_disp/100];  //P0为段码

break;

}

case 1:

{

P2=0xdf;

P0=TABLE[(pwm_disp%100)/10];

break;

}

case 2:

{

P2=0xef;

P0=TABLE[pwm_disp%10];

break;

}

}

disp++;//显示计数器加1

if(disp>=3)//显示计数器等于3

disp=0; //则清零

}

//主程序

void main()

{

init();

while(1)

{

if(up==0)//增1键按下否

{ delay(10);

if(up==0)

{ pwm_disp++;

if( pwm_disp>100)

pwm_disp=0;

if(up==0);

}

}

if(down==0)//减1键按下否

{ delay(10);

if(down==0)

{ pwm_disp--;

if( pwm_disp==0)

pwm_disp=100;

if(down==0);

}

}

}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/486685.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从城市治理到城市“智”理,AI 不仅是城市管理的“眼睛”

来源&#xff1a;帮尼资讯部分参考来源&#xff1a;中国安防行业网&#xff0c;图片来源网络近年来&#xff0c;随着计算机视觉技术的长足进步&#xff0c;AI在城市管理领域广泛部署。其中&#xff0c;AI视频分析识别技术成为城市场景中规模最大、数量最多、落地最广泛的应用。…

python3 应用 nose_parameterized 实现unittest 参数化

一、读取变量的值&#xff0c;实现unittest 参数化 import nose_parameterized,unittestdef calc(a:int,b:int):return ab case_data [[10,20,30],[12,21,33],[15,21,36] ] class MyClass(unittest.TestCase):nose_parameterized.parameterized.expand(case_data)def test_comp…

vue data数据修改_VUE的数据响应式

什么是数据响应式&#xff1f;const vm newVUE({data:{n:0}})上面的代码中&#xff0c;如果修改vm.n&#xff0c;那么UI中的n就会通过变化来响应我&#xff0c;这就是数据响应式。VUE对data做了什么&#xff1f;当给一个vue实例传入data的时候&#xff0c;vue内部会对传入的dat…

linux使用vim开启文档,linux 配置 直接用VIM默认打开文件

方法一&#xff1a;主要 是把gedit 默认打开的文件 都改成 vim了 此方法有缺陷。推荐使用 方法二 可以指定 哪种类型文件 用VIM 默认打开。两种方法都实现了 方便打开文件 摆脱了用VIM编码 打开文件还要 输入 烦长的路径,配置如下:方法一&#xff1a;把所有 默认 用 gedit 打开…

C#多线程技术总结(异步)

我这里针对现有的C#多线程技术进行一个汇总&#xff0c;一是复习&#xff0c;二是方便索引&#xff0c;文章部份知识点来源于网络&#xff0c;非本人原创。 一、并行&#xff08;异步&#xff09;&#xff1a; 1.System.Threading.Tasks命名空间下的(TPL)&#xff1a; 1.1&…

hutool的定时任务不支持依赖注入怎么办_设计一个任务调度算法,时间轮算法,比优先队列更高效...

当年我还是个学生的时候&#xff0c;有一次去参加欢聚时代的一个面试&#xff0c;有一道面试题记忆尤新&#xff0c;让你来实现一个定时任务&#xff0c;你会怎么做&#xff1f;为了简化问题&#xff0c;我们只用考虑内存方案&#xff0c;不用考虑数据持久化。数组法最简单的&a…

蜂鸟开发板 linux,蜂鸟E203系列——Linux下运行hello world例程

创建程序在 &#xff5e;/hbird-e-sdk-master/software 路径下创建一个“helloworld”中文件夹在 &#xff5e;/hbird-e-sdk-master/software/helloworld 路径下创建文件“helloworld.c”内容如下&#xff1a;#includeint main(void){printf("hello world!");printf(…

全景解密量子信息技术:高层集中学习,国家战略,三大领域一文看懂

来源&#xff1a;智东西 内参来源&#xff1a;中国信通院 IPRdaily中文网10月16日下午&#xff0c;高层就量子科技研究相关前景举行了一次会议&#xff0c;强调当今世界正经历百年未有之大变局&#xff0c;科技创新是其中一个关键变量。要充分认识推动量子科技发展的重要性&am…

shell 脚本编写 if else then

shell 脚本编写 if else then if ....; then .... elif ....; then .... else .... fi 大多数情况下&#xff0c;可以使用测试命令来对条件进行测试。比如可以比较字符串、判断文件是否存在及是否可读等等…   通常用" [ ] "来表示条件测试。注意这里的空格很重要。…

mac怎么查看gitlab的注册邮箱_163电子邮箱怎么注册申请?手机号注册电子邮箱的小技巧...

电子邮箱帮助我们实现了无纸化&#xff0c;无需手写信件&#xff0c;通过电脑、手机输入&#xff0c;即可与收件人在网络上进行联系。电子邮箱的兴起&#xff0c;对于人与人之间的沟通和交流&#xff0c;增加了便捷性&#xff0c;促进了社会的发展与进步。目前的邮箱中&#xf…

c语言 switch案例,c语言switch case语句使用例子

c语言switch case语句使用例子发布时间&#xff1a;2020-04-23 11:48:53来源&#xff1a;亿速云阅读&#xff1a;421作者&#xff1a;小新这篇文章主要为大家详细介绍了c语言switch case语句使用例子&#xff0c;文中示例代码介绍的非常详细&#xff0c;具有一定的参考价值&…

把手机上的新浪微博客户端卸载了

因为我本身发微博的时候就是通过通过电脑上的浏览器发的&#xff0c;就连看别人发的微博也是通过浏览器发的&#xff0c;基本上也不怎么用手机客户端。反而是客户端总是推送各种新闻&#xff0c;我实在是没有这个需要&#xff0c;也完全不想被弹窗影响。 综上所述&#xff0c;因…

深度学习未来的三种方式

来源&#xff1a;海豚数据科学实验室深度学习的未来在于这三种学习模式&#xff0c;而且它们彼此之间密切相关&#xff1a;混合学习——现代深度学习方法如何跨越监督学习和非监督学习之间的边界&#xff0c;以适应大量未使用的无标签数据&#xff1f;复合学习——如何以创造性…

c 语言sort函数,C/c++语言sort函数如何使用

头文件是#include比如说数组a[5]{1,5,4,2,3};当你用sort(a,a5)时&#xff0c;就把数组a从小到大排序了for(i0;i<5;i){printf("%d \n",a[i]);}输出为1 2 3 4 5C语言中没有预置的sort函数。如果在C语言中&#xff0c;遇到有调用sort函数&#xff0c;就是自定义的一个…

android ocr识别源码_身份证识别OCR解决手动输入繁琐问题

随着互联网金融的的发展&#xff0c;越来越多的互联网金融公司都推出了自己的金融APP&#xff0c;这些APP都涉及到个人身份证信息的输入认证&#xff0c;如果手动去输入身份证号码和姓名&#xff0c;速度非常慢&#xff0c;且用户体验非常差。为了提高在手机移动终端上输入身份…

mybatis异常invalid comparison: java.util.Date and java.lang.String

原文链接&#xff1a;http://blog.csdn.net/wanghailong_qd/article/details/50673144 mybatis异常invalid comparison: java.util.Date and java.lang.String 开发中改动mapper文件后需要重新编译发布, 由于工程比较大非常耗时, 所以为方便快速测试干脆写了一个小java工程. 工…

计算机c语言等级考试PDF,国家计算机等级考试c语言精华.pdf

心之所向&#xff0c;所向披靡C 语言总复习顺序结构程序设计1.单字符输入输出&#xff1a;getchar(字符变量) &#xff1b;putchar(字符变量) &#xff1b;2.字符串输入输出&#xff1a;gets(字符数组名),puts(字符数组名)。3.格式化输入输出&#xff1a;(1)格式化输入&#xf…

什么是内卷?华为内部这篇文章读懂

来源&#xff1a;互联网坊间八卦&#xff08;ID:kekesil&#xff09;内卷的意思是明明已经靠近边界有个天花板&#xff0c;但却又不断自我激发&#xff0c;繁复化、精致化。概念的含糊其辞是无效讨论和跌入焦虑自我再生产困境的原因之一。判断内卷还是良性竞争的前置问题是回答…

锁屏界面显示某些设置已隐藏_iOS 14 隐藏功能,只要轻点手机背面就能截屏

关于 iOS 14 系统的一些功能我也为大家介绍了一些&#xff0c;iOS 14 已发布&#xff0c;界面大更新&#xff01;其实除了之外&#xff0c;iOS 14 系统还有许多隐藏的功能。那么今天我就为大家介绍 iOS 14 系统的隐藏功能之一&#xff1a;轻点背面。话不多说&#xff0c;我们先…

jacascript AJAX 学习

前言&#xff1a;这是笔者学习之后自己的理解与整理。如果有错误或者疑问的地方&#xff0c;请大家指正&#xff0c;我会持续更新&#xff01; AJAX 是 asynchronous javascript and XML 的简写&#xff0c;就是异步的 javascript 和 XML。这一技术能够向服务器请求额外的数据而…