免费响应式网站模板,网站分为哪几类,绑定网站,提高网站可用性的策略有哪些数码管扫描显示-单片机通用模板 一、数码管扫描的原理二、display.c的实现1、void Display(void) 各模式界面定义数据2、void BackupRamToDisRam(void)从缓存区刷新显示映射Ram3、void FreshDisplay(void) 映射显示Ram到主控的IO口4、void LcdDisplay_8bit(void) 映射显示Ram到… 数码管扫描显示-单片机通用模板 一、数码管扫描的原理二、display.c的实现1、void Display(void) 各模式界面定义数据2、void BackupRamToDisRam(void)从缓存区刷新显示映射Ram3、void FreshDisplay(void) 映射显示Ram到主控的IO口4、void LcdDisplay_8bit(void) 映射显示Ram到主控的IO口 三、display.h的外部接口四、显示功能的使用、Note 一、数码管扫描的原理
①人的眼睛中的画面在0.02S(50Hz)左右,光源的闪烁频率高于50-60赫兹时人眼通常无法察觉到光的闪烁②通过控制LED的亮灭透过模具贴纸从而控制数字和图案的亮灭 二、display.c的实现
1、void Display(void) 各模式界面定义数据
u8 CxSegData[]{0,0,0,0}; //显示Ram缓存区
//
//函数名称:Display
//输 入:无
//输 出:无
//功 能:界面菜单显示
//
void Display(void)
{ if(b_Display_Flag 0) return; //更新显示b_Display_Flag0; //显示标志清0switch(Mode){case 0: //全灭显示界面CxSegData[0]0x00;CxSegData[1]0x00;CxSegData[2]0x00;CxSegData[3]0x00;b_Fresh_Flag1; //刷新显示Rambreak;case 1: //全显显示界面CxSegData[0]0xff;CxSegData[1]0xff;CxSegData[2]0xff;CxSegData[3]0xff; b_Fresh_Flag1; //刷新显示Rambreak;case 2: //自定义界面显示1CxSegData[3]Unb_Red;CxSegData[3]Unb_Inf;CxSegData[3]Unb_Twi; //不显示某一个点b_Fresh_Flag1; //刷新显示Rambreak;case 3: //自定义界面显示2CxSegData[3]b_Red;CxSegData[3]b_Inf;CxSegData[3]b_Twi; //显示某一个点b_Fresh_Flag1; //刷新显示Rambreak;case 4: //自定义界面显示2LcdDisplay_8bit(LzLcdNum1,LedNumCoding[6]);LcdDisplay_8bit(LzLcdNum2,LedNumCoding[6]); //数码管显示66b_Fresh_Flag1; //刷新显示Rambreak;case 5: //自定义界面显示3b_Fresh_Flag1; //刷新显示Rambreak;case 6: //自定义界面显示4b_Fresh_Flag1; //刷新显示Rambreak; }
}2、void BackupRamToDisRam(void)从缓存区刷新显示映射Ram
u8 CxSeg[]{0,0,0,0}; //显示Ram
//
//函数名称:BackupRamToDisRam
//输 入:无
//输 出:无
//功 能:更新显示RAM
//
void BackupRamToDisRam(void)
{if(b_Fresh_Flag){b_Fresh_Flag0;CxSeg[0] CxSegData[0];CxSeg[1] CxSegData[1];CxSeg[2] CxSegData[2];CxSeg[3] CxSegData[3];}
}3、void FreshDisplay(void) 映射显示Ram到主控的IO口
sbit b_Com1 P3^4; //C_0
sbit b_Com2 P3^5; //C_1
sbit b_Com3 P3^6; //C_2
sbit b_Com4 P3^7; //C_3 COM口定义sbit b_Seg1 P1^4; //S1
sbit b_Seg2 P1^2; //S2
sbit b_Seg3 P1^1; //S3
sbit b_Seg4 P1^0; //S4
sbit b_Seg5 P0^3; //S5
sbit b_Seg6 P0^2; //S6 SEG口定义
//
//函数名称:FreshDisplay
//输 入:无
//输 出:无
//功 能:LED全部刷新显示
//
void FreshDisplay(void)
{static u8 disIndex0;P3 |0xf0; //关闭所有屏幕显示if(disIndexPwmLevel) //PwmLevel 5 100%亮度 10 1/2亮度 15 1/3亮度 20 1/4亮度disIndex0; //20分频亮度disIndex;b_Seg1 CxSeg[0]0x01;b_Seg2 CxSeg[0]0x02;b_Seg3 CxSeg[0]0x04;b_Seg4 CxSeg[0]0x08;b_Seg5 CxSeg[0]0x10;b_Seg6 CxSeg[0]0x20;switch(disIndex){case 1:b_Com1 0; //刷新第一个Com显示break;case 2:b_Com2 0; //刷新第二个Com显示break;case 3:b_Com3 0; //刷新第三个Com显示break;case 4:b_Com4 0; //刷新第四个Com显示break;}
}4、void LcdDisplay_8bit(void) 映射显示Ram到主控的IO口
#define b_Red CxSegData[3]|0x01
#define b_Inf CxSegData[3]|0x02
#define b_Twi CxSegData[3]|0x04
#define b_P1 CxSegData[2]|0x04
#define b_P2 CxSegData[2]|0x08
#define b_P3 CxSegData[2]|0x10
#define b_P4 CxSegData[2]|0x20 //对应一个点图案显示#define Unb_Red CxSegData[3]~0x01
#define Unb_Inf CxSegData[3]~0x02
#define Unb_Twi CxSegData[3]~0x04
#define Unb_P1 CxSegData[2]~0x04
#define Unb_P2 CxSegData[2]~0x08
#define Unb_P3 CxSegData[2]~0x10
#define Unb_P4 CxSegData[2]~0x20 //对应一个点图案不显示u8 code LzLcdNum1[]{COM1,SEG1, //ACOM1,SEG2, //BCOM1,SEG3, //CCOM1,SEG4, //DCOM1,SEG5, //ECOM1,SEG6, //FCOM3,SEG1, //G0xff,0xff
};u8 code LzLcdNum2[]{COM2,SEG1, //ACOM2,SEG2, //BCOM2,SEG3, //CCOM2,SEG4, //DCOM2,SEG5, //ECOM2,SEG6, //FCOM3,SEG2, //G0xff,0xff
};unsigned char code LedNumCoding[]{0x3F, //0 0 1 1 1 1 1 1 as 0 00x06, //0 0 0 0 0 1 1 0 as 1 10x5B, //0 1 0 1 1 0 1 1 as 2 20x4F, //0 1 0 0 1 1 1 1 as 3 30x66, //0 1 1 0 0 1 1 0 as 4 40x6D, //0 1 1 0 1 1 0 1 as 5 50x7D, //0 1 1 1 1 1 0 1 as 6 60x07, //0 0 0 0 0 1 1 1 as 7 70x7F, //0 1 1 1 1 1 1 1 as 8 80x6F, //0 1 1 0 1 1 1 1 as 9 90x00, //0 0 0 0 0 0 0 0 as 全灭 10 0x40, //0 1 0 0 0 0 0 0 as - 110x76, //0 1 1 1 0 1 1 0 as H 120x38, //0 0 1 1 1 0 0 0 as L 130x50, //0 1 0 1 0 0 0 0 as r 140x39, //0 0 1 1 1 0 0 1 as “C” 150x37, //0 0 1 1 0 1 1 1 as “n” 160x77, //0 1 1 1 0 1 1 1 as “A” 170x71, //0 1 1 1 0 0 0 1 as “F” 18 0x7F}; //0 1 1 1 1 1 1 1 as 全显 //
//函数名称:LcdDisplay_8bit
//输 入:无
//输 出:无
//功 能:LED按位显示数据到CxSegData缓存区
//
void LcdDisplay_8bit(u8 *Table_Seg,u8 Value)
{u8 i0,j0;u8 Seg,Com;ComTable_Seg[i]; SegTable_Seg[i1];i2; //表的内容为一个seg一个com所以每移一次需要加2for(;Com!0xff;){if((Value 0x01)1)CxSegData[Com]CxSegData[Com] | Seg;elseCxSegData[Com]CxSegData[Com] ~Seg;//CxSegData[Com] (Value 0x01); //优化if elseValueValue1;ComTable_Seg[i];SegTable_Seg[i1];i2;}
}三、display.h的外部接口
extern bit b_Display_Flag; //更新显示
extern void Display(void); //各个界面模式显示
extern void BackupRamToDisRam(void);//更新缓冲区数据到映射Ram
extern void FreshDisplay(void); //显示Ram映射到硬件IO四、显示功能的使用、Note
在主函数main的while循环里调用等标志更新显示
void main(void)
{//_nop_(); //自定义初始化和上电功能
/**************************************************************************************************/while(1){Display(); //显示数据更新BackupRamToDisRam();//更新显示Ram数据if(b_16Hz_Flag){F_16HzTask(); //以频率16Hz进行的任务}if(b_2Hz_Flag){F_2HzTask(); //以频率2Hz进行的任务}}
/***********************************************************************************/
}在2~4kHz的定时器里面调用FreshDisplay() 映射到IO功能函数频率偏低可能观察到有闪烁可以调节PwmLevel 的大小从而调节亮度降低功耗
//
// Function:Time2中断
//
void TIM2_INT(void) interrupt 5 //4kHz 频率
{TF20; //清理中断标志位FreshDisplay(); //刷新LED数字显示该框架可使用于LCD、数码管、LED显示可以通过修改映射关系进而移植到其它项目上数码管显示难点是如何建立映射关系如何将IO和显示Ram建立关系如何控制每个LED的亮灭关系如何显示数字和字母需要更新屏幕显示注意b_Display_Flag是否需要更新缓存区CxSegData的数据需要更新缓存数据到硬件IO注意b_Fresh_Flag标志显示功能基本战项目的50%的代码量模块化功能程序可以很好定位Bug的位置缩短开发周期 文章转载自: http://www.morning.bwmm.cn.gov.cn.bwmm.cn http://www.morning.tkxyx.cn.gov.cn.tkxyx.cn http://www.morning.lbqt.cn.gov.cn.lbqt.cn http://www.morning.frqtc.cn.gov.cn.frqtc.cn http://www.morning.hqwxm.cn.gov.cn.hqwxm.cn http://www.morning.sjbty.cn.gov.cn.sjbty.cn http://www.morning.wblpn.cn.gov.cn.wblpn.cn http://www.morning.dnconr.cn.gov.cn.dnconr.cn http://www.morning.banzou2034.cn.gov.cn.banzou2034.cn http://www.morning.dpjtn.cn.gov.cn.dpjtn.cn http://www.morning.tgdys.cn.gov.cn.tgdys.cn http://www.morning.ghlyy.cn.gov.cn.ghlyy.cn http://www.morning.tkzrh.cn.gov.cn.tkzrh.cn http://www.morning.nnpwg.cn.gov.cn.nnpwg.cn http://www.morning.cfcpb.cn.gov.cn.cfcpb.cn http://www.morning.fthcn.cn.gov.cn.fthcn.cn http://www.morning.lwtfx.cn.gov.cn.lwtfx.cn http://www.morning.sfnjr.cn.gov.cn.sfnjr.cn http://www.morning.ftrpvh.cn.gov.cn.ftrpvh.cn http://www.morning.zxwqt.cn.gov.cn.zxwqt.cn http://www.morning.jwbnm.cn.gov.cn.jwbnm.cn http://www.morning.rwmqp.cn.gov.cn.rwmqp.cn http://www.morning.qlwfz.cn.gov.cn.qlwfz.cn http://www.morning.kyfnh.cn.gov.cn.kyfnh.cn http://www.morning.qrgfw.cn.gov.cn.qrgfw.cn http://www.morning.myrmm.cn.gov.cn.myrmm.cn http://www.morning.jyyw.cn.gov.cn.jyyw.cn http://www.morning.lzqxb.cn.gov.cn.lzqxb.cn http://www.morning.kwqqs.cn.gov.cn.kwqqs.cn http://www.morning.hngmg.cn.gov.cn.hngmg.cn http://www.morning.zwppm.cn.gov.cn.zwppm.cn http://www.morning.wrcgy.cn.gov.cn.wrcgy.cn http://www.morning.tkqzr.cn.gov.cn.tkqzr.cn http://www.morning.knmby.cn.gov.cn.knmby.cn http://www.morning.jprrh.cn.gov.cn.jprrh.cn http://www.morning.junmap.com.gov.cn.junmap.com http://www.morning.bhjyh.cn.gov.cn.bhjyh.cn http://www.morning.ztdlp.cn.gov.cn.ztdlp.cn http://www.morning.chjnb.cn.gov.cn.chjnb.cn http://www.morning.lczxm.cn.gov.cn.lczxm.cn http://www.morning.wbdm.cn.gov.cn.wbdm.cn http://www.morning.skbkq.cn.gov.cn.skbkq.cn http://www.morning.yrnrr.cn.gov.cn.yrnrr.cn http://www.morning.kscwt.cn.gov.cn.kscwt.cn http://www.morning.ftmly.cn.gov.cn.ftmly.cn http://www.morning.tlnbg.cn.gov.cn.tlnbg.cn http://www.morning.kjrlp.cn.gov.cn.kjrlp.cn http://www.morning.eshixi.com.gov.cn.eshixi.com http://www.morning.rbffj.cn.gov.cn.rbffj.cn http://www.morning.ckcjq.cn.gov.cn.ckcjq.cn http://www.morning.bmsqq.cn.gov.cn.bmsqq.cn http://www.morning.pdmc.cn.gov.cn.pdmc.cn http://www.morning.wnxqf.cn.gov.cn.wnxqf.cn http://www.morning.fbzyc.cn.gov.cn.fbzyc.cn http://www.morning.ftntr.cn.gov.cn.ftntr.cn http://www.morning.ysckr.cn.gov.cn.ysckr.cn http://www.morning.xuejitest.com.gov.cn.xuejitest.com http://www.morning.spwm.cn.gov.cn.spwm.cn http://www.morning.lgtzd.cn.gov.cn.lgtzd.cn http://www.morning.ptzbg.cn.gov.cn.ptzbg.cn http://www.morning.jhgxh.cn.gov.cn.jhgxh.cn http://www.morning.zwdrz.cn.gov.cn.zwdrz.cn http://www.morning.smdnl.cn.gov.cn.smdnl.cn http://www.morning.mwpcp.cn.gov.cn.mwpcp.cn http://www.morning.pwxkn.cn.gov.cn.pwxkn.cn http://www.morning.mmkrd.cn.gov.cn.mmkrd.cn http://www.morning.wmdbn.cn.gov.cn.wmdbn.cn http://www.morning.qllcm.cn.gov.cn.qllcm.cn http://www.morning.wjplm.cn.gov.cn.wjplm.cn http://www.morning.prsxj.cn.gov.cn.prsxj.cn http://www.morning.crkmm.cn.gov.cn.crkmm.cn http://www.morning.dbhnx.cn.gov.cn.dbhnx.cn http://www.morning.bbtn.cn.gov.cn.bbtn.cn http://www.morning.hlrtzcj.cn.gov.cn.hlrtzcj.cn http://www.morning.mlcnh.cn.gov.cn.mlcnh.cn http://www.morning.lbggk.cn.gov.cn.lbggk.cn http://www.morning.tbqxh.cn.gov.cn.tbqxh.cn http://www.morning.bfcrp.cn.gov.cn.bfcrp.cn http://www.morning.mqpdl.cn.gov.cn.mqpdl.cn http://www.morning.pqxjq.cn.gov.cn.pqxjq.cn