完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
静态数码管的驱动
终于搞完了期末可以开始搞单片机了!我自己的板子只有四个按键和四个led 某宝买了一块普中的开发板,可惜板子上带的是STC89C52, 好在我原来的板子把所有IO都引了出来,所以我选择转接的方法↓↓↓↓↓(请忽略灵魂走线) 这篇文章我将介绍一下,STC8A8K64S4A12静态数码管驱动的方法 一、数码管 数码管 8段数码管,每段相当于一个led,前7段用于显示数字,最后一段是小数点,通过这8个led的不同组合实现数字显示的功能。 分为共阴共阳两种,手里这块板子上的是共阴数码管,二者在编写程序时需要注意的是码表不一样,下面给出共阴和共阳的码表: typedef unsigned char u8;//共阳数码管 0~f // code 可以减少空间使用u8 code smgtable[] = {0xc0,0xf9,0xa4,0xb0, 0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83, 0xc6,0xa1,0x86,0x8e}//共阴数码管 0~fu8 code smgtable[] = {0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71};
二、硬件显示 单片机运行速度相对于人眼的识别速度非常快,所以要加入延时函数,延时函数可以直接用stc_isp里面的软件延时计算器直接计算
功能:开机之后数码管以1秒钟为间隔,轮流显示从0~f #include #include typedef unsigned int u16; //定义无符号整型为u16,方便写代码 typedef unsigned char u8; //同理 ***it smgA = P2^2; //这三行是因为开发板上使用了74HC138来选 ***it smgB = P2^3; //择数码管的第几位,在下一篇动态数码管里会 ***it smgC = P2^4; //详细解释,如果你的数码管直接连在mcu上 //就不要写这三行。 u8 code smgtable[] = {0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71}; void Delay1000ms() //@11.0592MHz 时长1秒的延时函数 { unsigned char i, j, k; _nop_(); i = 8; j = 1; k = 243; do { do { while (--k); } while (--j); } while (--i); } void main() { u16 i; smgA = 0; smgB = 0; smgC = 0; while(1)//死循环,防止程序“跑飞” { for(i = 0;i<16;i++) { P0 = smgtable;//通过开头定义的码表来给端口赋值 Delay1000ms();//调用延时函数 } } } 如有错误欢迎指正,新手才疏学浅,请各位大佬见谅。 |
|
|
|
只有小组成员才能发言,加入小组>>
3278 浏览 9 评论
2955 浏览 16 评论
3455 浏览 1 评论
8987 浏览 16 评论
4050 浏览 18 评论
1102浏览 3评论
570浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
568浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2301浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1857浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 00:26 , Processed in 0.473407 second(s), Total 49, Slave 39 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号