问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

以51单片机为基体 用C语言设计一个计数器 要求显示数据8位 有复位功能 时间间隔1秒 动态显示

发布网友 发布时间:2022-05-29 19:06

我来回答

3个回答

热心网友 时间:2023-11-08 07:37

void dis_cnter(void) 显示计数器值子程序开始
{uchar i; 定义字符型局部变量i
P3_7=1;P3_6=1; 消隐有效,允许显示
for(i=0;i8;i++) 循环8次
{SBUF=SEG7[cnt];while(!TI);TI=0;} 根据8个单元的计数值查表发送显示
P3_7=0; 关闭消隐,正常显示
} 显示计数器值子程序结束

void cnter(void) 计数转换子程序开始
{uchar i; 定义字符型局部变量i
for(i=0;i7;i++) 循环8次
{if(cnt9){cnt=0;cnt[i+1]++;}}若计数器某位值大于9,则该位回0,
而高位被进位加1
------------------------------------
if(cnt[7]9){for(i=0;i8;i++)cnt=0;} 若计数器最高位值大于9,则计数器全清0
} 计数转换子程序结束

void pt_cnt(void) 输出控制子程序开始
{
if((cnt[0]==pre_cnt[0])&&(cnt[1]==pre_cnt[1])&&
(cnt[2]==pre_cnt[2])&&(cnt[3]==pre_cnt[3])&&
(cnt[4]==pre_cnt[4])&&(cnt[5]==pre_cnt[5])&&
(cnt[6]==pre_cnt[6])&&(cnt[7]==pre_cnt[7])) 若计数值等于预置值
out_flag=1; 输出标志置1
else out_flag=0; 否则输出标志置0
=================================================
if(out_flag)drv=0; 若输出标志为1,输出端(P3.4)置0,驱动光耦U2
else drv=1; 否则输出端(P3.4)置1
} 输出控制子程序结束

void main(void) 主程序开始
{ IE=0x84; 开放CPU中断,开放外中断1的中断
IT1=1; 置外中断1为边沿触发
while(1) 无限循环
{P3_6=0;P3_7=1; 禁止发送给显示器,消隐有效
SBUF=0x00;while(!TI);TI=0; 向IC2发送0x00,使IC2输出为全0
if((P3&0x24)!=0x24)keydown_flag=1; 检测P3.2、P3.5是否为高电平。
若不为高电平,说明有键按下,键被按下标志置1
else keydown_flag=0; 否则,键被按下标志置0
-------------------------------------------------------------------------------
SBUF=0xfe;while(!TI);TI=0; 向IC2发送0xfe
if(!P3_2)set_flag=!set_flag; 若P3.2为0,说明S9键按下,标志set_flag取反
==================================================
if(!set_flag){cnter();dis_cnter();pt_cnt();delay(100);}
若标志set_flag为0,调用计数、显示计数、输出控制的子程序
else {scan_key();dis_pre_cnter();delay(10);}
否则标志set_flag为1,调用扫描S1~S8键、显示预置值的子程序
=====================================================
if(keydown_flag)delay(300); 因有键按下,调用延时300mS子程序,
以免调整键值的速度过快
}
} 主程序结束

void extern_int1(void) interrupt 2 using 1 外中断1服务子程序
{
cnt[0]++; 计数器的最低位加1
}

热心网友 时间:2023-11-08 07:37

设计一个计数器,--要求对什么计数?
时间间隔1秒 动态显示--1秒钟显示一位,8秒钟才能显示8位,能看清楚吗?
--------------
不对任何东西计数...--那么数字的来源是什么,是固定不变的?
溢出报警功能...--没有数字,怎么能溢出?
计数时间间隔1秒--好像是个时钟或者秒表,建议看看:
http://hi.baidu.com/%D7%F6%B6%F8%C2%DB%B5%C0/blog/item/425474d769c7622106088bcd.html

热心网友 时间:2023-11-08 07:38

利用单片机的外部中断加计数器,就可以简单的实现!
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
苹果电脑电池充不进电苹果电脑充不进去电是怎么回事 苹果电脑不充电没反应苹果电脑充电指示灯不亮充不了电怎么办 狗狗更加忠诚护家、善解人意,养一只宠物陪伴自己,泰迪能长多大... 描写泰迪狗的外形和特点的句子 国外留学有用吗 花钱出国留学有用吗 !这叫什么号 百万医疗赔付后是否可以续保 前一年理赔过医疗险还能续保吗? 医疗住院险理赔后还能购买吗? c语言录入数据的时候,会显示上一次录入的数据,并且录入上次数据 如何纠正圆肩驼背呢? 那个股票软件里能显示ab股总市值? c语言实现串口接收和数据的滚屏显示 c语言这个程序如何实现下面再同步输出一组数据显示输入的内容? 英语翻译 由于时间不够,现在不能深入讨论这个问题(forbid) c语言实现数据的滚屏显示 用C语言保存读取显示数据 为什么通达信显示的AB股总市值,有些与实际不符? 分析一句语法 c语言显示数据的问题 有没有forbid doing?在什么情况下用forbid doing forbid的用法 forbid to do和forbid doing的区别 有没有forbid sb doing sth 英语:forbid 后面不能用动词不定式(to+动词原形) 只能用动词+ing形式对吗? ...forbid leaving,用forbid (sb)doing sth的用法? forbidden后面加什么do还是to do还是别的 你一定要吃月饼哟因为他能给你带来好运? forbid sb to do sth 和 forbid sb from doing sth 翻译出来有什么区别吗。求实例句谢谢 在用C语言编程时如何列表显示数据记录?可否举例说明? 北京磐林是培训机构吗 c 语言字符型数据的显示 如何用c语言编写程序读取并显示部分wireshark所抓得数据包内容 c语言 怎样每行输入一个数据,按回车后显示每行结果? C程序:从文件中读取矩阵数据,并显示出来,利用链式存储结构。 关于C语言中单精度实型变量float输出数据显示的问题 在socket中,用C语言怎么实现读取文件传输中 实时已接收的文件大小?也就是说 实现进度显示。 用c语言将下列文本文件的数据逐行读出并显示 苏州NEO101·臻邸什么情况? 苏州臻邸好不好? 【NEO101臻邸】可以跟符合购房资格的同学或者朋友一起买房子作投资吗?有没有风险? 苏州臻邸位置在哪儿? 海鲜要怎么养殖,饭店的 如果开一家小型的海鲜养殖场要多少钱,成本多少? 神华包头能源万利一矿租赁合同编号是多少 生产运营管理课程中:设施布局原则有?(多选题) 合同中不计取施工设备调遣费但工程结算时可否计取施工机械设备场外运输费 高锰钢,中碳钢,碳钢,那个做刀具好些。。。 中等碳钢锻造出来的刀剑和锰钢锻造出来的刀剑那个好