STM32翻页时钟有源程序显示是实心字体,改成空心字体 那位师博对STM32单片机有经验的帮看看 实心字体,改成空心字体翻页钟 修改后上传谢谢
单片机源程序如下:
- /*******************************************/
- /* LCM128*64指针式万年历 */
- /* 硬件:LCM128*64 M16 DS1302 */
- /* 软件:WinAVR 2.0.6.1 */
- /* 时钟:内部4M */
- /* 制作:hyj */
- /*******************************************/
- #include <avr/io.h>
- #include <util/delay.h>
- #include <avr/pgmspace.h>
- #include <avr/interrupt.h>
- //#include <font2.h>
- #include <VFD.h>
- //变量定义
- unsigned char sec,min,hour,day,month,year,week,c_moon,year_moon,month_moon,day_moon; //秒.分.时.日.天.年.星期
- unsigned char mode;
- extern unsigned char disp_set,show,two_show,three_show;
- unsigned char temp_sec=70,temp_min=70,temp_hour=10,x,y,disp_old=0;
- //unsigned char disp_ram[672]; //移动显示缓存
- volatile unsigned int yid=0;
- extern unsigned char yid_speed;
- // 移动显示步数 移动速度
- volatile unsigned int count = 1000;
- extern unsigned char inittime[];
- extern int t;
- unsigned char temp1,temp2;
- void disp_update()
- {
- ;
- }
- /****************************************************************************
- 函 数 名: Port_init(void)
- 功 能:端口初始化
- 说 明:方向及上拉电阻设置
- 入口参数:无
- 返 回 值:无
- *****************************************************************************/
- void Port_init(void)
- {
- PORTA = 0xFF;
- DDRA = 0x20;
- PORTB = 0x9A;
- DDRB = 0xFA;
- PORTC = 0x00;
- DDRC = 0xFE;
- PORTD = 0x00;
- DDRD = 0x70;
- PORTB |= (1 << PB3);
- }
- /**********************************************************************
- 函 数 名time1_init()
- 功 能: 定时器1初始化
- 说 明:无
- 入口参数:无
- 返 回 值:无
- ***********************************************************************/
- void time1_init(void)
- {
- TCCR1B = 0x00;//停止定时器
- TIMSK |= 0x04;//中断允许
- TCNT1H = 0xFC;
- TCNT1L = 0x2F;//初始值
- OCR1AH = 0xFB;
- OCR1AL = 0xFF;//匹配A值
- OCR1BH = 0xFB;
- OCR1BL = 0xFF;//匹配B值
- ICR1H = 0xFF;
- ICR1L = 0xFF;//输入捕捉匹配值
- TCCR1A = 0x00;
- TCCR1B = 0x05;//启动定时器
- }
- /**********************************************************************
- 函 数 名SIGNAL(SIG_OVERFLOW1)
- 功 能: 定时器1中断处理
- 说 明:增加移动显示内容,移动步数
- 入口参数:无
- 返 回 值:无
- ***********************************************************************/
- SIGNAL(SIG_OVERFLOW1)
- {
- sei();
- // if (count) {count --;}
- // else {VFD_OFF;}
- if(yid<304)
- {
- yid++;
- }
- else
- {
- yid=0;
- // t=gettemp();
- }
- TCNT1L = 64335+yid_speed*150 ;
- TCNT1H = ((64335+yid_speed*150)>>8) ;
- // gettemp();
- if (disp_set == 0) {
- VFD_disp();
- }
- }
- /**********************************************************************
- 函 数 名main()
- 功 能: 初始化及循环显示内容
- 说 明:主函数
- 入口参数:无
- 返 回 值:无
- ***********************************************************************/
- int main(void)
- {
- unsigned char temp;
- Port_init();
- VFD_Init();
- time1_init();
- DS3231Init();
- sei();
- if (e2prom_read(0)>1)
- {
- for (temp = 0; temp < 0xff; temp++)
- {
- e2prom_write(temp,0);
- }
- }
- disp_ram_init();
- gengxinshijian();
- huamaohao();
- gettemp();
- VFD_update();
- VFD_analog_rest_data();
- while(1)
- {
- // gettemp();
- data_transition();
- // gengxinshijian();
- key();
- switch(disp_set)
- {
- case 0:
- // VFD_updata(); //移动显示会改变的内容更新
- // analog_time(); //指针式时钟显示
- // VFD_disp(); //移动信息显示
- disp_old = 0;
- gengxinshijian();
- break;
- case 3:
- set_menu(); //显示菜单
- break;
- case 10:
- disp_old = 0;
- two_menu(); //二级菜单
- break;
- case 20:
- disp_old = 0;
- three_menu(); //三级菜单
- break;
- }
- }
- }
复制代码
所有资料51hei提供下载:
vfd_翻页时钟源代码.rar
(38.18 KB, 下载次数: 19)
V6原理图.pdf
(37.51 KB, 下载次数: 14)
|