您所在位置: 网站首页 / 单片机程序知识点剖析207.pdf / 文档详情
单片机程序知识点剖析207.pdf 立即下载
2024-12-12
约1.1万字
约11页
0
298KB
举报 版权申诉
预览加载中,请您耐心等待几秒...

单片机程序知识点剖析207.pdf

单片机程序知识点剖析207.pdf

预览

免费试读已结束,剩余 6 页请下载文档后查看

10 金币

下载文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

单片机程序知识点

按键扫描支持连续按一般思路
两个等于控制占空比
u8KEY_Scan(void)
{timer0()interrupt1
if(KEY按下){
{t++;//每次定时器溢出加1
delay_ms(10);//延时10-20ms,防抖。if(t==250)//PWM周期100个单位
if(KEY确实按下)returnKEY_Value;{
return无效值;t=0;//使t=0,开始新的PWM周期
}P1=0x00;//输出端口
}}
//按照当前占空比切换输出为高电平
按键扫描不支持连续按一般思路
if(PWM_T==t)
u8KEY_Scan(void){
{P1=0xff;
staticu8key_up=1;}}
if(key_up&&KEY按下)
数码管动态显示
{
delay_ms(10);//延时,防抖unsignedcharcode
key_up=0;//标记这次key已经按DuanMa[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,
下0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x
if(KEY确实按下)79,0x71};//显示段码值0~F
{unsignedcharcode
returnKEY_VALUE;WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xb
}f,0x7f};/分别对应相应的数码管点亮,即位码
}elseif(KEY没有按下)key_up=1;while(1)
return没有按下{
}DataPort=WeiMa[i];//取位码
LATCH2=1;//位锁存
串口通讯2
LATCH2=0;
voidUART()interrupt4//取显示数据,段码
{DataPort=DuanMa[num+i];
if(RI)//检测是否接收完成LATCH1=1;//段锁存
{LATCH1=0;
num=SBUF;//num取出接收缓存器的值//扫描间隙延时,时间太长会闪烁,太
P1=SBUF;短会造成重影
num++;Delay(200);
RI=0;i++;
SBUF=num;//检测8位扫描完全结束?如扫描完成则
while(!TI);从第一个开始再次扫描8位
TI=0;}}if(8==i)i=0;
}



数码管动态显示

/*------------------------------------------------
显示函数,用于动态扫描数码管
动态显示消隐方法
输入参数FirstBit表示需要显示的第
一位,如赋值2表示从第三个数码管开始if(num<1000)//如果小于1000则千位不显
显示,如输入0表示从第一个显示。示
Num表示需要显示的位数,如需要显TempData[0]=0;
示99两位数值则该值输入2elseTempData[0]=dofly_DuanMa[num/1000];
------------------------------------------------*///分解显示信息,如要显示68,则68/10=6
/68%10=8
//存储显示值的数组//如果小于100则千位和百位都不显示
unsignedcharTempData[10];if(num<100)TempData[1]=0;
//分解显示信息,如要显示68,else
则68/10=668%10=8TempData[1]=dofly_DuanMa[(num%1000)/1
TempData[0]=dofly_DuanMa[num/10];00];
TempData[1]=dofly_DuanMa[num%10];//如果小于10,则千位、百位和十位
voidDisplay(unsignedcharFirstBit,unsigned/都不显示
charNum)if(num<10)TempData[2]=0;
{else
unsignedchari;TempData[2]=dofly_DuanMa[((num%1000)%1
for(i=0;i<Num;i++)00)/10];
{
使用中断实现分频器的功能
DataPort=0;//清空数据,防止有交替重
影/*------------------------------------------------
LATCH1=1;//段锁存定时器中断子程序
LATCH1=0;------------------------------------------------*/
DataPort=WeiMa[i+FirstBit];//取位码voidTimer0_isr(void)interrupt1using1
LATCH2=1;//位锁
查看更多
王子****青蛙
实名认证
内容提供者
单篇购买
VIP会员(1亿+VIP文档免费下)

扫码即表示接受《下载须知》

单片机程序知识点剖析207

文档大小:298KB

限时特价:扫码查看

• 请登录后再进行扫码购买
• 使用微信/支付宝扫码注册及付费下载,详阅 用户协议 隐私政策
• 如已在其他页面进行付款,请刷新当前页面重试
• 付费购买成功后,此文档可永久免费下载
全场最划算
12个月
199.0
¥360.0
限时特惠
3个月
69.9
¥90.0
新人专享
1个月
19.9
¥30.0
24个月
398.0
¥720.0
6个月会员
139.9
¥180.0

6亿VIP文档任选,共次下载特权。

已优惠

微信/支付宝扫码完成支付,可开具发票

VIP尽享专属权益

VIP文档免费下载

赠送VIP文档免费下载次数

阅读免打扰

去除文档详情页间广告

专属身份标识

尊贵的VIP专属身份标识

高级客服

一对一高级客服服务

多端互通

电脑端/手机端权益通用