|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
学习51通过TM1640驱动共阳数码管 含51主程序和电路图 烧录不用更改即可显示 模块化编程 方便移值
# x3 _( @* t( k0 b8 _2 s . o. [4 Q5 @$ y
单片机源程序如下:
2 c1 l7 r) f, s/ Q6 ^* e- #include "TM1640.h"
- /*void delay_ms(int ms) //@11.0592MHz
- {
- unsigned char i, j;
- do{
- _nop_();
- i = 2;
- j = 199;
- do
- {
- while (--j);
- } while (--i);
- }while(--ms);
- } */
- void TM1640_Start(void)
- {
- TM1640_SCK_HIGH;
- TM1640_DOUT_HIGH;
- //delay_us(10);
- TM1640_DOUT_LOW;
- //delay_us(10);
- TM1640_SCK_LOW;
- //delay_us(10);
- }
- void TM1640_Stop(void)
- {
- TM1640_DOUT_LOW;
- TM1640_SCK_HIGH;
- //delay_us(10);
- TM1640_DOUT_HIGH;
- //delay_us(10);
- }
- void TM1640_Write_Byte(unsigned char date)
- {
- unsigned char i;
- unsigned char Temp;
- Temp=date;
- TM1640_SCK_LOW;
- TM1640_DOUT_LOW;
- for(i=0;i<8;i++)
- {
- TM1640_SCK_LOW;
- //delay_us(2);
- if(Temp&0x01)
- {
- TM1640_DOUT_HIGH;
- //delay_us(10);
- }
- else
- {
- TM1640_DOUT_LOW;
- //delay_us(10);
- }
- TM1640_SCK_HIGH;
- //delay_us(1);
- Temp = Temp >> 1;
- }
- TM1640_SCK_LOW;
- TM1640_DOUT_LOW;
- }
- void Write_Com(unsigned char date)//发送命令字
- {
- TM1640_Start();
- TM1640_Write_Byte(date);
- TM1640_Stop();
- }
- /*void Write_DATA(unsigned char add,unsigned char DATA) //指定地址写入数据
- {
- Write_Com(0x44); //44固定地址 40连续地址
- TM1640_Start();
- TM1640_Write_Byte(0xc0|add);
- TM1640_Write_Byte(DATA);
- TM1640_Stop();
- }*/
- void Write_DATA(unsigned char DATA0 ,unsigned char DATA1,unsigned char DATA2,unsigned char DATA3,unsigned char DATA4,unsigned char DATA5,unsigned char DATA6) //指定地址写入数据
- {
- Write_Com(0x44); //44固定地址 40连续地址
- TM1640_Start();
- TM1640_Write_Byte(0xc0);
- TM1640_Write_Byte(DATA0);
- TM1640_Stop();
- TM1640_Start();
- TM1640_Write_Byte(0xc1);
- TM1640_Write_Byte(DATA1);
- TM1640_Stop();
- TM1640_Start();
- TM1640_Write_Byte(0xc2);
- TM1640_Write_Byte(DATA2);
- TM1640_Stop();
- TM1640_Start();
- TM1640_Write_Byte(0xc3);
- TM1640_Write_Byte(DATA3);
- TM1640_Stop();
- TM1640_Start();
- TM1640_Write_Byte(0xc4);
- TM1640_Write_Byte(DATA4);
- TM1640_Stop();
- TM1640_Start();
- TM1640_Write_Byte(0xc5);
- TM1640_Write_Byte(DATA5);
- TM1640_Stop();
- TM1640_Start();
- TM1640_Write_Byte(0xc6);
- TM1640_Write_Byte(DATA6);
- TM1640_Stop();
- }
- void cls_TM1640(void)//清屏函数
- {
- unsigned char i;
- Write_Com(0x44);//连续地址模式
- TM1640_Start();
- TM1640_Write_Byte(0xc0);
- for(i=0;i<16;i++)
- TM1640_Write_Byte(0x00);
- TM1640_Stop();
- }
- void init_TM1640(void)
- {
- cls_TM1640();
- //Write_Com(0x8c);//亮度0x88~0x8F 已放主程序里面调节
- }
0 w* e; }6 k3 N& ~, _6 } 8 a/ u! o S5 X5 Q- E
|
|