历史上的今天
今天是:2025年03月12日(星期三)
2020年03月12日 | 单片机用switch语句控制一个点阵滚动显示文字
2020-03-12 来源:eefocus
PROTEUS仿真电路图:

电路图原理:
用74LS138译码器控制点阵的阴极端口,P2口控制阳极端口,也即是字形代码输入端。
仿真效果图:

C语言程序代码:
#include #include sbit a=P1^0; sbit b=P1^1; sbit c=P1^2; unsigned char code hua[50]= { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x3E,0x8,0x8,0x8,0x8,0x3E,0x0, 0x0,0x66,0x99,0x81,0x42,0x24,0x18,0x0, 0x0,0x24,0x24,0x24,0x24,0x24,0x24,0x18, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0 }; void main() { TMOD=0x01; TH0=0xFC; TL0=0x67; EA=1; ET0=1; TR0=1; while(1); } void duan() interrupt 1 { static unsigned char i=0;//static很重要否则点阵不能正常显示,因为将其定义为静态变量后,每次中断产生后,他的值会保持原来的值,不会重新被置零,如果重复置零会造成点阵无法正确显示文字。 static unsigned int index=0,time; TH0=0xFC; TL0=0x67; switch(i) { case 0:a=0;b=0;c=0;i++;P2=hua[index+0];break; case 1:a=1;b=0;c=0;i++;P2=hua[index+1];break; case 2:a=0;b=1;c=0;i++;P2=hua[index+2];break; case 3:a=1;b=1;c=0;i++;P2=hua[index+3];break; case 4:a=0;b=0;c=1;i++;P2=hua[index+4];break; case 5:a=1;b=0;c=1;i++;P2=hua[index+5];break; case 6:a=0;b=1;c=1;i++;P2=hua[index+6];break; case 7:a=1;b=1;c=1;i=0;P2=hua[index+7];break; default:break; } time++; if(time>=250) { time=0; index++; if(index>=32) { index=0; } } }
史海拾趣
|
第八届全国大学生电子设计大赛终于落下帷幕了.经过半年的努力,总算有了回报,拿了个全国一等奖.经过这段时间的历练,懂得了很多事和某些人,我觉得这是远远超过技术本身的收获. 我们做的是A题音频信号分析仪.主要核心是快速傅立叶算法(FFT)的实现.以下 ...… 查看全部问答> |
|
h-jtag+flashpgm+wiggler烧写遇到的难题,望高手帮忙!在线等!~~ 今天着手在达盛出的44b0板子上移植uclinux,结果第一步烧bootloader就出现问题了,望高手帮忙解决,小弟不盛感激!~ 连好wiggler后,刚开始的时候我的h-jtag能检测到硬件,但是我用flashpgm烧bootloader烧到一半的时候出现错误,提示:target being held ...… 查看全部问答> |
|
【原创】学习笔记——在Linux下用Gcc4.3.1进行STM32开发入门。 #define GPIOC_CRL (*((volatile unsigned int*)(0x40011000)))#define GPIOC_BSRR (*((volatile unsigned& ...… 查看全部问答> |
|
RT-Thread 1.1.0 正式版发布 2012年玛雅人预言的世界末日没有到来,但是我们的 RT-Thread 1.1.0 正式版却如约而至。 看看 1.1.0 突出的更改及改进情况,首先 1.1.0 版本是 1.0.x 系列的一个升级版本,并未包括实质性、大的改动,改动主要体现在: ...… 查看全部问答> |
|
使用单片机也这么多年了,应用到的电路也不算少,绝大部分都是使用数字电路。虽说数字电路并不复杂,可你是否完全明白在这些数字电路中,什么时候要使用电阻,什么时候要使用电容,什么时候该使用二级管,什么时候该使用三极管和FET? &nbs ...… 查看全部问答> |




