使用定时器设计一个0-99s的计时器,在定时器中断中刷新数码管,在main函数中实现按键的检测,操作按键,数码管的显示不使用delay函数
2021-12-27 00:02:50 189KB DSP 28335 数码管 计时器
1
Arduino外围硬件元器件资料常用单片机外设硬件芯片手册资料60个合集: 12864液晶 1602液晶 5110液晶 74HC573 74HC595 74LS138 ADC0804 AMS1117 AT24C02 AVR单片机芯片 DAC0832 DS1302 DS18B20 LM35.pdf MAX232 NE555 PCF8591驱动程序及IIC工作原理分析 SHT11 TFT1.8寸液晶资料 TLC5615 光敏和热敏电阻资料 数码管 步进电机 滚珠开关 红外遥控器和接收管 继电器 舵机 蜂鸣器 面包板
文件名: LedDisp.h 版本号: v1.0.5 (v20091122.00001) 功能: 显示七段数码管风格的数字、小数点、冒号及部分字母。 (此版本理论上可用于MFC,Win32 SDK或其它环境,在Windows XP sp2下用vc6.0及vs2008编译、运行通过.) 第一作者: Jef 日期: 20091122 电子邮件: dungeonsnd@126.com 地址: 中国/江苏 版权: 1.您可以修改及免费使用本程序,但把本程序或修改后程序用于商业用途前请先通知第一作者并得到作者的许可。 2.修改之后保留此文件开头处的文件说明信息并更改副版本号(如 v20090825.00001 改成 v20091002.00001 ), 并拷贝一份附上您的个人信息发送到上面的作者邮箱,作者负责在全面测试后发布您修改后的新版本。 3.您使用本程序而导致任何伤害以及经济损失,由过错方依法承担所有责任,一概与第一作者及合作单位无关。 4.如果您使用本程序则表示您已经同意此版本协议!否则请勿使用! 其它: v1.0.1 (v20090825.00001) v1.0.2 (v20091026.00001) 1.增加Hide()方法 2.增加IsHide()方法 3.增加Disp(CDC* pdc,CRect DispRect,int iDigitsAmount,CString cs);方法 4.等 v1.0.3 (v20091031.00001) 1.增加多个小数点和冒号显示支持 2.增加GetLedFont()方法 3.修改了显示熄灭数码管的内部实现 4.等 v1.0.4 (v20091105.00001) 1.修改了SetSegmentPosition(int index)函数,增加内部属性 修正因子m_bMakeAmend, 设置修改因子为真时,在特殊情况下(如用户设置段宽度为2个像素或者1个像素), 程序将保证所有段的宽度相等,并且保证段与段不会相连. 2.修改了保存显示区域背景机制! 前一版本在调用数码管显示函数(Disp()等函数)时会自动 保存一幅对应于显示区域RECT的位图,此种机制当用户在OnPaint()函数里调用显示 函数而不调用Hide()时,并且此时的RECT在每次调用显示函数时都改变,则会导致保存 背景位图的向量m_vecBkSave不断扩大,而实际上保存的位图将没有作用且浪费大量内存! 如: void CLEDView::OnPaint() { CPaintDC dc(this); OnShow(); //不断的以不同的RECT区域调用Disp()将导致保存的 //位图(对应于每个区域)数量剧增! } void CLEDView::OnShow() { CClientDC dc(this); CRect rtClient; GetClientRect(&rtClient); double m_x =rtClient.Width()/800.0; double m_y =rtClient.Height()/600.0; CRect rt0; rt0.SetRect(20*m_x,10*m_y,220*m_x,410*m_y); led.Disp((CDC*)&dc,rt0,1,_T("1:")); } 解决方案: 保存位图将不再以RECT来标识,而是以一个用户输入的字符串来标识. 3. 添加MFC之外框架的支持.(未完成,未测试,希望测试的用户给作者联系测试结果.如WIN32 SDK,WTL等环境下.) v1.0.5 (v20091122.00001) 1. 增加UNICODE支持 2.完成MFC外的某些框架的支持 3.修改了和完善了某些代码段。如 删除保存背景的 向量某一元素之前先把其中的位图删除; 内存dc用完之后添加删除操作 DeleteDC ; 构析函数中增加了删除 全部位图资源操作 4. 修改了数个变量名使其更统一,如 SHOWPOS改成了iShowPos; 删除了某些接口,如 DispInt(); 2.说明及注意 (Attention!) a.支持 改变数码管亮时的颜色 灭时颜色 区域背景色,支持居左居中居右显示,支持细调显示的位置(SetFont();)及数码管粗细等细节. 支持距离左或右一定距离显示字符串(m_iDistaceToRight). 支持创建不定数量的自定义字体(LedFontID来表示已创建的不同字体,已经创建过的字体被再次创建时则改写这个字体). 支持默认参数(调用时可以依次不传递有默认值参数). b.显示的字符的宽度与高度不随窗口的大小变化而自动变化,故调用者应自行处理. c.内部不含自动重画功能,故调用者应自己处理窗口重绘时字符的重新显示. d.字符串内可同时含 ":"与"." ,但字符串左起第一个字符不能为":"或"." ,且不能连续两个不点位符号,如小数点或冒号!! e.能显示的字符包括 0-9,a-f,A-F,".",":","-" f.如 bool Disp(HDC hDc,RECT rtDispRect,TCHAR* cs,int iFontWidth,int iFontHeight,TCHAR* strIdentifier=_T("LedValue1")); 用户应自己设置好 rtDispRect与iFontWidth iFontHeight 的大小关系. 如果iFontHeight大于rtDispRect.Height(),则超出DispRect区域显示字符. 但左右可能不会超出显示(用户可设置m_bShowWhenOverstepRect来控制是否显示). 调用者应自己保证使字符串能全部显示在DispRect中,否则超出部分可能不会显示!!! g.当字符的宽度与数码管的每一段的宽度比例严重失调时,显示的字符会严重失真(如数码管每一段宽度为5个像素, 而长度却也为5像素则显示效果将失真)! 一般情况下,iFontHeight=2*m_iFontWidth,m_dSegmentWidth远小于m_iFontWidth h. led.SetColor(RGB(0,200,0)) 等方法会改变类的字体属性,故之后调用显示时字体属性都会发生改变. 但创建新的字体时不会改变类的字体属性. i.调用 Disp(...,strIdentifier)等此类数码管显示函数显示数码管后, 显示区域的背景及区域会自动保存. 1.再次调用Disp(...,strIdentifier)时会用新的显示区域的背景替换原背景及区域; 2.调用Hide(...,strIdentifier)方法时程序会自动删除strIdentifier对应原位图及区域,然后隐藏该区域的数码管(用原背景位图贴在此区域); 3.对象析构时会自动删除已经保存的所有的背景位图及区域. 3.使用方法(仅举一种使用方法) (Using e.g.) i. void CLEDView::OnPaint() { CPaintDC dc(this); // device context for painting // TODO: Add your message handler code here OnShow(); // Do not call CView::OnPaint() for painting messages } void CLEDView::OnShow() { // TODO: Add your command handler code here CClientDC dc(this); CRect rtClient; GetClientRect(&rtClient); CBitmap bmp; bmp.LoadBitmap(IDB_BITMAP1); CDC memdc; memdc.CreateCompatibleDC(&dc); memdc.SelectObject(&bmp); dc.StretchBlt(0,0,rtClient.Width(),rtClient.Height(),&memdc,0,0, 800,600,SRCCOPY); double m_x =rtClient.Width()/800.0; double m_y =rtClient.Height()/600.0; CRect rt0; rt0.SetRect(int(20*m_x),int(10*m_y),int(420*m_x),int(80*m_y)); CString s; s ="123-:1:."; TCHAR str[256]; sprintf(str,"%s",s); led.DispDigits((HDC)dc,rt0,str,7,_T("Led1")); } void CLEDView::OnHide() { // TODO: Add your command handler code here CClientDC dc(this); led.Hide((HDC)dc,"Led1"); } ii. CClientDC dc(this); ...... CRect rt0; rt0.SetRect(int(20*m_x),int(10*m_y),int(420*m_x),int(80*m_y)); CString s; s ="123-:1:."; led.Disp_mfc((CDC*)&dc,rt0,s,27,45,_T("Led1")); */
2021-12-26 17:19:46 4.04MB Led 显示 数码管
1
微机接口8086的电子琴及数码管的音阶显示设计.zip
2021-12-26 13:48:27 840KB 微机接口
1
学习项目(网上数码商城)学习项目(网上数码商城)学习项目(网上数码商城)学习项目(网上数码商城)学习项目(网上数码商城)
2021-12-26 11:47:06 6.49MB 网上数码商城
1
九齐NY8A054E芯片使用IO口获取温度并驱动数码管显示3S温度(汇编版)
2021-12-26 09:01:36 161KB IO获取温度 九齐NY8A054E 汇编
1
摘要: 设计了一个关于单片机数据采集控制系统的作品,采用数模转换和模数转换的技术,实现了8路数据采集功能和输出模拟信号的功能 课题意义: 单片机数据采集控制系统不只是应用于工业领域,如钢铁、电力、化工,还广泛用于食品,医药、建筑、科研等行业。 在一些工业现场中,设备长时间运行容易出现故障,为了监控这些设备,通常利用数据采集装置采集他们运行时的数据并送给PC机,通过运行在PC机上的特定软件对这些数据进行分析,以此判断当前运行设备的状况,进而采取相应措施。 实时采集来自生产线的产量数据或是不良品的数量、或是生产线的故障类型(如停线、缺料、品质),并传输到数据库系统中;接收来自数据库的信息:如生产计划信息、物料信息等;传输检查工位的不良品名称及数量信息;连接检测仪器,实现检测仪器数字化,数据采集仪自动从测量仪器中获取测量数据,进行记录,分析计算,对测量结果进行自动判断。 设计基本要求: 1)可实现8路数据的采集,假设8路信号均为0-5V的电压信号; 2)采集数据可通过数码管显示,显示格式为:[通道号] 电压值,如 [01] 4.5 3)具有异常数据声音报警功能:对第一路数据可设置正常数据的上限值和下限值,当采集的数据出现异常,发出报警信号。 4)可输出频率为1kHZ的方波,三角波。 根据上述要求,设计思路如下 选择单片机与A/D转换芯片结合的方法实现本设计。使用 的基本元器件是:AT89C51单片机,ADC0808模数转换芯片,DAC0832数模转换芯片,74ls373地址锁存器,74ls13译码器,74ls148编码器,8位数码管,按键,电容,电阻,晶振,蜂鸣器等。 数字电压测量电路由A/D转换、数据处理及显示控制等组成。A/D转换由集成电路ADC0808完成。ADC0809具有8路拟输入端口,地址线(IN0-IN7脚)可决定对哪一路模拟输入作A/D换。ALE脚为地址锁存控制,当输入为高电平时,对地址信号进行锁存。START脚为测试控制,当输入一个2uS宽高电平脉冲时,就开始A/D转换。EOC脚为A/D转换结束标志,当A/D转换结束时,7脚输出高电平。OE脚为A/D转换数据输出允许控制,当OE脚为高电平时,A/D转换数据从该端口输出。CLK脚为0809的时钟输入端。单片机的P0.0~P0.7、P3端口作8为数码管显示控制。P2端口作A/D转换数据读入用,P3.0端口用作0809的A/D转换控制。通过对单片机p1.5-1.7口置低电平控制数码管亮灯,p3.1口置低电平时蜂鸣器报警。 模拟信号输出电路由D/A转换、数据处理及显示控制等组成。D/A转换集成电路有DAC0832完成。DAC0832具有8个数字入端口,地址线(D0-D7脚)有8个端口的数字输入作D/A转换。Cs和WR端控制ADC0832转换。RFB端负责输出模拟信号。
1
TM1637驱动四位数码管,已在51单片机上验证成功,实现5小时倒计时
2021-12-25 20:35:08 520KB TM1637 代码
1
(1)可供4组同时抢答,由按钮控制。 (2)能显示出最先抢答的组号,而对其他组的抢答不予理睬。 (3)对主持人未曾按启动扭之前就按抢答按钮的犯规组,亮红灯警告。 (4)对抢答后的回答时间进行计时控制,如回答超时,则以音响报警。
1
51单片机、 秒表、秒表、数码管显示
2021-12-24 20:20:59 239KB 秒表 仿真程序 论文 数码管显示
1