五脚18.8数码管显示
五脚18.8数码管显示
今天抽空用将五脚的18.8数码管驱动程序研究了一下,将其过程记录如下:
数字1到5表示对应的数码管引脚,利用二极管的单向导通性来点亮单独的LED
数码管需要亮灯的高低电平点亮,不亮灯的IO口一定要设为高阻。
例如:点亮B3段,数码管2脚(单片机P3.3设置为推挽输出模式)高电平;数码管1脚(单片机P3.2设置为准双向口模式)低电平;在将P3.2设置为低电平输出就可以点亮B3段了;
自己总结:
高电平推挽输出模式;
低电平准双向口模式;
其余不亮的设置高阻输入模式;
用笨办法,一段一段点亮``,
以下是测试段位的测试程序:
# include <STC8G.H>
//3位6脚的,原理差不多,用笨办法,一段一段点亮,用switch,组成段码,小数点,STC8G1K08,接的P32-P36
/************************************************************************************/
#define DELAY 1 //设置每一个点显示的时间长度(1~20)
#define uchar unsigned char
#define uint unsigned intvoid delay (uint a)//延时{ uint i;while( a-- != 0){ for(i = 0; i < DELAY; i++); }
}/****测试段码函数*****/
void DG1()
{ P3M1 = 0xCF; P3M0 = 0x10; P3 = 0xDF; delay(x); //1BP3M1 = 0xD7; P3M0 = 0x08; P3 = 0xDF; delay(x); //1C P3M1 = 0xE7; P3M0 = 0x08; P3 = 0xEF; delay(x); //2AP3M1 = 0xE7; P3M0 = 0x10; P3 = 0xF7; delay(x); //2BP3M1 = 0xCF; P3M0 = 0x20; P3 = 0xEF; delay(x); //2CP3M1 = 0xD7; P3M0 = 0x20; P3 = 0xF7; delay(x); //2DP3M1 = 0xB7; P3M0 = 0x40; P3 = 0xF7; delay(x); //2EP3M1 = 0xAF; P3M0 = 0x40; P3 = 0xEF; delay(x); //2F P3M1 = 0x9F; P3M0 = 0x40; P3 = 0xDF; delay(x); //2G P3M1 = 0xF3; P3M0 = 0x04; P3 = 0xE7; delay(x); //3AP3M1 = 0xF3; P3M0 = 0x08; P3 = 0xFB; delay(x); //3BP3M1 = 0xEB; P3M0 = 0x04; P3 = 0xEF; delay(x); //3CP3M1 = 0xEB; P3M0 = 0x10; P3 = 0xFB; delay(x); //3DP3M1 = 0xDB; P3M0 = 0x04; P3 = 0xDF; delay(x); //3E P3M1 = 0xDB; P3M0 = 0x20; P3 = 0xFB; delay(x); //3FP3M1 = 0xBB; P3M0 = 0x40; P3 = 0xFB; delay(x); //3GP3M1 = 0xAF; P3M0 = 0x10; P3 = 0xBF; delay(x); //IP3M1 = 0xB7; P3M0 = 0x08; P3 = 0xBF; delay(x); //JP3M1 = 0x9F; P3M0 = 0x20; P3 = 0xBF; delay(x); //HP3M1 = 0xBB; P3M0 = 0x04; P3 = 0xBF; delay(x); //DP}void main (void){ //主程序 init();while (1){DG1(); //测试代码}
}
下面是将其用switch,组成段码,小数点;
从18.8倒减,
# include <STC8G.H>
单片机STC8G1K08,PIN1-PIN5接的P32-P36
/************************************************************************************/
#define DELAY 1 //设置每一个点显示的时间长度(1~20)
#define uchar unsigned char
#define uint unsigned int
uint TIME_SS=188;
uint C=0;
uint x=100;void delay (uint a)//延时{ uint i;while( a-- != 0){ for(i = 0; i < DELAY; i++); }
}
/************************************************************************************/
void init (void){ //上电初始化TMOD = 0x01; // 定时/计数器0,1工作于方式1 TH0 = 0xcd; // 预置产生50ms时基信号 TL0 = 0xd4; EA = 1; // 开总中断 ET0 = 1; // 定时/计数器0允许中断 TR0 = 1; // 开闭定时/计数器0
}/**第一位显示,只显示1**/void DG1(int a)
{P3M1 = 0xCF; P3M0 = 0x10; P3 = 0xDF; delay(x); //1BP3M1 = 0xD7; P3M0 = 0x08; P3 = 0xDF; delay(x); //1C
}/**第二位显示含小数点,只显示0.-9.**/void DG2(int a)
{switch(a){ case 0:{P3M1 = 0xE7; P3M0 = 0x08; P3 = 0xEF; delay(x); //2A //0.P3M1 = 0xE7; P3M0 = 0x10; P3 = 0xF7; delay(x); //2BP3M1 = 0xCF; P3M0 = 0x20; P3 = 0xEF; delay(x); //2CP3M1 = 0xD7; P3M0 = 0x20; P3 = 0xF7; delay(x); //2DP3M1 = 0xB7; P3M0 = 0x40; P3 = 0xF7; delay(x); //2EP3M1 = 0xAF; P3M0 = 0x40; P3 = 0xEF; delay(x); //2F P3M1 = 0xBB; P3M0 = 0x04; P3 = 0xBF; delay(x); //DP break;}case 1:{P3M1 = 0xE7; P3M0 = 0x10; P3 = 0xF7; delay(x); //2B //1.P3M1 = 0xCF; P3M0 = 0x20; P3 = 0xEF; delay(x); //2C P3M1 = 0xBB; P3M0 = 0x04; P3 = 0xBF; delay(x); //DP break;} case 2:{P3M1 = 0xE7; P3M0 = 0x08; P3 = 0xEF; delay(x); //2A //2.P3M1 = 0xE7; P3M0 = 0x10; P3 = 0xF7; delay(x); //2BP3M1 = 0xD7; P3M0 = 0x20; P3 = 0xF7; delay(x); //2DP3M1 = 0xB7; P3M0 = 0x40; P3 = 0xF7; delay(x); //2EP3M1 = 0x9F; P3M0 = 0x40; P3 = 0xDF; delay(x); //2G P3M1 = 0xBB; P3M0 = 0x04; P3 = 0xBF; delay(x); //DP break;} case 3:{P3M1 = 0xE7; P3M0 = 0x08; P3 = 0xEF; delay(x); //2A //3.P3M1 = 0xE7; P3M0 = 0x10; P3 = 0xF7; delay(x); //2BP3M1 = 0xCF; P3M0 = 0x20; P3 = 0xEF; delay(x); //2CP3M1 = 0xD7; P3M0 = 0x20; P3 = 0xF7; delay(x); //2DP3M1 = 0x9F; P3M0 = 0x40; P3 = 0xDF; delay(x); //2G P3M1 = 0xBB; P3M0 = 0x04; P3 = 0xBF; delay(x); //DP break;}case 4:{P3M1 = 0xE7; P3M0 = 0x10; P3 = 0xF7; delay(x); //2B //4.P3M1 = 0xCF; P3M0 = 0x20; P3 = 0xEF; delay(x); //2CP3M1 = 0xAF; P3M0 = 0x40; P3 = 0xEF; delay(x); //2F P3M1 = 0x9F; P3M0 = 0x40; P3 = 0xDF; delay(x); //2G P3M1 = 0xBB; P3M0 = 0x04; P3 = 0xBF; delay(x); //DP break;} case 5:{P3M1 = 0xE7; P3M0 = 0x08; P3 = 0xEF; delay(x); //2A //5.P3M1 = 0xCF; P3M0 = 0x20; P3 = 0xEF; delay(x); //2CP3M1 = 0xD7; P3M0 = 0x20; P3 = 0xF7; delay(x); //2DP3M1 = 0xAF; P3M0 = 0x40; P3 = 0xEF; delay(x); //2F P3M1 = 0x9F; P3M0 = 0x40; P3 = 0xDF; delay(x); //2GP3M1 = 0xBB; P3M0 = 0x04; P3 = 0xBF; delay(x); //DP break;} case 6:{P3M1 = 0xE7; P3M0 = 0x08; P3 = 0xEF; delay(x); //2A //6.P3M1 = 0xCF; P3M0 = 0x20; P3 = 0xEF; delay(x); //2CP3M1 = 0xD7; P3M0 = 0x20; P3 = 0xF7; delay(x); //2DP3M1 = 0xB7; P3M0 = 0x40; P3 = 0xF7; delay(x); //2EP3M1 = 0xAF; P3M0 = 0x40; P3 = 0xEF; delay(x); //2F P3M1 = 0x9F; P3M0 = 0x40; P3 = 0xDF; delay(x); //2G P3M1 = 0xBB; P3M0 = 0x04; P3 = 0xBF; delay(x); //DP break;} case 7:{P3M1 = 0xE7; P3M0 = 0x08; P3 = 0xEF; delay(x); //2A //7.P3M1 = 0xE7; P3M0 = 0x10; P3 = 0xF7; delay(x); //2BP3M1 = 0xCF; P3M0 = 0x20; P3 = 0xEF; delay(x); //2CP3M1 = 0xBB; P3M0 = 0x04; P3 = 0xBF; delay(x); //DP break;} case 8:{P3M1 = 0xE7; P3M0 = 0x08; P3 = 0xEF; delay(x); //2A //8.P3M1 = 0xE7; P3M0 = 0x10; P3 = 0xF7; delay(x); //2BP3M1 = 0xCF; P3M0 = 0x20; P3 = 0xEF; delay(x); //2CP3M1 = 0xD7; P3M0 = 0x20; P3 = 0xF7; delay(x); //2DP3M1 = 0xB7; P3M0 = 0x40; P3 = 0xF7; delay(x); //2EP3M1 = 0xAF; P3M0 = 0x40; P3 = 0xEF; delay(x); //2F P3M1 = 0x9F; P3M0 = 0x40; P3 = 0xDF; delay(x); //2GP3M1 = 0xBB; P3M0 = 0x04; P3 = 0xBF; delay(x); //DP break;} case 9:{ P3M1 = 0xE7; P3M0 = 0x08; P3 = 0xEF; delay(x); //2A //9.P3M1 = 0xE7; P3M0 = 0x10; P3 = 0xF7; delay(x); //2BP3M1 = 0xCF; P3M0 = 0x20; P3 = 0xEF; delay(x); //2CP3M1 = 0xD7; P3M0 = 0x20; P3 = 0xF7; delay(x); //2DP3M1 = 0xAF; P3M0 = 0x40; P3 = 0xEF; delay(x); //2F P3M1 = 0x9F; P3M0 = 0x40; P3 = 0xDF; delay(x); //2G P3M1 = 0xBB; P3M0 = 0x04; P3 = 0xBF; delay(x); //DP break;} }
}
/**第三位显示,只显示0-9**/void DG3(int a)
{switch(a){ case 0:{P3M1 = 0xF3; P3M0 = 0x04; P3 = 0xE7; delay(x); //3A //0P3M1 = 0xF3; P3M0 = 0x08; P3 = 0xFB; delay(x); //3BP3M1 = 0xEB; P3M0 = 0x04; P3 = 0xEF; delay(x); //3CP3M1 = 0xEB; P3M0 = 0x10; P3 = 0xFB; delay(x); //3DP3M1 = 0xDB; P3M0 = 0x04; P3 = 0xDF; delay(x); //3E P3M1 = 0xDB; P3M0 = 0x20; P3 = 0xFB; delay(x); //3Fbreak;} case 1:{ P3M1 = 0xF3; P3M0 = 0x08; P3 = 0xFB; delay(x); //3B //1P3M1 = 0xEB; P3M0 = 0x04; P3 = 0xEF; delay(x); //3Cbreak;}case 2:{P3M1 = 0xF3; P3M0 = 0x04; P3 = 0xE7; delay(x); //3A //2P3M1 = 0xF3; P3M0 = 0x08; P3 = 0xFB; delay(x); //3BP3M1 = 0xEB; P3M0 = 0x10; P3 = 0xFB; delay(x); //3DP3M1 = 0xDB; P3M0 = 0x04; P3 = 0xDF; delay(x); //3E P3M1 = 0xBB; P3M0 = 0x40; P3 = 0xFB; delay(x); //3Gbreak;} case 3:{P3M1 = 0xF3; P3M0 = 0x04; P3 = 0xE7; delay(x); //3A //3P3M1 = 0xF3; P3M0 = 0x08; P3 = 0xFB; delay(x); //3BP3M1 = 0xEB; P3M0 = 0x04; P3 = 0xEF; delay(x); //3CP3M1 = 0xEB; P3M0 = 0x10; P3 = 0xFB; delay(x); //3D P3M1 = 0xBB; P3M0 = 0x40; P3 = 0xFB; delay(x); //3Gbreak;} case 4:{ P3M1 = 0xF3; P3M0 = 0x08; P3 = 0xFB; delay(x); //3B //4P3M1 = 0xEB; P3M0 = 0x04; P3 = 0xEF; delay(x); //3C P3M1 = 0xDB; P3M0 = 0x20; P3 = 0xFB; delay(x); //3FP3M1 = 0xBB; P3M0 = 0x40; P3 = 0xFB; delay(x); //3Gbreak;} case 5:{P3M1 = 0xF3; P3M0 = 0x04; P3 = 0xE7; delay(x); //3A //5P3M1 = 0xEB; P3M0 = 0x04; P3 = 0xEF; delay(x); //3CP3M1 = 0xEB; P3M0 = 0x10; P3 = 0xFB; delay(x); //3DP3M1 = 0xDB; P3M0 = 0x20; P3 = 0xFB; delay(x); //3FP3M1 = 0xBB; P3M0 = 0x40; P3 = 0xFB; delay(x); //3Gbreak;} case 6:{P3M1 = 0xF3; P3M0 = 0x04; P3 = 0xE7; delay(x); //3A //6P3M1 = 0xEB; P3M0 = 0x04; P3 = 0xEF; delay(x); //3CP3M1 = 0xEB; P3M0 = 0x10; P3 = 0xFB; delay(x); //3DP3M1 = 0xDB; P3M0 = 0x04; P3 = 0xDF; delay(x); //3E P3M1 = 0xDB; P3M0 = 0x20; P3 = 0xFB; delay(x); //3FP3M1 = 0xBB; P3M0 = 0x40; P3 = 0xFB; delay(x); //3Gbreak;} case 7:{P3M1 = 0xF3; P3M0 = 0x04; P3 = 0xE7; delay(x); //3A //7P3M1 = 0xF3; P3M0 = 0x08; P3 = 0xFB; delay(x); //3BP3M1 = 0xEB; P3M0 = 0x04; P3 = 0xEF; delay(x); //3Cbreak;}case 8:{P3M1 = 0xF3; P3M0 = 0x04; P3 = 0xE7; delay(x); //3A //8P3M1 = 0xF3; P3M0 = 0x08; P3 = 0xFB; delay(x); //3BP3M1 = 0xEB; P3M0 = 0x04; P3 = 0xEF; delay(x); //3CP3M1 = 0xEB; P3M0 = 0x10; P3 = 0xFB; delay(x); //3DP3M1 = 0xDB; P3M0 = 0x04; P3 = 0xDF; delay(x); //3E P3M1 = 0xDB; P3M0 = 0x20; P3 = 0xFB; delay(x); //3FP3M1 = 0xBB; P3M0 = 0x40; P3 = 0xFB; delay(x); //3Gbreak;}case 9:{P3M1 = 0xF3; P3M0 = 0x04; P3 = 0xE7; delay(x); //3A //9P3M1 = 0xF3; P3M0 = 0x08; P3 = 0xFB; delay(x); //3BP3M1 = 0xEB; P3M0 = 0x04; P3 = 0xEF; delay(x); //3CP3M1 = 0xEB; P3M0 = 0x10; P3 = 0xFB; delay(x); //3D P3M1 = 0xDB; P3M0 = 0x20; P3 = 0xFB; delay(x); //3FP3M1 = 0xBB; P3M0 = 0x40; P3 = 0xFB; delay(x); //3Gbreak;} }
}/**第四位显示,点亮H段**/void DG4()
{P3M1 = 0x9F; P3M0 = 0x20; P3 = 0xBF; delay(x); //H
}/**第五位显示,点亮I段**/void DG5()
{P3M1 = 0xAF; P3M0 = 0x10; P3 = 0xBF; delay(x); //I
}/**第六位显示,点亮J段**/void DG6()
{P3M1 = 0xB7; P3M0 = 0x08; P3 = 0xBF; delay(x); //J
}void main (void){ //主程序 init();while (1){DG1(TIME_SS/100);DG2(TIME_SS%100/10);DG3(TIME_SS%100%10); DG4();DG5();DG6(); }
} /***********************************************************************************/
void tiem0(void) interrupt 1 // 中断服务程序(产生500ms时基信号) { C++; if(C>50){ C = 0; TIME_SS--; if(TIME_SS <0){ TIME_SS = 188; } } TH0 = 0xcd; TL0 = 0xd4;
}
五脚18.8数码管显示相关推荐
- 8255总线实验 编写程序利用8255扩展单片机的IO口,控制8位数码管显示1-8。
8255总线实验 编写程序利用8255扩展单片机的IO口,控制8位数码管显示1-8. 程序: #include<reg51.h> #include<absacc.h> #def ...
- PLC实验五(LED数码管显示控制)
PLC实验五(LED数码管显示控制)
- FPGA初探(五)之两位数码管显示
两位数码管显示 目标: 共阳极数码管实现动态显示 实现过程规划(功能分解,分步实现): 取得两位数0~99, 第一步,分成个位十位, 第二步,将个位十位转换为数码管编码, 第三步,数码管显示模块: 1 ...
- 【Arduino实验10 数码管显示】
目录 一.实验目的 二.实验设备与环境 三.实验重点 四.实验难点 五.实验内容 5.1实验任务 5.2实验原理 5.3实验内容 5.4实验结果 5.5思考题 一.实验目的 (1)掌握1位数码管模块的 ...
- 【正点原子FPGA连载】第三十一章RTC实时时钟数码管显示实验 -摘自【正点原子】新起点之FPGA开发指南_V2.1
1)实验平台:正点原子新起点V2开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=609758951113 2)全套实验源码+手册+视频下载地址:ht ...
- FPGA课程设计——数字电子时钟VERILOG(基于正点原子新起点开发板,支持8位或6位共阳极数码管显示时分秒毫秒,可校时,可设闹钟,闹钟开关,led指示)
2019级电子科学与技术专业FPGA课程设计 报 告 2022 年 5 月 20 日 多功能数字电子钟的设计 摘要 电子设计自动化(EDA)是一种实现电子系统或电子产品自动化设计的技术,使用ED ...
- arduino数码管显示0到9_少儿Python程序第十二讲:单片机控制数码管
本讲继续学习用Python控制单片机,并用单片机连接和控制其它硬件,具体目标是利用开发板控制四位数码管,显示指定的数字.实验效果如图12.1所示: 图12.1 单片机控制四位数码管显示数字 注意:请先 ...
- c语言编写闹钟主程序流程图,基于STC15W4K58S4单片机的电子万年历设计源码与报告(数码管显示)...
基于STC15W4K58S4单片机的电子万年历(数码管显示)该压缩包包含源码TXT文件 源工程文件(Keil uVision4文件)和课程设计报告 电子时钟的设计 -单片机综合设计报告 目录 1 任 ...
- python turtle 绘制七段数码管以及14段数码管显示字母和时间
目录 书上的7段数码管,显示时间 书上的7断数码管显示应功都看过了,这里顺便提供一下` 看看显示原理 14段模型 14位数码管,画英文,和数字 书上的7段数码管,显示时间 书上的7断数码管显示应功都看 ...
最新文章
- php文件的标准格式化,PHP获取文件大小并格式化的几种方法
- mybaits二十九:mybatis工作原理以及源码分析
- se30分析程序运行时间实例
- mllib调参 spark_从Spark MLlib到美图机器学习框架实践
- 字节流转化为文件流_JAVA IO分析一:File类、字节流、字符流、字节字符转换流...
- linux实验之文件与文件,linux实验报告文件系统与文件管理.doc
- 递归 与 动态规划 区别
- mybatisplus 操作另一个数据库的数据_实例分析:python操作数据库项目
- 有了这款低代码工具,开发可以告别996啦
- android的GCM研究
- Xshell“所选的用户密钥未在远程主机上注册”解决办法
- 熊猫压缩怎么使用_您应该可以使用熊猫库做的几件事
- 利用Python脚本给图片批量添加文字水印
- Java POI 导出Excel,设置单元格无法编辑, 开启工作表保护后,依然可以筛选, 冻结行列不移动
- Google GMS包中的applist
- 天津春考计算机知识,2014天津春季高考计算机基础考试大纲
- gitlab Push 异常:commiter(xxx)不是GitLab中的中文名
- MFC Windows程序设计 读书笔记2
- php函数echo,PHP echo()函数讲解
- 219二队老虎全程直击报道野外生存挑战赛
热门文章
- SMIL 2.0 基础教程[转]
- 清华大学OpenBMB正式开源部署至OpenI启智社区:让大模型飞入千家万户
- 【算法基础】一维前缀和 + 二维前缀和
- 机器学习指南_机器学习项目的研究指南
- HTML 基本选择器
- DEM数据(ASTER GDEM|SRTM|GLS2005|ALOS DEM|NASA DEM)下载
- STM32入门-学习STM32要掌握的内容
- Unity3D 游戏引擎之构建简单的游戏世界(三)
- java实现的五子棋
- ISP pipeline之lens shading correction