【Proteus仿真】【Arduino单片机】数码管显示

编程入门 行业动态 更新时间:2024-10-25 04:18:14

【Proteus仿真】【Arduino<a href=https://www.elefans.com/category/jswz/34/1769836.html style=单片机】数码管显示"/>

【Proteus仿真】【Arduino单片机】数码管显示

文章目录

  • 一、功能简介
  • 二、软件设计
  • 三、实验现象
  • 联系作者


一、功能简介

本项目使用Proteus8仿真Arduino单片机控制器,使用TM1637、共阳数码管等。
主要功能:
系统运行后,数码管显示数字、字符。


二、软件设计

/*
作者:嗨小易(QQ:3443792007)*/#define CLK 2
#define DIO 3#include "GyverTM1637.h"
GyverTM1637 disp(CLK, DIO);uint32_t Now, clocktimer;
boolean flag;void setup() {Serial.begin(9600);disp.clear();disp.brightness(7);  // яркость, 0 - 7 (минимум - максимум)}void loop() {normClock();scrollClock();twistClock();scrolls();twists();  ints();fadeBlink();
}void twists() {disp.clear();delay(200);for (byte i = 0; i < 10; i++) {disp.twist(3, i, 20);delay(300);}// скрутка массива БАЙТbyte troll[4] = {_L, _O, _L, _empty};disp.scrollByte(troll, 100);delay(500);
}void twistClock() {byte hrs = 21, mins = 55;uint32_t tmr;Now = millis();while (millis () - Now < 5000) {   // каждые 10 секундif (millis() - tmr > 500) {       // каждые полсекундыtmr = millis();flag = !flag;disp.point(flag);   // выкл/выкл точкиif (flag) {// ***** часы! ****mins ++;if (mins > 59) {mins = 0;hrs++;if (hrs > 24) hrs = 0;}// ***** часы! ****byte dispTime[] = {(byte)hrs / 10, (byte)hrs % 10, (byte)mins / 10, (byte)mins % 10};disp.twist(dispTime, 35);    // выводим время массивом}}}disp.point(0);   // выкл точки
}void scrolls() {disp.clear();delay(1000);for (byte i = 0; i < 10; i++) {disp.scroll(3, i, 50);delay(300);}// прокрутка массива БАЙТbyte troll[4] = {_t, _r, _o, _l};disp.scrollByte(troll, 100);delay(500);
}void fadeBlink() {// пишем HELLdisp.displayByte(_H, _E, _L, _L);Now = millis();while (millis () - Now < 3000) {    // 3 секундыfor (int i = 7; i > 0; i--) {disp.brightness(i);   // меняем яркостьdelay(40);}for (int i = 0; i < 8; i++) {disp.brightness(i);   // меняем яркостьdelay(40);}}
}void scrollClock() {byte hrs = 15, mins = 0;uint32_t tmr;Now = millis();while (millis () - Now < 5000) {   // каждые 10 секундif (millis() - tmr > 500) {       // каждые полсекундыtmr = millis();flag = !flag;disp.point(flag);   // выкл/выкл точкиif (flag) {// ***** часы! ****mins ++;if (mins > 59) {mins = 0;hrs++;if (hrs > 24) hrs = 0;}// ***** часы! ****byte dispTime[] = {(byte)hrs / 10, (byte)hrs % 10, (byte)mins / 10, (byte)mins % 10};disp.scroll(dispTime, 70);    // выводим время массивом}}}disp.point(0);   // выкл точки
}void normClock() {byte hrs = 15, mins = 0;uint32_t tmr;Now = millis();while (millis () - Now < 5000) {   // 10 секундif (millis() - tmr > 500) {       // каждые полсекундыtmr = millis();flag = !flag;disp.point(flag);   // выкл/выкл точки// ***** часы! ****mins ++;if (mins > 59) {mins = 0;hrs++;if (hrs > 24) hrs = 0;}// ***** часы! ****disp.displayClock(hrs, mins);   // выводим время функцией часов}}disp.point(0);   // выкл точки
}void ints() {// тупо отправляем цифрыdisp.displayInt(-999);delay(200);disp.displayInt(-99);delay(200);disp.displayInt(-9);delay(200);disp.displayInt(0);delay(200);disp.displayInt(6);delay(200);disp.displayInt(66);delay(200);disp.displayInt(666);delay(200);disp.displayInt(6666);delay(200);
}

三、实验现象

B站演示视频:



联系作者

视频地址:
专注于51单片机、STM32、国产32、DSP、Proteus、arduino、ESP32、物联网软件开发,PCB设计,视频分享,技术交流。

更多推荐

【Proteus仿真】【Arduino单片机】数码管显示

本文发布于:2023-11-15 23:56:35,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1610119.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:单片机   数码管   Proteus   Arduino

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!