历史上的今天
今天是:2025年02月02日(星期日)
2020年02月02日 | MSP430学习笔记6-动态数码管的显示
2020-02-02 来源:eefocus
这个程序主要部分是我改写的,程序把看门狗当做普通定时器使用,在看门狗中断中进行数码管扫描,另外我加入了显示的缓冲区,想在数码管上显示什么数字只需要对缓冲数组中的值进行操作即可。最后加入了小数点的操作,可以很方便的加入小数点,程序如下:
/**********************************************
程序功能:在八位数码管上显示任意数字
-----------------------------------------------
拨码开关设置:将SMG位拨至ON,其余拨至OFF
测试说明:观察数码管显示
***********************************************/
#include typedef unsigned char uchar; //数码管7位段码:0--f uchar scandata[16] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};//段码 uchar dispbitcode[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//将端口的片选信号编码 uchar disbuf[8] = {8,8,1,3,1,9,4,2};//存放要显示的数据 //记录显示位数的全局变量 uchar cnt = 0;//用来扫描计数 uchar dotn = 2;//用来选择第几位后面显示小数点 /********************主函数********************/ void main(void) { /*下面六行程序关闭所有的IO口*/ P1DIR = 0XFF;P1OUT = 0XFF; P2DIR = 0XFF;P2OUT = 0XFF; P3DIR = 0XFF;P3OUT = 0XFF; P4DIR = 0XFF;P4OUT = 0XFF; P5DIR = 0XFF;P5OUT = 0XFF; P6DIR = 0XFF;P6OUT = 0XFF; //这里面看门狗用作普通的定时器,要来对数码管进行动态扫描,如果看门狗有其他作用 //可以用定时器代替 WDTCTL = WDT_ADLY_1_9; // 设置内部看门狗工作在定时器模式,1.9ms中断一次 //可以去看头文件中具体的配置,这里使用的手表晶振64分频计算可得是1.9ms IE1 |= WDTIE; // 使能看门狗中断 P6DIR |= BIT2;P6OUT |= BIT2; //关闭电平转换 P5DIR = 0xff; //设置P4,P5的IO方向为输出 P4DIR = 0xff; P5OUT = 0x00; //设置P4,P5的输出初值 P4OUT = 0xff; _BIS_SR(LPM3_bits + GIE); //CPU进入LPM3低功耗模式,同时打开全局中断 //这个地方要注意LPM3低功耗模式下其他时钟源是关闭的,只能使用ACLK时钟源 } /******************************************* 函数名称:watchdog_timer 功 能:看门狗中断服务函数,在这里输出数码管的 段选和位选信号 参 数:无 返回值 :无 ********************************************/ #pragma vector=WDT_VECTOR __interrupt void watchdog_timer(void) { P4OUT = 0xff; uchar temp; if(cnt == (dotn-1))//判断要不要显示小数点 { temp = scandata[disbuf[cnt]]&0x7F;//如果要显示的就将要显示的段码先进行一步运算 P5OUT = temp; } else P5OUT = scandata[disbuf[cnt]]; //输出段选信号 P4OUT ^= dispbitcode[7-cnt]; //输出位选信号由于用了三极管驱动,实际是低电平选通因此翻一下。 //发现显示的顺序是倒着的,减一下把顺序正过来 cnt++; //位计数变量在0~8之间循环 if(cnt == 8) cnt = 0; }
史海拾趣
|
单片机控制实时时钟X1226的应用设计[ZT] 引 言 X1226具有时钟和日历的功能,时钟依赖时、分、秒寄存器来跟踪,日历依赖日期、星期、月和年寄存器来跟踪,日历可正确通过2099年,具有自动闰年修正。 拥有强大的双报警功能,能够被设置到 ...… 查看全部问答> |
|
在04年刚刚毕业时,有幸进入了TPMS行业,和几个同时兴致勃勃的干了起来,当时并不知道TPMS是个什么东西,也不会象现在这样对行业有什么研究,只知道把工作做好,拿到应得的工资,但也是拉开了大干一场的架势,毕竟刚毕业,对技术也是很有神秘感,特 ...… 查看全部问答> |
|
请问哪位高手有 Ibuyspy delivery 2005 的Sample可以提供?谢谢! Ibuyspy Delivery 2005,VS2005和SQL2005用于WINCE应用的开发范例。 原来的GOTDOTNET已经找不到这个下载了,MSDN上也没有,请问哪位高手可以给一个这个Sample的安装包,谢谢 地址或者发邮件都可以。 junzhu@ymail.com… 查看全部问答> |
|
在做WinCE相关的工作,想在DShow的框架下面使用摄像头,但是似乎比较困难。 首先因为在WinCE5/6,微软好像把Camera这一个模块单独提取出来,写了一个完整的MDD和一个空壳的PDD 现在要开发自己的饿摄像头驱动,其实个人感觉就是实现PDD中的功能就O ...… 查看全部问答> |
|
1. 本科以上学历,计算机、电子相关专业 2. 善于沟通,工作认真负责并具备较强的分析和解决问题的能力,有独立工作能力 3. 良好的高速数字电路设计以及数字模拟混合电路设计基础,良好的高速PCB设计基础 5. 熟悉视频相关电路,熟悉FPGA开发与 ...… 查看全部问答> |
|
大家好,我是一个AVR初学者,变了一个数码管动态显示矩阵键盘的值的程序,是用AVR-GCC编的,但是显示不了值,但我将头文件改了,在ICCAVR上就可以正常显示。求各位大侠帮我解决下,希望在AVR-GCC上能够正常运行,小弟将非常感谢!#include <avr/i ...… 查看全部问答> |
|
如题:当ping 1000字节包的时候是正常的,当ping 10000字节包的时候,以太网死掉,此时ping 32字节的包也ping不通,我找到底层程序内的定义,最大包长为1500字节,但我能不能不改这个数,ping 10000字节包的时候ping不通过,但我通过ping通1500之内 ...… 查看全部问答> |
|
最近在使用CCS5.2玩28069,发现CCS5.2的小锤子可以选RAM模式和Flash模式,在C2000 Launchpad的例程里找到了这样的用法,但是自己新建的工程怎么也弄不成,有没有弄过的说一下怎么配置的!… 查看全部问答> |




