Proteus下简单51程序设计和仿真
发布日期:2021-11-03 09:33:17
浏览次数:2
分类:技术文章
本文共 2071 字,大约阅读时间需要 6 分钟。
51单片机下定时器编译
1、Proteus下绘制原理图
新建工程后,在左侧菜单栏选择添加元件,添加如图所示的元件,单片机选AT89C51。摆放元件,用P0口控制秒位,用P2口控制毫秒位和暂停、重置功能。
2、keil uVision4下编译程序
打开keil程序,创建新工程。
新建文本将以下代码输入文本中。
#include#include sbit P20=P2^0; sbit P21=P2^1;sbit P22=P2^2;sbit P23=P2^3;sbit start=P2^4; //开始sbit reset=P2^5; //复位sbit redled=P1^0; //控制ledsbit sounder=P1^1; //控制蜂鸣器unsigned char led_times,sounder_times,sounder_flag,ge,shi,bai,qian; unsigned char code led[ ]= { 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; void display();void delay_ms(unsigned int ms) { unsigned char a; while(ms--) for(a=125;a>0;a--);}void T0_init( ) { TMOD=0x01; TH0=0xD8; //10ms定时 TL0=0xF0; EA=1; ET0=1; redled=0;//初始led不亮 sounder=0;//初始不响}void display( ){ P23=0; P0=led[0]; delay_ms(5); P23=1; P22=0; P0=led[shi]; delay_ms(5); P22=1; P21=0; P0=led[bai]|0x80; delay_ms(5); P21=1; P20=0; P0=led[qian]; delay_ms(5); P20=1;}void T0_int( ) interrupt 1 //定时器T0中断 方式1{ TH0=0xD8; TL0=0xF0; ge++; led_times++; if(led_times==50) { redled=~redled; led_times=0; sounder_times++; sounder=0; } if(sounder_times==90) { sounder=1; } if(sounder_times==110) { sounder=1; sounder_times=0; } if(ge==10) { ge=0; shi++; } if(shi==10) { shi=0; bai++; }}void main(){ T0_init( ); while(1) { display( ); while(!start)//开始/暂停键 { display( ); if(start) TR0=!TR0; } while(!reset) //清零键 { display( ); if(reset) TR0=0; qian=0; bai=0; shi=0; ge=0; } if(bai==10) { bai=0; qian++; } if(qian==5&&bai==6) { qian=0;bai=0;shi=0;ge=0; } }}
点击红框区域,选中生成HEX文件,即生成了.hex文件。
3、仿真
在Proteus中双击51单片机,将keil中生成的hex文件添加进去。
仿真结果转载地址:https://blog.csdn.net/weixin_51118019/article/details/108965420 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
感谢大佬
[***.8.128.20]2024年04月14日 02时13分35秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
LeetCode题解(0537):字符串表示的复数乘法(Python)
2019-04-26
LeetCode题解(0539):最小时间差(Python)
2019-04-26
LeetCode题解(0553):在连续除法中添加括号使结果最大(Python)
2019-04-26
LeetCode题解(0564):寻找与当前数差值最小的回文数(Python)
2019-04-26
LeetCode题解(0609):在文件路径列表中查找重复内容的文件(Python)
2019-04-26
LeetCode题解(0632):包含每个列表中至少一个整数的最小区间(Python)
2019-04-26
LeetCode题解(0647):字符串的回文子串数量(Python)
2019-04-26
LeetCode题解(0722):删除代码中的注释内容(Python)
2019-04-26
LeetCode题解(0730):字符串的不同的非空回文子序列数量(Python)
2019-04-26
LeetCode题解(0736):Lisp语法表达式解析(Python)
2019-04-26
LeetCode题解(0761):特殊的二进制序列交换后的最大值(Python)
2019-04-26
LeetCode题解(0767):重构字符串至相邻字符不相同(Python)
2021-06-29
LeetCode题解(0809):判断字符串是否由单词扩张形成(Python)
2021-06-29
LeetCode题解(0816):模糊坐标(Python)
2021-06-29
LeetCode题解(0831):隐藏邮箱地址和电话号码个人信息(Python)
2021-06-29
LeetCode题解(0833):字符串中的查找与替换(Python)
2021-06-29